Содержание

Создание FE

Принципы создания FE

Перенаправления

Перенаправления реализуются с помощью actions.xml и возврата строки из метода Execute(). Например, нам нужно из Action перейти на страницу новости.

  1. У <action> добавляем:
    <redirects>
        <redirect name="success" path="/news/{newsId}/ " />
    </redirects>
  2. В Execute() пишем:
    Response::setInteger( 'newsId', 1 );
    return "success";

    У одного action может быть сразу несколько <redirect>.

Работа с объектами

Вся работа с базой осуществляется через Factory. У Factory есть набор стандартных методов. Рассмотрим примеры:

Работа с url

В описании url можно использовать регулярные выражения:

<page url="/news/([a-z]+)/([0-9]+)/">

Существует массив Page::$RequestData. Нулевой элемент массива – полный url, следующие индексы – значения групп регулярных выражений.

Размещение actions

Все actions, которые отвечают за FE, находятся в пакете <Project>.Site (см. Panda.Site.xml).

Обычно для получения списков используются один и тот же action с разными настройками. Например – GetLastNews и GetNews – это один и тот же action с разными настройками (GetLastNews):

<parameters>
    <request>
        <param name="gn_WithoutPages">true</param>
        <param name="gn_Count">5</param>
    </request>
</parameters>

Где префикс gn – это первые буквы GetNews (основного action).

Стандартные названия actions:

Шаблоны

Общие элементы, обычно, находятся в папке tmpl://fe/elements/. Например – paginator.tmpl.php, или breadcrumbs.tmpl.php.

Пагинатор можно найти в VT (не забывайте посмотреть, как работает BaseGetAction).

Список страниц

  1. / – главная страница со списком последних 5 новостей. (actions = GetLastNews ).
    1. Общие элементы
      1. Список категорий
      2. Кнопка «добавить новость»
      3. Хлебные крошки (включая ссылку на главную)
  2. /news/ – список всех новостей с постраничным выводом.
    1. Категория, Заголовок, Преамбула, Дата публикации
  3. /news/(category-alias)/ - список новостей с постраничным выводом для конкретной категории.
    1. По сути своей, пункт 3 это часть пункта 2. Их лучше объединить в один.
    2. Заголовок, Преамбула, Дата публикации
  4. /news/(newsId)/ - страница новости с древовидными комментариями (без постраничного вывода).
    1. Вся нужная информация о новости.
  5. /news/add – страница добавления новости. На этой странице будет отображена форма добавления новости. После успешного добавления – перенаправление на страницу новости.

Задача

Создать полностью работающий FE без css, используя стандартные html-теги (p,br,a, h1-3, li,ul и .т.д.). Должно работать:

Правила проверки

  1. На всех страницах
    1. Хлебные крошки
    2. Категории
    3. Добавить новость
    4. Все новости
  2. Все ссылки должны работать.
  3. Проверка пользовательского ввода
    1. Теги в новостях (xss)
    2. Теги в комментариях(xss)
  4. Неправильные значения
    1. Номер страницы (negative, out of range)
    2. Alias категории (not found)
    3. Id новости (not found)
  5. Комментарии
    1. Id родительского комментария (not found,зацикливание дерева)
    2. Id новости (not found, empty)
    3. Email (empty, format, max)
    4. Comment (empty, max)
    5. Author (empty, format, max)
  6. Создание новости
    1. Категория
    2. Название
    3. Преамбула
    4. Текст
    5. Автор
    6. Email
    7. Картинка
    8. Редирект после создания