class BasicMenuLayout(BaseView): skinInterfaces = (IMenuLayoutSkin, ) title = _(u"Menu") @memoize def object(self): return aq_inner(self.context) def url(self): object = self.object() # If it's a link if IATLink in providedBy(object): remoteUrl = object.getRemoteUrl() # If it's a local link if remoteUrl[0] == '/': # Get portal object and re-create link context = aq_inner(self.context) request = self.request portal_state = getMultiAdapter((context, request), name="plone_portal_state") return '%s%s' % (portal_state.portal_url(), remoteUrl) else: return remoteUrl else: # Otherwise, return object's url return object.absolute_url()
class MenuRowLayout(RowView): """ Special RowView """ skinInterfaces = (IMenuRowLayoutSkin, ) title = _(u"Menu") def inComposeView(self): return ICollageEditLayer in providedBy(self.request)
def disable(self): """ Removes IMegamenuEnabled marker interface from current folder """ message = "" if self.is_enabled(): noLongerProvides(self.context, IMegamenuEnabled) message = _(u"Folder can no longer be used as megamenu") if self.auto_show: self._set_hidden(False) self._return_with_message(message)
def enable(self): """ Applies IMegamenuEnabled marker interface to current folder """ message = "" if not self.is_enabled(): alsoProvides(self.context, IMegamenuEnabled) message = _(u"Folder can now be used as megamenu") if self.auto_hide: self._set_hidden(True) self._return_with_message(message)
class MegamenuSettingsEditForm(controlpanel.RegistryEditForm): """ A configlet form for IMegamenuSettings based on plone.app.registry.controlpanel """ schema = IMegamenuSettings label = _(u"Megamenu settings") def updateFields(self): """ Set form widgets """ super(MegamenuSettingsEditForm, self).updateFields() self.fields['megamenu_folder'].widgetFactory = RadioFieldWidget
def set_as_current(self): """ Provides a shortcut to set current object as current megamenu in control panel """ request = self.request context = self.context title = safe_unicode(context.Title()) message = _(u"Press 'Save' button to select '${title}' as Megamenu folder", mapping={'title': title}) IStatusMessage(request).addStatusMessage(message, type="info") utool = getToolByName(context, 'portal_url') portal_url = utool.getPortalObject().absolute_url() uid = context.UID() url = '%s/@@megamenu-controlpanel?form.widgets.megamenu_folder:list=%s' % (portal_url, uid) return request.response.redirect(url)
def set_as_current(self): """ Provides a shortcut to set current object as current megamenu in control panel """ request = self.request context = self.context title = safe_unicode(context.Title()) message = _( u"Press 'Save' button to select '${title}' as Megamenu folder", mapping={'title': title}) IStatusMessage(request).addStatusMessage(message, type="info") utool = getToolByName(context, 'portal_url') portal_url = utool.getPortalObject().absolute_url() uid = context.UID() url = '%s/@@megamenu-controlpanel?form.widgets.megamenu_folder:list=%s' % ( portal_url, uid) return request.response.redirect(url)
class IMegamenuSettings(Interface): """ An interface to support configlet settings """ enabled = Bool(title=_(u"Display megamenu")) megamenu_folder = Choice(title=_(u"Megamenu folder"), vocabulary='collective.collage.megamenues', required=False) deferred_rendering = Bool(title=_(u"Load dropdown menu via AJAX"), description=_(u"If selected, dropdown options will not be included in original HTML but loaded via AJAX. These options won't be available for search engines.")) auto_hide = Bool(title=_(u"Hide folder contents when enabling as megamenu"), description=_(u"If selected, after enabling a folder as megamenu, all its contents (and the folder itself) will be automatically set as expired hiding them in search results from regular users. This can prevent visitors to learn about content that should be shown only in the megamenu. You can also hide or show every content manually by editing it and setting an expiration date"), default=False) auto_show = Bool(title=_(u"Show folder contents when disabling as megamenu"), default=False)
class TitleSkin(object): title = _(u"Title")
class NoLinesSkin(object): title = _(u"No line")
class LinkSkin(object): title = _(u"Link")
class HighlightedLinkSkin(object): title = _(u"Highlight")
class HLinesSkin(object): title = _(u"Bottom line")
class HVLinesSkin(object): title = _(u"Both lines")
class VLinesSkin(object): title = _(u"Vertical lines")