БАГ.Удаление раздела статей

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 12 августа 2013 в 17:00
Нашел интересный баг. для 1.10.1
есть раздел статей, есть в разделе статьи.
Удаляешь раздел, спрашивает "Удалить раздел?", отвечаешь — ДА, спрашивает "Удалить все статьи раздела?", отвечаешь НЕТ!!!!, а статьи удаляются...

как сделать так, чтобы движение по удалению начиналось толлько после второго подтверждения, а не сразу?
#2 12 августа 2013 в 17:09
Это наверное не баг, сколько не правильно сформулированное второе предупреждение. Вместо "Удалить все статьи раздела?" там видимо должно быть уточнение "Вместе с разделом будут удалены все статьи".
А статьи просто предварительно нужно переносить в другой раздел если они нужны, вот только нет возможности массового переноса. А так… если удалить раздел не удаляя стать, где они должны располагаться после удаления раздела?
#3 12 августа 2013 в 17:11
должно происходить отмена всего процесса удаления, или как в джумле: в разделе есть статьи, я не могу удалить раздел, т.е. разбить процедуру на 2 части: сначала удалить статьи, затем раздел
#4 12 августа 2013 в 17:19
проверил у себя. Да на втором шаге нажимаю "Отмена" все равно удаляется и раздел и статьи
#5 12 августа 2013 в 17:20
вот вот
#6 12 августа 2013 в 17:44
В /admin/js/content.js, ищите метод deleteCat(), примерно 64 строчка.
Замените текст метода на (привожу целиком)
  1. function deleteCat(cat_name, cat_id){
  2. var sure = confirm('Удалить раздел "'+cat_name+'" и подразделы?');
  3. if (!sure){return;}
  4. var is_with_content = confirm('Удалить все вложенные статьи?');
  5. if(!is_with_content){return;}
  6. var link = '?view=cats&do=delete&id='+cat_id+'&content=1';
  7. window.location.href = link;
  8. }
В этом случае "ДА" на первый вопрос и "НЕТ" на второй — не будет и удаления раздела. Лишь два "ДА" приведут сперва к удалению статей (это в модели делается, в методе deleteCategory(), файл components/content/model.php), а затем и самого раздела.
#7 12 августа 2013 в 18:24
По идее, при удалении раздела, но НЕудаления статей, статьи нужно переводить в корневой раздел (для последующего размещения по разделам) но такого механизма я в модели не вижу. А ведь в методе модели deleteCategory() достаточно найти строчку
  1. $this->inDB->deleteNS('cms_category', $id);
и ПЕРЕД ней вставить
  1. if (!$is_with_content){
  2. $articles = $this->getNestedArticles($id);
  3. foreach($articles as $article){
  4. $sql = "UPDATE cms_content SET category_id=0 WHERE id={$article['id']}";
  5. $this->inDB->query($sql);
  6. }
  7. }
В этом случае изменения, которые я предлагал в #6 посту, делать не нужно.
#8 12 августа 2013 в 18:32
а если сделать доп.опцию в форме:

"Удалить статьи"
"Переместить статьи в раздел "удаленное"
"Отменить операцию"

???
#9 12 августа 2013 в 18:45
По идее, конечно, все можно. НО:
1. Они и без хака удаляются.
2. А зачем, если достаточно создать раздел "Удаленное" и перенести туда статьи? Естественно, раздел "Удаленное" скрыть от юзеров. Либо, как вариант, пользоваться архивом. Для этого все механизмы есть.
3. Умерла, так умерла. Не уверен, не удаляй.
#10 12 августа 2013 в 19:25
тогда проще сделать как в посте 6
#11 13 августа 2013 в 03:31
Как проще и ближе к вашей задаче, так и делайте. Хотя я порекомендовал вариант из #7 поста. И не забудте отписаться!
#12 13 августа 2013 в 05:32
если делать по посту №7, то надо процедуру:
— при удалении статей, переносить их в папку "Удаленные", для чего проверять, создана ли такая папка, если нет, создать ее.
— сделать копки "удалить статьи", "Сохранить статьи" и "Отмена"
— внедрить оба метода (посты 6 и 7) для возможности отмены операции на любом этапе

тогда да, такой хак будет просто супер, и с полноценной защитой от случайных необдуманных действий.

Увы, мне такое самому не написать пока :)
#13 13 августа 2013 в 13:39
То есть вы хотите сделать какое-то подобие виндовской Корзины. Только, наверно, не папка "Удаленные", а раздел "Удаленные", поскольку все статьи хранятся в БД.

Давайте тогда так сделаем. Я сейчас немного занят. Ближе к вечеру, (или завтра) напишу этот хак и выложу его в своем блоге, со ссылкой на вас, как обнаружевшего баг.
#14 13 августа 2013 в 16:05
не вопрос :)
можно даже без ссылки😊я ж баг не устраняю, только нашел :)
#15 13 августа 2013 в 16:37
Уже пишу; с моей точки зрения, быстрее баг исправить, чем найти)))
Ждите в моем блоге ближе к вечеру.
Задумка такая:
1. В колонке Действия появится еще одна иконка, при нажатии на которую предлагается перенести выбранную статью в раздел Удаленные. Если раздел не создан, он создается в Корневом разделе, и статья помещается туда. Естественно, раздел Удаленные ничем не отличается от других разделов и его потом можно отредактировать из админки.
2. При удалении раздела, содержащего статьи, первый вопрос: удалить раздел — ДА и второй вопрос: удалить статьи — НЕТ статьи отправляются в раздел Удаленные.

Так что ждите
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.