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

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

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

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

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

Важно!
1. Для работы с файлами используется доступ по FTP
2. Перед установкой компонента и внесением изменений не забывайте делать бэкап сайта
0
kirkr kirkr 4 года назад #
Единственное настораживает редактор, через который можно править все файлы, как бы потом взломов не увеличилось бы =)
А так идея хорошая, напоминает подобие системы как в WP
+2
dwd dwd 4 года назад #
Это все равно что сказать "Настораживает наличие тока в розетке, не увеличилось бы количество несчастных случаев". Поверьте, пока вы сами не подарите кому-то ключи от сайта пароли ничего подобного не произойдет.
0
kirkr kirkr 4 года назад #
1. Для работы с файлами используется доступ по FTP
Данные хранятся в базе или в файле как и список пользователей кому доступна функция редактирования файлов?
0
dwd dwd 4 года назад #
Данные хранятся в БД, но если паранойя все-таки спать спокойно не дает, то никто не мешает вам удалять их по завершении каждого сеанса. Ну и если будет необходимость изменить способ хранения на файл я без проблем для вас это сделаю.
0
kirkr kirkr 4 года назад #
У меня не паранойя, а опыт при разгребания у клиентов спам сайтов из-за таких вот менеджеров файлов. Поэтому важно понимать из чего сделано прежде чем думать о покупке продукта.
0
dwd dwd 4 года назад #
У меня нет желания разводить холивары и меряться аргументами. Уже ответил выше - пожелаете хранение в файле - будет в файле. Как говорится - любой каприз.
+1
dwd dwd 4 года назад #
Возможность хранения данных в файле добавлена в установочный пакет.
0
AndroS AndroS 4 года назад #
Есть простой способ решить эту проблему... Я так делаю: включа. ftp только по мере необходимости, все остальное время держу его выключенным...
0
Ris Ris 4 года назад #
NppFTP ?
0
Нифигаccе о-го-гошеньки Нифигаccе о-го-гошеньки 4 года назад #
Что сказать, круто! Я как-то однажды пару месяцев назад мечтал о таком функционале)) Да боялся вслух произносить, думал, что это нереально)) Разбогатею - обязательно буду брать.
0
Алексей Т Алексей Т 4 года назад #
Отличная разработка!
+1
ermakover ermakover 4 года назад #
Очень полезная штука, спасибо! Вплоть до того, что я постоянно после обновления забываю внести код Яндекс-метрики и потом смотрю - у меня ноль посетителей laugh
А вот вопрос - можно ли будет заменить часть кода в файле на другой, чтобы после обновления снова не вносить правки, а компонент сам запустил хук?
Конкретно в файле model.php в комментариях у меня изменён код и порядок комментариев от новых к старым получается.
И каждый раз после обновления мне приходится лазить и менять код.
А таких правок штук двадцать. И всё приходится вспоминать и делать вручную.
+2
dwd dwd 4 года назад #
Если в ходе обновления файл в котором размещен хук был обновлен, то хук автоматически выключится. После обновления достаточно открыть админку и заново включить ваши хуки. В тех случаях, где изменения в файле глобальны и данный хук уже не подходит у вас не получится его включить до тех пор, пока вы не адаптируете его под новую версию файла. Но в любом случае открывая админку компонента вы сразу же увидите, что данный хук выключен и вам не придется тратить время на поиски того, что отвалилось при обновлении.
0
ermakover ermakover 4 года назад #
Отлично.
То есть порядок такой?
Я обновляюсь, допустим с 2.8.1 до 2.8.2, устанавливаю компонент "Хуки", вношу все свои правки и при последующих обновлениях просто включаю нужные хуки, кроме тех, которые слетели намертво. Эти редактирую. Верно?
+1
Нифигаccе о-го-гошеньки Нифигаccе о-го-гошеньки 4 года назад #
На видео это всё показано. Посмотрите, всего-то 11 минут))
0
ermakover ermakover 4 года назад #
Видео я посмотрел полностью, но уточнить никогда не помешает.
+1
dwd dwd 4 года назад #
Да, именно так.
+5
BoAnRo BoAnRo 4 года назад #
Идея точно не новая. Такую систему внесения изменений в файлы несколько лет назад реализовал еще Скорпион. Сама идея детально была описана здесь. А сам компонент представлен здесь и здесь. Сам этот компонент свое задание выполняет и работает без проблем даже в последней версии instantcms. Но к сожалению он так и не был доведен до идеала (остались некоторые неудобства) и не был выставлен в каталоге дополнений.

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

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

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

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

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

Дублирование возможно только в том случае если вы сами продублируете что-либо вручную.
0
Эндрю Ua Эндрю Ua 4 года назад #
Слава богу.
Простите меня разработчики... Но...
Я думал что все таки сделают данную разработку в обновлении instantcms - редактора файлов из под админки так и для шаблона очень удобно. Не нужно ковыряться в папках и редактировать.
0
Эндрю Ua Эндрю Ua 4 года назад #
Спасибо DWD за данную разработку.
+5
WebMan WebMan 4 года назад #
Компонент интересный, в некоторых случаях будет полезен. Поставил плюс.
Но, dwd, Вам бы изменить терминологию, а то сейчас Вы вводите людей в заблуждение. То, что делает компонент - внесение правок в исходный код - называется "хаком" (hack) и к хукам никакого отношения не имеет. А "хуки" (hooks) в Двойке - это перехват событий: " Обработка событий в Документации".
Не сочтите за придирку, dwd, но правильная терминология позволяет людям понимать друг друга. Особенно важно это для новых пользователей Двойки, который только начинают в ней разбираться.
0
dwd dwd 4 года назад #
Спасибо за ликбез, но, честное слово - я знаю в чем отличие этих двух понятий.Изначально компонент планировался именно как Хуки и предназначался для добавления собственных хуков, но после того как стало ясно что одной вставкой собственных хуков дело не ограничится его функционал был расширен до стадии "Хуки и хаки". Ну а название я не стал меня из банальнейшей лени и привычки. я пользуюсь им уже пол года и привык что он так называется.)))
+3
WebMan WebMan 4 года назад #
Нисколько не сомневаюсь в Вашей квалификации и знаниях, dwd. smile Моя цель только в том, чтобы не вносилась путаница в названиях в и без того сложной системе Двойки.
Тогда хотя бы измените терминологию внутри компонента и в его описании, чётко разделив, где хаки, а где - хуки. Тогда это сможет помочь новичкам более точно понять эти термины и правильно ими пользоваться.
0
Ris Ris 4 года назад #
честное слово - я знаю в чем отличие этих двух понятий.
Как-то стало принято именовать любые правки системного кода движка хаками, а дополнительные файлы, вызываемые по cmsEventsManager::hook - хуками. По крайней мере, я так привык.
Возможно разработчики озвучат эту разницу, для понятности терминологии.
0
MiMoHOD MiMoHOD 4 года назад #
Здравствуйте!
Я правильно понимаю, что дополнение вносит изменения в код InstantCMS?
+1
dwd dwd 4 года назад #
Здравствуйте! Да, то есть нет.)))
Само дополнение ничего никуда не вносит, но оно предназначено для того, чтобы вы могли их вносить. Именно изменения и именно в код системы.
0
MiMoHOD MiMoHOD 4 года назад #
))) сорян, так вышло. Да, имел ввиду изменения в исходном коде при установке. А код открытый?
+1
dwd dwd 4 года назад #
Код системы не затронут, код компонента открыт.
+2
Pocus Pocus 4 года назад #
Ну вот, попользовался я некоторое время этим компонентом и теперь могу поделиться наблюдениями.

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

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

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

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

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

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

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

Здесь, на форуме, упоминалась админка от textolite.ru c очень компактным редактором, может его использовать?
Хотя бы потому что этого не позволяют правила его использования:
0
rookee rookee 4 года назад #
Ведь есть готовая система модификаций без внесения правок в оригинальные файлы ядра.
https://github.com/vqmod/vqmod/wiki И установку дополнений делать через неё удобно было бы
0
BoAnRo BoAnRo 4 года назад #
Уточните, пожалуйста, стоимость компонента включает в себя и все последующие его обновления? За них не нужно будет отдельно платить?
0
BoAnRo BoAnRo 4 года назад #
И текущая версия Хуков должна работать без проблем с последней версией InstantCMS?
0
Сергей Сергей 1 год назад #
Работает давно и без проблем, но возник вопрос, что более приемлемо?
Создать десять меленьких хуков в одном файле?
или
Сделать все правки одним хуком, на половину кода этого файла? scratch
+1
dwd dwd 1 год назад #
Это вопрос исключительно вашего удобства. Делайте так, как вам удобно.
С точки зрения производительности или с любых других точек зрения никакой разницы нет.
0
Сергей Сергей 1 год назад #
Наконец обновил движок до последней версии, в принципе всё работает и на старой версии 1.0.4, но наверно надо обновится до последних Хуков 1.0.7.
Отсюда вопрос по всем вашим разработкам, я так понимаю что можно накатывать сразу с 1.0.4 до 1.0.7 поскольку всё вами очень грамотно устроено?
0
dwd dwd 1 год назад #
Да, просто распаковываете архив и заливаете содержимое папки package в корень сайта. Больше никаких манипуляций не требуется
0
Сергей Сергей 1 год назад #
Версия не изменилась на 1.0.7, горит 1.0.4, как поправить? А то потом совсем запутаюсь.
Могу заверить что это и все проблемы, компонент работает отменно, созданные настройки сохранены, функционал не пострадал. laugh
+1
dwd dwd 1 год назад #
Можно через phpMyadmin например - таблица controllers, столбец version. А можно запросом
Код SQL:
  1. UPDATE `cms_controllers` SET `version`='1.0.7' WHERE name = 'hooker';

Еще от автора

Компонент «Продажа полей» для ICMS 2
Компонент для тотального управления продажей полей. Возможна оплата показа пользователями и самим автором. Масса типов продажи полей.
Компонент «Мотивация пользователей» для ICMS 2
Компонент предназначен для поощрения пользователей за систематическое посещение сайта.
Поле «Поддерживаю!» для ICMS 2
Поле «Поддерживаю!» предназначено для сбора голосов в решении какой-то задачи.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.