Как задать другой редактор для виджетов?

#1 11 ноября 2014 в 15:55
Есть ли такая возможность?
#2 11 ноября 2014 в 17:42
Есть, но только "с напильником". Воспользуйтесь поиском по форуму, аналогичный вопрос обсуждался.
#3 11 ноября 2014 в 18:17
Нету. Р2 считает, что кроме Redactor остальное не имеет смысла быть в виджетах. Писал об этом, все дружно молчали, теперь выбора так и нет.
#5 11 ноября 2014 в 22:11

ну почему нет выбора? Вы забыли этот вариант?

stealthdebuger

Не забыл, но решение не заработало.
#6 11 ноября 2014 в 22:16
Видимо только у вас. Обратите внимание на пост со скриншотом oll здесь instantcms.ru/forum/thread16288-11.html
равно, как и ваш пост на той же странице, где вы говорите:

SD огромное спасибо за решение по редактору.

#7 12 ноября 2014 в 00:22

Видимо только у вас. Обратите внимание на пост со скриншотом oll здесь instantcms.ru/forum/thread16288-11.html
равно, как и ваш пост на той же странице, где вы говорите:

stealthdebuger

Да, в итоге что то подвело у меня и не заработало. Но раз решение рабочее — было обещание Р2 встроить рабочее решение. Возможно пока он занят и встроит. Я пока в 2 мало, тогда побарахтался, надоело время тратить, пока на первой делаю.
#8 12 ноября 2014 в 18:04
Сегодня добрался до 2 Инстанта. Настроил поле html в контенте — поставил редактор Live — не работает. Зато редактор Р2 работает конечно. Такая недружественность удивляет. Ну неужели так надо делать? Каждый вебмастер сам определит какой ему редактор использовать. Теперь даже в контенте не работает ><
#9 12 ноября 2014 в 18:08
letsgo, что именно у вас не получилось и в каком браузере проверяли?

P.S. практически закончена работа над сабжем данной темы. Погодите чуть.
#10 12 ноября 2014 в 20:02

было обещание Р2 встроить рабочее решение

letsgo
Было обещание встроить решение по переключению редакторов, а не тупо замене одного другим. Это важно.

Теперь даже в контенте не работает

letsgo
Все работает прекрасно. Пример проблемы покажите где смотреть.

Такая недружественность удивляет.

letsgo
При чем здесь недружественность, что за бред.
#11 12 ноября 2014 в 21:05

letsgo, что именно у вас не получилось и в каком браузере проверяли?

stealthdebuger

Создал тип контента, создал тестовую запись, redactor видится в поле html контента, включаю Live — пустое место вместо редактора. Любой может протестировать у себя. Для чистоты эксперимента включил маркитантку, работает тоже. В общем redactor и маркит работают, Live нет. Инстант 2.1.2 последний.

Поставил на другом домене, создал по быстрому также — работает. Пока сам ищу проблему.
#12 13 ноября 2014 в 00:25

Создал тип контента, создал тестовую запись, redactor видится в поле html контента, включаю Live — пустое место вместо редактора.

letsgo
У меня несколько сайтов на двойке и на все Live работает… версии 2.1.2

ps: с нуля не проверял (лень ставить) а на всех обновленных пашет…
#13 13 ноября 2014 в 00:48

У меня несколько сайтов на двойке и на все Live работает… версии 2.1.2

reload

Да погорячился. Видимо где то был глюк, перекачал файлы, стал работать. Работает ли у тебя вставка видео из контакта? Кто вставлял уже видео в статью, поделитесь каким редактором можно вставить. Попробовал всеми тремя и безрезультатно пока.
#14 13 ноября 2014 в 01:35
Создаем возможность выбора редактора для текстового виджета. В данной реализации предусмотрена выборка Redactor либо LiveEditor, но ничто не мешает подключить другие редакторы по схожему алгоритму. Протестировано на InstantCMS 2.1.1 в Firefox 33.1, Chrome 38.0.2125.111 m, Opera 12.16.
И так, приступим:

1. файл /templates/default/controllers/admin/widgets.tpl.php
после строк подключения Redactor добавляем две строки
  1. cmsTemplate::getInstance()->addJS("wysiwyg/live/scripts/language/".cmsConfig::get('language')."/editor_lang.js", 'LiveEditor Lang');
  2. cmsTemplate::getInstance()->addJS('wysiwyg/live/scripts/innovaeditor.js', 'LiveEditor');
  3.  
2. файл /system/widgets/text/options.form.php
заменяем строку
  1. 'options' => array('editor' => 'redactor'),
на
  1. 'options' => array('editor' => array('live', 'redactor')),
далее, перед строкой
  1. new fieldHtml('options:content', array(
вставляем следующий код
  1. new fieldList('editor', array(
  2. 'title' => LANG_PARSER_HTML_EDITOR,
  3. 'default' => 'live',
  4. 'generator' => function($item){
  5. $items = array();
  6. $editors = array('live', 'redactor');
  7. foreach($editors as $editor){ $items[$editor] = $editor; }
  8. return $items;
  9. },
  10. )),
  11.  
3. файл /wysiwyg/live/wysiwyg.class.php
перед строкой
  1. <script type="text/javascript">
пишем
  1. <div id="myEditor"></div>
заменяем строку
  1. le_<?php echo $dom_id; ?>.REPLACE('<?php echo $dom_id; ?>');
на
  1. le_<?php echo $dom_id; ?>.REPLACE('<?php echo $dom_id; ?>', 'myEditor');
4. файл /templates/default/assets/ui/form.tpl.php
перед строкой
  1. <form action="<?php echo $attributes['action']; ?>"
ставим код
  1. <script>
  2. $("#editor").change(function() {
  3. switch(true) {
  4. case($("#editor").val() == 'redactor'):
  5. $(".redactor_box").css("display", "block");
  6. $("#myEditor").css("display", "none");
  7. break;
  8. case($("#editor").val() == 'live'):
  9. $(".redactor_box").css("display", "none");
  10. $("#myEditor").css("display", "block");
  11. break;
  12. }
  13. $("#editor").prop("disabled", true);
  14. });
  15. </script>
  16.  
и строку
  1. onsubmit="return icms.forms.submitAjax(this)"
заменяем на
  1. onsubmit="return icms.forms.submitAjax(this, $('#editor').val())"
5. файл /system/controllers/admin/actions/widgets_update.php
после строки
  1. $widget = $form->parse($this->request, true);
указываем
  1. unset($widget['editor']);
6. файл /system/libs/html.helper.php
после строки
  1. function html_textarea($name='', $value='', $attributes=array()){
пишем
  1. if(defined('MULTI_EDITOR')) return;
7. файл /templates/default/js/core.js
меняем строки
  1. this.submitAjax = function(form){
  2.  
  3. var form_data = this.toJSON($(form));
  4.  
  5. var url = $(form).attr('action');
на такой вариант
  1. this.submitAjax = function(form, editor){
  2. if(editor !== undefined){
  3. var form_content = $("#options_content").val();
  4. if(editor == 'redactor') {form_content = $(".redactor_textarea").html();}
  5. var form_data = 'csrf_token='+document.getElementsByName('csrf_token')[0].value
  6. +'&id='+document.getElementsByName('id')[0].value
  7. +'&title='+encodeURI(document.getElementById('title').value)
  8. +'&options%5Bcontent%5D='+encodeURI(form_content);
  9. var url = document.forms[0].action;
  10. }
  11. else{
  12. var form_data = this.toJSON($(form));
  13. var url = $(form).attr('action');
  14. }
  15.  
8. файл /templates/default/assets/fields/html.tpl.php
строку
  1. <?php echo html_wysiwyg($field->element_name, $value, $field->getOption('editor')); ?>
заменяем следующей магией
  1. <?php if(is_array($field->getOption('editor'))) {foreach($field->getOption('editor') as $n => $editor) {echo html_wysiwyg($field->element_name, $value, $editor); if(!defined('MULTI_EDITOR')){define('MULTI_EDITOR', true);}} echo '<script>
  2. switch(true) {
  3. case($("#editor").val() == "redactor"):
  4. $("#myEditor").css("display", "none");
  5. break;
  6. case($("#editor").val() == "live"):
  7. $(".redactor_box").css("display", "none");
  8. break;
  9. }
  10. </script>';} else echo html_wysiwyg($field->element_name, $value, $field->getOption('editor')); ?>
  11.  
9. Радуемся жизни.
#15 3 декабря 2015 в 14:58
для 2.2.1 актуально?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.