Новогодние каникулы прошли не зря 
Представляю публике следующую версии своего компонента.
Компонент "Мои патчи" v.1.1
Установка/обновление стандартным (для ICMS2) способом.
Минимально необходимая версия системы 2.1.2
При обновлении версии 1.0, данные базы патчей сохраняется.
Но это не значить, что перед обновлением не надо делать бэкап.
Бэкап наше все — поэтому его следует делать всегда!
То есть компонент изменяет содержимое файлов InstantCMS. Впрочем для этого компонент и создавался.
Поэтому использование компонента подразумевает использование на свой страх и риск.
Мною были предприняты всевозможные защиты "от дурака", но идеального кода не бывает.
Поэтому пользуйтесь данным компонентом с осторожностью!
А на живых сайта — с двойной осторожностью.
Как говорится, автор никакой ответственности за причиненные убытки не несет.
Изменения в версии 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 удовольствием выслушаю все замечания и пожелания
Приятных всем хаков!

Представляю публике следующую версии своего компонента.
Компонент "Мои патчи" v.1.1
Установка/обновление стандартным (для ICMS2) способом.
Минимально необходимая версия системы 2.1.2
При обновлении версии 1.0, данные базы патчей сохраняется.
Но это не значить, что перед обновлением не надо делать бэкап.
Бэкап наше все — поэтому его следует делать всегда!
Disclaimer
Данный компонент имеет деструктивные функции!То есть компонент изменяет содержимое файлов InstantCMS. Впрочем для этого компонент и создавался.

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

Изменения в версии 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. Возможность не изменять, а (при необходимости) создавать новые файлы.
3. Обработка более одного фрагмента заменяемого кода в одном файле. Сейчас это тоже можно сделать — но немного извратным способом.
5. Выгрузка одновремено ВСЕЙ базы патчей (бэкап)
6. Возможность включение/отключение комментариев в конкретном патче/файле
7. Разделение патчей на группы/категории — патч системы, патч шаблона, патч wysiwyg-редактора и т.д
8. Вывод пути к файлам в виде древовидного меню (слева), как выводиться меню в контенте.
Прошу строго не судить. Здравая критика приветствуется.
C удовольствием выслушаю все замечания и пожелания

Приятных всем хаков!

Хорошо бы взять за основу для этого компонента.
Боюсь для меня это сложно будет, да и привык я все делать своими руками, пусть будет "изобретение велосипеда", но это изобретение своего велосипеда :)
Да и немного практики в PHP мне не помешает, ибо в свое время, лет так надцать назад, я не уделил достаточного внимания данному языку :)
Теперь вот наверстываю :)
Для запуска vqmod править сами файлы InstantCMS надо? Ну там код какой-либо вставить, для перехватов и преобразований на лету.
Или оригинальные файлы совсем-совсем не затрагиваются и используются как есть?
Если интересно, просто скачайте Ocstore , vqmod и не лишним будет менеждер. Хотел я портировать это все, да руки не доходят.
В моем же случае - измененные страницы статичны - и изменяются однажды - при применении патча.
Пример: вы изменили файл /component/content/frontend.php.
На выходе в папке vqcache получаете файл vq2-component_content_frontend.php
Так же имеется vqmod manager для управления скриптами.
Пропорционально использованию стандартной cms до момента перехода на новый уровень со всеми вытекающими.
Пока у меня при 6 к стр в одной категории с выборкой по более чем 100 атрибутов у 1 стр не возникло желания перенести все правки вручную, хотя конечно надеюсь наступит и этот момент, потрачу тогда день.
Маркер места изменения кода - полезная штука. Действительно пригодится программистам не только при отладке, а и чтобы легче ориентироваться. Отличная идея!
С интересом буду ждать развития компонента.
На счет "маркера" - он и в первой версии был. Но не отключался. Просто в некоторых местах этот "маркер" вылазиет наружу, например при правке кода в шаблоне. Поэтому пришлось сделать возможность его отключения. Вообще я бы был очень благодарен, если бы мне кто-нибудь подсказал как правильно закоментировать "маркер", чтобы он не вылазил куда непоподя.
Не работает? Или это не кому не нужно?
Обнаружена зависимость компонента от версии PHP. Так как у меня по умолчанию везде (на стенде и на боевом сервере) стоит PHP 5.4 в двух местах в коде при использовании версии 5.3 получаем ошибку.
Исправил - архив перезалил.
Либо повторите установку либо можете сами поменять в файле - system\controllers\mypatch\backend\actions\patch_download.php
это
С неправильной версией PHP мой косяк - приношу извинения.
WebMan - еще раз большое спасибо.
Попробовал воспользоваться вашим патчем и столкнулся с тем, что в нем можно только заменить одно на другое, а если надо вставить до, после или между какими то строчками, тогда что делать?
А в чем проблема вставки?
Посмотрите на демо-патч.
Там имеет место быть вставки дополнительных строк.
Ну и на пальцах попробую обьяснить.
Например есть код
в окно код для замены вставляем
Я про запятую после вставляемой строчки.
/*===== начало патча -> Правка файла шаблона NEWS поля "Возраст" =====*/ /*===== окончание патча -> Правка файла шаблона NEWS поля "Возраст" =====*/
Движек 2.4.0 как сделать комментарии не видными на сайте?
Также, в настройках, Вы можете поменять как будет выглядеть сам комментарий.
Можете подсказать?
Есть одно неудобство, весь патч вставляется одной длинной строкой, а не так как написан. Как это исправить?
Когда все настроено и работает?
Во время отладки - согласен - в них есть толк......но не более. Они для ОТЛАДКИ и предназначены.....чтобы применить и если что пошло не так - заглянуть в код и легко найти место применения патча и разобраться что не так.
На счет синтаксиса - имеется ввиду правил комментарий в коде.
Где-то достаточно одного слеша, гдето то нужно два , а гдето решетка.
Единственное мое "добавление" это параметр $description, который выводит название патча. По желанию его можно убрать и оставить только сами метки.
По поводу "одной строки" - хм....не должно быть так, там перевод строки вставляется. Может Ваш редактор как-то не корректно отображает код. Вы чем смотрите?
В планах отключение метки будет возможно для каждого отдельного патча.
Особую популярность он не получил, поэтому не куда торопиться.
А в целом это дополнение - просто супер!
Не должно такого быть.
Можно поподробней.....а лучше пришлите файлик патча - я попробую у себя.
https://drive.google.com/open?id=0BwDEfleRxwZURzdNSVpUbS1GUlk
Один патч меняет цвет главного меню, второй - цвет заголовков виджетов. Там когда настраивается доступ до ФТП, нужно выбирать пассивный режим (по-умолчанию так стоит)?
Для того чтобы отменить патч, сначала нужно отменить все - нажатием "Восстановить".
Потом включить те что нужно - и снова нажать "Применить".
То есть отключения одного патча без других невозможно.
Знаю - косяк мой - в планах записан - но все руки не доберутся выпустить версию с исправлениями. :(
В планах - чекбокс, отключающий этого зверя - контролера версии.
Другое дело, что можно сделать указание не одной версии CMS в патче, а диапазона версий. Либо сделать галку в настройках, типа "Разрешить применять патчи для более ранних версий системы". Или при применении более старых патчей выдавать запрос. Или сделать всё вышеперечисленное и гибко это сочетать.
Но точно помню что где-то мы это уже обсуждали и я об этом писал...
Кстати, если нужно будет помочь с тестированием новой версии компонента, я с удовольствием присоединюсь!
Везде в компоненте есть проверки запуска из-под админа. Делал по видео-инструкции из документации. К сожалению это всего-лишь мое хобби, на которое у меня не так много времени.На икру я себе зарабатываю чуток другим, не как не связанным с сайтостроем. От этого и компонентом занимаюсь от случая к случаю.
Ну, для бесплатного компонента никто и не требует регулярной поддержки и улучшений
И за то что есть большущее Спасибо!
Кстати работу этого дополнения на 2.5.0 еще не тестировал. Но когда обновлял систему до 2.4.0, это дополнение мне очень помогло. Так перенес где-то 60 правок в системных файлах. Если бы вручную это делал, забрало бы много времени.
Надеюсь, у Скорпиона когда-то появится вдохновение и время чтобы еще чуть доработать компонент и выложить его в Каталог Дополнений, поскольку считаю этот модуль одним из самых полезных для icms.
У меня отсутствует кнопка выгрузки патчей в файл. Как ее вставить? Версия Компонента 1.1
Как видно, нигде даже намека на ВЫГРУЗКУ, только загрузка патча.
А какая версия инстанта?
На всякий случай закинул компонент и в свой шаблон! ... Реакций ноль!
Что делать?
Я сейчас пользуюсь модулем Git в NetBeans IDE. Кроме практически автоматического применения правок, он позволяет вести версии, видеть изменения с примечаниями, а в случае конфликтов позволяет их разрешить более наглядно. Но потребовалось много времеи, чтобы разобраться, как это всё работает. И я всё равно до сих пор не понимаю некоторые вещи.