Skip to content

Commit

Permalink
документация
Browse files Browse the repository at this point in the history
fix Конфликт с bootstrap.js #18
переписал js
  • Loading branch information
MihailDev committed Nov 28, 2014
1 parent 04d9832 commit fb7548a
Show file tree
Hide file tree
Showing 8 changed files with 130 additions and 31 deletions.
9 changes: 9 additions & 0 deletions Assets.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace mihaildev\elfinder;

use yii\web\AssetBundle;
use yii\web\JqueryAsset;

class Assets extends AssetBundle
{
Expand Down Expand Up @@ -35,4 +36,12 @@ public static function addLangFile($lang, $view){
$view->registerJsFile($path.'/js/i18n/elfinder.' . $lang . '.js', ['depends' => [Assets::className()]]);
}
}

/**
* @param \yii\web\View $view
*/
public static function noConflict($view){
list(,$path) = \Yii::$app->assetManager->publish(__DIR__."/assets");
$view->registerJsFile($path.'/js/no.conflict.js', ['depends' => [JqueryAsset::className()]]);
}
}
2 changes: 1 addition & 1 deletion Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ public function actionManager(){

$options['getFileCallback'] = new JsExpression('function(file){ '.
'if (window!=window.top) {var parent = window.parent;}else{var parent = window.opener;}'.
'if(parent.ElFinderFileCallback.callFunction('.Json::encode($_GET['callback']).', file))'.
'if(parent.mihaildev.elFinder.callFunction('.Json::encode($_GET['callback']).', file))'.
'window.close(); }');
}

Expand Down
4 changes: 2 additions & 2 deletions ElFinder.php
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,8 @@ public function run()
echo Html::tag($container, Html::tag('iframe','', $this->frameOptions), $this->containerOptions);

if(!empty($this->callbackFunction)){
AssetsCallBack::register($this->getView());
$this->getView()->registerJs("ElFinderFileCallback.register(".Json::encode($this->id).",".Json::encode($this->callbackFunction).");");
AssetsCallBack::register($this->getView());
$this->getView()->registerJs("mihaildev.elFinder.register(".Json::encode($this->id).",".Json::encode($this->callbackFunction).");");
}
}

Expand Down
6 changes: 3 additions & 3 deletions InputFile.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,12 @@ public function run()

echo strtr($this->template, $replace);

AssetsCallBack::register($this->getView());
AssetsCallBack::register($this->getView());

if (!empty($this->multiple))
$this->getView()->registerJs("ElFinderFileCallback.register(" . Json::encode($this->options['id']) . ", function(files, id){ var _f = []; for (var i in files) { _f.push(files[i].url); } \$('#' + id).val(_f.join(', ')); return true;}); $(document).on('click','#" . $this->buttonOptions['id'] . "', function(){ElFinderFileCallback.openManager(" . Json::encode($this->_managerOptions) . ");});");
$this->getView()->registerJs("mihaildev.elFinder.register(" . Json::encode($this->options['id']) . ", function(files, id){ var _f = []; for (var i in files) { _f.push(files[i].url); } \$('#' + id).val(_f.join(', ')); return true;}); $(document).on('click','#" . $this->buttonOptions['id'] . "', function(){mihaildev.elFinder.openManager(" . Json::encode($this->_managerOptions) . ");});");
else
$this->getView()->registerJs("ElFinderFileCallback.register(" . Json::encode($this->options['id']) . ", function(file, id){ \$('#' + id).val(file.url); return true;}); $(document).on('click', '#" . $this->buttonOptions['id'] . "', function(){ElFinderFileCallback.openManager(" . Json::encode($this->_managerOptions) . ");});");
$this->getView()->registerJs("mihaildev.elFinder.register(" . Json::encode($this->options['id']) . ", function(file, id){ \$('#' + id).val(file.url); return true;}); $(document).on('click', '#" . $this->buttonOptions['id'] . "', function(){mihaildev.elFinder.openManager(" . Json::encode($this->_managerOptions) . ");});");

}
}
2 changes: 1 addition & 1 deletion PathController.php
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ public function actionManager(){

$options['getFileCallback'] = new JsExpression('function(file){ '.
'if (window!=window.top) {var parent = window.parent;}else{var parent = window.opener;}'.
'if(parent.ElFinderFileCallback.callFunction('.Json::encode($_GET['callback']).', file))'.
'if(parent.mihaildev.elFinder.callFunction('.Json::encode($_GET['callback']).', file))'.
'window.close(); }');
}

Expand Down
79 changes: 79 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,19 @@ php composer.phar require --prefer-dist mihaildev/yii2-elfinder "*"
],
```

```php
'controllerMap' => [
'elfinder' => [
'class' => 'mihaildev\elfinder\PathController',
'access' => ['@'],
'root' => [
'path' => 'files',
'name' => 'Files'
]
]
],
```

## Использование

```php
Expand Down Expand Up @@ -90,6 +103,42 @@ echo ElFinder::widget([

```

## Использование при работе с PathController
```php
use mihaildev\elfinder\InputFile;
use mihaildev\elfinder\ElFinder;
use yii\web\JsExpression;

echo InputFile::widget([
'language' => 'ru',
'controller' => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder
'path' => 'image', // будет открыта папка из настроек контроллера с добавлением указанной под деритории
'filter' => 'image', // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes
'name' => 'myinput',
'value' => '',
]);

echo $form->field($model, 'attribute')->widget(InputFile::className(), [
'language' => 'ru',
'controller' => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder
'path' => 'image', // будет открыта папка из настроек контроллера с добавлением указанной под деритории
'filter' => 'image', // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes
'template' => '<div class="input-group">{input}<span class="input-group-btn">{button}</span></div>',
'options' => ['class' => 'form-control'],
'buttonOptions' => ['class' => 'btn btn-default'],
'multiple' => false // возможность выбора нескольких файлов
]);

echo ElFinder::widget([
'language' => 'ru',
'controller' => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder
'path' => 'image', // будет открыта папка из настроек контроллера с добавлением указанной под деритории
'filter' => 'image', // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes
'callbackFunction' => new JsExpression('function(file, id){}') // id - id виджета
]);

```

## CKEditor
```php
use mihaildev\elfinder\ElFinder;
Expand All @@ -98,6 +147,14 @@ $ckeditorOptions = ElFinder::ckeditorOptions($controller,[/* Some CKEditor Optio

```

Для указания подкаталога (при использовании PathController)
```php
use mihaildev\elfinder\ElFinder;

$ckeditorOptions = ElFinder::ckeditorOptions([$controller, 'path' => 'some/sub/path'],[/* Some CKEditor Options */]);

```

Использование совместно с приложением "mihaildev/yii2-ckeditor" (https://github.com/MihailDev/yii2-ckeditor)

```php
Expand All @@ -111,6 +168,28 @@ $form->field($model, 'attribute')->widget(CKEditor::className(), [
]);
```

Для указания подкаталога (при использовании PathController)

```php
use mihaildev\ckeditor\CKEditor;
use mihaildev\elfinder\ElFinder;

$form->field($model, 'attribute')->widget(CKEditor::className(), [
...
'editorOptions' => ElFinder::ckeditorOptions(['elfinder', 'path' => 'some/sub/path'],[/* Some CKEditor Options */]),
...
]);
```

## Проблемы
При встраивание без iframe возможен конфликт с bootstrap.js. Studio-42/elFinder#740
Решение - добавляем в шаблон запись
```php

mihaildev\elfinder\Assets::noConflict($this);

```

## Полезные ссылки

ElFinder Wiki - https://github.com/Studio-42/elFinder/wiki
54 changes: 30 additions & 24 deletions assets/js/elfinder.callback.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,36 @@
var ElFinderFileCallback = {functions: {}};
ElFinderFileCallback.register = function(id, func){
this.functions[id] = func;
}
ElFinderFileCallback.callFunction = function(id, file){
return this.functions[id](file, id);
}
ElFinderFileCallback.functionReturnToInput = function(file, id){
$('#' + id).val(file.url);
return true;
if (typeof mihaildev == "undefined" || !mihaildev) {
var mihaildev = {};
}

ElFinderFileCallback.openManager = function(options){
var params = "menubar=no,toolbar=no,location=no,directories=no,status=no,fullscreen=no";
if(options.width == 'auto'){
options.width = $(window).width()/1.5;
}
mihaildev.elFinder = {
openManager: function(options){
var params = "menubar=no,toolbar=no,location=no,directories=no,status=no,fullscreen=no";
if(options.width == 'auto'){
options.width = $(window).width()/1.5;
}

if(options.height == 'auto'){
options.height = $(window).height()/1.5;
}
if(options.height == 'auto'){
options.height = $(window).height()/1.5;
}

params = params + ",width=" + options.width;
params = params + ",height=" + options.height;
params = params + ",width=" + options.width;
params = params + ",height=" + options.height;

console.log(params);
var win = window.open(options.url, 'ElFinderManager' + options.id, params);
win.focus()
},
functions: {},
register: function(id, func){
this.functions[id] = func;
},
callFunction: function(id, file){
return this.functions[id](file, id);
},
functionReturnToInput: function(file, id){
jQuery('#' + id).val(file.url);
return true;
}
};

console.log(params);
var win = window.open(options.url, 'ElFinderManager' + options.id, params);
win.focus()
}

5 changes: 5 additions & 0 deletions assets/js/no.conflict.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
jQuery(function(){
if(jQuery.fn.button.noConflict) {
jQuery.fn.btn = jQuery.fn.button.noConflict();
}
});

0 comments on commit fb7548a

Please sign in to comment.