Компонент "Мои патчи" v.1.1

+23
4.40K
Новогодние каникулы прошли не зря crazy
Представляю публике следующую версии своего компонента.
Компонент "Мои патчи" v.1.1

Установка/обновление стандартным (для ICMS2) способом.
Минимально необходимая версия системы 2.1.2
При обновлении версии 1.0, данные базы патчей сохраняется.
Но это не значить, что перед обновлением не надо делать бэкап.
Бэкап наше все — поэтому его следует делать всегда!

Disclaimer

Данный компонент имеет деструктивные функции!
То есть компонент изменяет содержимое файлов InstantCMS. Впрочем для этого компонент и создавался. joke
Поэтому использование компонента подразумевает использование на свой страх и риск.
Мною были предприняты всевозможные защиты "от дурака", но идеального кода не бывает.
Поэтому пользуйтесь данным компонентом с осторожностью!
А на живых сайта — с двойной осторожностью.
Как говорится, автор никакой ответственности за причиненные убытки не несет. glasses

Изменения в версии 1.1
+ добавлена возможность выгружать и загружать патчи в/из файлов
+ добавлена проверка соответствия версии патча и системы
+ добавлена возможность включать/отключать маркер места где производилась замена кода (вкладка "Опции")
+ добавлена возможность изменять вид маркера (Осторожно! Защиты от "дурака" в данной опции пока нет)
— из дистрибутива удалены данные демо — патча необходимого для работы компонента (его теперь необходимо скачать отдельно)


1.1 Создаете патч, описывая его назначение.
1.2. Добавляете в созданный патч файлы которые необходимо изменить, с указанием что на что нужно поменять.
В данной версии возможно поменять код только в одном месте. То есть, если заменяемый код встретится несколько раз в файле — то сработает "ловушка" и будет выведено предупреждение. В дальнейшем, возможно, будет разработан механизм для определения количества мест для замены.

2.1 Используя пункт "Загрузка патча" можно загрузить созданный в ручную или ранее выгруженный файл с патчем.
2.2 Компонент понимает как архив (расширение — zip) с патчем/набором патчей так и отдельно созданный файл патча (расширение — patch). Сам файл патча представляет собой обычный текстовый файл с не сложной и вполне понятной структурой. Для примера и знакомства со структурой используйте Демо-патч, который кстати нужно обязательно загрузить в компонент после его установки и применить. Данный патч необходим для корректной работы компонента и для проверки его работоспособности.
2.3 Используя пункт "Выгрузка патча" в разделе "Действия" списка всех патчей можно выгрузить патч для сохранения его или обмена с другими участниками сообщества.

3. После внесения всех файлов — для применения всех "включенных" патчей необходимо нажать клавишу "Применить". Применение патчей каждый раз производится заново.
4. Как патчи так и файлы в патчах можно включать/выключать. Понятное дело, что выключенные патчи/файлы в процессе патчения участия не принимают.
5. Поле "порядок" определяет порядок применения патчей. То есть сначала все файлы для патчения сортируются по порядку патчей и уже в самом патче по порядку файлов.
6. Для восстановление системы в первоначальное состояние используйте клавишу "Восстановить". При этом все измененные файлы возвращаются в исходное состояние, а все патчи выключаются.
7. Если при редактировании патча буде удален файл, который больше нигде (имеется ввиду в наборах других патчей) не используется, то данный файл восстанавливается в своё первоначальное состояние автоматически (без использования клавиши "Восстановить").
8. Если после применения патчей что-то пошло не так и Вы не можете восстановить систему клавишей "Восстановить", то зайдите по фтп на свой сервер и просто переименуйте сохраненные оригиналы патченных файлов (имя_патченного_файла.*.original) в его первоначальное имя. (убрав приставку .original)

9. Компонент в местах замены кода помечает маркерами начала замены участка кода и его окончание. Данная функция может быть отключена в разделе "Опции — Конфигурация маркера". Также можно самостоятельно задать вид маркера, при этом можно использовать переменную $description, которая выводит название патча. Изменяйте вид маркера очень аккуратно! Так как защиты от "дурака" у данной функции пока нет, последствия могут быть самые непредсказуемые. Вообще-то использовать маркер лучше только при отладке патча, в остальных случаях его лучше отключать.


1. Добавляет три новых стиля. Два из них для индикации применения патча/файлов (применен или есть ошибки). Один стиль для иконки в админ панели
2. Изменяется схема обработки массива с параметром "flag" в grid-шаблонах, только для компонента "mypatch"
3. Создается иконка компонента в админ панели.

1. Возможность не изменять, а (при необходимости) создавать новые файлы.
2. Выгрузка/загрузка патчей из текстовых (или *.cvs ?) файлов, для более удобного обмена патчами, чтобы не вбивать все ручками.
3. Обработка более одного фрагмента заменяемого кода в одном файле. Сейчас это тоже можно сделать — но немного извратным способом.
4. Включение/отключение комментариев в изменяемом файле.
5. Выгрузка одновремено ВСЕЙ базы патчей (бэкап)
6. Возможность включение/отключение комментариев в конкретном патче/файле
7. Разделение патчей на группы/категории — патч системы, патч шаблона, патч wysiwyg-редактора и т.д
8. Вывод пути к файлам в виде древовидного меню (слева), как выводиться меню в контенте.
Тема на форуме о ходе работы над компонентом.

Прошу строго не судить. Здравая критика приветствуется.
C удовольствием выслушаю все замечания и пожелания zst

Приятных всем хаков! dance
0
Алексей Т Алексей Т 7 лет назад #
Хорошая штука +
0
Reborn Reborn 7 лет назад #
C удовольствием выслушаю все замечания и пожелания
Очень удобная штука vqmod , не перезаписывает измененные файлы, давно использую.
Хорошо бы взять за основу для этого компонента.
0
Скорпион Скорпион 7 лет назад #
PolarOne уже упоминал мне об этой штуке, когда обсуждали версию 1.0
Боюсь для меня это сложно будет, да и привык я все делать своими руками, пусть будет "изобретение велосипеда", но это изобретение своего велосипеда :)
Да и немного практики в PHP мне не помешает, ибо в свое время, лет так надцать назад, я не уделил достаточного внимания данному языку :)
Теперь вот наверстываю :)
0
Reborn Reborn 7 лет назад #
Простейший пример работы~ найти и заменить.
Код XML:
  1. <modification>
  2. <file name="admin/model/*/*.php">
  3. <operation error = "skip">
  4. <search position="after"><![CDATA[$this->cache->delete]]></search>
  5. <add><![CDATA[ $this->cache->delete('seo_pro');]]></add>
  6. </operation>
  7. </file>
  8. <file name="catalog/view/theme/*/template/product/product.tpl">
  9. <operation><!--Share Product-->
  10. <search position="replace" offset="4"><![CDATA[<div class="product-sharing img-thumbnail-transparent hidden-xs"><div class="addthis_sharing_toolbox"></div></div>]]></search>
  11. <add><![CDATA[
  12. <div class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="none" data-yashareQuickServices="vkontakte,facebook,twitter,odnoklassniki,moimir,lj,gplus"></div>
  13. ]]></add>
  14. </operation>
  15. </modification>
0
Скорпион Скорпион 7 лет назад #
Reborn, дружище ты мне вот что скажи.
Для запуска vqmod править сами файлы InstantCMS надо? Ну там код какой-либо вставить, для перехватов и преобразований на лету.
Или оригинальные файлы совсем-совсем не затрагиваются и используются как есть?
0
Reborn Reborn 7 лет назад #
Reborn, дружище ты мне вот что скажи. Для запуска vqmod править сами файлы InstantCMS надо? Ну там код какой-либо вставить, для перехватов и преобразований на лету. Или оригинальные файлы совсем-совсем не затрагиваются и используются как есть?
Минимальная правка в index.php
Код PHP:
  1. // VirtualQMOD
  2. require_once('./vqmod/vqmod.php');
  3. VQMod::bootup();
  4. // VQMODDED Startup
  5. require_once(VQMod::modCheck(DIR_SYSTEM . 'startup.php'));
  6. // Application Classes
  7. require_once(VQMod::modCheck(DIR_SYSTEM . 'library/customer.php'));
  8. require_once(VQMod::modCheck(DIR_SYSTEM . 'library/affiliate.php'));
  9. require_once(VQMod::modCheck(DIR_SYSTEM . 'library/currency.php'));
  10. require_once(VQMod::modCheck(DIR_SYSTEM . 'library/tax.php'));
  11. require_once(VQMod::modCheck(DIR_SYSTEM . 'library/weight.php'));
  12. require_once(VQMod::modCheck(DIR_SYSTEM . 'library/length.php'));
  13. require_once(VQMod::modCheck(DIR_SYSTEM . 'library/cart.php'));
  14. require_once(VQMod::modCheck(DIR_SYSTEM . 'library/ocstore.php'));
0
Reborn Reborn 7 лет назад #
Ставим права на запись index.php , vqmod при инсталляции вносит свои правки, после чего возвращаем права.
Если интересно, просто скачайте Ocstore , vqmod и не лишним будет менеждер. Хотел я портировать это все, да руки не доходят.
0
Скорпион Скорпион 7 лет назад #
В минус vqmod - я так понял он на лету преобразует страницы. То есть при каждом обращении - временные затраты на преобразование необходимой страницы.
В моем же случае - измененные страницы статичны - и изменяются однажды - при применении патча.
0
Reborn Reborn 7 лет назад #
Измененные файлы с одноименным названием кешируются в отдельной директории, и подставляются вместо оригинального файла.
Пример: вы изменили файл /component/content/frontend.php.
На выходе в папке vqcache получаете файл vq2-component_content_frontend.php
Так же имеется vqmod manager для управления скриптами.
0
WebMan WebMan 7 лет назад #
Вы смотрели, насколько сильно падает производительность при подстановке изменённых файлов?
0
WebMan WebMan 7 лет назад #
Это был вопрос к Reborn.
0
Reborn Reborn 7 лет назад #
Смотрели.
Пропорционально использованию стандартной cms до момента перехода на новый уровень со всеми вытекающими.
Пока у меня при 6 к стр в одной категории с выборкой по более чем 100 атрибутов у 1 стр не возникло желания перенести все правки вручную, хотя конечно надеюсь наступит и этот момент, потрачу тогда день.
0
WebMan WebMan 7 лет назад #
Скорпион, зачем же так сразу пугать людей? joke Патчер имеет не деструктивные (направленные на разрушение) функции, а очень полезные, но потенциально опасные при неправильном использовании.

Маркер места изменения кода - полезная штука. Действительно пригодится программистам не только при отладке, а и чтобы легче ориентироваться. Отличная идея!

С интересом буду ждать развития компонента.
0
Скорпион Скорпион 7 лет назад #
Я считаю лучше пере.....чем недо...:) Да и все-таки патч - это изменение кода, разрушение его первоначального, оригинального состояния smile Поэтому это все-таки деструктивные функции :))))
На счет "маркера" - он и в первой версии был. Но не отключался. Просто в некоторых местах этот "маркер" вылазиет наружу, например при правке кода в шаблоне. Поэтому пришлось сделать возможность его отключения. Вообще я бы был очень благодарен, если бы мне кто-нибудь подсказал как правильно закоментировать "маркер", чтобы он не вылазил куда непоподя.
0
Скорпион Скорпион 7 лет назад #
Странно - 69 человек скачало,а отписалось всего трое :(
Не работает? Или это не кому не нужно?
0
Скорпион Скорпион 7 лет назад #
Спасибо WebMan.
Обнаружена зависимость компонента от версии PHP. Так как у меня по умолчанию везде (на стенде и на боевом сервере) стоит PHP 5.4 в двух местах в коде при использовании версии 5.3 получаем ошибку.
Исправил - архив перезалил.
Либо повторите установку либо можете сами поменять в файле - system\controllers\mypatch\backend\actions\patch_download.php
это
Код PHP:
  1. $version = explode("[version]", $data_version [0])[1];
на это
Код PHP:
  1. $version = explode("[version]", $data_version [0]);
  2. $version = $version[1];
и это
Код PHP:
  1. if (pathinfo($patch_name)['extension'] == "zip"){
на это
Код PHP:
  1. $patch_name_info = pathinfo($patch_name);
  2. if ($patch_name_info['extension'] == "zip"){
Если кто-либо найдет ещё проблемы работы компонента на версии 5.3 - не стесняйтесь - пишите - поправлю.
С неправильной версией PHP мой косяк - приношу извинения. zst Негоже использовать версию PHP отличную от минимальной версии требуемой для самого движка. facepalm

WebMan - еще раз большое спасибо.
0
WebMan WebMan 7 лет назад #
Спасибо за испраление ошибок, Скорпион. Теперь появилось поле для загрузки файла патча. Хотя ещё вылазят предупреждения. Подробности напишу в личку.
0
vikont vikont 6 лет назад #
Всех благ и с Новым Годом!
Попробовал воспользоваться вашим патчем и столкнулся с тем, что в нем можно только заменить одно на другое, а если надо вставить до, после или между какими то строчками, тогда что делать?
0
Скорпион Скорпион 6 лет назад #
Спасибо и Вас с наступающим!
А в чем проблема вставки?

Посмотрите на демо-патч.
Там имеет место быть вставки дополнительных строк.

Ну и на пальцах попробую обьяснить.
Например есть код
Код PHP:
  1. buttonSource: true,
  2. cleanOnPaste: false
задача вставить между ними строку
Код PHP:
  1. replaceDivs: false
в окно код для поиска вставляем

Код PHP:
  1. buttonSource: true,
  2. cleanOnPaste: false

в окно код для замены вставляем

Код PHP:
  1. buttonSource: true,
  2. replaceDivs: false,
  3. cleanOnPaste: false
Только не забывайте про основные правила написания кода на PHP.
Я про запятую после вставляемой строчки.
0
vikont vikont 6 лет назад #
Спасибо все понял. Сейчас возникла другая проблема, после патча видны комментарии к патчу
/*===== начало патча -> Правка файла шаблона NEWS поля "Возраст" =====*/ /*===== окончание патча -> Правка файла шаблона NEWS поля "Возраст" =====*/
Движек 2.4.0 как сделать комментарии не видными на сайте?
0
Скорпион Скорпион 6 лет назад #
Отключить вставку комментариев в настройках компонента.
0
Скорпион Скорпион 6 лет назад #
Они нужны при отладке, а в рабочем варианте лучше отключать.
Также, в настройках, Вы можете поменять как будет выглядеть сам комментарий.
0
vikont vikont 6 лет назад #
Отключить не проблема! Они удобны тем,, что сразу видно где патч., но я не знаю какой синтаксис применить для комментирования.
Можете подсказать?
Есть одно неудобство, весь патч вставляется одной длинной строкой, а не так как написан. Как это исправить?
0
Скорпион Скорпион 6 лет назад #
А зачем они Вам в продакшене?
Когда все настроено и работает?
Во время отладки - согласен - в них есть толк......но не более. Они для ОТЛАДКИ и предназначены.....чтобы применить и если что пошло не так - заглянуть в код и легко найти место применения патча и разобраться что не так.
На счет синтаксиса - имеется ввиду правил комментарий в коде.
Где-то достаточно одного слеша, гдето то нужно два , а гдето решетка.
Единственное мое "добавление" это параметр $description, который выводит название патча. По желанию его можно убрать и оставить только сами метки.

По поводу "одной строки" - хм....не должно быть так, там перевод строки вставляется. Может Ваш редактор как-то не корректно отображает код. Вы чем смотрите?
0
Скорпион Скорпион 6 лет назад #
Так как в некоторых местах кода комментарий "вылазеет наружу" и было принято решение о возможности отключать их.
В планах отключение метки будет возможно для каждого отдельного патча.
0
BoAnRo BoAnRo 6 лет назад #
Почему не внесли свой плагин в каталог дополнений? Там на него наверное бы значительно больше людей обратили внимание чем здесь.
0
Скорпион Скорпион 6 лет назад #
Всему свое время.
Особую популярность он не получил, поэтому не куда торопиться.
0
BoAnRo BoAnRo 6 лет назад #
Обнаружил один важный баг. Если просто выключить патч (кликом на птичку, после чего она становится серой) - изменения внесенные в код этим патчем не отменяются. Даже если после этого нажать "Применить". И чтобы отменить действие патча, нужно его полностью удалить. Тестировал несколько раз на разных файлах.

А в целом это дополнение - просто супер!
0
Скорпион Скорпион 6 лет назад #
Хм....что-то не так.
Не должно такого быть.
Можно поподробней.....а лучше пришлите файлик патча - я попробую у себя.
0
BoAnRo BoAnRo 6 лет назад #
https://drive.google.com/open?id=0BwDEfleRxwZUTDQ0WHFvTFJRWFk
https://drive.google.com/open?id=0BwDEfleRxwZURzdNSVpUbS1GUlk

Один патч меняет цвет главного меню, второй - цвет заголовков виджетов. Там когда настраивается доступ до ФТП, нужно выбирать пассивный режим (по-умолчанию так стоит)?
0
Скорпион Скорпион 6 лет назад #
Там вот может быть какой косяк, точнее не доработка с моей стороны, выясненная во время использования компонента.
Для того чтобы отменить патч, сначала нужно отменить все - нажатием "Восстановить".
Потом включить те что нужно - и снова нажать "Применить".
То есть отключения одного патча без других невозможно.
Знаю - косяк мой - в планах записан - но все руки не доберутся выпустить версию с исправлениями. :(
0
BoAnRo BoAnRo 6 лет назад #
Понятно. Но это не критический косяк. Так что спокойно можно пользоваться компонентом!
0
Скорпион Скорпион 6 лет назад #
Получилось?
0
BoAnRo BoAnRo 6 лет назад #
Да, сделал так как Вы написали. Нажал "Востановить", после чего включил только нужный патч и "Применить". Все хорошо! Спасибо!
+2
Скорпион Скорпион 6 лет назад #
Вообще хочу переделать чтобы патчи применялись/отменялись по нажатию этой самой птички.
+1
BoAnRo BoAnRo 6 лет назад #
Было бы чудесно!
0
BoAnRo BoAnRo 6 лет назад #
И еще такой вопрос. Не дает импортировать патч, если в нем указана другая версия icms. То есть после обновления системы чтобы внести патчи в обновленные файлы придется перед тем открывать файл каждого патча и редактировать версию системы. Может логичнее чтобы все таки позволяло загружать все патчи? А если не получится какие-то из них применить к обновленным файлам новой версии системы - просто сообщать об ошибке.
0
Скорпион Скорпион 6 лет назад #
Да. Слишком строго я сделал - признаю.
В планах - чекбокс, отключающий этого зверя - контролера версии.
0
WebMan WebMan 6 лет назад #
Патчи делаются под конкретные версии. И очень желательно, чтобы автор патча или кто-то другой, хорошо понимающий его работу, проверил патч перед его применением. А после проверки автор легко поменяет версию в патче. Поэтому я думаю, что версию проверять нужно обязательно.

Другое дело, что можно сделать указание не одной версии CMS в патче, а диапазона версий. Либо сделать галку в настройках, типа "Разрешить применять патчи для более ранних версий системы". Или при применении более старых патчей выдавать запрос. Или сделать всё вышеперечисленное и гибко это сочетать. smile
0
BoAnRo BoAnRo 6 лет назад #
Я думаю, идеальный вариант, это когда бы просто выводилось сообщение - "Этот патч предназначен для другой версии системы, по-этому нажимая "Продолжить" вы его используете на свой страх и риск"
0
BoAnRo BoAnRo 5 лет назад #
Нужно быть осторожным при обновлении системы. Перед обновлением нужно обязательно отменить все патчи, для того, чтобы удалились все файлы .origin.
0
Скорпион Скорпион 5 лет назад #
Вообще-то об этом написано в описании. :))
0
Скорпион Скорпион 5 лет назад #
Хм....оказывается вру smile Нету отчего-то этого в описании.
Но точно помню что где-то мы это уже обсуждали и я об этом писал...
0
BoAnRo BoAnRo 5 лет назад #
А в целом, Скорпион, ваш этот компонент готов для использования на рабочих сайтах? Ну, понятно, что на свой страх и риск. Просто собираюсь создавать новый сайт, и хочу вносить изменения сразу через патчи, чтобы потом легко можно было вносить их повторно после обновлений системы. По-этому интересует правильно ли я понимаю, что вероятность каких-то конфликтов компонента с другими компонентами или еще с чем-то - минимальная, и какого-то ощутимого влияния на безопасность сайта тоже не должно быть? Сам не знаю PHP, по-этому не могу оценить.

Кстати, если нужно будет помочь с тестированием новой версии компонента, я с удовольствием присоединюсь!
0
Скорпион Скорпион 5 лет назад #
Ну...нареканий по "безопасности" пока не никто не предъявлял. А в остальном - я думаю можно не волноваться. Я использовал свой компонент на некоторых "своих сайтах"....глюков замечено не было. Оно то не "работает" постоянно. Применили.....оно поменяло файлы......и успокоилось....
Везде в компоненте есть проверки запуска из-под админа. Делал по видео-инструкции из документации. К сожалению это всего-лишь мое хобби, на которое у меня не так много времени.На икру я себе зарабатываю чуток другим, не как не связанным с сайтостроем. От этого и компонентом занимаюсь от случая к случаю.
+1
BoAnRo BoAnRo 5 лет назад #
От этого и компонентом занимаюсь от случая к случаю.

Ну, для бесплатного компонента никто и не требует регулярной поддержки и улучшений smile
И за то что есть большущее Спасибо!
0
vikont vikont 5 лет назад #
У дополнения есть возможность загружать патчи, а как выгрузить свой патч, чтобы передать кому то или себе перенести на другой сайт?
+1
BoAnRo BoAnRo 5 лет назад #
На странице патчей есть кнопка "Загрузка патчей". Но нужно учитывать версию InstantCMS на которой создавался патч. Если патч переносится например с версии 2.4.0 на 2.5.0, тогда нужно через текстовый редактор поменять версию системы в файле патча. Также напротив каждого патча есть кнопка для выгрузки патча в файл.

Кстати работу этого дополнения на 2.5.0 еще не тестировал. Но когда обновлял систему до 2.4.0, это дополнение мне очень помогло. Так перенес где-то 60 правок в системных файлах. Если бы вручную это делал, забрало бы много времени.

Надеюсь, у Скорпиона когда-то появится вдохновение и время чтобы еще чуть доработать компонент и выложить его в Каталог Дополнений, поскольку считаю этот модуль одним из самых полезных для icms.
0
vikont vikont 5 лет назад #
Спасибо за расширенный ответ! Но если бы там была кнопка выгрузки Патча в файл, то я бы не спрашивал!
У меня отсутствует кнопка выгрузки патчей в файл. Как ее вставить? Версия Компонента 1.1
0
Скорпион Скорпион 5 лет назад #
Как отсутствует? Скрин можно?
0
vikont vikont 5 лет назад #
Конечно можно! Высылаю 3 скрина. На первом список патчей, а на втором внутри одного из пунктов патча и на третьем сам патч.
Как видно, нигде даже намека на ВЫГРУЗКУ, только загрузка патча.
Спойлер
Спойлер
Спойлер
0
BoAnRo BoAnRo 5 лет назад #
Действительно интересно... Кнопки выгрузки патча должны быть на первом скрине в колонке "Действия".
0
Скорпион Скорпион 5 лет назад #
Хм. Действительно нету.
А какая версия инстанта?
0
vikont vikont 5 лет назад #
Компонент ставил на версию 2.4.0, скрины с версии 2.5.1 Кнопки не было с самого начала.
0
BoAnRo BoAnRo 5 лет назад #
На одном сайте я тоже ставил на 2.4.0. Проблем не было. Пробовали перезалить файлы компонента? Может что-то с картинкой...
0
vikont vikont 5 лет назад #
Послушался умных советов, перезалил файлы компонента! ... Никаких изменений.
На всякий случай закинул компонент и в свой шаблон! ... Реакций ноль!
Что делать?
+1
Скорпион Скорпион 5 лет назад #
Разобрались. Отсутствовала картинка (дискетка) по причине того, что не был применен патч по умолчанию, который необходим для работы самого компонента.
0
BoAnRo BoAnRo 5 лет назад #
Чтобы компонент работал в InstantCMS 2.6.1 в демо-патче для файла /system/controllers/admin/frontend.php нужно искать код:
Код PHP:
  1. public function getAdminMenu(){
  2. return cmsEventsManager::hook('adminpanel_menu', array(
и заменять его на код:

Код PHP:
  1. public function getAdminMenu(){
  2. return cmsEventsManager::hook('adminpanel_menu', array(
  3. 'title' => LANG_CP_SECTION_MYPATCH,
  4. 'url' => href_to($this->name, 'controllers/edit/mypatch'),
  5. 'options' => array(
  6. 'class' => 'item-patch'
  7. )
  8. ),
P.S. У меня уже набралось где-то около 100 правок кода, которые я переношу с версии на версию используя этот чудесный компонент. Жаль, что так мало пользователей обратили на него внимание. Компонент действительно очень полезный, и сокращает мне время на внесение правок после обновления системы до нескольких минут. Даже не хочу думать, что было бы, если бы пришлось вносить правки каждый раз вручную.
0
WebMan WebMan 5 лет назад #
Компонент действительно очень полезный, и сокращает мне время на внесение правок после обновления системы до нескольких минут.
Это правда, компонент очень полезен для не программистов. Он прост и не требует особых знаний для его использования.

Я сейчас пользуюсь модулем Git в NetBeans IDE. Кроме практически автоматического применения правок, он позволяет вести версии, видеть изменения с примечаниями, а в случае конфликтов позволяет их разрешить более наглядно. Но потребовалось много времеи, чтобы разобраться, как это всё работает. И я всё равно до сих пор не понимаю некоторые вещи. smile
+1
BoAnRo BoAnRo 4 года назад #
Чтобы компонент работал в InstantCMS 2.9.0 в демо-патче для файла /system/core/template.php нужно искать код:
Код PHP:
  1. $value = '<div class="flag_trigger '.($is_flag_on > 0 ? "{$flag_class}_on" : ($is_flag_on < 0 ? "{$flag_class}_middle" : "{$flag_class}_off")).'" data-class="'.$flag_class.'">'.$flag_content.'</div>';
и заменять его на код:
Код PHP:
  1. if (($field == 'state_patch' || $field == 'state_file') && ($value == 2)){
  2. $value = '<div class="flag_trigger '. "{$flag_class}_accept" . '"></div>';
  3. } elseif (($field == 'state_patch' || $field == 'state_file') && ($value == 3)){
  4. $value = '<div class="flag_trigger '. "{$flag_class}_error" . '"></div>';
  5. } else {
  6. $value = '<div class="flag_trigger '.($is_flag_on > 0 ? "{$flag_class}_on" : ($is_flag_on < 0 ? "{$flag_class}_middle" : "{$flag_class}_off")).'" data-class="'.$flag_class.'">'.$flag_content.'</div>';
  7. }

Еще от автора

Патч (исправление ошибки установки компонентов по FTP) для компонента "Мои патчи"
Моё видение причины возникающей ошибки при установки компонентов через FTP и исправление данной ошибки в виде патча для моего компонента.
Изменение реквизитов главного администратора (ICMS2)
Да простят меня разработчики, но в связи со своей забывчивостью, периодически мне необходимо "сбрасывать" пароли администратора на своих сай
Патч (включение DIV + отключение очистки) для компонента "Мои патчи"
Этим небольшим патчем я открываю новую рубрику у себя в блоге, в котором буду собирать патч-файлы.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.