Шрифт:
Если вы используете локальный сервер, то ваше письмо, скорее всего, на самом деле не отправилось. В Денвере срабатывает почтовая заглушка sendmail: все письма просто помещаются в папку <путь к Денверу>/tmp/!sendmailв виде файлов с расширением .eml. Если в вашем случае так и есть, то откройте эту папку и найдите в ней только что "отправленное" письмо (можно ориентироваться по названию файла - это дата и время "отправки"). Откройте файл в почтовой программе и убедитесь, что его содержимое соответствует заданным нами значениям (рис. 4.6).
Рис. 4.6. Результат отправки уведомления на локальном сервере - файл .eml, открытый в почтовой программе
Перейдите к списку вопросов и убедитесь, что значение в столбце " Отправлен ли вопрос эксперту" поменялось с " Нет" на " Да" (рис. 4.7).
(есть увеличенное изображение)
Рис. 4.7. Новое значение в столбце "Отправлен ли вопрос эксперту"
Аналогично проверьте, как работает кнопка " Отправить ответ".
Добавление пункта меню
Добавим пункт меню для управления категориями.
Создавая первый пункт меню для нашего компонента, мы не указали значения левого и правого ключей. Определим их сейчас. Уровень данного пункта равен 1 (его предком является корень дерева с уровнем 0, а потомки могут иметь уровень 2 и более). Родительский узел - это самая первая строка в таблице #__menu, посмотрите значение его правого ключа в поле rgt.
Пусть $right_key - правый ключ родительского узла, $level - уровень родительского узла. Тогда для задания правильных значений левого и правого ключей выполним следующие запросы (не забудьте заменить $right_key и $level на значения из вашей таблицы):
Обновление ключей узлов, стоящих за родительским узлом:
UPDATE jos_menu SET lft=lft+2, rgt=rgt+2 WHERE lft>$right_key
Обновление родительской ветки:
UPDATE jos_menu SET rgt=rgt+2 WHERE rgt>=$right_key AND lft<$right_key
Обновление нового узла:
UPDATE jos_menu SET lft=$right_key, rgt=$right_key+1, level=$level+1 WHERE title='com_myquestions_menu'
Пусть теперь $right_key и $level - соответственно правый ключ и уровень этого только что обновленного нами узла, а $parent_id - его id. Создадим два подпункта этого пункта меню (не забудьте заменить 10006 на id вашего компонента из таблицы #__extensions).
Подпункт для управления списком вопросов:
UPDATE jos_menu SET lft=lft+2, rgt=rgt+2 WHERE lft>$right_key; UPDATE jos_menu SET rgt=rgt+2 WHERE rgt>=$right_key AND lft<$right_key; INSERT INTO `jos_menu` (`menutype`, `title`, `alias`, `path`, `link`, `type`, `parent_id`, `level`, `component_id`, `access`, `img`, `params`, `lft`, `rgt`, `client_id`) VALUES ('menu', 'com_myquestions_menu_questions', 'Questions', 'My Questions/Questions', 'index.php?option=com_myquestions', 'component', $parent_id, $level+1, 10006, 1, 'class:component', '', $right_key, $right_key+1, 1);
Обратите внимание, что значения alias и path соответствуют иерархии узлов.
Посмотрите в таблице #__menu новое значение $right_key главного пункта меню для нашего компонента - оно должно было увеличиться на 2. Теперь создадим подпункт для управления списком категорий:
UPDATE jos_menu SET lft=lft+2, rgt=rgt+2 WHERE lft>$right_key; UPDATE jos_menu SET rgt=rgt+2 WHERE rgt>=$right_key AND lft<$right_key; INSERT INTO `jos_menu` (`menutype`, `title`, `alias`, `path`, `link`, `type`, `parent_id`, `level`, `component_id`, `access`, `img`, `params`, `lft`, `rgt`, `client_id`) VALUES ('menu', 'com_myquestions_menu_categories', 'Categories', 'My Questions/Categories', 'index.php?option=com_myquestions&task=showcat', 'component', $parent_id, $level+1, 10006, 1, 'class:component', '', $right_key, $right_key+1, 1);
Наконец, добавьте в файл /administrator/language/ru-RU/ru-RU.com_myquestions.sys.iniкод:
COM_MYQUESTIONS_MENU_QUESTIONS="Управление вопросами" COM_MYQUESTIONS_MENU_CATEGORIES="Управление категориями"
Обновите любую страницу в бэкенде и убедитесь, что появились два новых подпункта меню " Моя система "вопрос - ответ"" (рис. 4.8).
(есть увеличенное изображение)
Рис. 4.8. Подпункты меню в бэкенде
Разработка фронтенда
Для удобства дальнейшего тестирования добавим еще несколько вопросов в различные категории:
INSERT INTO `jos_myquestions` (`id`, `name`, `date`, `question`, `city`, `email`, `IP`, `id_cat`) VALUES (NULL, 'Аноним', '2012-01-02 09:01:00', 'Быть или не быть?', 'Москва', 'somebody@mail.ru', '12.345.67.890', '1'); INSERT INTO `jos_myquestions` (`id`, `name`, `date`, `question`, `city`, `email`, `IP`, `id_cat`) VALUES (NULL, 'Аноним', '2012-01-01 09:02:00', 'А судьи кто?', 'Москва', 'somebody@mail.ru', '12.345.67.890', '2'); INSERT INTO `jos_myquestions` (`id`, `name`, `date`, `question`, `city`, `email`, `IP`, `id_cat`) VALUES (NULL, 'Аноним', '2012-01-01 09:03:00', ' А был ли мальчик?', 'Москва', 'somebody@mail.ru', '12.345.67.890', '2');