Html редактор Ace. Обновление !!!

1248
HTML ACE предназначен для удобной работы с встроенным html кодом на вашем сайте. В стандартном поле HTML блок нет подсветки и эта проблема решена в HTML ACE, плюс подключены клавиатурные комбинации. В пакете идет само поле HTML ACE, которое вы можете подключить к типу контента и виджет с встроенным HTML ACE. Подробное об этом редакторе вы можете прочитать тут https://ace.c9.io/, пощупать как работает редактор тут https://ace.c9.io/build/kitchen-sink.html (в левом блоке настроек уберите галочку с Read-only для доступа к редактированию страницы)
В данной реализации я настроил работу с Emmet.
Доступны следующие клавиатурные комбинации
Спойлер
(Большая часть комбинаций мною были проверены и работали должным образом, если вы обнаружите не рабочий вариант, пожалуйста сообщите мне об этом)

Обновление
+ Добавлена возможность вывода поля Html Ace в записях
Шаблон OneMinima для InstanCMS2 (Релиз)
Комментарии (8)
Олег Васильевич я 13 января 2018 в 20:58 0
small user social cms
Тестил пару дней на сайт. Совсем другая песня.
Atid, спасибо!
Alex 13 января 2018 в 21:27 0
small user social cms
Да просто супер, очень понравилось.
Там у вас поле для контента есть но почему то без функции вывода на сайт
public function parse($value) // вывод записи контента
это на обновление оставили, или как?
Atid 14 января 2018 в 00:23 0
small user social cms
Я доподлинно пока не знаю как будет правильнее сделать этот вывод. поэтому не подключил пока.
Код PHP:
  1. public function parse($value){
  2.  
  3. if ($this->getOption('is_html_filter')){
  4. $value = cmsEventsManager::hook('html_filter', array(
  5. 'text' => $value,
  6. 'is_auto_br' => true,
  7. 'build_redirect_link' => (bool)$this->getOption('build_redirect_link')
  8. ));
  9. }
  10.  
  11. return $value;
  12.  
  13. }
Вот так вроде правильно.
Alex 14 января 2018 в 22:14 0
small user social cms
Вот так работает правильно ::

Код PHP:
  1. // получаем фильтр ::
  2. public function getFilterInput($value) {
  3. return html_input('text', $this->name, $value);
  4. }
  5.  
  6. // вывод записи контента ::
  7. public function parse($value) {
  8. if ($this->getOption('is_html_filter')){
  9. $value = cmsEventsManager::hook('html_filter', array(
  10. 'text' => $value,
  11. 'is_auto_br' => false,
  12. 'build_smiles' => $this->getOption('editor') == 'markitup', // пока что только так
  13. 'build_redirect_link' => (bool)$this->getOption('build_redirect_link')
  14. ));
  15. }
  16. return $value;
  17. }
  18.  
  19. // применить фильтр ::
  20. public function applyFilter($model, $value) {
  21. return $model->filterLike($this->name, "%{$value}%");
  22. }
Atid 15 января 2018 в 01:42 0
small user social cms
а для чего
Код PHP:
  1. `build_smiles' => $this->getOption('editor') == 'markitup',
? Что он делает?
ideasdigger 15 января 2018 в 06:43 0
small user social cms
$this->getOption('editor')
получает опцию из настроек
$this->getOption('editor') == 'markitup',
сравнивает её с markitup возвращает true
Loadырь 15 января 2018 в 07:26 0
small user social cms
Весь блок public function parse($value) в данном типе поля не нужен так как нет этих опций 'is_html_filter', 'editor', 'build_redirect_link'. Либо он сведётся к минимуму
Код PHP:
  1. // вывод записи контента ::
  2. public function parse($value) {
  3. return $value;
  4. }
А это равнозначно тому, что выведет родительский класс поля.
Методы public function getFilterInput($value) и public function applyFilter($model, $value), тоже сомнителны, нужна ли фильтрация по коду в данном случае.
В общем всё гораздо проще можно сделать. А если это поле используется только в виджете с кодом, то его можно вообще сделать скрытым в общем списке полей.
webtotma 13 января 2018 в 21:52 0
small user social cms
За настройку emmet отдельное спасибо ...