Yii2 Imperavi Redactor

Выкладываем свои наработки
Аватара пользователя
Dominus
Сообщения: 799
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Yii2 Imperavi Redactor

Сообщение Dominus » 2016.03.09, 05:23

Vitek25 писал(а):
vova07 писал(а):
Vitek25 писал(а):спасибо за расширение.
При загрузки картинок столкнулся с вот такой бедой
http://joxi.ru/DmBPRwuNqvNBAP

вьюха

Код: Выделить всё

       ->widget(Widget::className(), [
           'settings' => [
               'lang' => Yii::$app->language,
               'minHeight' => 200,
               'plugins' => [
                   'imagemanager',
               ],
               'imageUpload' => Url::toRoute(['static-page/image-upload']),
               'imageManagerJson' => Url::toRoute(['static-page/images-get']),
           ],
       ]) 
контроллер

Код: Выделить всё

 public function actions()
    {
        $shopName = $this->shop->getShopName();
        return [
            'image-upload' => [
                'class' => 'vova07\imperavi\actions\UploadAction',
                'url' => '/uploads/shop_'.$shopName, // Directory URL address, where files are stored.
                'path' => '@frontend/web/uploads/shop_'.$shopName, // Or absolute path to directory where files are stored.
            ],

            'images-get' => [
                'class' => 'vova07\imperavi\actions\GetAction',
                'url' => '/uploads/shop_'.$shopName, // Directory URL address, where files are stored.
                'path' => '@frontend/web/uploads/shop_'.$shopName, // Or absolute path to directory where files are stored.
                'type' => '\vova07\imperavi\actions\GetAction::TYPE_IMAGES',
            ],
        ];
    } 

Код: Выделить всё

    ...
    'images-get' => [
                ...
                'type' => \vova07\imperavi\actions\GetAction::TYPE_IMAGES,
         ],
         ...            
Для начала, нужно убрать кавычки, они тут ни к чему).
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

Аватара пользователя
almix
Сообщения: 7
Зарегистрирован: 2012.01.24, 01:20

Re: Yii2 Imperavi Redactor

Сообщение almix » 2016.03.10, 16:15

А как задать настройки imperavi через config/web.php ? В массиве 'components' или 'modules'?

пишу так в 'components':

Код: Выделить всё

'imperavi' => [
             'class' => 'vova07\imperavi\Widget',
             'settings' => [
                'lang' => 'ru',
                'removeWithoutAttr' => [],
                'minHeight' => 300,
                'pastePlainText' => true,
                'buttonSource' => true,
                'replaceDivs' => false,
                'plugins' => [
                    'clips',
                    'fullscreen',
                    'fontfamily',
                    'fontsize',
                    'fontcolor',
                    'video',
                    'table'
                ],
            ],
        ],
не срабатывает

leftmails
Сообщения: 12
Зарегистрирован: 2016.03.22, 17:43

Re: Yii2 Imperavi Redactor

Сообщение leftmails » 2016.03.22, 21:23

Пожалуйста помогите:

Не как не могу победить: При добавлении картинки выскакивает Alert с значением true, жмешь ОК и ни чего не происходит, картинка не сохраняется в директорию
При попытки загрузить из папки в Shoose в ней пусто, хотя в этой директории лежат файлы,картинки

Контроллер:

Код: Выделить всё

public function actions()
    {
        return [
                 'error' => [
        'class' => 'yii\web\ErrorAction',
    ],
'image-upload' => [
        'class' => 'vova07\imperavi\actions\UploadAction',
        'url' => Url::to(['/upload']), // Directory URL address, where files are stored.
        'path' => '@webroot/upload/' // Or absolute path to directory where files are stored.
    ],
'images-get' => [
        'class' => 'vova07\imperavi\actions\GetAction',
        'url' => Url::to(['/upload']), // Directory URL address, where files are stored.
        'path' => '@webroot/upload/', // Or absolute path to directory where files are stored.
        'type' => GetAction::TYPE_FILES,
    ]
        ];
    } 
Вьювка

Код: Выделить всё

echo  $form->field($model, 'content')->widget(Widget::classname(), [

    'settings' => [

        'lang' => 'ru',
        'uploadOnlyImage' => true,             //чтобы можно было загружать файлы

        'validatorOptions' => ['maxSize' => 40000],    //макс. размер файла

        'minHeight' => 10,

        'pastePlainText' => true,

        'buttonSource' => true,

        'plugins' => [

            'clips',

            'fullscreen',

            'imagemanager',

        ],

        'imageUpload' => Url::to( [ '/upload' ] ),

        'imageManagerJson' => Url::to( [ '/upload' ] ),

    ]

]); 

dmg
Сообщения: 668
Зарегистрирован: 2012.10.15, 03:09

Re: Yii2 Imperavi Redactor

Сообщение dmg » 2016.03.22, 22:11

leftmails писал(а):

Код: Выделить всё

        'imageUpload' => Url::to( [ '/upload' ] ),
        'imageManagerJson' => Url::to( [ '/upload' ] ),
]); 
здесь action для загрузки и получения списка файлов, т.е. image-upload и image-get, соответсвенно.

leftmails
Сообщения: 12
Зарегистрирован: 2016.03.22, 17:43

Re: Yii2 Imperavi Redactor

Сообщение leftmails » 2016.03.23, 18:00

dmg писал(а):
[code=php][/code]leftmails писал(а):

Код: Выделить всё

        'imageUpload' => Url::to( [ '/upload' ] ),
        'imageManagerJson' => Url::to( [ '/upload' ] ),
]); 
здесь action для загрузки и получения списка файлов, т.е. image-upload и image-get, соответсвенно.

Огромное спасибо dmg Помог разобраться!!!

:geek: Кстати так же тут в ветке возникали вопросы при открытии уже добавленных картинок в Choose "Почему видны но не корректно отображаются", ответ: надо указывать в

Код: Выделить всё

 'image-get' =>[ 'type' => GetAction::TYPE_IMAGES,] 
У многих кстати видел не правильные варианты 'type' => '0' или 'type' => GetAction::TYPE_FILES

Аватара пользователя
NEIRON
Сообщения: 83
Зарегистрирован: 2013.10.23, 07:18

Re: Yii2 Imperavi Redactor

Сообщение NEIRON » 2016.06.10, 23:08

Вот такой вопрос. Я хочу чтобы среди загруженных файлов у меня был какой-то порядок и я всегда мог знать те файлы, которые относятся к тому или иному объекту, иными словами иерархия среди загруженных файлов:
  • img/
  • --news/
  • ----news_1/
  • ----news_2/
  • ----news_3/
  • ...
  • ----news_1000/
Для этих целей я во VIEW виждет вызываю следующим образом:

Код: Выделить всё

$form->field($model, 'text')->widget(Widget::className(), [
        'settings' => [
            ...
            'imageUpload' => Url::to(['/site/default/image-upload', 'id' => $model->id, 'type' => 'news']),
            'imageManagerJson' => Url::to(['/site/default/images-get', 'id' => $model->id, 'type' => 'news']),
        ]
    ]);
И потом его отрабатываю в контроллере:

Код: Выделить всё

// Путь для загрузки картинок
        $request = Yii::$app->request;
        $id = $request->get('id');
        $type = $request->get('type');
        if ($id && $type) {
            $url = "/img/$type/$type".'_'.$id;
        }

        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'image-upload' => [
                'class' => 'vova07\imperavi\actions\UploadAction',
                'url' => $url,
                'path' => '@webroot' . $url
            ],
            'images-get' => [
                'class' => 'vova07\imperavi\actions\GetAction',
                'url' => $url,
                'path' => '@webroot' . $url,
                'type' => '0',
            ],
        ];
 
Всё отлично работает при редактирование записи, т.е. когда у неё уже есть ID. А вот что делать при добавлении, когда запись в БД еще не создана и ей не присвоен никакой идентификатор, а пользователь уже загружает картинки через виджет.

Что более правильно, куда-то складывать эти временные файлы, а потом после нажатия кнопки ДОБАВИТЬ переносить их директорию согласно задуманной мной иерархии, или просто не заморачиваться, а складывать всё в одну общую директорию?

Спасибо.

jsman
Сообщения: 4
Зарегистрирован: 2016.06.03, 11:33

Re: Yii2 Imperavi Redactor

Сообщение jsman » 2016.06.13, 19:34

Парни помогите разобраться!
Вот есть у меня backend где добавляются посты и frontend где эти посты просматриваются.

Код: Выделить всё

public function actions()
{
    return [
        'images-get' => [
            'class' => 'vova07\imperavi\actions\GetAction',
            'url' => '/images/', // URL адрес папки где хранятся изображения.
            'path' => '@webroot/../../common/images', // Или абсолютный путь к папке с изображениями.
            'type' => \vova07\imperavi\actions\GetAction::TYPE_IMAGES,
        ],
        'image-upload' => [
            'class' => 'vova07\imperavi\actions\UploadAction',
            'url' => '/images/', // URL адрес папки куда будут загружатся изображения.
            'path' => '@webroot/../../common/images' // Или абсолютный путь к папке куда будут загружатся изображения.
        ],
    ];
}
Картинки загружаются в общую папку common/images, здесь все норм, а как заставить эту картинку идти по этому пути, ведь когда указываешь

Код: Выделить всё

'url' => '/images/', 
то картинка ищется по пути где ты находишься в данный момент, фронт или бек. Что писать в

Код: Выделить всё

'url'  
?

Аватара пользователя
Dominus
Сообщения: 799
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Yii2 Imperavi Redactor

Сообщение Dominus » 2016.06.13, 20:32

Я загружаю картинки в frontend.
В common\config\bootstrap.php создаю алиас:

Код: Выделить всё

Yii::setAlias('@upload', dirname(dirname(__DIR__)) . '/frontend/web/'); 
При загрузке указываю его.
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

jsman
Сообщения: 4
Зарегистрирован: 2016.06.03, 11:33

Re: Yii2 Imperavi Redactor

Сообщение jsman » 2016.06.13, 21:24

Dominus писал(а):Я загружаю картинки в frontend.
В common\config\bootstrap.php создаю алиас:

Код: Выделить всё

Yii::setAlias('@upload', dirname(dirname(__DIR__)) . '/frontend/web/');
При загрузке указываю его.
Во, спасибо работает, а в 'url' прописываешь абсолютный путь?

Код: Выделить всё

 'url' => 'http://site.ru/images/'  

Аватара пользователя
Dominus
Сообщения: 799
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Yii2 Imperavi Redactor

Сообщение Dominus » 2016.06.13, 21:47

да, в common\config\params.php прописываю абсолютные пути:

Код: Выделить всё

return [
     ...
     'domainFrontend' => 'http://mysite.ru',
     'domainBackend' => 'http://backend.mysite.ru',
     ...
]; 
и их подставляю если требуется, например для backend)

Код: Выделить всё

Yii::$app->params['domainFrontend'].'/images/'; 
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

jsman
Сообщения: 4
Зарегистрирован: 2016.06.03, 11:33

Re: Yii2 Imperavi Redactor

Сообщение jsman » 2016.06.13, 22:15

Dominus писал(а):да, в common\config\params.php прописываю абсолютные пути:
Огромнейшее тебе спасибо, а то я как баран об ворота бился)

Аватара пользователя
proctoleha
Сообщения: 260
Зарегистрирован: 2016.07.10, 19:00

Re: Yii2 Imperavi Redactor

Сообщение proctoleha » 2016.07.10, 19:15

Может не совсем по теме, но тем не менее: купил вторую версию imperavi редактора, и как-то она мне не понравилась, по сравнению с первой. Например, я руками дописывал код работы с картинкой: изменение размеров, и обтекание текстом.
Кто-нибудь пробовал вторую версию? Если, да то какие впечатления?
Вот за что я не люблю линукс, так это за свои кривые, временами, руки

ErdTemir
Сообщения: 1
Зарегистрирован: 2016.08.02, 15:45

Re: Yii2 Imperavi Redactor

Сообщение ErdTemir » 2016.08.02, 15:57

Здравствуйте, изображения в редакторе только закачиваются, а как удалять их, искал как сделать нашел вот это https://github.com/vova07/yii2-imperavi ... 180446d6f9, добавил файлы, в редакторе ко вкладкам Udload и Chose добавилась вкладка Delete, в которой отображаются загруженные изображения, при клике на них ничего не происходит, только в инспекторе в браузере, во вкладке Network появляются такого рода записи "update?id=3&filename=57a062a1236c3.jpg&_=1470141210948". Можете подсказать как сделать удаление загруженных изображений в редакторе?

zhevlakov
Сообщения: 4
Зарегистрирован: 2016.06.02, 17:16

Re: Yii2 Imperavi Redactor

Сообщение zhevlakov » 2016.08.05, 13:36

Добрый день! Чтобы не создавать новую тему, прошу помощи у более сведущих. Как бы можно было реализовать подобный функционал - Нужно чтобы по кнопке - выделенный текст, обрамлялся дивом с определенным классом. Пробовал реализовать через - formattingAdd, но не работает.
Вот пример.

Код: Выделить всё

\yii\imperavi\Widget::className(),
        [
            'plugins' => ['fullscreen', 'fontcolor',],
            'options' => [
                'minHeight' => 400,
                'maxHeight' => 400,
                'buttonSource' => true,
                'toolbarFixedBox' => true,
                'paragraphize' => false,
                'replaceTags' => false,
                'replaceDivs' => false,
                'imageUpload' => Yii::$app->urlManager->createUrl(['/file-storage/upload-imperavi']),
                'formatting' => ['p', 'blockquote'],
                'formattingAdd' => [
                    "bold-text" => [
                        'title' => 'Bold text',
                        'args' => ['p', 'class', 'bold-text', 'toggle']
                    ],
                ]
            ]
        ] 

Аватара пользователя
proctoleha
Сообщения: 260
Зарегистрирован: 2016.07.10, 19:00

Re: Yii2 Imperavi Redactor

Сообщение proctoleha » 2016.08.09, 13:43

ErdTemir писал(а):Можете подсказать как сделать удаление загруженных изображений в редакторе?
Не совсем понял ваш вопрос. Вот мы в редакторе в текст вставляем картинку. Удалить её можно клавишей delete, или backspace, как обычно. Другое дело, что сама картинка не удаляется, и остается на сервере. Со временем этого мусора может накопиться достаточно много. Вы это имели в виду? Удаление картинки и из статьи, и с сервера?

Если да, то в первой ветке редактора, при его вызове, можно прописать функцию imageDeleteCallback
У меня это выглядит так:

Код: Выделить всё

$('#item-text').redactor(
{
	"minHeight":400,
	"toolbarFixed":true,
	"toolbarFixedBox":true,
	"plugins" : ["table", "fontcolor", "fontsize", "video", "fullscreen"],
	"fileUpload" : "/admin/redactor/upload?dir=pages",
	"imageUpload":"/admin/redactor/upload?dir=pages",
	"imageUploadErrorCallback":function(json){alert(json.error);},
	
	"imageDeleteCallback":function(url, image){
		$.post('/admin/redactor/del-img', {img:image.attr('src') }); 
	},
	
	"fileUploadErrorCallback":function(json){alert(json.error);},"lang":"ru"
});
Т.е. перед удалением картинки отрабатывает экшен /admin/redactor/del-img. Этот экшен получает на вход веб путь к картинке и грохает её. Потом удаляется запись о картинке в самом редакторе
Вот за что я не люблю линукс, так это за свои кривые, временами, руки

Matvik
Сообщения: 193
Зарегистрирован: 2013.06.21, 02:32

Re: Yii2 Imperavi Redactor

Сообщение Matvik » 2016.09.06, 20:23

Не могу добавить кнопку, которая вставляет набор символов (в данном случае место для обозначения обрезки при выводе превью постав в ленте блога).

Код: Выделить всё

<?= $form->field($model, 'text')->widget(Widget::className(), [
                        'settings' => [
                            'lang' => $lang,
                            'minHeight' => 400,
                            'imageUpload' => Url::to(['image-upload']),
                            'buttons' => ['html', 'formatting', 'bold', 'italic', 'deleted', 'underline', 'unorderedlist', 'orderedlist', 'outdent', 'indent', 'image', 'link', 'video', 'alignment', 'horizontalrule'],
                            'plugins' => [
                                'fontsize',
                                'fontcolor',
                                'video',
                                'fullscreen',
                            ]
                        ],
                        'plugins' => [
                            'previewend' => 'app\modules\blog\RedactorPluginsAsset',
                        ],
                        'options' => [
                            'data-preview-end' => \Yii::$app->controller->module->params['post_preview_end_string']
                        ]
                    ]); ?>

Код: Выделить всё

$.Redactor.prototype.previewend = function()
{
    return {
        init: function ()
        {
            var button = this.button.add('previewend', 'Preview end');
            this.button.addCallback(button, this.previewend.buttonFunc);
        },
        buttonFunc: function()
        {
            var text = $('#posts-text').data('preview-end');
            this.insert.html(text);
        }
    };
};
При дебаге в браузере заходит в инициализирующую функцию, но сама кнопка не добавляется. При єтом сам редактор уже загружен. ЧТо я делаю не так?

Slava
Сообщения: 8
Зарегистрирован: 2012.02.28, 08:16

Re: Yii2 Imperavi Redactor

Сообщение Slava » 2016.09.19, 22:44

Если добавил файл в редакторе, потом удалил, как сделать, чтоб файл с сервера удалился тоже, чтобы не устраивать там помойку?

Dmitry_S
Сообщения: 6
Зарегистрирован: 2016.04.22, 09:58

Re: Yii2 Imperavi Redactor

Сообщение Dmitry_S » 2016.11.11, 14:20

Добрый день, подскажите, почему могут не выводится надписи к кнопкам?

Изображение

phpstarter
Сообщения: 241
Зарегистрирован: 2014.12.06, 00:06

Re: Yii2 Imperavi Redactor

Сообщение phpstarter » 2016.11.22, 16:17

Всем добрый день. Пытаюсь реализовать подгрузку изображений в редактор. Застрял вот на этом

Прописал экшены. но картинка не загружается :(

Код: Выделить всё

   public function actionImageupload($n)
    {
        $url= '/files/'.$n.'/temp/';
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'image-upload' => [
                'class' => 'vova07\imperavi\actions\UploadAction',
                'url' => $url, // Directory URL address, where files are stored.
                'path' => '@webroot' . $url, // Or absolute path to directory where files are stored.
            ],
        ];
    }

    public function actionGetimageupload($n)
    {
        $url= '/files/'.$n.'/temp/';
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'images-get' => [
                'class' => 'vova07\imperavi\actions\GetAction',
                'url' => $url,
                'path' => '@webroot' . $url,
                'type' => '0',
            ],
        ];
    } 
 
в консоли если дебагить видна ошибка 500. А так визуально все как и было срабатывает, выходит окошко с надписью True и в итоге ничего не происходит. Файл тоже не подкачивается :(

Аватара пользователя
ElisDN
Сообщения: 5358
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Yii2 Imperavi Redactor

Сообщение ElisDN » 2016.11.22, 18:01

phpstarter писал(а):Прописал экшены. но картинка не загружается :(
Экшены прописываются в actions().

Ответить