Подправил глючек при сортировке в меню

+12
1.3K
Сейчас в ЦМС есть глючек в админке в меню: если при сортировке нажать на стрелочку вверх или вниз когда под пунктом меню нет другого пункта, то вываливается ошибка. Я это исправил след. образом:

Было:
Иллюстрация
Стало:
Иллюстрация

В файле admin/includes.cp.php

после
  1. //TABLE BODY
  2. $r = 0;
  3. while ($item = mysql_fetch_assoc($result)){
  4. $r++;
  5. if ($r % 2) { $row_class = 'lt_row1'; } else { $row_class = 'lt_row2'; }
поставил
  1. $is_up_arrow=true; $is_down_arrow=true;
  2. if(!is_able_up($item['NSLeft'])) $is_up_arrow=false;
  3. if(!is_able_down($item['NSRight'])) $is_down_arrow=false;
т.е. проверяю надо ли стрелку ставить вверх / вниз и выставляю соответствующие флаги

потом там где вывод стрелок:
  1. if ($is_down_arrow) echo '<a title="Вниз" href="?view='.$GLOBALS['applet'].'&do=move_down&co='.$item[$_fields[$key]['field']].'&id='.$item['id'].'"><img src="images/actions/down.gif" /></a>'; else echo '<img src="images/actions/blank.gif" />';
  2.  
  3. if ($is_up_arrow) echo '<a title="Вверх" href="?view='.$GLOBALS['applet'].'&do=move_up&co='.$item[$_fields[$key]['field']].'&id='.$item['id'].'""><img src="images/actions/top.gif" /></a>'; else echo '<img src="images/actions/blank.gif" />';
blank.gif — просто пустой гиф размерами 16х16

Сами функции проверки:
  1. function is_able_down($nsright) {
  2. $view = $_REQUEST['view'];
  3. if ($view != 'menu') return true;
  4. $res=false; $nsright++;
  5. $sql = "SELECT NSLeft, NSRight FROM cms_menu WHERE NSLeft=$nsright";
  6. $result = dbQuery($sql) ;
  7.  
  8. if (mysql_num_rows($result)>0) {
  9. $res=true;
  10. } else {
  11. $res=false;
  12. }
  13.  
  14. return $res;
  15. }
  16.  
  17. function is_able_up($nsleft) {
  18. $view = $_REQUEST['view'];
  19. if ($view != 'menu') return true;
  20.  
  21. $res=false; $nsleft--;
  22. $sql = "SELECT NSLeft, NSRight FROM cms_menu WHERE NSRight=$nsleft";
  23. $result = dbQuery($sql) ;
  24.  
  25. if (mysql_num_rows($result)>0) {
  26. $res=true;
  27. } else {
  28. $res=false;
  29. }
  30.  
  31. return $res;
  32. }
  33.  
Если кто-нить оптимизирует функционал будет хорошо!
+1
Amurland Amurland 13 лет назад #
в действительности. Так то правильно. Плюсую. ;)
0
13 лет назад #
Реально)
А раньше как-то не замечал, так гораздо удобнее v
0
13 лет назад #
Только вот ваше описание что-то не дает полного представления о том куда и что ставить с трудом с ориентировался но все равно, не получилось можно по подробней, к примеру было бы не плохо представить целые куски кода с включенными изменениями и захватить близ лежащие пару строк.

Еще от автора

связка ishop и программа Покупка на Яндекс-маркете (2)
продолжение http://instantcms.ru/blogs/uluchshenija/svjazka-ishop-i-programa-pokupka-na-jandeks-markete.htmlпервой части
связка ishop и программа Покупка на Яндекс-маркете
Яндекс маркет позволяет заказывать товары непосредственно с яндекса - удобная штука.
Сортировка дополнительных картинок в шопе drag'n'drop
Сделал возможность перемещения дополнительных картинок в шопе: т.е. можно мышкой взять и перетащить картинку вверх-вниз, как требуется
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.