Добавляем функцию HTML Beautify/Prettify в Ace!

Всем привет, работая через админку с кодом, часто возмущало, что не могу выровнять код, поэтому постоянно пользовался сторонними сайтами для этого… Но вот моему терпению, настал конец) Решил покопаться в компоненте, поискать, где же там эта функция зарыта?) Скажу так, она там есть, но почему то не работает, в связи с чем, я «прикрутил» стороннюю библиотеку для этого!





Для ленивых, «вшил» функционал в компонент, можете просто скачать его и заменить уже установленный…
Только после скачивания переименуйте архив в: ace-1.9.3-pl.transport.zip

А для тех, кто хочет самостоятельно его добавить:

1) Скачиваем библиотеку beautifier.js и размещаем её в папку
assets/components/ace

2) Тут же, в этой же папке, открываем
assets/components/ace/modx.texteditor.js
и вставляем после 30 строки:
beatify : function() {
    var val = this.editor.session.getValue();
    var array = val.split(/\n/);
    array[0] = array[0].trim();
    val = array.join("\n");
    val = html_beautify(val);
    this.editor.session.setValue(val);
},
далее, после 385 строки новое сочетание клавиш:
this.editor.commands.addCommand({
    name: "beatify",
    bindKey: {win: "Ctrl-Shift-B", mac: "Ctrl-Shift-B"},
    exec: this.beatify.bind(this),
    readOnly: true
});

3) Открываем файл:
core/components/ace/model/ace/ace.class.php
и вписываем после 38 строки:
$this->modx->controller->addJavascript($this->config['assetsUrl'].'beautifier.js');
т.е. перед подключением файла ace/ace.min.js

4) Очищаем кэш сайта.

Готово! Теперь, открыв код чанка или шаблона, жмём Ctrl+Shift+B
Если не работает, возможно опять же дело в кэше, обновите страницу с кэшем
Windows: Ctrl+F5
MacOS: Cmd+Shift+R

P.S. Если Вы не знали, можно открыть у Ace информацию о всех сочетаниях клавиш нажатием: Ctrl+Alt+H

В данный момент ведётся активная работа над MiniShop3 силами сообщества и руками @Николай Савин, поэтому призываю всех неравнодушных поддержать эту работу финансово.
Денис Усманов
03 октября 2023, 12:12
modx.pro
7
2 149
+10

Комментарии: 10

Arahort
03 октября 2023, 12:36
0
Несовсем понятно что имеется ввиду под «часто возмущало, что не могу выровнять код,» ведь в Ace выравнивание работает через таб. Или имеется ввиду аналог Reformat Code из phpStorm?
    Денис Усманов
    03 октября 2023, 12:38
    0
    Таб — это понятно, когда сам пишешь, всё ровно. А если у тебя скопированный внешне код не ровный, выравнивать его табом быстро надоест…
      Arahort
      03 октября 2023, 12:51
      0
      Если ctrl+a и весь код отформатировать полностью, тогда да, круто, спасибо за гайд!
    Дмитрий Вершинин
    17 февраля 2024, 00:50
    0
    В chrome сочетанием клавиш Ctrl+Shift+B скрывается/показывается панель закладок. Как можно на другое сочетание переназначить?
      Денис Усманов
      17 февраля 2024, 02:04
      0
      Ctrl+F5, обнови страницу с кэшем и заработает.
        Дмитрий Вершинин
        20 февраля 2024, 23:11
        0
        сработало, спасибо! :)
        правда не понимаю как работает комбинация клавиш? вначале перехватывается сайтом, потом, если не перехватилась, то браузером?
          Денис Усманов
          20 февраля 2024, 23:13
          0
          Скрипт на сайте перехватывает комбинации, а то что не работала комбинация, это потому что, у тебя кэшированная версия скрипта от Ace была без нововведения по Ctrl+Shift+B.
      Александр
      27 марта 2024, 14:35
      +1
      Спасибо, дорогой ))
        Серый
        03 октября 2024, 15:31
        0
        Большое человеческое спасибо! Наконец-то это случилось!
          Дмитрий
          05 декабря 2024, 10:12
          +1
          Денис, напиши пожалуйста, что не использовать на файлы js, а то будет как у меня, 4 часа времени восстанавливать построчно, а так работает без нареканий, спасибо
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            10