<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>prove-con-zope &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://wordpress.com/tag/prove-con-zope/</link>
	<description>Feed of posts on WordPress.com tagged "prove-con-zope"</description>
	<pubDate>Wed, 15 Oct 2008 01:34:04 +0000</pubDate>

	<generator>http://wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Nona settimana - dall'8 novembre al 18 novembre]]></title>
<link>http://progettomycampus.wordpress.com/2008/01/03/nona-settimana-dall8-novembre-al-18-novembre/</link>
<pubDate>Thu, 03 Jan 2008 18:27:38 +0000</pubDate>
<dc:creator>Maurizio Moscatelli</dc:creator>
<guid>http://progettomycampus.it.wordpress.com/2008/01/03/nona-settimana-dall8-novembre-al-18-novembre/</guid>
<description><![CDATA[
Primi esperimenti con l&#8217;interfaccia di gestione di Zope

Questa fase consiste nell&#8217;espl]]></description>
<content:encoded><![CDATA[<p><H1><A NAME="SECTION001010000000000000000"><br />
Primi esperimenti con l'interfaccia di gestione di Zope</A><br />
</H1><br />
Questa fase consiste nell'esplorare l'interfaccia di gestione di zope e provare, in modo casuale, a fare degli esperimenti modificando i contenuti delle principali cartelle.</p>
<p><H2><A NAME="SECTION001011000000000000000"><br />
portal_skin</A><br />
</H2><br />
Tra i contenuti del nostro portale possiamo trovare la cartella portal_skin, la quale contiene tutti i dati riguardanti l'aspetto grafico del portale stesso. Tra le varie sezioni esiste la cartella 'Custom' che contiene tutte le nostre personalizzazioni, la cartella 'archetypes' che contiene tutti i tipi di contenuto che verranno visualizzati e ovviamente molte altre cartelle.<br />
Il primo esperimento consiste nel 'personalizzare' la pagina di edit di un qualunque oggetto. Questa pagina si trova in 'archetypes' &#232; si chiama 'base_edit'; tale pagina viene visualizzata ogni qualvolta si inserisce, dall'interfaccia plone (quindi non da zope), un oggetto (cartella, pagina, favourites, ect...).<br />
Cliccando sulla pagina 'base_edit' appare il seguende codice<br />
<font face="Courier New, Courier, monospace"></p>
<p>
&#60;tal:block metal:define-macro=&#34;master&#34;<br />
define=&#34;errors options/state/getErrors &#124; nothing;<br />
Iterator python:modules['Products.Archetypes'].IndexIterator;<br />
schematas here/Schemata;<br />
fieldsets python:[key for key in schematas.keys() if (key != 'metadata') and (schematas[key].editableFields(here, visible_only=True))];<br />
default_fieldset python:(not schematas or schematas.has_key('default')) and 'default' or fieldsets[0];<br />
fieldset request/fieldset&#124;options/fieldset&#124;default_fieldset;<br />
fields python:schematas[fieldset].editableFields(here);<br />
dummy python:here.at_isEditable(fields);<br />
portal_type python:here.getPortalTypeName().lower().replace(' ', '_');<br />
type_name here/getPortalTypeName&#124;here/archetype_name;<br />
base_macros here/edit_macros/macros;<br />
edit_template python:'%s_edit' % portal_type;<br />
edit_macros python:path('here/%s/macros &#124; nothing' % edit_template);<br />
header_macro edit_macros/header &#124; header_macro &#124; base_macros/header;<br />
typedescription_macro edit_macros/typedescription &#124; typedescription_macro &#124; base_macros/typedescription;<br />
body_macro edit_macros/body &#124; body_macro &#124; base_macros/body;<br />
footer_macro edit_macros/footer &#124; footer_macro &#124; base_macros/footer;<br />
lockable python:hasattr(here, 'wl_isLocked');<br />
isLocked python:lockable and here.wl_isLocked();<br />
tabindex tabindex&#124;python:Iterator(pos=7000);<br />
css python:here.getUniqueWidgetAttr(fields, 'helper_css');<br />
js python:here.getUniqueWidgetAttr(fields, 'helper_js');&#34;&#62;</p>
<p>&#60;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34;<br />
  xml:lang=&#34;en&#34;<br />
  lang=&#34;en&#34;<br />
  xmlns:tal=&#34;http://xml.zope.org/namespaces/tal&#34;<br />
  xmlns:metal=&#34;http://xml.zope.org/namespaces/metal&#34;<br />
  xmlns:i18n=&#34;http://xml.zope.org/namespaces/i18n&#34;<br />
  metal:use-macro=&#34;here/main_template/macros/master&#34;<br />
  i18n:domain=&#34;plone&#34;&#62;</p>
<p> &#60;metal:head fill-slot=&#34;top_slot&#34;&#62;<br />
  &#60;tal:block define=&#34;macro edit_macros/topslot &#124; nothing&#34;<br />
  condition=&#34;macro&#34;&#62;<br />
  &#60;metal:block use-macro=&#34;macro&#34; /&#62;<br />
  &#60;/tal:block&#62;<br />
  &#60;/metal:head&#62;</p>
<p>  &#60;metal:javascript_head fill-slot=&#34;javascript_head_slot&#34;&#62;<br />
  &#60;tal:block define=&#34;macro here/archetypes_custom_js/macros/javascript_head &#124; nothing&#34;<br />
  condition=&#34;macro&#34;&#62;<br />
  &#60;metal:block use-macro=&#34;macro&#34; /&#62;<br />
  &#60;/tal:block&#62;<br />
  &#60;tal:js condition=&#34;js&#34;<br />
  repeat=&#34;item js&#34;&#62;<br />
  &#60;script type=&#34;text/javascript&#34;<br />
  charset=&#34;iso-8859-1&#34;<br />
  tal:condition=&#34;python:exists('portal/%s' % item)&#34;<br />
  tal:attributes=&#34;src string:$portal_url/$item&#34;&#62;<br />
  &#60;/script&#62;<br />
  &#60;/tal:js&#62;<br />
  &#60;tal:block define=&#34;macro edit_macros/javascript_head &#124; nothing&#34;<br />
  condition=&#34;macro&#34;&#62;<br />
  &#60;metal:block use-macro=&#34;macro&#34; /&#62;<br />
  &#60;/tal:block&#62;<br />
  &#60;/metal:javascript_head&#62;</p>
<p> &#60;metal:css fill-slot=&#34;css_slot&#34;&#62;<br />
  &#60;tal:css condition=&#34;css&#34;<br />
  repeat=&#34;item css&#34;&#62;<br />
  &#60;style type=&#34;text/css&#34;<br />
  media=&#34;all&#34;<br />
  tal:condition=&#34;python:exists('portal/%s' % item)&#34;<br />
  tal:content=&#34;structure string:&#60;!-- @import url($portal_url/$item); --&#62;&#34;&#62;<br />
  &#60;/style&#62;<br />
  &#60;/tal:css&#62;<br />
  &#60;tal:block define=&#34;macro edit_macros/css &#124; nothing&#34;<br />
  condition=&#34;macro&#34;&#62;<br />
  &#60;metal:block use-macro=&#34;macro&#34; /&#62;<br />
  &#60;/tal:block&#62;<br />
  &#60;/metal:css&#62;</p>
<p>  &#60;body&#62;</p>
<p> &#60;metal:fill fill-slot=&#34;main&#34;&#62;<br />
  &#60;metal:main define-macro=&#34;main&#34;&#62;<br />
  &#60;metal:use_header use-macro=&#34;header_macro&#34; /&#62;<br />
  &#60;metal:use_typedescription use-macro=&#34;typedescription_macro&#34; /&#62;<br />
  &#60;metal:use_body use-macro=&#34;body_macro&#34; /&#62;<br />
  &#60;metal:use_footer use-macro=&#34;footer_macro&#34; /&#62;<br />
  &#60;/metal:main&#62;<br />
  &#60;/metal:fill&#62;</p>
<p> &#60;/body&#62;</p>
<p>&#60;/html&#62;</p>
<p>&#60;/tal:block&#62; 
</p>
<p></font>
</p>
<p>Come si pu&#242; notare &#232; scritto in TAL, richiama molteplici funzioni python e utilizza anche molte macro.<br />
Ora proveremo a modificare queste funzioni e queste macro per capire meglio come funzionano.<br />
Quando abbiamo aperto la pagina, oltre al codice di questa, &#232; presente il pulsante 'customize' che serve a personalizzare la pagina; di default viene creata una pagina identica, ma modificabile, nella cartella custom.<br />
Al momento della creazione della nuova pagina viene chiesto il titolo della stessa (io ho inserito : 'MyEdit').<br />
Proviamo ora ad aggiungere un oggetto nell'interfaccia plone, si pu&#242; notare che l'url termina con base_edit. In pratica le funzioni e le macro personalizzano questa pagina base,che &#232; unica, a seconda dell'oggetto trattato. </p>
<p><P></p>
<p><H2><A NAME="SECTION001012000000000000000"><br />
portal_css</A><br />
</H2><br />
Sezione di Plone che contiene il registro generale degli stili CSS applicati al sito. Oltre ha svolge un ruolo centralizzato di ottimizzazione del codice in fase di pubblicazione, acconsente anche all'effettuazione di caching delle varie versioni di CSS, in modo da permettere ai proxy e alle cache dei browser degli utenti finali di effettuare sempre una resa grafica aggiornata all'ultima versione.</p>
<p><P></p>
<p><H2><A NAME="SECTION001013000000000000000"><br />
portal_types</A><br />
</H2><br />
Come da descrizione <SPAN CLASS="textit">``Controls the available content types in your portal''</SPAN>, permette di controllare tutti i tipi disponibili nel proprio sito: oltre ad elencare i tipi offre la possiblit&#224; di rinominare, copiare, cancellare, ed effettuare operazioni di importazione/esportazione dei tipi.</p>
]]></content:encoded>
</item>

</channel>
</rss>
