Blame view

app/mihaildev/elfinder/ElFinder.php 3.31 KB
bf807468   Alex Savenko   first commit
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
108
109
110
111
112
113
114
115
116
117
118
119
120
  <?php
  /**
   * Date: 22.01.14
   * Time: 23:44
   */
  
  namespace app\mihaildev\elfinder;
  
  use Yii;
  use yii\base\Widget as BaseWidjet;
  use yii\helpers\ArrayHelper;
  use yii\helpers\Html;
  use yii\helpers\Json;
  
  /**
   * Class Widget
   * @package mihaildev\elfinder
   */
  
  class ElFinder extends BaseWidjet{
  
      public $language;
  
      public $filter;
  
      public $callbackFunction;
  
  	public $path;// work with PathController
  
      public $containerOptions = [];
      public $frameOptions = [];
      public $controller = 'elfinder';
  
      public static function getManagerUrl($controller, $params = [])
      {
  		$params[0] = '/'.$controller."/manager";
          return Yii::$app->urlManager->createUrl($params);
      }
  
      public static function ckeditorOptions($controller, $options = []){
  
  		if(is_array($controller)){
  			$id = $controller[0];
  			unset($controller[0]);
  			$params = $controller;
  		}else{
  			$id = $controller;
  			$params = [];
  		}
  
          return ArrayHelper::merge([
              'filebrowserBrowseUrl' => self::getManagerUrl($id, $params),
              'filebrowserImageBrowseUrl' => self::getManagerUrl($id, ArrayHelper::merge($params, ['filter'=>'image'])),
              'filebrowserFlashBrowseUrl' => self::getManagerUrl($id, ArrayHelper::merge($params, ['filter'=>'flash'])),
          ], $options);
      }
  
      public function init()
      {
          if(empty($this->language))
              $this->language = self::getSupportedLanguage(Yii::$app->language);
  
          $managerOptions = [];
          if(!empty($this->filter))
              $managerOptions['filter'] = $this->filter;
  
          if(!empty($this->callbackFunction))
              $managerOptions['callback'] = $this->id;
  
  		if(!empty($this->language))
  			$managerOptions['lang'] = $this->language;
  
  		if(!empty($this->path))
  			$managerOptions['path'] = $this->path;
  
          $this->frameOptions['src'] = $this->getManagerUrl($this->controller, $managerOptions);
  
          if(!isset($this->frameOptions['style'])){
              $this->frameOptions['style'] = "width: 100%; height: 100%; border: 0;";
          }
      }
  
      static function getSupportedLanguage($language)
      {
          $supportedLanguages = array('bg', 'jp', 'sk', 'cs', 'ko', 'th', 'de', 'lv', 'tr', 'el', 'nl', 'uk',
              'es', 'no', 'vi', 'fr', 'pl', 'zh_CN', 'hr', 'pt_BR', 'zh_TW', 'hu', 'ro', 'it', 'ru', 'en');
  
          if(!in_array($language, $supportedLanguages)){
              if (strpos($language, '-')){
  				$language = str_replace('-', '_', $language);
  				if(!in_array($language, $supportedLanguages)) {
  					$language = substr($language, 0, strpos($language, '_'));
  					if (!in_array($language, $supportedLanguages))
  						$language = false;
  				}
              } else {
                  $language = false;
              }
          }
  
          return $language;
      }
  
      public function run()
      {
          $container = 'div';
          if(isset($this->containerOptions['tag'])){
              $container = $this->containerOptions['tag'];
              unset($this->containerOptions['tag']);
          }
  
          echo Html::tag($container, Html::tag('iframe','', $this->frameOptions), $this->containerOptions);
  
          if(!empty($this->callbackFunction)){
  			AssetsCallBack::register($this->getView());
              $this->getView()->registerJs("mihaildev.elFinder.register(".Json::encode($this->id).",".Json::encode($this->callbackFunction).");");
          }
      }
  
  }