Azioni sul documento
Creazione di un content type
Aggiunta di un nuovo content type
Dopo avere creato lo scheletro del nuovo progetto, ci spostiamo nella cartella appena creata:
cd myplone3instance/src/ploneit.simpleproject
Da qui possiamo richiamare ulteriori comandi (paster local commands), disponibili nel contesto del template appena creato. In questo caso ci troviamo all'interno di un template archetype e possiamo aggiungere un content type:
paster addcontent contenttype
Enter contenttype_name (Content type name ) ['Example Type']: simplecontent Enter contenttype_description ['Description of the Example Type']: Ploneit simple content type Enter folderish (True/False: Content type is Folderish ) [False]: Enter global_allow (True/False: Globally addable ) [True]: Enter allow_discussion (True/False: Allow discussion ) [False]:
Generazione degli schemata
Passiamo alla creazione dei campi personalizzati con atschema:
paster addcontent atschema
Qui possiamo definire i nomi e le descrizioni dei campi, i tipi di field e di widget, il dominio i18n e altri parametri (es: default, required).
Enter welcome ( Welcome to the handy AT Schema maker, we hope you like it! Crtain things are implied: i.e. Field Type should be String, not StringField. We do the work for you!) ['True']: Enter content_class_filename ( What is the module (file)name of your content class? (.py is implied) ) ['exampletype']: simplecontent Enter field_type ( What kind of field should I make for you? ) ['String']: Enter field_name ( What would you like to name this field? ) ['field']: simple_field Enter widget_type ( What kind of widget do you want to use? ) ['String']: Enter field_label ( What should be the label of this field (title)? ) ['New Field']: Simple Field Enter field_desc ( What should be the description of this field (help text)? ) ['Field description']: A simple custom string field Enter i18n_domain ( What is the product name/i18n domain? ) ['myProduct']: simpleproduct Enter required ( Is this field required? ) ['False']: True Enter default ( If you'd like a default type it here, otherwise leave it blank ) ['']:
.. che all'interno di ploneit.simpleproject/ploneit/simpleproject/content/simplecontent.py apparirà come:
atapi.StringField(
name='simple_field',
widget=atapi.StringWidget(
label="Simple Field",
label_msgid='simplecontent_label_simple_field',
description="A simple custom string field",
description_msgid='simplecontent_help_simple_field",
i18n_domain='simplecontent',
),
required="True",
),
Ripetere per ogni field/widget da inserire.
Comandi locali di paster
Paster viene definito un comando "a due livelli", dove il secondo livello (es, paster help, paster create, etc) è pluggable e dipende dall'egg e dall'entry point in cui ci si trova.
Nel nostro caso abbiamo a disposizione anzitutto i comandi generici di paster, poi quelli specifici del template e utilizzabili a partire da determinate posizioni all'interno del progetto (local commands).
cd myplone3instance/src/ploneit.simpleproject
paster --help ZopeSkel local commands: addcontent Adds plone content types to your project
paster addcontent -l Available templates: atschema: A handy AT schema builder contenttype: A content type skeleton portlet: A Plone 3 portlet view: A browser view skeleton zcmlmeta: A ZCML meta directive skeleton

twitter
