Компонент "Хуки" для InstantCMS 2 2.X

3147
Компонент \"Хуки\" для InstantCMS 2

Редактор файлов из админки с возможностью вносить любые изменения в код файлов системы с запоминанием внесенных изменений и возможностью их применения/отмены в один клик.

Теперь работа над сайтом станет гораздо легче. Никаких скачиваний/заливок файлов, никаких редакторов кода. Удобный редактор кода с подсветкой синтаксиса, проверкой закрытия скобок, историей изменений и прочими прелестями прямо в админке сайта. Плюс ко всему этому функционал создания хуков:

1. Хуки могут быть добавлены на сайт/убраны с сайта одним кликом мыши.
2. Множество гибких настроек вставки хуков и их оформления
3. При изменении файла хук сам оповестит вас об этом

Подробнее о возможностях компонента смотрите в видео-обзоре:

Важно!
1. Для работы с файлами используется доступ по FTP
2. Перед установкой компонента и внесением изменений не забывайте делать бэкап сайта
Компонент "Языки" для ICMS 2 - Обновление 1.1.2 | Компонент "Языки 2.0" для InstantCMS 2
Комментарии (38)
kirkr 20 октября 2017 в 08:01 0
Единственное настораживает редактор, через который можно править все файлы, как бы потом взломов не увеличилось бы =)
А так идея хорошая, напоминает подобие системы как в WP
dwd 20 октября 2017 в 08:11 +2
Это все равно что сказать "Настораживает наличие тока в розетке, не увеличилось бы количество несчастных случаев". Поверьте, пока вы сами не подарите кому-то ключи от сайта пароли ничего подобного не произойдет.
kirkr 20 октября 2017 в 09:58 0
1. Для работы с файлами используется доступ по FTP
Данные хранятся в базе или в файле как и список пользователей кому доступна функция редактирования файлов?
dwd 20 октября 2017 в 10:03 0
Данные хранятся в БД, но если паранойя все-таки спать спокойно не дает, то никто не мешает вам удалять их по завершении каждого сеанса. Ну и если будет необходимость изменить способ хранения на файл я без проблем для вас это сделаю.
kirkr 20 октября 2017 в 12:17 0
У меня не паранойя, а опыт при разгребания у клиентов спам сайтов из-за таких вот менеджеров файлов. Поэтому важно понимать из чего сделано прежде чем думать о покупке продукта.
dwd 20 октября 2017 в 12:39 0
У меня нет желания разводить холивары и меряться аргументами. Уже ответил выше - пожелаете хранение в файле - будет в файле. Как говорится - любой каприз.
dwd 20 октября 2017 в 13:04 0
Возможность хранения данных в файле добавлена в установочный пакет.
AndroS 20 октября 2017 в 15:34 0
Есть простой способ решить эту проблему... Я так делаю: включа. ftp только по мере необходимости, все остальное время держу его выключенным...
Ris 20 октября 2017 в 08:32 0
NppFTP ?
чебурек дохлэй мыш 20 октября 2017 в 08:39 0
Что сказать, круто! Я как-то однажды пару месяцев назад мечтал о таком функционале)) Да боялся вслух произносить, думал, что это нереально)) Разбогатею - обязательно буду брать.
Алексей Тимофеев 20 октября 2017 в 08:49 0
Отличная разработка!
ermakover 20 октября 2017 в 08:55 +1
Очень полезная штука, спасибо! Вплоть до того, что я постоянно после обновления забываю внести код Яндекс-метрики и потом смотрю - у меня ноль посетителей laugh
А вот вопрос - можно ли будет заменить часть кода в файле на другой, чтобы после обновления снова не вносить правки, а компонент сам запустил хук?
Конкретно в файле model.php в комментариях у меня изменён код и порядок комментариев от новых к старым получается.
И каждый раз после обновления мне приходится лазить и менять код.
А таких правок штук двадцать. И всё приходится вспоминать и делать вручную.
dwd 20 октября 2017 в 09:02 +2
Если в ходе обновления файл в котором размещен хук был обновлен, то хук автоматически выключится. После обновления достаточно открыть админку и заново включить ваши хуки. В тех случаях, где изменения в файле глобальны и данный хук уже не подходит у вас не получится его включить до тех пор, пока вы не адаптируете его под новую версию файла. Но в любом случае открывая админку компонента вы сразу же увидите, что данный хук выключен и вам не придется тратить время на поиски того, что отвалилось при обновлении.
ermakover 20 октября 2017 в 09:18 0
Отлично.
То есть порядок такой?
Я обновляюсь, допустим с 2.8.1 до 2.8.2, устанавливаю компонент "Хуки", вношу все свои правки и при последующих обновлениях просто включаю нужные хуки, кроме тех, которые слетели намертво. Эти редактирую. Верно?
чебурек дохлэй мыш 20 октября 2017 в 09:25 +1
На видео это всё показано. Посмотрите, всего-то 11 минут))
ermakover 20 октября 2017 в 09:28 0
Видео я посмотрел полностью, но уточнить никогда не помешает.
dwd 20 октября 2017 в 09:26 +1
Да, именно так.
BoAnRo 20 октября 2017 в 23:37 +5
Идея точно не новая. Такую систему внесения изменений в файлы несколько лет назад реализовал еще Скорпион. Сама идея детально была описана здесь. А сам компонент представлен здесь и здесь. Сам этот компонент свое задание выполняет и работает без проблем даже в последней версии instantcms. Но к сожалению он так и не был доведен до идеала (остались некоторые неудобства) и не был выставлен в каталоге дополнений.

Тем не менее я уже 2 года пользуюсь этим компонентом Скорпиона, и он сильно упростил мне жизнь обновление сайта между версиями icms. С его помощью переношу между версиями где-то около 50 правок. Поэтому очень хорошо понимаю насколько важен такой функционал.

Я очень рад, что появился новый компонент, который выполняет те же функции, но в котором, судя по вышеприведенному видео, все очень красиво сделано и доведено почти до идеала. В том числе по количеству опций, которые сопровождают основной функционал. Скорее всего рано или поздно мне придется купить этот компонент. Разработчику большое спасибо, что реализовали это! Для многих использование instantcms станет теперь еще более удобным.
Pocus 21 октября 2017 в 16:56 +2
dwd, я одного не понял, эта штука реально исправляет файлы, или вносит правки "на лету" перед скармливанием интерпретатору php?

Если на лету, то какую дополнительную нагрузку создает компонент, если страница формируется из 200 файлов и в половине из них есть правки? Ведь каждый файл нужно проверить и обработать.
dwd 21 октября 2017 в 17:16 +2
Реально исправляет. Внесение таких изменений на лету это во-первых нагрузка, а во вторых процесс получится неконтролируемый: применился хук - не применился, если не применился то почему - сиди да гадай.
Pocus 21 октября 2017 в 18:45 0
Понятно. Тогда следующий вопрос.
Если я залью файл из бекапа, в котором уже есть исправления и компонент это увидит, не получится ли дублирования правок?
чебурек дохлэй мыш 21 октября 2017 в 20:46 +3
Перепробовал много разных вариантов. В общем, так:

- если в файле есть изменения, сделанные вручную, и нужно эти изменения добавить хуком, то добавятся еще раз;
- если в файле нет изменений, и мы их добавляем хуком, то компонент "помнит" о них, и если даже этот же файл перезалить заново из бекапа, где хук уже применен, то компонент его распознает и всё работает, как и работало (второй раз не записывает);
- если к файлу применить хук, а потом наверх залить этот же файл без правок, то хук отключается, при включении правки записываются заново
- если в файле не найден код, который нужно править, то выдает ошибку, что код не найден.

Ответ на Ваш вопрос - если изменения были сделаны с помощью компонента, то второй раз эти изменения сделаны не будут, даже при загрузке нового файла из бекапа. Если изменения были сделаны вручную, то компонент сделает эти правки еще раз, а если не найдет изменяемый код, то выдаст ошибку.
dwd 21 октября 2017 в 22:49 +2
Не получится. Когда вы зальете файл из бэкапа существует 3 варианта развития событий:
1. Файл уже содержит хук. В этом случае хук не будет применен повторно, а в админке получит статус "Работает". Т е. хук активен.
2. Хук в файле отсутствует но присутствует код, который должен быть обработан хуком. В этом случае хук в админке получит статус "Выключен" и вам надо включить его чтобы он применился.
3. Файл который вы загрузили не содержит хука и ни разу не похож на тот, который должен быть хуком обработан. В этом случае хук в админке получит статус "Выключен" и включить его у вас не получится до тех пор, пока вы не исправите настройки хука для работы с новой версией этого файла.

Дублирование возможно только в том случае если вы сами продублируете что-либо вручную.
Эндрю Ua 23 октября 2017 в 02:09 0
Слава богу.
Простите меня разработчики... Но...
Я думал что все таки сделают данную разработку в обновлении instantcms - редактора файлов из под админки так и для шаблона очень удобно. Не нужно ковыряться в папках и редактировать.
Эндрю Ua 23 октября 2017 в 02:10 0
Спасибо DWD за данную разработку.
WebMan 23 октября 2017 в 02:42 +5
Компонент интересный, в некоторых случаях будет полезен. Поставил плюс.
Но, dwd, Вам бы изменить терминологию, а то сейчас Вы вводите людей в заблуждение. То, что делает компонент - внесение правок в исходный код - называется "хаком" (hack) и к хукам никакого отношения не имеет. А "хуки" (hooks) в Двойке - это перехват событий: " Обработка событий в Документации".
Не сочтите за придирку, dwd, но правильная терминология позволяет людям понимать друг друга. Особенно важно это для новых пользователей Двойки, который только начинают в ней разбираться.
dwd 23 октября 2017 в 13:25 0
Спасибо за ликбез, но, честное слово - я знаю в чем отличие этих двух понятий.Изначально компонент планировался именно как Хуки и предназначался для добавления собственных хуков, но после того как стало ясно что одной вставкой собственных хуков дело не ограничится его функционал был расширен до стадии "Хуки и хаки". Ну а название я не стал меня из банальнейшей лени и привычки. я пользуюсь им уже пол года и привык что он так называется.)))
WebMan 23 октября 2017 в 13:53 +3
Нисколько не сомневаюсь в Вашей квалификации и знаниях, dwd. smile Моя цель только в том, чтобы не вносилась путаница в названиях в и без того сложной системе Двойки.
Тогда хотя бы измените терминологию внутри компонента и в его описании, чётко разделив, где хаки, а где - хуки. Тогда это сможет помочь новичкам более точно понять эти термины и правильно ими пользоваться.
Ris 23 октября 2017 в 20:40 0
честное слово - я знаю в чем отличие этих двух понятий.
Как-то стало принято именовать любые правки системного кода движка хаками, а дополнительные файлы, вызываемые по cmsEventsManager::hook - хуками. По крайней мере, я так привык.
Возможно разработчики озвучат эту разницу, для понятности терминологии.
DzurDzuk 8 ноября 2017 в 21:19 0
Здравствуйте!
Я правильно понимаю, что дополнение вносит изменения в код InstantCMS?
dwd 9 ноября 2017 в 00:00 +1
Здравствуйте! Да, то есть нет.)))
Само дополнение ничего никуда не вносит, но оно предназначено для того, чтобы вы могли их вносить. Именно изменения и именно в код системы.
DzurDzuk 9 ноября 2017 в 01:57 0
))) сорян, так вышло. Да, имел ввиду изменения в исходном коде при установке. А код открытый?
dwd 9 ноября 2017 в 02:21 +1
Код системы не затронут, код компонента открыт.
Pocus 9 ноября 2017 в 21:52 +2
Ну вот, попользовался я некоторое время этим компонентом и теперь могу поделиться наблюдениями.

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

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

Однако, если предполагается развитие компонента (о чем намекает наличие пока не работающей кнопки "Сохранить хук в файл"), мне бы хотелось высказать ряд замечаний и предложений:

Замечания
Предложения
dwd 10 ноября 2017 в 01:00 +3
Спасибо за развернутый обзор, исправил все указанные вами недочеты. По пунктам
1. Исправлено
2. Исправлено
3. Нет такой ошибки
4. Нет такой ошибки
5. Исправлено

По поводу пунктов 3 и 4 - ситуация описана вами в корне неверно. Ничего из вышеописанного при включении/выключении хуков не происходит. Описанные вами "недоразумения" происходят при попытке "горячей" правки, т.е. когда вы пытаетесь отредактировать включенный и работающий хук изменив его параметры. Изначально полагалось, что выключение хука перед его редактированием это очевидная норма. Но коль это оказалось не столь явным как я полагал, то мной внесены изменения, которые вместо вас выключат хук перед его редактированием во избежание "горячих" правок.

Отдельное спасибо за свое виденье развития компонента, это большой объем информации к размышлению. Планы по развитию есть, но точных сроков их реализации я пока назвать не могу.

По поводу лишних тем и прочих излишеств - на вкус и цвет товарищей нет. Если вам не нужны какие-либо темы вы можете просто отключить их поставив в названии файла темы нижнее подчеркивание, например _isotope.css или же наоборот включить любые из отключенных тем убрав его. Удобство редактора тоже понятие субъективное - он полностью устраивает меня и чем-то не нравится вам. Уж не знаю чем он вам не угодил, но это один из лучших на мой взгляд свободных редакторов и с задачей редактирования кода он справляется на все 100.

Здесь, на форуме, упоминалась админка от textolite.ru c очень компактным редактором, может его использовать?
Хотя бы потому что этого не позволяют правила его использования:
rookee 12 ноября 2017 в 21:33 0
Ведь есть готовая система модификаций без внесения правок в оригинальные файлы ядра.
https://github.com/vqmod/vqmod/wiki И установку дополнений делать через неё удобно было бы
BoAnRo 8 января 2018 в 04:17 0
Уточните, пожалуйста, стоимость компонента включает в себя и все последующие его обновления? За них не нужно будет отдельно платить?
BoAnRo 8 января 2018 в 04:23 0
И текущая версия Хуков должна работать без проблем с последней версией InstantCMS?