MihailDev / yii2-elfinder

Yii2 ElFinder
Other
171 stars 76 forks source link

Подскажите пожалуйста. #30

Closed Valonix closed 9 years ago

Valonix commented 9 years ago

Добрый день. Осваиваю YII. И в качестве контент едитора решил поставить ваше расширение CKEditor. Чтобы загружать фото в тело контента хочу поставить elfinder. И мне честно не понятно эта часть. use mihaildev\ckeditor\CKEditor; use mihaildev\elfinder\ElFinder;

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

Подскажите где мне указать для загрузчика куда помещать все фото. И можно ли как то будет их отделить друг от друга (Posts, Pages) по моделям к примеру.

Ранее ни CKeditor, не Elfinder не использовал, по этому мне много не понятно. Спасибо за ответ.

MihailDev commented 9 years ago

данный вопрос можно реализовать разными способами 1) (если у вас разные модули для Posts и Pages) для кажого модуля можно задать свои настройки указав в кажом модуле свой ель фаиндер

class Module extends \yii\base\Module
{
    public function init()
    {
        parent::init();

        $this->controllerMap['elfinder'] =[
            'class' => 'mihaildev\elfinder\PathController',
            'access' => ['@'],
            'root' => [
                'path' => 'files',
                'name' => 'Files'
            ]            
        ];
    }
}

в шаблоне

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

2) вариант использовать PathController и параметр патх

в настройках

'controllerMap' => [
        'elfinder' => [
            'class' => 'mihaildev\elfinder\PathController',
            'access' => ['@'],
            'root' => [
                'path' => 'files',
                'name' => 'Files'
            ],
            'watermark' => [
                        'source'         => __DIR__.'/logo.png', // Path to Water mark image
                         'marginRight'    => 5,          // Margin right pixel
                         'marginBottom'   => 5,          // Margin bottom pixel
                         'quality'        => 95,         // JPEG image save quality
                         'transparency'   => 70,         // Water mark image transparency ( other than PNG )
                         'targetType'     => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field )
                         'targetMinPixel' => 200         // Target image minimum pixel size
            ]
        ]
    ],
$form->field($model, 'attribute')->widget(CKEditor::className(), [
...
'editorOptions' => ElFinder::ckeditorOptions(['elfinder', 'path' => 'news'],[/* Some CKEditor Options */]),
...
]);
$form->field($model, 'attribute')->widget(CKEditor::className(), [
...
'editorOptions' => ElFinder::ckeditorOptions(['elfinder', 'path' => 'pages'],[/* Some CKEditor Options */]),
...
]);

при этом папка в которой будут сохранятся фаилы будет путь указанный в настройках + тот который указан в шаблоне

из примера в настройках 'path' => 'files' и допустим из шаблона 'path' => 'pages'

в результате получим files/pages папку для хранения фаилов

3) вариант использовать elfinder\Controller

перечислить все папки и при использовании выбирать нужную папку для сохранения!

Valonix commented 9 years ago

Спасибо. Правда я про модели спрашивал а не про модули:)

MihailDev commented 9 years ago

ну я предположил что какждая модель относится к своему модулю!

libero1286 commented 8 years ago

маленький вопрос. а как эту прелесть привинтить к tinynce. наткнулся на ваше описание, там сказано что легко, но я как не пойму на всякий случай я этот взял в качестве основы https://github.com/2amigos/yii2-tinymce-widget

MihailDev commented 8 years ago

примерно так будет работать

\mihaildev\elfinder\AssetsCallBack::register($this);

$elFinderUrl = \mihaildev\elfinder\ElFinder::getManagerUrl('elfinder', ['callback' => 'my_return_id']); $elFinderUrl = \yii\helpers\Json::encode($elFinderUrl); $js = <<<JS mihaildev.elFinder.register('my_return_id', function(URL){ window.tinymce.activeEditor.windowManager.getParams().setUrl(URL); var t = window.tinymce.activeEditor.windowManager.windows[0]; t.find('#src').fire('change'); window.tinymce.activeEditor.windowManager.close(); });

function elFinderBrowser (field_name, url, type, win) { tinymce.activeEditor.windowManager.open({ file: $elFinderUrl, title: 'elFinder 2.0', width: 900, height: 450, resizable: 'yes' }, { setUrl: function (url) { win.document.getElementById(field_name).value = url; } }); return false; } JS;

$this->registerJs($js);

далее в настройки tinymce

http://www.tinymce.com/wiki.php/Configuration:file_browser_callback file_browser_callback : elFinderBrowser

7 октября 2015 г., 19:21 пользователь libero1286 notifications@github.com написал:

маленький вопрос. а как эту прелесть привинтить к tinynce. наткнулся на ваше описание, там сказано что легко, но я как не пойму на всякий случай я этот взял в качестве основы https://github.com/2amigos/yii2-tinymce-widget

— Reply to this email directly or view it on GitHub https://github.com/MihailDev/yii2-elfinder/issues/30#issuecomment-146250543 .

libero1286 commented 8 years ago

спасибо. я вчера вечером сам разобрался. немного по другому сделал но в целом очень похоже получилось