register and display portlets; 'related items' portlet

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1341 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2006-09-12 08:40:25 +00:00
parent a772e71f84
commit aa4e337581
6 changed files with 69 additions and 11 deletions

View file

@ -31,7 +31,7 @@ from zope.app.container.browser.contents import JustContents
from zope.app.container.browser.adding import ContentAdding
from zope.app.event.objectevent import ObjectCreatedEvent, ObjectModifiedEvent
from zope.app.pagetemplate import ViewPageTemplateFile
#from zope.app.intid.interfaces import IIntIds
from zope.app.security.interfaces import IUnauthenticatedPrincipal
from zope.dottedname.resolve import resolve
from zope.event import notify
from zope.formlib.namedtemplate import NamedTemplate
@ -69,6 +69,13 @@ class NodeView(BaseView):
cm.register('css', identifier='loops.css',
resourceName='loops.css', media='all')
cm.register('js', 'loops.js', resourceName='loops.js')
cm.register('portlet_left', 'navigation', title='Navigation',
subMacro=self.template.macros['menu'])
if not IUnauthenticatedPrincipal.providedBy(self.request.principal):
cm.register('portlet_right', 'actions', title='Actions',
subMacro=self.template.macros['actions'])
cm.register('portlet_right', 'personal', title='Personal Items',
subMacro=self.template.macros['personal'])
@Lazy
def view(self):

View file

@ -146,7 +146,11 @@
<!-- menu -->
<metal:menu define-macro="menu">
<metal:menu define-macro="menu"
tal:define="item nocall:view/menu | nothing;
level level|python: 1"
tal:condition="nocall:item">
<metal:sub define-macro="submenu">
<div class="menu-3"
tal:attributes="class python: 'content '
+ (view.selected(item) and 'even' or 'odd')
@ -158,12 +162,25 @@
<tal:sub define="level python:level+1"
condition="python: level &lt; 4 or view.active(item)">
<tal:items repeat="item item/menuItems">
<metal:portlet use-macro="views/node_macros/menu" />
<metal:portlet use-macro="views/node_macros/submenu" />
</tal:items>
</tal:sub>
</metal:sub>
</metal:menu>
<!-- portlets -->
<metal:actions define-macro="actions">
<div class="menu-2">Add Resource</div>
</metal:actions>
<metal:actions define-macro="personal">
<div class="menu-2">Clipboard</div>
</metal:actions>
<!-- inner HTML macros -->
<div metal:define-macro="inline_edit"

View file

@ -27,6 +27,7 @@ from zope.app import zapi
from zope.app.catalog.interfaces import ICatalog
from zope.app.dublincore.interfaces import ICMFDublinCore
from zope.app.pagetemplate import ViewPageTemplateFile
from zope.app.security.interfaces import IUnauthenticatedPrincipal
from zope.formlib.form import FormFields
from zope.formlib.interfaces import DISPLAY_UNWRITEABLE
from zope.proxy import removeAllProxies
@ -84,6 +85,14 @@ class ResourceView(BaseView):
else:
return self.template.macros['download']
def __init__(self, context, request):
super(ResourceView, self).__init__(context, request)
if not IUnauthenticatedPrincipal.providedBy(self.request.principal):
cm = self.controller.macros
cm.register('portlet_right', 'related', title='Related Items',
subMacro=self.template.macros['related'],
position=0, info=self)
def show(self):
data = self.context.data
response = self.request.response

View file

@ -54,3 +54,15 @@
</form>
<metal:actions define-macro="related">
<div class="menu-2"
tal:repeat="concept macro/info/concepts">
<a href="#"
tal:content="concept/title"
tal:attributes="href string:${view/url}/.target${concept/uniqueId}">
Concept
</a>
</div>
</metal:actions>

View file

@ -84,7 +84,7 @@ class Search(BaseView):
"""
request = self.request
request.response.setHeader('Content-Type', 'text/plain; charset=UTF-8')
text = request.get('searchString', '')
text = request.get('searchString', '').replace('(', ' ').replace(')', ' ')
type = request.get('searchType') or 'loops:concept:*'
if type.endswith('*'):
start = type[:-1]
@ -165,7 +165,7 @@ class SearchResults(BaseView):
cat = self.catalog
request = self.request
type = request.get('search.3.type', 'loops:concept:*')
text = request.get('search.3.text')
text = request.get('search.3.text').replace('(', ' ').replace(')', ' ')
if not text and '*' in type:
return None
if type.endswith('*'):

View file

@ -44,12 +44,25 @@
<fieldset class="box"
tal:condition="request/search.submitted | nothing">
<legend>Search results</legend>
<div tal:repeat="row view/results">
<div>
<table class="listing" summary="Search results"
i18n:attributes="summary">
<thead>
<tr>
<th i18n:translate="label_title">Title</th>
<th i18n:translate="label_type">Type</th>
</tr>
</thead>
<tbody>
<tr tal:repeat="row view/results">
<td>
<a tal:attributes="href string:${view/url}/.target${row/uniqueId}"
tal:content="row/title" />
</div>
</div>
</td>
<td tal:content="row/typeTitle">
</td>
</tr>
</tbody>
</table>
</fieldset>
</div>