Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Samouchitel_po_razrabotke_rasshireny_dlya_Jooml....docx
Скачиваний:
2
Добавлен:
10.11.2018
Размер:
2.53 Mб
Скачать

Создание Списка

Так как наши администраторы не имеют доступа к PHPMyAdmin, нам необходимо создать Вид, который перечисляет все Обзоры в базе данных. Для начала, добавьте следующую функцию в admin.reviews.php:

function showReviews( $option )

{

$db =& JFactory::getDBO();

$query = "SELECT * FROM #__reviews";

$db->setQuery( $query );

$rows = $db->loadObjectList();

if ($db->getErrorNum()) {

echo $db->stderr();

return false;

}

HTML_reviews::showReviews( $option, $rows );

}

Эта функция загружает данные для отображения, поэтому мы получаем ссылку на текущее соединение с БД, а затем вызываем функцию setQuery(). SetQuery() принимает строку запроса и сохраняет его для дальнейшего использования, а не выполняет его сразу же. Когда мы вызываем loadObjectList(),выполняется ранее установленные запрос и строки результата загружаются в массив объектов. Если мы сталкиваемся с ошибкой, мы показываем ее и останавливаем работу. Если все идет хорошо, мы передаем массив результатов следующей функции, которую необходимо добавить в admin.reviews.html.php:

function showReviews( $option, &$rows )

{

?>

<form action="index.php" method="post" name="adminForm">

<table class="adminlist">

<thead>

<tr>

<th width="20">

<input type="checkbox" name="toggle"

value="" onclick="checkAll(<?php echo

count( $rows ); ?>);" />

</th>

<th class="title">Name</th>

<th width="15%">Address</th>

<th width="10%">Reservations</th>

<th width="10%">Cuisine</th>

<th width="10%">Credit Cards</th>

<th width="5%" nowrap="nowrap">Published</th>

</tr>

</thead>

<?php

$k = 0;

for ($i=0, $n=count( $rows ); $i < $n; $i++)

{

$row = &$rows[$i];

$checked = JHTML::_('grid.id', $i, $row->id );

$published = JHTML::_('grid.published', $row, $i );

?>

<tr class="<?php echo "row$k"; ?>">

<td>

<?php echo $checked; ?>

</td>

<td>

<?php echo $row->name; ?>

</td>

<td>

<?php echo $row->address; ?>

</td>

<td>

<?php echo $row->reservations; ?>

</td>

<td>

<?php echo $row->cuisine; ?>

</td>

<td>

<?php echo $row->credit_cards; ?>

</td>

<td align="center">

<?php echo $published;?>

</td>

</tr>

<?php

$k = 1 - $k;

}

?>

</table>

<input type="hidden" name="option" value="<?php echo $option;?>" />

<input type="hidden" name="task" value="" />

<input type="hidden" name="boxchecked" value="0" />

</form>

<?php

}

Эта функция начинается с определения формы: action на index.php и имя adminForm (для JavaScript). Далее таблица с классом adminlist и ее шапка. Все заголовки типичны, за исключением первого, который действует как "включить все" чекбоксы и автоматически выбирает все отображенные записи. Сразу после шапки мы начинаем цикл по строкам. Обнуляем переменную $i и в $n устанавливаем число строк. Цикл выполняется до тех пор, пока есть строки доступные для отображения. Внутри цикла, мы получаем ссылку на текущую строку и можем просмотреть содержимое. Переключение значения $k между 0 и 1 используется для выбора между двумя различными CSS-классами со слегка различными свойствами фона.

Некоторые переменные выводятся непосредственно, но пара столбцов требуют особого внимания. Используя JHTML::('grid.id'), мы можем получить HTML-код для чекбокса, который будет определен фоновым JavaScript`ом. Функция JHTML::_('grid.published') генерирует изображение кнопки на основе значения переменной published в строке. Когда она установлена в 1 мы получаем "check" иконку, а если 0 - дает "х" иконку. Ниже в таблице, есть четыре скрытые переменные. Первая имеет значение для option для указания (направления) на правильный Компонент. Переменная task становится доступной таким образом, чтобы JavaScript в панели инструментов мог установить ее перед отправкой формы. Когда любой из флажков для записи включается, boxchecked устанавливается в 1. Соответственно в 0, когда все флажки очищены. Это помогает обработке JavaScript`ом списка.

Теперь добавьте в switch() в admin.reviews.php выделенный код для перехода по-умолчанию в случае, когда не выбрана ни одна задача:

switch($task)

{

case 'add':

editReview( $option );

break;

case 'save':

saveReview( $option );

break;

default:

showReviews( $option );

break;

}

Вводите в адресной строке браузера

http://localhost/joomla/administrator/index. php?option=com_reviews - должен появиться такой экран:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]