Центральная часть CMS будет содержать в основном табличные данные. Следуя принципам семантической верстки, необходимо сверстать просто таблицу, а потом ее приукрасить стилями и JavaScript. В верхней части таблицы необходимо предусмотреть место для общих заголовков, элементов управления, таких как постраничная навигация и форма поиска, и заголовков столбцов таблицы. Внизу, под таблицей будут кнопки управления для добавления, сохранения и удаления содержимого таблицы.
Основа у нас уже есть (См. Верстка каркаса CMS).
Контент вставляем внутри дива с id="admin_content".
В верхней части таблицы - заголовок страницы:
<div class="path">Заголовок</div>
Следующей строкой идет Постраничная навигация и поиск (у нас пока ничего не работает, т.к. делается только верстка):
<table cellspacing="1" class="maintable"> <tbody> <tr class="pag"> <td class="td_form_show_str"> Показать:  <select id="select_pag" class="aselect"> <option value="5">5</option> <option value="10">10</option> <option value="20">20</option> <option value="50">50</option> </select> </td> <td class="td_pagination_page"> <div class="pagination" id="Pagination">Постраничная навигация</div> </td> <td class="td_field_search"> <p style="margin: 0pt;"> <span style="float: left;" class="search"> </span> <input type="text" class="text_field corner-all" name="search" id="search" value="" />    </p> </td> <td width="34px;" class="center"> <a class="reset" title="Обновить страницу" href="#"> </a> </td> </tr> </tbody> </table>
Дальше собственно сама таблица с данными. В правой части таблицы есть управляющие кнопки. Их функциональное назначение следующее:
- Столбец таблицы "Вл." - при нажатии на этот элемент, мы попадаем на страницу, которая является потомком к текущей странице.
- Столбец таблицы "Пок." - при нажатии на этот элемент, происходит включение/выключение показа страницы на сайте.
- Столбец таблицы "См." - при нажатии на этот элемент, в новом окне можно посмотреть редактируему страницу.
- Столбец таблицы " Ред." - при нажатии на этот элемент, открывается окно редактирования текущей страницы.
- Столбец таблицы "Уд." - чекбокс для выделения страницы, которую необходимо удалить.
<table class="maintable" cellspacing="1"> <thead> <tr class="header"> <th class="center" width="40px">№</th> <th class="left">Название</th> <th class="left" width="160px">Виртуальный каталог</th> <th class="center" width="30px">Вл.</th> <th class="center" width="30px">Пок.</th> <th class="center" width="30px">См.</th> <th class="center" width="30px">Ред.</th> <th class="center" width="30px">Уд.</th> </tr> </thead> <tbody id="admin_table_body"> <tr class="tr_body"> <td class="center"><input id="sort_" name="sort[]" type="text" class="t_text small_text" value="1" /></td> <td class="left">Страница 1</td> <td class="left">Название 1</td> <td class="center"><a href="#" title="Нет вложенных страниц или каталогов"><img src="img/forward_off.gif" alt="Нет вложенных страниц или каталогов" width="15" height="12"/></a></td> <td class="center"><a href="#" title="Включить"><img src="img/off.gif" alt="Включить" width="15" height="15"/></a></td> <td class="center"><a href="#" target="_blank" title="Просмотреть страницу"><img src="img/edit_pages_thumb.png" alt="Просмотреть страницу" width="16" height="16"/></a></td> <td class="center"><a href="#" title="Редактировать"><img src="img/fileexport.png" alt="Редактировать" width="16" height="15"/></a></td> <td class="center"><input id="dell[]" name="dell[]" type="checkbox" value="" /></td> </tr> <tr class="tr_body"> <td class="center"><input id="sort_" name="sort[]" type="text" class="t_text small_text" value="2" /></td> <td class="left">Страница 2</td> <td class="left">Название 2</td> <td class="center"><a href="#" title="Перейти к вложенным каталогам и страницам"><img src="img/forward.gif" alt="Перейти к вложенным каталогам и страницам" width="15" height="12"/></a></td> <td class="center"><a href="#" title="Включить"><img src="img/on.gif" alt="Включить" width="15" height="15"/></a></td> <td class="center"><a href="#" target="_blank" title="Просмотреть страницу"><img src="img/edit_pages_thumb.png" alt="Просмотреть страницу" width="16" height="16"/></a></td> <td class="center"><a href="#" title="Редактировать"><img src="img/fileexport.png" alt="Редактировать" width="16" height="15"/></a></td> <td class="center"><input id="dell[]" name="dell[]" type="checkbox" value="" /> </td> </tr> <tr class="tr_body tr_border_top"> <td colspan="5"></td> <td class="center"><a href="#" title="Добавить" ><img src="img/add.png" alt="Добавить" width="22" height="22"/></a></td> <td class="center"><a href="#" title="Сохранить все" ><img src="img/save_all.png" alt="Сохранить все" width="22" height="22"/></a></td> <td class="center"><a href="#" title="Удалить выделенное" ><img src="img/delete.png" alt="Удалить выделенное" width="22" height="22"/></a></td> </tr> </tbody> </table>
Кнопки добавления, сохранения, удаления. Эта строка вставляется последней строкой в тело основной таблицы.
- Кнопка "Добавить" - открывает форму добавления новой страницы.
- Кнопка "Сохранить все" - здесь нужен более подробный комментарий. Номер строки (столбец "№") в таблице заключен в текстовое поле для возможности оперативного изменения, в данном случае сортировки строк. Когда мы подключим JQUERY, то при щелчке на этот элемент, он станет видимым (измениться фон и бордюр). Таким же образом в текстовое поле можно заключить любую ячейку таблицы. И при нажатии на кнопку "Сохранить все" произойдет сохранение всех текущих строк таблицы. Это удобно, т.к. для некоторых изменений нет необходимости загружать форму редактирования страницы.
Ну, и стилевое оформление:
.path{ font-weight:normal; font-size:13px; padding:8px 4px; margin:0 1px 0 1px; background: #e7eef3 url(img/bg_table.gif) repeat-x bottom; border-bottom: #999 solid 1px; } .maintable { width:100%; font: 11px Verdana; border-bottom: #CCC solid 1px; border-spacing: 1px; } .maintable thead tr.header th{ font-weight: bold; font-size: 12px; color: #0278B7; padding:8px 4px; background: #e7eef3 url(img/bg_table_top.gif) repeat-x top; } .maintable thead tr.header th.center{ text-align:center; } .maintable thead tr.header th.left{ text-align:left; } .maintable tbody tr.tr_body{ background: #eef5f9; } .maintable tbody tr.odd{ background-color: #E4F0FA; } .maintable tbody tr.tr_hover{ cursor: inherit; background-color: #DEE9EF; } .maintable tbody tr.tr_body td{ padding:2px; vertical-align: middle; color: #333; } .maintable tbody tr.odd td{ padding:2px; vertical-align: middle; color:#333; } .maintable tbody tr.tr_body td.center, .maintable tbody tr.odd td.center{ text-align:center; } .maintable tbody tr.tr_body td.left, .maintable tbody tr.odd td.left{ text-align:left; } .maintable tbody tr.tr_border_top td{ background-color:#e7eef3; height:28px; vertical-align:middle; } .maintable tbody tr.tr_body_line{ background: #e7eef3; } .maintable tr.pag td{ background-color:#e7eef3; height:28px; vertical-align:middle; } .maintable tr.pag td.td_form_show_str{ width:110px; padding:0 6px; text-align:left; white-space: nowrap; } .maintable tr.pag td.td_pagination_page{ text-align:center; } .maintable tr.pag td.td_field_search{ width:192px; text-align:right; white-space: nowrap; } .maintable tr.pag td.td_field_search span.search{ display:inline-block; height:22px; width:28px; margin:0 0 0 8px; line-height:22px; background:url(img/search.png) no-repeat; } .maintable tr.pag a.reset{ display:inline-block; height:22px; width:22px; line-height:22px; text-decoration:none; background:url(img/refresh.png) no-repeat; } .maintable tr.pag a.reset:hover{ text-decoration:none; } .maintable tr.pag td.td_field_search input{ width:140px; } .t_text{ background:none; border:none; font-size:11px; padding:4px 2px; } .t_textarea{ background:none; border:none; font-size:11px; padding:4px 2px; } .t_text_focus{ background:#fff; font-size:11px; font-weight:bold; padding:3px 1px; border: #F00 solid 1px; color: #666; } .t_text_focus_green{ background:#fff; font-size:11px; font-weight:bold; padding:3px 1px; border: #3C0 solid 1px; color: #666; } .small_text{ width:30px; text-align:center; } .large_text{ width:300px; } .medium_text{ width:150px; }
Небольшие комментарии по стилевому оформлению:
- Классы "center", "left" - необходимы для позиционирования содержимого ячеек таблицы слева и по центру соответственно.
- Класс "odd" - нам понадобится в будещем для раскраски четных и нечтных строк таблицы в разные цвета.
- Классы "t_text", "t_textarea" и ниже - стилевое оформление для текстовых полей в таблице.
Вот собственно и все. В следующей статье будем подключать фреймворк JQUERY и закончим с оформлением основной таблицы центрального контента.