Blame view

vendor/mihaildev/yii2-elfinder/BaseController.php 2.59 KB
ad2e91f7   Mihail   move multyparser ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
  <?php
  /**
   * Date: 09.12.2014
   * Time: 17:20
   *
   * This file is part of the MihailDev project.
   *
   * (c) MihailDev project <http://github.com/mihaildev/>
   *
   * For the full copyright and license information, please view the LICENSE
   * file that was distributed with this source code.
  */
  
  namespace mihaildev\elfinder;
  use Yii;
  use yii\filters\AccessControl;
  use yii\helpers\ArrayHelper;
  use yii\helpers\Json;
  use yii\helpers\Url;
  use yii\web\Controller;
  use yii\web\JsExpression;
  
  
  /**
   * Class BaseController
   *
   * @package mihaildev\elfinder
   */
  class BaseController extends Controller{
  	public $access = ['@'];
  	public $managerOptions = [];
  	public $connectOptions = [];
  
  	public function behaviors()
  	{
  		return [
  			'access' => [
  				'class' => AccessControl::className(),
  				'rules' => [
  					[
  						'allow' => true,
  						'roles' => $this->access,
  					],
  				],
  			],
  		];
  	}
  
  	public function getOptions(){
  		return $this->connectOptions;
  	}
  
  	public function actionConnect(){
  		return $this->renderFile(__DIR__."/views/connect.php", ['options'=>$this->getOptions()]);
  	}
  
  	public function getManagerOptions(){
  		$options = [
  			'url'=> Url::toRoute('connect'),
  			'customData' => [
  				Yii::$app->request->csrfParam => Yii::$app->request->csrfToken
  			],
  			'resizable' => false
  		];
  
  		if(isset($_GET['CKEditor'])){
  			$options['getFileCallback'] = new JsExpression('function(file){ '.
  				'window.opener.CKEDITOR.tools.callFunction('.Json::encode($_GET['CKEditorFuncNum']).', file.url); '.
  				'window.close(); }');
  
  			$options['lang'] = $_GET['langCode'];
  		}
  
  		if(isset($_GET['filter'])){
  			if(is_array($_GET['filter']))
  				$options['onlyMimes'] = $_GET['filter'];
  			else
  				$options['onlyMimes'] = [$_GET['filter']];
  		}
  
  		if(isset($_GET['lang']))
  			$options['lang'] = $_GET['lang'];
  
  		if(isset($_GET['callback'])){
  			if(isset($_GET['multiple']))
  				$options['commandsOptions']['getfile']['multiple'] = true;
  
  			$options['getFileCallback'] = new JsExpression('function(file){ '.
  				'if (window!=window.top) {var parent = window.parent;}else{var parent = window.opener;}'.
  				'if(parent.mihaildev.elFinder.callFunction('.Json::encode($_GET['callback']).', file))'.
  				'window.close(); }');
  		}
  
  		if(!isset($options['lang']))
  			$options['lang'] = Yii::$app->language;
  
  		if(!empty($this->disabledCommands))
  			$options['commands'] = new JsExpression('ElFinderGetCommands('.Json::encode($this->disabledCommands).')');
  
  
  		return ArrayHelper::merge($options, $this->managerOptions);
  	}
  
  	public function actionManager(){
  		return $this->renderFile(__DIR__."/views/manager.php", ['options'=>$this->getManagerOptions()]);
  	}
  }