Составители:
Рубрика:
34
Более подробную информацию об архетипах можно получить по
адресу:
http://plone.org/documentation/manual/archetypes-developer-manual.
В качестве небольшого примера приведем создание объекта на ос-
нове архетипов, который называется tender.
Постановка задачи:
Требуется создать дополнительный объект Plone, который бы имел
возможность публиковать информацию об объявленных конкурсах.
Каждый конкурс имеет сроки объявления, срок принятия решения,
конкурсную документацию и др
. необходимую информацию. Инфор-
мация о конкурсе должна размещаться администратором сайта в виде
заполнения формы с предопределенными полями. Вывод сведений
должен осуществляться в виде общей таблицы.
Анализ задачи:
• Необходимо сформировать новый тип, который описывается с
помощью предопределенных полей. Новый тип формируется
на основе архетипов;
• Стандартные режимы отображения не позволяют
отображать
созданный тип в требуемом виде. Для реализации требуемого
вида необходимо будет написать свой шаблон, с использовани-
ем TAL.
Файл config.py содержит сонфигурационные настройки продукта
from Products.CMFCore.CMFCorePermissions import setDefaultRoles,
ModifyPortalContent
from Products.Archetypes.public import DisplayList
#Название продукта
PROJECTNAME = "tenders"
# Название директории хранения шаблонов
SKINS_DIR = 'skins'
GLOBALS = globals()
# Определение прав доступа
ADD_CONTENT_PERMISSION = "tenders_list: Add Content"
# Set up default roles for permissions
setDefaultRoles(ADD_CONTENT_PERMISSION, ('Manager', 'Owner',))
35
Файл __init.py__ - инициализация продукта
from Products.CMFCore.CMFCorePermissions import AddPortalContent
from Products.CMFPlone.PloneUtilities import ToolInit
from Products.Archetypes import listTypes
from Products.Archetypes.utils import capitalize
from Products.Archetypes.public import *
from config import *
from Products.tenders.config import PROJECTNAME, \
ADD_CONTENT_PERMISSION
skin_globals=globals()
def initialize(context):
# Import the type, which results in registerType() being called
import tender
# initialize the content, including types and add permissions
content_types, constructors, ftis = process_types(
listTypes(PROJECTNAME),
PROJECTNAME)
registerDirectory('skins', skin_globals)
utils.ContentInit(
PROJECTNAME + ' Content',
content_types = content_types,
permission = ADD_CONTENT_PERMISSION,
extra_constructors = constructors,
fti = ftis,
).initialize(context)
Файл install.py. Для простых инсталляторов можно принять этот файл
как данность и просто скопировать его в свой проект
"""\
This file is an installation script for this skin.
It is meant to be used as an External Method.
To use, either use Plone 2.0+ to install, or add an external
method to the root of the Plone Site that you want the skin
registered
in with the configuration:
id: install_skin
title: Install Skin *optional*
module name: ExampleFileSystemSkin.Install
function name: install
Then go to the management screen for the newly added external method
and click the 'Try it' tab.
Страницы
- « первая
- ‹ предыдущая
- …
- 16
- 17
- 18
- 19
- 20
- …
- следующая ›
- последняя »