[Zope-CMF] Re: [CMF-checkins] renamings
Florent Guillaume
fg at nuxeo.com
Wed Jul 7 09:23:02 EDT 2004
I must say I don't like this style (also applies to folder_contents and
friends). It makes it very difficult to reuse the logic from several
templates.
For instance suppose I want to use the logic in search.py once to
display the normal search, and also to display a search-in-a-popup, and
a third time to embed it in a sidebox. I cannot do that because the
logic finishes by calling the rendering.
I much prefer to have the template start by calling something that does
all the logic, and then uses it to display its things as it wants.
Florent
In article <20040706221922.BB179203090 at mail.zope.org> you write:
> Update of /cvs-repository/Products/CMFDefault/skins/zpt_generic
> In directory cvs.zope.org:/tmp/cvs-serv18213/CMFDefault/skins/zpt_generic
>
> Added Files:
> index_html.py index_html_template.pt search.py
> search_results_template.pt
> Removed Files:
> index_html.pt index_html_control.py search.pt
> search_results_control.py
> Log Message:
> - renamed index_html.pt and search.pt to *_template.pt
> - renamed *_control.py to index_html.py and search.py: these scripts are now
> called directly
> - modified kw handling a bit to work with the new calling order
>
>
> === Added File Products/CMFDefault/skins/zpt_generic/index_html.py ===
> ##parameters=b_start=0
> ##
> from ZTUtils import Batch
>
> options = {}
>
> options['has_local'] = 'local_pt' in context.objectIds()
>
> key, reverse = context.getDefaultSorting()
> items = context.listFolderContents()
> items = sequence.sort( items, ((key, 'cmp', reverse and 'desc' or 'asc'),) )
> batch_obj = Batch(items, 25, b_start, orphan=0)
> listItemInfos = context.getBatchItemInfos(batch_obj)
> target = context.getActionInfo('object/view')['url']
> navigation = context.getBatchNavigation(batch_obj, target)
> options['batch'] = { 'listItemInfos': listItemInfos,
> 'navigation': navigation }
>
> return context.index_html_template(**options)
>
>
> === Added File Products/CMFDefault/skins/zpt_generic/index_html_template.pt ===
> <html metal:use-macro="context/main_template/macros/master">
> <body>
>
> <metal:slot metal:fill-slot="header" i18n:domain="cmf_default">
> <div tal:condition="not: options/has_local">
> <metal:macro metal:use-macro="context/index_html_utils/macros/index_header" />
> </div>
> <div tal:condition="options/has_local">
> <div metal:use-macro="context/local_pt/macros/header | default">
> 'local_pt' header goes here.
> </div>
> </div>
> </metal:slot>
>
> <metal:slot metal:fill-slot="main" i18n:domain="cmf_default"
> tal:define="batch options/batch">
> <div id="content_well"
> style="float: left; top: 0; width: 80%;">
> <div tal:condition="not: options/has_local">
>
> <metal:macro metal:use-macro="context/batch_widgets/macros/listing" />
> <metal:macro metal:use-macro="context/batch_widgets/macros/navigation" />
>
> </div>
> <div tal:condition="options/has_local">
> <div metal:use-macro="context/local_pt/macros/body | default">
> 'local_pt' body goes here.
> </div>
> </div>
> </div>
> <div id="right_sidebar"
> style="width: 20%">
>
> <metal:macro metal:use-macro="context/index_html_utils/macros/news_box" />
>
> </div>
> </metal:slot>
>
> </body>
> </html>
>
>
> === Added File Products/CMFDefault/skins/zpt_generic/search.py ===
> ##parameters=b_start=0
> ##
> from Products.PythonScripts.standard import thousands_commas
> from ZTUtils import Batch
> from Products.CMFCore.utils import getToolByName
>
> ctool = getToolByName(script, 'portal_catalog')
> utool = getToolByName(script, 'portal_url')
> portal_url = utool()
> epoch = DateTime('1970/01/01 00:00:01 GMT')
>
>
> options = {}
>
> target = '%s/search' % portal_url
> kw = context.REQUEST.form.copy()
> for k, v in kw.items():
> if k in ('review_state', 'Title', 'Subject', 'Description', 'portal_type',
> 'listCreators'):
> if same_type(v, []):
> v = filter(None, v)
> if not v:
> del kw[k]
> elif k in ('created',):
> if v['query'] == epoch and v['range'] == 'min':
> del kw[k]
> else:
> # work around problems with DateTime in records
> kw[k] = v.copy()
> elif k in ('go', 'go.x', 'go.y', 'b_start'):
> del kw[k]
> items = ctool.searchResults(kw)
> batch_obj = Batch(items, 25, b_start, orphan=1)
> length = batch_obj.sequence_length
> summary = { 'length': length and thousands_commas(length) or '',
> 'type': (length == 1) and 'item' or 'items',
> 'match': kw.get('SearchableText') }
> navigation = context.getBatchNavigation(batch_obj, target, **kw)
> options['batch'] = { 'summary': summary,
> 'listItemBrains': batch_obj,
> 'navigation': navigation }
>
> return context.search_results_template(**options)
>
>
> === Added File
> Products/CMFDefault/skins/zpt_generic/search_results_template.pt ===
> <html metal:use-macro="context/main_template/macros/master">
> <body>
>
> <metal:slot metal:fill-slot="header" i18n:domain="cmf_default">
> <h1 i18n:translate="">Search Results</h1>
> </metal:slot>
>
> <metal:slot metal:fill-slot="main" i18n:domain="cmf_default"
> tal:define="batch options/batch">
> <div class="Desktop">
>
> <metal:macro metal:use-macro="context/batch_widgets/macros/summary" />
> <table class="SearchResults" tal:condition="batch/listItemBrains">
> <thead>
> <tr>
> <td width="16"> </td>
> <th i18n:translate="">Title</th>
> <th i18n:translate="">Type</th>
> <th i18n:translate="">Date</th>
> </tr>
> </thead>
> <tbody tal:repeat="item_brain batch/listItemBrains">
> <tr tal:define="objURL string:${item_brain/getURL}/view">
> <td><a href=""
> tal:condition="item_brain/getIcon|nothing"
> tal:attributes="href objURL"><img src="" border="0" alt="" title=""
> tal:define="alt item_brain/Type"
> tal:attributes="src item_brain/getIcon;
> alt alt;
> title alt" /></a></td>
> <td><a href=""
> tal:attributes="href objURL"><span
> tal:condition="item_brain/Title"
> tal:replace="item_brain/Title">Title</span><span
> tal:condition="not:item_brain/Title"
> tal:omit-tag=""
> i18n:translate="">(No title)</span></a></td>
> <td tal:content="item_brain/Type" i18n:translate="">Type</td>
> <td tal:content="item_brain/Date">Date</td>
> </tr>
> <tr>
> <td> </td>
> <td colspan="3"><em
> tal:condition="item_brain/Description"
> tal:content="item_brain/Description">Description</em><em
> tal:condition="not:item_brain/Description"
> i18n:translate="">(No description)</em></td>
> </tr>
> </tbody>
> </table>
> <metal:macro metal:use-macro="context/batch_widgets/macros/navigation" />
>
> </div>
> </metal:slot>
>
> </body>
> </html>
>
> === Removed File Products/CMFDefault/skins/zpt_generic/index_html.pt ===
>
> === Removed File Products/CMFDefault/skins/zpt_generic/index_html_control.py ===
>
> === Removed File Products/CMFDefault/skins/zpt_generic/search.pt ===
>
> === Removed File
> Products/CMFDefault/skins/zpt_generic/search_results_control.py ===
>
> _______________________________________________
> CMF-checkins mailing list
> CMF-checkins at zope.org
> http://mail.zope.org/mailman/listinfo/cmf-checkins
>
--
Florent Guillaume, Nuxeo (Paris, France)
+33 1 40 33 79 87 http://nuxeo.com mailto:fg at nuxeo.com
More information about the Zope-CMF
mailing list