Утилита "Harvester"

+14
2.68K
Описывается утилита Харвестер, являющаяся модификацией известной пользователям Инстанта утилиты Садовод. Утилита служит для ремонта деревьев.

Постановка задачи.

Как известно, время от времени деревья на Инстанте падают. Почему это происходит — до сих пор неизвестно. Тикет разработчикам InstantCMS отправлен, поэтому Fuze и r2 про эту проблему знают.

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

Если бы удалось эту последовательность установить, я не сомневаюсь, что с проблемой лесоповала было бы покончено. Но, как водится, увы.

На Первой ветке, в админке, есть кнопка "Восстановить деревья". Однако нажимать эту кнопку я категорически не советую. Люди, которые нажимали на нее, потом кусали локти — сайт вообще переставал работать.

Для устранения последствий лесоповала я в свое время написал утилиту Садовод. К настоящему времени ее скачали 680 раз. Это означает, что проблема имеет место и люди утилитой пользуются.

Однако один из корифеев ИнстантЦМС (к сожалению, за давностью времени не помню, кто, уж пусть он меня простит) после опубликования "Садовода" попенял мне, что пользоваться утилитой несколько неудобно. Он посоветовал мне сделать ее на технологии drag and drop, чтобы можно было таскать координаты NSLeft и NSRight вправо-влево мышкой. Или менять таким же образом уровень. С благодарностью эту идею принимаю и представляю новую утилиту Харвестер, которая написана на jquery ui.

Эта утилита выглядит и работает совершенно так же, как и "Садовод". Единственное исключение: узлы в верхней таблице можно таскать мышкой. Нижняя таблица сохранена, чтобы любой мог увидеть содержание таблиц в БД. Естественно, поля в этой таблице тоже являются инпутами и можно менять содержание таблиц там.

Несколько слов о безопасности

Любой пользователь моих утилит знает, что они предназначены только для админа сайта, который и так имеет доступ к файлам своего сайта по ftp и доступ к БД. Я не могу представить себе случая, чтобы админ злоумышлял против собственного сайта. Именно поэтому утилиты не содержат никаких защит от злоумышленников.

Поэтому, если у вас возникло такое несчастье, как падение дерева (деревьев) вашего сайта, воспользуйтесь моей утилитой для ремонта и тут же утилиту удалите. Она НЕ является файлом Вашего сайта, а лишь временным инструментом админа.

И, конечно, утилита не имеет никаких защит "от дурака". Интеллект администратора сайта является самой лучшей защитой. Пользуйтесь им — и не надейтесь, что утилита вас поправит, если вы совершили действие, убивающее Ваш сайт.

Как пользоваться утилитой.

1. Сделайте дамп БД, прежде чем что-то предпринимать с помощью моей утилиты.

2. Утилита состоит из единственного файла harvester.php. Откройте файл редактором и отредактируйте настройки. Вы их легко найдете — они помечены комментариями "Настройки ремонтника" и "Конец настроек". Там же даны указания, как настраивать утилиту под конкретную таблицу вашей БД.

3. Перебросьте отредактированный файл в корень Вашего сайта. Наберите ваш_сайт/harvester.php.

4. Наведите мышку в верхней таблице на узел, который нужно переместить:
Иллюстрация

Узел изменит свой цвет на красный, чтобы показать Вам, что готов перемещаться:
Иллюстрация

Нажмите на левую кнопку мыши и тащите узел вправо или влево, если нужно изменить его значение NSLeft (или NSRight — в зависимости от того, какую координату меняете) или вверх или вниз, если Вам надо поменять NSLevel. Возможно перемещение по диагонали.

Узел, который готов принять новое значение, изменит фон на желтый.

Отпустите кнопку. Некоторое время вы будете видеть красное число на желтом фоне — это сигнализация того, что данные пересылаются на сервер по ajax:
Иллюстрация

Когда фон и цвет координаты узла погаснут — это означает, что изменение произошло. Вы можете тащить следующий узел.

5. Переместите все узлы, которые считаете нужным. Полюбуйтесь на результаты своего труда. Как должно выглядеть исправное дерево подробно описано здесь.

6. Как только закончили — удалите утилиту из корня сайта.

Как получить утилиту

Написать мне в личку, указать e-mail, куда выслать утилиту. Я вышлю номер карточки Сбербанка, куда перевести деньги. Стоимость данной утилиты 500 рублей. После получения денег я вышлю на этот ящик архив с утилитой.

Претензии, что утилита платная, я не принимаю — бесплатный аналог можно получить здесь

Удачи в сайтостроении
0
Pasechnik Pasechnik 7 лет назад #
Проблема старая, кто-то же предлагал костыль по этой теме. Так и не решили в 1.10.7?
+2
Странник Странник 7 лет назад #
Весь костыль, насколько я видел, заключается в том, что все NSLeft и NSRight переименовываются заново, в цикле. Что при этом происходит с логикой построения деревьев - один Святой Сервер знает))) Практика показала, что голову администратора сайта этот цикл не заменяет. Приходится юзать утилиту.
+3
Fuze Fuze 7 лет назад #
И в 1.10.6 и в 1.10.7 деревья прекрасно чинятся из админки с восстановлением вложенности. Проблему с разрушением давно пофиксили (по тем шагам, которые дали для воспроизведения). При каких обстоятельствах деревья сейчас рушатся - мне неведомо, да и никто (субъективно) уже года два не писал о подобной проблеме. Рушились деревья по причине изменения порядка и отсутствия учёта границ порядка.
+1
Странник Странник 7 лет назад #
Совсем недавно была тема http://instantcms.ru/forum/thread26361-1.html

У нас полно сайтов на Первой Ветке. Данная утилита будет работать на всех, начиная с 1.10. 1

Не настаиваю, что надо юзать именно ее, но теперь и такая утилита у нас есть.
+1
Fuze Fuze 7 лет назад #
Совсем недавно была тема
Тема не о том, что сломались деревья. ТСу темы нужно было просто заюзать методы движка для добавления записей в деревьях, ибо вручную это делать как то не очень.
Не настаиваю, что надо юзать именно ее, но теперь и такая утилита у нас есть.
Так я не против, просто уточнил, что известных проблем с деревьями нет :)
+1
Jestik Jestik 7 лет назад #
На 1.10.6 у меня ломались, но чинились стандартной утилитой
0
Странник Странник 7 лет назад #
Спорить не буду. Иногда, при небольших поломках, стандартный скрипт действительно деревья восстанавливает. Но у меня полно примеров, того, что после нажатия на кнопку "Восстановить" сайт переставал работать.
0
Странник Странник 6 лет назад #
Спустя некоторое время возвращаясь к проблеме лесоповала.

Вчера мой клиент повалил сайт на 1.10.7. Сайт учебно-тренировочный, дефолт из коробки, клиент на нем учился администрированию. Последовательность действий он мне воспроизвести не смог, поэтому выдумывать ничего не буду. Факт заключается в том, что деревья в таблице cms_menu попадали и сайт "скривился" и "разъехался". Нажатие на кнопку "Восстановить" в админке, наивно сделанное клиентом, вообще повалило сайт - он перестал открываться.

Таким образом, проблема остается. Возможно, в связи со всеобщим переходом трудящихся на Двойку, случаи с лесоповалом на Первой ветке стали редки, но не исчезли совсем. Владельцы и админы должны иметь это ввиду.

Удачи в сайтостроении!
+1
Александр Александр 7 лет назад #
Однозначно +, я во-общее очень уважаю вас Странник, давно следил за скриптом "Садовод", но он мне тогда показался сложным, может я не очень вник как правильно делать или "туповат" не спорю, но уже был очень благодарен, что кто то стал заниматься деревьями и стараться их чинить, поискав на сайте аналоги, я вот наткнулся на это, накатив на сайт, я остался очень доволен, что 1 кнопкой все работает. Большая заслуга именно ваших инноваций, что Вы начали делать, и уважаемый lokanaft сделал в ответ. Обеим огромнейший респект и уважение! Думаю меня поддержат многие, так как на старых версиях часто ломалось меню и проблема мешала, но с такими замечательными людьми в сообществе, у нас теперь все отлично. v

P.S. я редко комментирую, и хочу сразу поблагодарить и Fuza, что не бросает и поддерживает 1 ветку, большое Вам человеческое спасибо!
+1
Странник Странник 7 лет назад #
Спасибо за добрые слова))

Еще от автора

Адаптация компонента "Закладки" от 19 января 2011 к коробочной версии 1.10.7
На форуме появилась тема с пожеланиями адаптировать довольно старый компонент "Instant Bookmarks" Fuze к современным реалиям.
Утилита "Садовод" для версии InstantCMS 1.10.7.008
В этой краткой заметке описывается утилита "Садовод" для ремонта деревьев версии InstantCMS 1.10.7.008.
Изменение компонента "Баннеры" для будущей  версии 1.10.7.008
Данная статья рассказывает всем ждущим новую версию 008, что нового ожидается в будущем релизе версии 1.10.7.008.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.