Инструменты пользователя

Инструменты сайта


eaze:panda:развертывание

Создание объектной модели и первоначальная генерация VT

Развертывание проекта

Если вы все делали правильно по инструкции и у вас Windows, то пути можно не менять и bat-файлы смело запускать, иначе анализируйте каждый свой шаг, связанный с первоначальным развертыванием проекта.

При запуске bat файлов убедитесь, что они запускаются от администратора. Помните, что при намеренном запуске файла в режиме администратора (UAC), домашняя директория меняется на %WINDIR%\System32.

Системные требования: PHP 5.2, php_mbstrings, php_mysql, php_postgres.

  1. Распакуйте архив в D:\Documents\Projects\PHP\Panda
  2. Замените файл docs\Panda.dm2 своей версией.
  3. Откройте файл docs\Panda.dm2 в TDM, нажмите F9.
  4. В качестве имени файла введите D:\Documents\Projects\PHP\Panda\docs\Panda.sql
  5. Нажмите кнопку Default (сохранение настроек), после этого – Generate. Таким образом, у вас появился файл docs\Panda.sql с правильной структурой базы данных.
  6. Перейдите в папку docs, в файл docs\rebuild-database.bat после строки '%PGSQL_ROOT%\createdb.exe …' необходимо добавить следующий код:
    %PGSQL_ROOT%\psql.exe  -U %DATABASE_USER% -f D:\usr\postgres\share\contrib\ltree.sql  %DATABASE_NAME%
  7. Запустите файл create-hosts.bat (не забудьте посмотреть исходный код файла).
  8. Запустите файл rebuild-database.bat (не забудьте посмотреть исходный код файла).
  9. Откройте http://panda/vt/ . Логин и пароль по умолчанию – admin.

Работа с MF.Devenv

Описание

MFD – специальная программа, выполняющая следующие функции:

  • создание объектной модели;
  • создание представлений;
  • создание классов для работы с ней;
  • создание административного интерфейса;
  • поддержание объектной модели в актуальном состоянии;
  • перевод и локализация интерфейсов.

При желании можно проинсталлировать программу (тогда появится ассоциация с файлами проектов *.mfd). Для этого нужно запустить MF.Devenv.exe /install

В архиве в папке mfd самая последняя версия 1.5.6.102. Если у вас специфичные настройки с базой данных, то в mfd\database.config можно поменять их.

Основные правила работы с MFD

  1. Все изменения нужно сохранять вручную
    1. Ctrl+S – сохранение текущей вкладки с объектом.
    2. Ctrl+Shift+S – сохранение проекта целиком в файл.
  2. Для того чтобы создать пакет, нужно нажать Ctrl+P или правой кнопкой мыши по проекту Add New Package.
  3. Для того чтобы создать объект на основе таблицы, нужно нажать правой кнопкой мыши по необходимому пакету и выбрать пункт Add Entity from Database.
  4. Для того чтобы сгенерировать код, нужно нажать правой кнопкой мыши по необходимому пакету и выбрать пункт Run Eaze Generator.
  5. Для того чтобы закрыть вкладку с объектом, нужно нажать одну из комбинаций клавиш – Ctrl+F4, Ctrl+W или средней кнопкой мыши.
  6. Порядок добавление объектов – от базового к сложным (например, необходимо добавить сначала categories, а только потом news).
  7. Если после изменения значения selectbox или checkbox сразу нажать Ctrl+S без перевода фокуса на другое поле, то последние изменения не сохранятся.
  8. При создании Views выбирайте только те колонки в дополнительных таблицах, которые необходимы (например, в vfsFiles необходимы только fileId, folderId, title, path, а status.* можно вообще не использовать).

Создание объектной модели

  1. Открыть файл docs/Model/Panda.mfd.
  2. Создать новый пакет Panda.News (в нее будем добавлять categories, news, comments, newsRatings).

Добавление нового объекта из БД

  1. Вызвать Add Entity from Database.
  2. Выбрать соединение, базу panda и таблицу categories. Нажать «применить».
  3. Убрать галочки Add to View с полей status.* (для того, чтобы они не попали во view).
  4. Нажать на кнопку «Создать представление».
  5. Скопировать код view в папку docs/Views/Panda.News.sql. Добавить в него по желанию order by.
  6. Нажать кнопку «Ок», после Ctrl+S.
  7. Настроить объект.

Настройка объектов

Подробнее про Model Flags.

Настраиваем объект Category:

  1. Отмечаем необходимые флаги (у этого объекта их нет).
  2. Выбираем тип поиска по title SEARCHTYPE_ILIKE.
  3. Идем во вкладку templates.
  4. Убираем поиск по alias.
  5. Сохраняем объект.

Настраиваем объект News:

  1. Отмечаем флаг CanPages.
  2. По полям title, foreword, content ставим тип поиска SEARCHTYPE_ILIKE.
  3. C «createdAt» убираем галочки Addable и Updatable, ставим Nullable: Yes.
  4. Идем в Templates, осуществляем перевод (для тех, где пусто – ничего не пишем).
  5. Для categoryId нажимаем edit, изменяем Добавлять пустое = true вместо false.
  6. Control type для foreword ставим как HTML_TEXT.
  7. Снимаем галочки с List для foreword, url.
  8. Снимаем галочки с Edit для createdAt, rating.
  9. В Search снимаем галочки с createdAt, rating.
  10. Сохраняем объект.

Настраиваем объект NewsRatings:

  1. View для этого объекта не нужна.
  2. Отмечаем флаги CanPages, WithoutTemplates.
  3. C «createdAt» убираем галочки Addable и Updatable, ставим Nullable: Yes.
  4. В поле View: ставим newsRatings вместо getNewsRatings.
  5. Сохраняем объект.

Настраиваем объект Comment:

  1. При создании View нам нужны только поля из таблицы comments.
  2. Отмечаем флаг CanPages.
  3. По полям author, email, comment ставим тип поиска SEARCHTYPE_ILIKE.
  4. C «createdAt» убираем галочки Addable и Updatable, ставим Nullable: Yes.
  5. Control type для comment ставим как HTML_TEXT.
  6. Control type для IP ставим как HTML_INPUT.
  7. Снимаем галочки с List для createdAt.
  8. Снимаем галочки с Edit для createdAt.
  9. Удаляем строчку news.title, ставим галочку List для “newsId”.
  10. В Search снимаем галочки с createdAt, parentCommentId.
  11. Сохраняем объект.

Сохраняем проект.

Генерация кода

  1. Вызвать Eaze Generator для Panda.News.
  2. Выбрать любой класс из selectbox.
  3. Перейти на вкладку pages.xml, скопировать код, вставить полученный код в секцию vt в pages.xml.
  4. Save All → выбираем все файлы, сохраняем.

Пересобираем базу включая Panda.News.sql. http://panda/vt/news/ - первый результат.

Локализация

  1. Выбираем Eaze – Language Editor.
  2. Выбираем File – Open.
  3. Выбираем Load from project, language code – ru (utf-8).
  4. Вводим названия для single и plural.
  5. Нажимаем Decline, после ОК, после – Ctrl+S.
  6. Открываем http://panda/vt/news/ – видим результат.

Добавление меню

  1. В файле etc/templates/vt/header.tmpl.php добавляем меню для news, categories, comments в виде трех отдельных верхних пунктов (без вложенности).
  2. Не забываем перевести их.
  3. Делаем пункты меню выделенным на страницах списка news, categorties, comments – по аналогии, как в static-pages (смотрим на Panda.Common.SetStaticPagesMenu в pages.xml и lib/Panda.Common/Panda.Common.xml).

Изменения в коде

SaveNewsAction.php, getFromRequest();

if ( $originalObject != null ) {
    $object->newsId = $originalObject->newsId;
    $object->rating = $originalObject->rating;
} else {
    $object->rating = 0;
}

Черновая генерация закончена. Можно переходить разделу Работа с VT.

eaze/panda/развертывание.txt · Последние изменения: 2011/09/15 21:21 — zenden