-
Notifications
You must be signed in to change notification settings - Fork 0
/
Controller.php
89 lines (70 loc) · 2.51 KB
/
Controller.php
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
<?php
namespace serhatozles\elfinder;
use Yii;
use yii\helpers\Json;
use yii\web\Controller as BaseController;
class Controller extends BaseController {
public $language;
public $options = [];
public $options_ = [
'uiOptions' => [
'toolbar' => [
['back', 'forward'],
['netmount'],
['upload'],
['open', 'download', 'getfile'],
['info'],
['quicklook'],
['rm'],
['rename', 'resize'],
['search'],
['view', 'sort'],
['help']
]
],
'contextmenu' => [
'navbar' => ['open', '|', 'info'],
'cwd' => ['reload', 'back', '|', 'upload', '|', 'sort', '|', 'info'],
'files' => ['getfile', '|', 'open', 'quicklook', '|', 'download', '|', 'rm', '|', 'rename', 'resize', '|', 'info']
],
'onlyMimes' => ["image"],
];
public function actionControl($ajax) {
if (!empty($ajax)) {
$wid = new \yii\base\Widget;
$this->options['url'] = $ajax;
if (!empty($this->language)) {
$this->options['lang'] = $this->language;
$languageFile = Yii::$app->assetManager->publish(__DIR__ . "/assets/js/i18n/elfinder." . $this->language . ".js");
$this->getView()->registerJsFile($languageFile[1], ['depends' => elFinderAsset::className()]);
}
elFinderAsset::register($this->getView());
if (empty($this->options['id'])) {
$this->options['id'] = $wid->getId();
}
Yii::$app->assetManager->bundles = [
'yii\bootstrap\BootstrapPluginAsset' => false,
'yii\bootstrap\BootstrapAsset' => false,
'yii\web\JqueryAsset' => false,
];
if (!empty($this->options['getFileCallback'])) {
$this->options['getFileCallback'] = new \yii\web\JsExpression($this->options['getFileCallback']);
}
if (!isset($this->options['uiOptions'])) {
$this->options['uiOptions'] = $this->options_['uiOptions'];
}
if (!isset($this->options['uiOptions']['toolbar'])) {
$this->options['uiOptions']['toolbar'] = $this->options_['uiOptions']['toolbar'];
}
if (!isset($this->options['contextmenu'])) {
$this->options['contextmenu'] = $this->options_['contextmenu'];
}
if (!isset($this->options['onlyMimes'])) {
$this->options['onlyMimes'] = $this->options_['onlyMimes'];
}
$this->getView()->registerJs("$('#" . $this->options['id'] . "').elfinder(" . Json::encode($this->options) . ").elfinder('instance');");
$this->getView()->registerCss("#" . $this->options['id'] . " * {box-sizing: unset;}");
return $this->renderFile(__DIR__ . "/views/client.php", ['content' => '<div id="' . $this->options['id'] . '"></div>']);
}
}
}