Yii2 Imperavi Redactor

Выкладываем свои наработки
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Yii2 Imperavi Redactor

Сообщение vova07 »

С вашего позволения уважаемые администраторы, я создам данную тему чтоб можно было получать вопросы в открытом виде вместо ЛС которые не всегда удобны так как вижу их только я. Возможно в открытом доступе быстрее можно будет найти решение за счет сообщества.

Про расширение:
Данный виджет представляет обертку для Imperavi Redactor-a для второй версии Yii. Сам виджет свободен в использовании и распространении. Но вот непосредственно редактор доступен только Yii сообществу, имейте пожалуйста это введу.

Немного про функционал:
- Поддерживает работу в независимом режиме
- Есть возможность подключать виджет к готовой форме
- Возможность загружать изображения и файлы с локальной машины
- Возможность вставлять уже ранее загружаемые изображения и файлы
- Поддерживает кастомные "Assets Bundle"
- Наличие RU и EN документации
- На данный момент переведен на 4 языка: DE, EN, pt-BR, RU

Если у вас есть какие либо вопросы которые вы считаете что не достойны репорта на гитхаб, вы можете всегда их задать в данной теме.
Если вы обнаружили какой либо баг, напишите пожалуйста репорт на гитхаб.

Подробная инструкция по установке и непосредственно исходники расширения хранятся в гитхаб репозитории.

Всем спасибо!
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Yii2 Imperavi Redactor

Сообщение mat.twg »

День добрый, хотел бы разобрать вот это:
Add images that have already been uploaded

// DefaultController.php
public function actions()
{
return [
'images-get' => [
'class' => 'vova07\imperavi\actions\GetAction',
'url' => 'http://my-site.com/images/', // Directory URL address, where files are stored.
'path' => '@alias/to/my/path', // Or absolute path to directory where files are stored.
'type' => GetAction::TYPE_IMAGES,
]
];
}

// View.php
echo \vova07\imperavi\Widget::widget([
'selector' => '#my-textarea-id',
'settings' => [
'lang' => 'ru',
'minHeight' => 200,
'imageManagerJson' => Url::to(['/default/images-get']),
'plugins' => [
'imagemanager'
]
]
]);
error:
001.png
001.png (43.3 КБ) 32299 просмотров
Пока в исходники не залазил, немного по-позже.. но за комментарии зарание спасибо!
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2 Imperavi Redactor

Сообщение zelenin »

GetAction::TYPE_IMAGES, надо указать как \vova07\imperavi\actions\GetAction::TYPE_IMAGES
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2 Imperavi Redactor

Сообщение vova07 »

@zelenin написал решение проблемы!
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Yii2 Imperavi Redactor

Сообщение NEIRON »

Добрый день!
Делал всё по инструкции (https://github.com/vova07/yii2-imperavi-widget), но редактор что-то не заработал.
Установил через composer
И заменяю в стандартной _form.php:

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

<?= $form->field($model, 'description')->textarea(['rows' => 6]) ?>
На код из примера:

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

 echo $form->field($model, 'description')->widget(Widget::className(), [
    'settings' => [
    'lang' => 'ru',
    'minHeight' => 200,
    'plugins' => [
    'clips',
    'fullscreen'
    ]
    ]
    ]); 
На странице получаю:
screenshot-atlant.grcc.dev 2015-04-06 22-29-37.png
screenshot-atlant.grcc.dev 2015-04-06 22-29-37.png (19.31 КБ) 32270 просмотров
В консоли ошибок нет. Где-то еще какие-то настройки надо прописать, что бы редактор заработал? Спасибо.
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2 Imperavi Redactor

Сообщение vova07 »

@NEIRON вроде все правильно у вас прописано, и этих настроек вполне достаточно чтобы все работало. В консоли браузера точно нет ошибок? Скрин консоли можете предоставить? + напишите пожалуйста версию браузера в котором смотрите?
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Yii2 Imperavi Redactor

Сообщение NEIRON »

Вот скрин консоли:
Изображение
Браузер: Chromium Версия 41.0.2272.76 Ubuntu 14.10 (64-bit)
Но, если говорите, что указанных мной настроек достаточно, возможно дело в скриптах шаблона. Используется шаблон: http://aqvatarius.com/themes/atlant/html/index.html
Буду пробовать на чистом Yii2. Спасибо за ответ, буду разбираться.

P.S. Проверил в Firefox, тоже не работает. Дело не в браузере, значит.
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2 Imperavi Redactor

Сообщение vova07 »

Честно даже не знаю что сказать. Возможно дело в теме, точнее в CSS стилях. Может "z-index" перекрывает редактор, или "display: none;" как-то прописывается для родителя или еще что.
Проверьте непосредственно вывод "textarea" и стили которые к ней привязаны.
Да и как вы правильно решили, проверьте сначала на голом приложении, если все заработает, значит виноват CSS.
Аватара пользователя
NEIRON
Сообщения: 102
Зарегистрирован: 2013.10.23, 07:18

Re: Yii2 Imperavi Redactor

Сообщение NEIRON »

vova07 писал(а):Да и как вы правильно решили, проверьте сначала на голом приложении, если все заработает, значит виноват CSS.
Спасибо за помощь и советы.
При подключении шаблона забыл указать:

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

<?php $this->head() ?>
Отдельно спасибо за ваши модули.
Halumein
Сообщения: 9
Зарегистрирован: 2015.02.13, 09:34

Re: Yii2 Imperavi Redactor

Сообщение Halumein »

Про аплоад непонятно:

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

        'file-upload' => [
            'class' => 'vova07\imperavi\actions\UploadAction',
            'url' => 'http://my-site.com/files/', // Directory URL address, where files are stored.
            'path' => '@alias/to/my/path' // Or absolute path to directory where files are stored.
        ],
Как path использовать если он всегда по url загружает?
Или как тогда настроить, что бы Yii2 не думал, что http://my-site.com/images - контроллер.
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2 Imperavi Redactor

Сообщение vova07 »

Возможно не совсем ясно написал комменты в README, по этому попробую исправить:
"url" - это ссылка к директории с веб доступом в которой будет загружен сам файл. Подразумевается что в конкретно данной ситуации загрузка происходит в временную папку, по этому и УРЛ будет временным.
"path" - это путь к временной папке куда будет загружен файл. Данный выджет имеет такую логику что он предварительно загружает файл в временную папку, именно в той что указано в "path". И только при сохранении он перемещает файл в постоянную папку.

Сам Уии не будет думать что это контроллер, если правильно настроить УРЛ менеджер.

Надеюсь я смог вам более менее разъяснить ситуацию.
Halumein
Сообщения: 9
Зарегистрирован: 2015.02.13, 09:34

Re: Yii2 Imperavi Redactor

Сообщение Halumein »

Да, теперь понятно, спасибо.

UPD. Насколько я вижу, логика такова: загрузил изображение по пути указанному в path, а в редакторе, в src изображения прописал url.
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2 Imperavi Redactor

Сообщение vova07 »

Да, именно так.
Halumein
Сообщения: 9
Зарегистрирован: 2015.02.13, 09:34

Re: Yii2 Imperavi Redactor

Сообщение Halumein »

При загрузке изображения, виджет вставляет в поле код: <img src=...>
Можно ли как-то сделать, что бы он по-умолчанию добавлял туда еще один атрибут width="100%" ?
<img src="..." width="100%">
На мой взгляд удобнее выставлять изображение на полную ширину блока, а не ширину изображения: накидал их в колонку несколько штук, и не парюсь что в итоге они по-вылазят за края колонки абы-как.

Хотя, должен признать, это полезно для изображений бОльше ширины блока, если ширина изображения небольшая - логичнее оставлять неизменной.

Может добавить еще параметр в форму? defaultWidth для аплоад-изображений и пускай подставляет его.
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2 Imperavi Redactor

Сообщение vova07 »

Здравствуйте!

Так как давно уже не слежу за доками редактора, не помню все, но если в нём предусмотрен колбэк который вызывается перед вставкой изображения в редактор, то эту задачу можно решить через него.
Если колбэк отсутсвует то задачу нужно решать через свой вспомогательный кастомный виджет.

А по умолчанию если на сайте предусматриваются только большие изображения, то лучше всего прописать для них глобальные CSS правила, и не загрязнять лишним кодом ХТМЛ и тем самым не нагружая саму JS логику.

Так как задача очень личная (это я говорю потому что лично я бы не использовал такую логику на своих сайтах - имею введу добавления явной ширины к изображению - я кстати ярых ненавистник явных стилей в ХТМЛ коде) то добавлять такую опцию вероятнее всего не имеет смысла.

Хотя если кому-то еще это будет полезно и кто-то готов поделится кодом, то прошу на гитхаб с ПР-ом, и я его приму.
Halumein
Сообщения: 9
Зарегистрирован: 2015.02.13, 09:34

Re: Yii2 Imperavi Redactor

Сообщение Halumein »

Принято.
Решил css и правилом max-width: 100%;
Аватара пользователя
celsoft
Сообщения: 24
Зарегистрирован: 2014.08.07, 11:09
Откуда: Россия, г. Благовещенск
Контактная информация:

Re: Yii2 Imperavi Redactor

Сообщение celsoft »

Прошу рассмотреть. :)
Тут думаю все ясно
Тут думаю все ясно
1.png (67.93 КБ) 32105 просмотров
На хосте не пробовал, на локале точно беда с путями.
На хосте не пробовал, на локале точно беда с путями.
22.png (105.71 КБ) 32105 просмотров
Не критично, но все же. В офф. плагине инпут по центру))
Не критично, но все же. В офф. плагине инпут по центру))
3.png (19.83 КБ) 32105 просмотров
Возможно пропустил... но не увидел как указывать форматы для загрузки картинок и файлов.
Если такой возможности нет, то хотелось бы ее увидеть. Что-то типа 'fTypes' => 'rar, zip, exe' и т.д. Вам виднее.

P.s. не хватает спойлеров на форуме.
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2 Imperavi Redactor

Сообщение vova07 »

@celsoft первая ошибка вероятнее всего связана с неправильными настройками. Если вы загружаете файл, то в экшене контролера должны указать что туда будут загружаться файлы а не картинки. Для этого есть специальный параметр: "uploadOnlyImage" который по умолчанию "true".

Вторая ошибка валидна только для винды, попробую решить, давно уже надо, но сильно сейчас занят, даже очень.

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

Касательно типов файлов то эта опция доступна с первого релиза: "validatorOptions" позволяет вам настроить валидацию файла так как вам это угодно, в рамках доступных опций "FileValidator"-а
Аватара пользователя
celsoft
Сообщения: 24
Зарегистрирован: 2014.08.07, 11:09
Откуда: Россия, г. Благовещенск
Контактная информация:

Re: Yii2 Imperavi Redactor

Сообщение celsoft »

Для этого есть специальный параметр: "uploadOnlyImage" который по умолчанию "true".
Не совсем понял для чего так сделано. Ведь для изображений есть отдельный загрузчик. Как минимум нужно было хотя бы минимальный набор расширений по умолчанию сделать. Я имею ввиду файловый загрузчик. Ну да ладно, не суть.

Хотелось бы увидеть ошибки через alert хотя бы, а не в консоли (первый скрин). Ведь не каждый додумается залезть и посмотреть ответ, когда что-то не загружается.

По поводу третьего. Прикрепил скрин с офф. сайта. Там input по центру + пишет что файлы можно загружать перетаскивая. Сравните и поймете о чем я. Мелочь, но приятно. :D
1.png
1.png (19.7 КБ) 32091 просмотр
Halumein
Сообщения: 9
Зарегистрирован: 2015.02.13, 09:34

Re: Yii2 Imperavi Redactor

Сообщение Halumein »

Вопрос про плагин "limiter"
Вижу плагин есть в папке виджета, но как его использовать? По аналогии с http://imperavi.com/redactor/plugins/limiter/ что-то не работает:

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

                <?= $form->field($model, 'anons')->widget(Widget::className(), [
                        'settings' => [
                            'lang' => 'ru',
                            'limiter' => 10,
                            'minHeight' => 200,
                            'plugins' => [
                                'fullscreen',
                                'limiter',
                            ]
                        ]
  
Ответить