diff --git a/browser/action.py b/browser/action.py index 710e124..56d1204 100644 --- a/browser/action.py +++ b/browser/action.py @@ -27,7 +27,8 @@ from zope import component from zope.app.pagetemplate import ViewPageTemplateFile from zope.cachedescriptors.property import Lazy -from cybertools.browser.action import Action +from cybertools.browser.action import Action, actions +from loops.util import _ class TargetAction(Action): @@ -68,7 +69,6 @@ class DialogAction(Action): if self.fixedType: urlParams['fixed_type'] = 'yes' urlParams.update(self.addParams) - #url = self.page.virtualTargetUrlWithSkin url = self.page.virtualTargetUrl return self.jsOnClick % (self.dialogName, url, self.viewName, urlencode(urlParams)) @@ -77,3 +77,20 @@ class DialogAction(Action): def innerHtmlId(self): return 'dialog.' + self.dialogName + +# standard actions + +actions.register('info', 'object', DialogAction, + description=_(u'Information about this object.'), + viewName='object_info.html', + dialogName='object_info', + icon='cybertools.icons/info.png', + cssClass='icon-action', +) + +actions.register('external_edit', 'object', TargetAction, + description=_(u'Edit with external editor.'), + viewName='external_edit?version=this', + icon='edit.gif', + cssClass='icon-action', +) diff --git a/browser/common.py b/browser/common.py index e7826b3..f10d066 100644 --- a/browser/common.py +++ b/browser/common.py @@ -50,6 +50,7 @@ from zope.traversing.api import getName, getParent from cybertools.ajax.dojo import dojoMacroTemplate from cybertools.browser.view import GenericView from cybertools.relation.interfaces import IRelationRegistry +from cybertools.stateful.interfaces import IStateful from cybertools.text import mimetypes from cybertools.typology.interfaces import IType, ITypeManager from loops.common import adapted @@ -370,6 +371,21 @@ class BaseView(GenericView, I18NView): addInfo = u', '.join(e for e in (current, released) if e) return u'%s (%s)' % (versionId, addInfo) + # states + + @Lazy + def states(self): + result = [] + if not checkPermission('loops.ManageSite', self.context): + # TODO: replace by more sensible permission + return result + target = self.virtualTargetObject + for std in ['loops.classification_quality', + 'loops.simple_publishing']: + stf = component.getAdapter(target, IStateful, name=std) + result.append(stf) + return result + # controlling editing @Lazy @@ -431,6 +447,17 @@ class BaseView(GenericView, I18NView): #cm.register('css', identifier='dojo.css', position=1, # resourceName='ajax.dojo/dojo/resources/dojo.css', media='all') + def registerDojoDialog(self): + self.registerDojo() + jsCall = 'dojo.require("dijit.Dialog")' + self.controller.macros.register('js-execute', jsCall, jsCall=jsCall) + + def registerDojoTooltipDialog(self): + self.registerDojo() + jsCall = ('dojo.require("dijit.Dialog");' + 'dojo.require("dijit.form.Button");') + self.controller.macros.register('js-execute', jsCall, jsCall=jsCall) + def registerDojoDateWidget(self): self.registerDojo() jsCall = ('dojo.require("dijit.form.DateTextBox"); ' diff --git a/browser/concept.py b/browser/concept.py index 2357c12..3127bfc 100644 --- a/browser/concept.py +++ b/browser/concept.py @@ -211,25 +211,6 @@ class ConceptView(BaseView): def description(self): return self.adapted.description - def xxx_fieldData(self): - # obsolete - use getData() instead - # TODO: change view macros accordingly - ti = IType(self.context).typeInterface - if not ti: - return - adapter = self.adapted - for n, f in schema.getFieldsInOrder(ti): - if n in ('title', 'description',): # already shown in header - continue - value = getattr(adapter, n, '') - if not value: - continue - bound = f.bind(adapter) - widget = component.getMultiAdapter( - (bound, self.request), IDisplayWidget) - widget.setRenderedValue(value) - yield dict(title=f.title, value=value, id=n, widget=widget) - def getData(self, omit=('title', 'description')): data = self.instance.applyTemplate() for k in omit: @@ -328,7 +309,9 @@ class ConceptView(BaseView): def resources(self): rels = self.context.getResourceRelations() for r in rels: - yield self.childViewFactory(r, self.request, contextIsSecond=True) + #yield self.childViewFactory(r, self.request, contextIsSecond=True) + from loops.browser.resource import ResourceRelationView + yield ResourceRelationView(r, self.request, contextIsSecond=True) @Lazy def view(self): diff --git a/browser/concept_macros.pt b/browser/concept_macros.pt index b1fdc34..4c4ec11 100644 --- a/browser/concept_macros.pt +++ b/browser/concept_macros.pt @@ -114,6 +114,7 @@