Совершенствуем админку

Усовершенствования админки InstantCMS

#1 17 августа 2014 в 22:49
Отображение модулей, записей в каталоге и т.п.
Очень неудобная организация списка по умолчанию. Много модулей. Много страниц. Все модули перемешаны хаотично. Что-бы найти нужный модуль требуется совершить множество действий..
Готовых решений проблемы не нашел… Полез в коды..
Поиски привели к файлу \admin\includes\cp.php..
Маленько поковыряв файл получил такую табличку. В ней выводится на одной страничке 100 модулей (что-бы не лазить страничкам). Отключенные модули полупрозрачны, дабы не отвлекали внимания. Кнопочки-стрелочки порядка выставлены слева и справа от поля. Получилось вроде неплохо… Но модули расположены по прежнему хаотично, а хотелось бы упорядоченности, например как-то так. А как это сделать, у меня уже ума не хватило..
Если кто разбирается в таких вещах, подскажите, как можно по умолчанию отсортировать эту табличку ?

PS. InstantCMS 1.10.4
#2 17 августа 2014 в 23:53
359 строка в файле admin/includes/cp.php

  1. function cpListTable($table, $_fields, $_actions, $where='', $orderby='title'){
изменить на
  1. function cpListTable($table, $_fields, $_actions, $where='', $orderby='id'){
Но на других страницах в админке все наоборот, к примеру, на странице Пользователи)))
#3 18 августа 2014 в 01:20
задумка хорошая, но еще не до конца допилена. страница списка пользователей применяется со стилем прозрачности, т.е стилем .lt_row2 {opacity:0.6;}
#4 18 августа 2014 в 03:18

задумка хорошая, но еще не до конца допилена. страница списка пользователей применяется со стилем прозрачности, т.е стилем .lt_row2 {opacity:0.6;}

yury

Поправил и решил упростить код, использовав style вместо class:
  1. if ($r % 2) { $row_class = 'lt_row1'; } else { $row_class = 'lt_row2'; }
  2. if ($table == 'cms_menu' or $table == 'cms_modules' or $table == 'cms_components' or $table == 'cms_plugins') {if ($item['published']) {$row_opacity = 'opacity:1';} else {$row_opacity = 'opacity:0.6';}}
  3. echo '<tr style="'.$row_opacity.'" id="lt_row2">'."\n";
  4. echo '<td class="'.$row_class.'" align="center" valign="middle"><input type="checkbox" name="item[]" value="'.$item['id'].'" /></td>'. "\n";
#5 18 августа 2014 в 03:37

к примеру, на странице Пользователи

scanread
Ну страницу Пользователей можно отфильтровать условием if ($table != 'cms_users') $orderby='...';

function cpListTable($table, $_fields, $_actions, $where='', $orderby='id'){

scanread
Хотелось бы чтоб не по id, а чтоб вот как на картинке smile.
#6 18 августа 2014 в 05:09
freet, я поставил по ИД и у меня так как на картинке. В чем вопрос то?)
#7 18 августа 2014 в 05:19
У меня не срабатывет… Даже по id не сортирует… scratch
function cpListTable($table, $_fields, $_actions, $where='', $orderby='id'){
Можт там что-то еще надо где-то дописать… ?

Вот… Кажется получилось, что-то похожее… Добавил после $sort = cmsCore::request('sort', 'str', '');
if ($table == 'cms_menu' or $table == 'cms_modules' or $table == 'cms_components' or $table == 'cms_plugins') $sort = 'published';
Только вверх ногами как-то… Как-бы теперь ее перевернуть ?

Ура! Получилось!
Перевернулось путем добавления после $sql .= ' ORDER BY '.$sort;
if ($table == 'cms_menu' or $table == 'cms_modules' or $table == 'cms_components' or $table == 'cms_plugins') $sql .= ' DESC ';

Итого весь код:
  1. 364. $perpage = 100;
  2. ...
  3. 417. $sort = cmsCore::request('sort', 'str', '');
  4. 418. if ($table == 'cms_menu' or $table == 'cms_modules' or $table == 'cms_components' or $table == 'cms_plugins') $sort = 'published';
  5. ...
  6. 429. $sql .= ' ORDER BY '.$sort;
  7. 430. if ($table == 'cms_menu' or $table == 'cms_modules' or $table == 'cms_components' or $table == 'cms_plugins') $sql .= ' DESC ';
  8. ...
  9. 507. if ($r % 2) { $row_class = 'lt_row1'; } else { $row_class = 'lt_row2'; }
  10. 508. if ($table == 'cms_menu' or $table == 'cms_modules' or $table == 'cms_components' or $table == 'cms_plugins') {if ($item['published']) {$row_opacity = 'opacity:1';} else {$row_opacity = 'opacity:0.6';}}
  11. 509. echo '<tr style="'.$row_opacity.'" id="lt_row2">'."\n";
  12. 510. echo '<td class="'.$row_class.'" align="center" valign="middle"><input type="checkbox" name="item[]" value="'.$item['id'].'" /></td>'. "\n";
  13. ...
  14. 590. echo '<td class="'.$row_class.'" valign="middle" style="min-width: 100px;">
  15. 591. <a title="'.$_LANG['AD_UP'].'" href="?view='.$GLOBALS['applet'].'&'.$do.'=move_up&co='.$item[$_fields[$key]['field']].'&'.$ids.'='.$item['id'].'"><img src="images/actions/top.gif" border="0"/></a>';
  16. 592. if ($table != 'cms_menu' && $table != 'cms_category'){
  17. 593. echo '<input class="lt_input" type="text" size="4" name="ordering[]" value="'.$item['ordering'].'" />';
  18. 594. echo '<input name="ids[]" type="hidden" value="'.$item['id'].'" />';
  19. 595. } else {
  20. 596. echo '<input class="lt_input" type="text" size="4" name="ordering[]" value="'.$item['ordering'].'" disabled/>';
  21. 597. }
  22. 598. echo '<a title="'.$_LANG['AD_DOWN'].'" href="?view='.$GLOBALS['applet'].'&'.$do.'=move_down&co='.$item[$_fields[$key]['field']].'&'.$ids.'='.$item['id'].'"><img src="images/actions/down.gif" border="0"/></a>'.
  23. 599. '</td>'. "\n";
  24.  
PS. Файл cp.php с изменениями, что приведены выше.

PPS. Данный код меняет отображение списков в "Меню", "Модули", "Компоненты" и "Дополнения".
#8 18 августа 2014 в 07:23
Укажите под какую ветку правили, а то народ не поймет :)
#9 18 августа 2014 в 09:14
выдает — файл не найден
#10 18 августа 2014 в 10:49

У меня не срабатывет… Даже по id не сортирует..

freet
Скачивал Ваш файл из первого поста, добавил в 359 строку ИД. На странице модулей все ок. На остальных — все в разброс. Но учитывая то, что на остальных это не так важно, поскольку плагинов, пунктов меню и т.п. не более 20 шт, все и так отлично смотрится. Можно конечно извращаться и подгонять все в точности как на скрине, это наверное дело каждого, кому как удобнее. freet, а файл то действительно не найден. Перезалили не верно.

kirkr, тестировал на 1,10,4.
#11 18 августа 2014 в 15:40

Укажите под какую ветку правили, а то народ не поймет :)

kirkr
Ветка InstantCMS 1.10.X

выдает — файл не найден

yury
Спасибо, поправил..
Вот та-же ссылка — instantcms.ru/users/files/download4680.html

На остальных — все в разброс

scanread
Теперь все нормально, никакого разброса…
#12 18 августа 2014 в 16:54
красиво, поставил на 1.10.3
все работает на славу...

только 100 строк — это мало😊вернул обратно свое значение в 400
#13 18 августа 2014 в 17:09
помоему пора внедрять такие доработки в ядро…
#14 18 августа 2014 в 17:55
Очень полезный хак при большом количестве модулей.
#15 18 августа 2014 в 18:03
скачал, залил. получилось чересстрочное чередование стилей с описити и без опасити prntscr.com/4e0cjw
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.