-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 48b54ea
Showing
24 changed files
with
877 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
Introduction | ||
============ | ||
|
||
This product extends quintagroup.dropdownmenu to add static text to the right | ||
of the menu. This makes it more of a "Mega" menu. | ||
|
||
Warning | ||
------- | ||
|
||
This product is only meant to be used with 2 levels and will prevent | ||
more levels from being used with quintagroup.dropdownmenu. | ||
|
||
|
||
How it works | ||
------------ | ||
|
||
1) add collective.qextendedmenu to list of eggs | ||
2) re-run buildout | ||
3) restart server and install the collective.qextendedmenu on | ||
your plone site | ||
4) on any top level object, click the "Actions" drop down and then | ||
click "Edit Menu Text" | ||
5) select "Show Menu Text" checkbox and fill out html you would like | ||
6) hit "Apply" | ||
|
||
*this also assumed you already have sub-menu items in folder you're | ||
applying it to* | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages | ||
try: | ||
__import__('pkg_resources').declare_namespace(__name__) | ||
except ImportError: | ||
from pkgutil import extend_path | ||
__path__ = extend_path(__path__, __name__) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
from zope.i18nmessageid import MessageFactory | ||
mf = MessageFactory('collective.qextendedmenu') | ||
|
||
|
||
def initialize(context): | ||
"""Initializer called when used as a Zope 2 product.""" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile | ||
from quintagroup.dropdownmenu.browser.viewlets import GlobalSectionsViewlet | ||
from collective.qextendedmenu.settings import ExtendedMenuSettings | ||
|
||
|
||
class ExtendedGlobalSectionsViewlet(GlobalSectionsViewlet): | ||
recurse = ViewPageTemplateFile('templates/sections_recurse.pt') | ||
|
||
def _content_tabs(self): | ||
"""Return tree of tabs based on content structure""" | ||
results = super(ExtendedGlobalSectionsViewlet, self)._content_tabs() | ||
# go through top level links and add static text if allowed | ||
for item in results: | ||
brain = item['item'] | ||
obj = brain.getObject() | ||
settings = ExtendedMenuSettings(obj) | ||
if settings.show: | ||
item['show_static'] = True | ||
item['static_html'] = settings.html.output | ||
else: | ||
item['show_static'] = False | ||
item['static_html'] = u'' | ||
return results |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
<configure | ||
xmlns="http://namespaces.zope.org/zope" | ||
xmlns:browser="http://namespaces.zope.org/browser" | ||
i18n_domain="collective.qextendedmenu"> | ||
|
||
<!-- override viewlet now --> | ||
<browser:viewlet | ||
name="plone.global_sections" | ||
manager="plone.app.layout.viewlets.interfaces.IPortalHeader" | ||
class=".ExtendedGlobalSectionsViewlet" | ||
layer="collective.qextendedmenu.interfaces.ILayer" | ||
permission="zope2.View" | ||
/> | ||
|
||
<!-- be more specific --> | ||
<browser:page | ||
name="qextendedmenu-settings" | ||
for="*" | ||
class=".forms.ExtendedMenuSettingsView" | ||
layer="collective.qextendedmenu.interfaces.ILayer" | ||
permission="collective.qextendedmenu.ManageMenuSettings" /> | ||
|
||
<browser:page | ||
name="qextendedmenu_util" | ||
for="*" | ||
permission="zope2.View" | ||
allowed_interface="collective.qextendedmenu.interfaces.IExtendedMenuUtil" | ||
layer="collective.qextendedmenu.interfaces.ILayer" | ||
class=".utils.ExtendedMenuUtil" /> | ||
|
||
<browser:resourceDirectory | ||
name="qextendedmenu.resources" | ||
directory="files" | ||
/> | ||
|
||
</configure> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
|
||
#portal-globalnav ul li a { | ||
border-top: none; | ||
border-right: none; | ||
} | ||
|
||
#portal-globalnav li > div.drop { | ||
display:none; | ||
left:0; | ||
position:absolute; | ||
top:100%; | ||
z-index:1000; | ||
} | ||
|
||
#portal-globalnav li:hover > div.drop, | ||
#portal-globalnav li:hover > div.drop > ul { | ||
display:block; | ||
} | ||
|
||
#portal-globalnav li div.drop > ul{ | ||
top:0; | ||
float: left; | ||
width: 15em; | ||
position: static; | ||
} | ||
|
||
#portal-globalnav > li > div.drop { | ||
background-color: #DDD; | ||
width: 35em; | ||
} | ||
|
||
#portal-globalnav > li > div.drop div.static{ | ||
float: left; | ||
width: 15em; | ||
padding: 10px; | ||
} | ||
|
||
#portal-globalnav ul li a.hasChildrens, | ||
#portal-globalnav ul li a.hasChildrens:hover { | ||
background-image: none; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
from collective.qextendedmenu import mf as _ | ||
from z3c.form import form, field | ||
from plone.app.z3cform.layout import wrap_form | ||
from collective.qextendedmenu.interfaces import IExtendedMenuSettings | ||
|
||
|
||
class ExtendedMenuSettings(form.EditForm): | ||
""" | ||
The page that holds all the gallery settings | ||
""" | ||
|
||
fields = field.Fields(IExtendedMenuSettings) | ||
|
||
label = _(u'heading_menu_settings_form', default=u'Menu Settings') | ||
# description = _(u'description_gallery_settings_form', | ||
# default=u'Configure the parameters for this gallery.') | ||
|
||
# successMessage = _(u'successMessage_gallery_settings_form', | ||
# default=u'Gallery Settings Saved.') | ||
# noChangesMessage = _(u'noChangesMessage_gallery_settings_form', | ||
# default=u'There are no changes in the Gallery settings.') | ||
|
||
|
||
ExtendedMenuSettingsView = wrap_form(ExtendedMenuSettings) |
55 changes: 55 additions & 0 deletions
55
collective/qextendedmenu/browser/templates/sections_recurse.pt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
<tal:master define="level options/level|python:0; | ||
children options/children | nothing; | ||
plonefour view/is_plone_four" | ||
i18n:domain="plone"> | ||
|
||
<metal:main define-macro="sections_main"> | ||
<tal:navitem repeat="node children"> | ||
<li tal:define="show_children node/show_children; | ||
children node/children; | ||
item_url node/getURL; | ||
item_icon node/item_icon; | ||
is_current node/currentItem; | ||
is_in_path node/currentParent; | ||
li_curr_class python:is_current and 'selected' or ''; | ||
li_extr_class python:(is_in_path and not is_current) and 'selected' or ''; | ||
li_extr_class python:(not (is_in_path or is_current)) and li_extr_class + 'plain' or li_extr_class; | ||
item_type node/normalized_portal_type | nothing; | ||
li_class string:${li_curr_class}${li_extr_class}; | ||
li_class python:children and li_class or li_class" | ||
tal:attributes="class string:$li_class"> | ||
|
||
<tal:level define="show_icons view/conf/show_icons; | ||
a_class python:children and 'hasChildrens' or ''; | ||
show_static node/show_static|nothing; | ||
ulclass python:'globalSectionsLevel'+str(level); | ||
ulclass python: show_static and ulclass + ' show-static' or ulclass;" | ||
tal:condition="python: level < 3"> | ||
|
||
<a tal:attributes="href python:item_url; | ||
title node/Description; | ||
class string:${a_class};"> | ||
<img tal:condition="python: show_icons and not plonefour" | ||
tal:replace="structure item_icon/html_tag | nothing" /> | ||
<span tal:content="node/Title" | ||
tal:attributes="class python: plonefour and show_icons and item_type and 'contenttype-'+ item_type or nothing">Selected Item Title</span> | ||
</a> | ||
|
||
<div class="drop" tal:omit-tag="not: node/show_static|nothing"> | ||
<ul tal:attributes="class ulclass" | ||
tal:condition="python: len(children) > 0 and show_children"> | ||
<li tal:replace="structure python:view.recurse(children=children, level=level+1)"> | ||
SubMenu | ||
</li> | ||
</ul> | ||
<div class="static" tal:condition="node/show_static|nothing" | ||
tal:content="structure node/static_html|nothing"> | ||
</div> | ||
<div class="visualClear" tal:condition="node/show_static|nothing"><!-- --></div> | ||
</div> | ||
</tal:level> | ||
|
||
</li> | ||
</tal:navitem> | ||
</metal:main> | ||
</tal:master> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
from zope.component import getMultiAdapter | ||
from zope.interface import implements | ||
from Products.Five.browser import BrowserView | ||
from collective.qextendedmenu.interfaces import IExtendedMenuUtil | ||
from Products.CMFCore.interfaces._content import IContentish | ||
|
||
|
||
class ExtendedMenuUtil(BrowserView): | ||
implements(IExtendedMenuUtil) | ||
|
||
def allowed(self): | ||
context_state = getMultiAdapter((self.context, self.request), | ||
name="plone_context_state") | ||
folder = context_state.folder() | ||
return IContentish.providedBy(folder) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
<configure | ||
xmlns="http://namespaces.zope.org/zope" | ||
xmlns:five="http://namespaces.zope.org/five" | ||
xmlns:i18n="http://namespaces.zope.org/i18n" | ||
xmlns:genericsetup="http://namespaces.zope.org/genericsetup" | ||
i18n_domain="collective.qextendedmenu"> | ||
|
||
<five:registerPackage package="." initialize=".initialize" /> | ||
|
||
<permission | ||
id="collective.qextendedmenu.ManageMenuSettings" | ||
title="collective.qextendedmenu: Manage menu settings" | ||
/> | ||
|
||
<include package="quintagroup.dropdownmenu" /> | ||
<include package=".browser" /> | ||
|
||
<adapter | ||
for="Products.CMFCore.interfaces._content.IContentish" | ||
provides="collective.qextendedmenu.interfaces.IExtendedMenuSettings" | ||
factory="collective.qextendedmenu.settings.ExtendedMenuSettings" /> | ||
|
||
<genericsetup:registerProfile | ||
name="default" | ||
title="collective.qextendedmenu" | ||
directory="profiles/default" | ||
description="Installs the collective.qextendedmenu package" | ||
provides="Products.GenericSetup.interfaces.EXTENSION" | ||
/> | ||
|
||
</configure> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
from zope.interface import Interface | ||
from quintagroup.dropdownmenu.interfaces import IDropDownMenuLayer | ||
from zope import schema | ||
from plone.app.textfield import RichText | ||
|
||
|
||
class ILayer(IDropDownMenuLayer): | ||
pass | ||
|
||
|
||
class IExtendedMenuSettings(Interface): | ||
show = schema.Bool(title=u"Show Menu Text", default=False) | ||
html = RichText(title=u"HTML", default=u"") | ||
|
||
|
||
class IExtendedMenuUtil(Interface): | ||
|
||
def allowed(): | ||
pass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
<?xml version="1.0"?> | ||
<object name="portal_actions" meta_type="Plone Actions Tool"> | ||
<action-provider name="portal_actions"> | ||
|
||
<action title="Edit Menu Text" action_id="edit_menu_text" category="object_buttons" | ||
condition_expr="object/@@qextendedmenu_util/allowed" | ||
url_expr="string:${folder_url}/@@qextendedmenu-settings" visible="True"> | ||
<permission>collective.qextendedmenu: Manage menu settings</permission> | ||
</action> | ||
|
||
</action-provider> | ||
</object> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
<layers> | ||
<layer name="collective.qextendedmenu" | ||
interface="collective.qextendedmenu.interfaces.ILayer" /> | ||
</layers> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<?xml version="1.0"?> | ||
<object name="portal_css" meta_type="Stylesheets Registry"> | ||
<stylesheet cacheable="True" compression="safe" cookable="True" | ||
enabled="1" expression="" id="++resource++qextendedmenu.resources/styles.css" media="screen" | ||
rel="stylesheet" rendering="import"/> | ||
</object> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
<?xml version="1.0"?> | ||
<metadata> | ||
<version>1000</version> | ||
<dependencies> | ||
<dependency>profile-quintagroup.dropdownmenu:default</dependency> | ||
</dependencies> | ||
</metadata> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
<registry> | ||
<record field="content_tabs_level" interface="quintagroup.dropdownmenu.interfaces.IDropDownMenuSettings" name="quintagroup.dropdownmenu.interfaces.IDropDownMenuSettings.content_tabs_level"> | ||
<value>2</value> | ||
</record> | ||
</registry> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
<?xml version="1.0"?> | ||
<rolemap> | ||
<permissions> | ||
<permission name="collective.qextendedmenu: Manage menu settings" | ||
acquire="True"> | ||
<role name="Manager" /> | ||
<role name="Site Administrator" /> | ||
<role name="Editor" /> | ||
<role name="Contributor" /> | ||
<role name="Owner" /> | ||
</permission> | ||
</permissions> | ||
</rolemap> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
from collective.qextendedmenu.interfaces import IExtendedMenuSettings | ||
from persistent.dict import PersistentDict | ||
from zope.annotation.interfaces import IAnnotations | ||
from zope.interface import implements | ||
|
||
|
||
class ExtendedMenuSettings(object): | ||
""" | ||
Pretty much copied how it is done in Slideshow Folder | ||
hopefully no one is foolish enough to want a custom slider | ||
and a view slider. If they are then the settings will | ||
overlap. | ||
""" | ||
implements(IExtendedMenuSettings) | ||
|
||
settings_key = 'collective.qextendedmenu' | ||
|
||
def __init__(self, context): | ||
self.context = context | ||
annotations = IAnnotations(self.context) | ||
|
||
self._metadata = annotations.get(self.settings_key, None) | ||
if self._metadata is None: | ||
self._metadata = PersistentDict() | ||
annotations[self.settings_key] = self._metadata | ||
|
||
def __setattr__(self, name, value): | ||
if name[0] == '_' or name in ['context', 'settings_key']: | ||
self.__dict__[name] = value | ||
else: | ||
self._metadata[name] = value | ||
|
||
def __getattr__(self, name): | ||
value = self._metadata.get(name) | ||
if value is None: | ||
v = IExtendedMenuSettings.get(name) | ||
if v: | ||
return v.default | ||
return value |
Oops, something went wrong.