-
Notifications
You must be signed in to change notification settings - Fork 3
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 bd1aaae
Showing
14 changed files
with
383 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 @@ | ||
Roger Ineichen (roger <at> projekt01 <dot> ch) |
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,8 @@ | ||
======= | ||
CHANGES | ||
======= | ||
|
||
Version 0.5.0 (unreleased) | ||
-------------------------- | ||
|
||
- Initial Release |
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,54 @@ | ||
Zope Public License (ZPL) Version 2.1 | ||
------------------------------------- | ||
|
||
A copyright notice accompanies this license document that | ||
identifies the copyright holders. | ||
|
||
This license has been certified as open source. It has also | ||
been designated as GPL compatible by the Free Software | ||
Foundation (FSF). | ||
|
||
Redistribution and use in source and binary forms, with or | ||
without modification, are permitted provided that the | ||
following conditions are met: | ||
|
||
1. Redistributions in source code must retain the | ||
accompanying copyright notice, this list of conditions, | ||
and the following disclaimer. | ||
|
||
2. Redistributions in binary form must reproduce the accompanying | ||
copyright notice, this list of conditions, and the | ||
following disclaimer in the documentation and/or other | ||
materials provided with the distribution. | ||
|
||
3. Names of the copyright holders must not be used to | ||
endorse or promote products derived from this software | ||
without prior written permission from the copyright | ||
holders. | ||
|
||
4. The right to distribute this software or to use it for | ||
any purpose does not give you the right to use | ||
Servicemarks (sm) or Trademarks (tm) of the copyright | ||
holders. Use of them is covered by separate agreement | ||
with the copyright holders. | ||
|
||
5. If any files are modified, you must cause the modified | ||
files to carry prominent notices stating that you changed | ||
the files and the date of any change. | ||
|
||
Disclaimer | ||
|
||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' | ||
AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT | ||
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY | ||
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
NO EVENT SHALL THE COPYRIGHT HOLDERS BE | ||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | ||
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH | ||
DAMAGE. |
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 @@ | ||
This package provides a ready 2 go menu implementation based on viewlets. |
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,52 @@ | ||
############################################################################## | ||
# | ||
# Copyright (c) 2007 Zope Corporation and Contributors. | ||
# All Rights Reserved. | ||
# | ||
# This software is subject to the provisions of the Zope Public License, | ||
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. | ||
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED | ||
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS | ||
# FOR A PARTICULAR PURPOSE. | ||
# | ||
############################################################################## | ||
"""Bootstrap a buildout-based project | ||
Simply run this script in a directory containing a buildout.cfg. | ||
The script accepts buildout command-line options, so you can | ||
use the -c option to specify an alternate configuration file. | ||
$Id: bootstrap.py 75940 2007-05-24 14:45:00Z srichter $ | ||
""" | ||
|
||
import os, shutil, sys, tempfile, urllib2 | ||
|
||
tmpeggs = tempfile.mkdtemp() | ||
|
||
ez = {} | ||
exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py' | ||
).read() in ez | ||
ez['use_setuptools'](to_dir=tmpeggs, download_delay=0) | ||
|
||
import pkg_resources | ||
|
||
cmd = 'from setuptools.command.easy_install import main; main()' | ||
if sys.platform == 'win32': | ||
cmd = '"%s"' % cmd # work around spawn lamosity on windows | ||
|
||
ws = pkg_resources.working_set | ||
assert os.spawnle( | ||
os.P_WAIT, sys.executable, sys.executable, | ||
'-c', cmd, '-mqNxd', tmpeggs, 'zc.buildout', | ||
dict(os.environ, | ||
PYTHONPATH= | ||
ws.find(pkg_resources.Requirement.parse('setuptools')).location | ||
), | ||
) == 0 | ||
|
||
ws.add_entry(tmpeggs) | ||
ws.require('zc.buildout') | ||
import zc.buildout.buildout | ||
zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap']) | ||
shutil.rmtree(tmpeggs) |
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 @@ | ||
[buildout] | ||
develop = . | ||
parts = test | ||
|
||
[test] | ||
recipe = zc.recipe.testrunner | ||
eggs = z3c.menu.ready2go [test] |
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,69 @@ | ||
############################################################################## | ||
# | ||
# Copyright (c) 2007 Zope Foundation and Contributors. | ||
# All Rights Reserved. | ||
# | ||
# This software is subject to the provisions of the Zope Public License, | ||
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. | ||
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED | ||
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS | ||
# FOR A PARTICULAR PURPOSE. | ||
# | ||
############################################################################## | ||
"""Setup | ||
$Id:$ | ||
""" | ||
import os | ||
from setuptools import setup, find_packages | ||
|
||
def read(*rnames): | ||
return open(os.path.join(os.path.dirname(__file__), *rnames)).read() | ||
|
||
setup ( | ||
name='z3c.menu.ready2go', | ||
version='0.5.0', | ||
author = "Stephan Richter, Roger Ineichen and the Zope Community", | ||
author_email = "zope3-dev@zope.org", | ||
description = "A ready to go menu for Zope3", | ||
long_description=( | ||
read('README.txt') | ||
+ '\n\n' + | ||
read('CHANGES.txt') | ||
), | ||
license = "ZPL 2.1", | ||
keywords = "zope3 z3c ready 2 go menu", | ||
classifiers = [ | ||
'Development Status :: 4 - Beta', | ||
'Environment :: Web Environment', | ||
'Intended Audience :: Developers', | ||
'License :: OSI Approved :: Zope Public License', | ||
'Programming Language :: Python', | ||
'Natural Language :: English', | ||
'Operating System :: OS Independent', | ||
'Topic :: Internet :: WWW/HTTP', | ||
'Framework :: Zope3'], | ||
url = 'http://cheeseshop.python.org/pypi/z3c.menu.ready2go', | ||
packages = find_packages('src'), | ||
include_package_data = True, | ||
package_dir = {'':'src'}, | ||
namespace_packages = ['z3c'], | ||
extras_require = dict( | ||
test = [ | ||
'zope.testbrowser', | ||
'zope.app.securitypolicy', | ||
'zope.app.testing', | ||
'zope.app.zcmlfiles', | ||
'zope.app.twisted', | ||
], | ||
), | ||
install_requires = [ | ||
'setuptools', | ||
'zope.configuration', | ||
'zope.traversing', | ||
'zope.app.http', | ||
'zope.app.publisher', | ||
], | ||
zip_safe = False, | ||
) |
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 @@ | ||
# this is a namespace package | ||
try: | ||
import pkg_resources | ||
pkg_resources.declare_namespace(__name__) | ||
except ImportError: | ||
import pkgutil | ||
__path__ = pkgutil.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,7 @@ | ||
# this is a namespace package | ||
try: | ||
import pkg_resources | ||
pkg_resources.declare_namespace(__name__) | ||
except ImportError: | ||
import pkgutil | ||
__path__ = pkgutil.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,16 @@ | ||
############################################################################## | ||
# | ||
# Copyright (c) 2007 Zope Foundation and Contributors. | ||
# All Rights Reserved. | ||
# | ||
# This software is subject to the provisions of the Zope Public License, | ||
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. | ||
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED | ||
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS | ||
# FOR A PARTICULAR PURPOSE. | ||
# | ||
############################################################################## | ||
""" | ||
$Id: layer.py 197 2007-04-13 05:03:32Z rineichen $ | ||
""" |
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 @@ | ||
<li class="current" | ||
tal:attributes="class view/css"> | ||
<a href="#" | ||
tal:attributes="href view/url"><span i18n:translate="" tal:content="view/title">Title</span></a> | ||
</li> |
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,95 @@ | ||
############################################################################## | ||
# | ||
# Copyright (c) 2007 Zope Foundation and Contributors. | ||
# All Rights Reserved. | ||
# | ||
# This software is subject to the provisions of the Zope Public License, | ||
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. | ||
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED | ||
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS | ||
# FOR A PARTICULAR PURPOSE. | ||
# | ||
############################################################################## | ||
""" | ||
$Id: layer.py 197 2007-04-13 05:03:32Z rineichen $ | ||
""" | ||
__docformat__ = "reStructuredText" | ||
|
||
import zope.interface | ||
from zope.traversing.browser import absoluteURL | ||
from zope.viewlet import viewlet | ||
from zope.app.component import hooks | ||
from zope.app.pagetemplate import ViewPageTemplateFile | ||
|
||
|
||
# base menu item mixin | ||
class MenuItem(viewlet.ViewletBase): | ||
"""Menu item base.""" | ||
|
||
template = ViewPageTemplateFile('item.pt') | ||
|
||
# set this attrs directly in zcml or override it in a sub class | ||
contextInterface = zope.interface.Interface | ||
viewInterface = zope.interface.Interface | ||
viewName = u'index.html' | ||
cssActive = u'selected' | ||
cssInActive = u'' | ||
weight = 0 | ||
|
||
# override it and use i18n msg ids | ||
@property | ||
def title(self): | ||
return self.__name__ | ||
|
||
@property | ||
def available(self): | ||
return True | ||
|
||
def getURLContext(self): | ||
return hooks.getSite() | ||
|
||
@property | ||
def css(self): | ||
if self.selected: | ||
return self.cssActive | ||
else: | ||
return self.cssInActive | ||
|
||
@property | ||
def available(self): | ||
return True | ||
|
||
@property | ||
def selected(self): | ||
if self.viewInterface.providedBy(self.__parent__) and \ | ||
self.contextInterface.providedBy(self.__parent__.context) and \ | ||
self.__parent__.__name__ == self.viewName: | ||
return True | ||
return False | ||
|
||
@property | ||
def url(self): | ||
context = self.getURLContext() | ||
return absoluteURL(context, self.request) + '/' + self.viewName | ||
|
||
def render(self): | ||
"""Return the template with the option 'menus'""" | ||
return self.template() | ||
|
||
def __repr__(self): | ||
return '<%s %r>' % (self.__class__.__name__, self.__name__) | ||
|
||
|
||
class GlobalMenuItem(MenuItem): | ||
"""Global menu item.""" | ||
|
||
def getURLContext(self): | ||
return hooks.getSite() | ||
|
||
|
||
class ContextMenuItem(MenuItem): | ||
"""Context menu item.""" | ||
|
||
def getURLContext(self): | ||
return self.context |
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 @@ | ||
############################################################################## | ||
# | ||
# Copyright (c) 2007 Zope Foundation and Contributors. | ||
# All Rights Reserved. | ||
# | ||
# This software is subject to the provisions of the Zope Public License, | ||
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. | ||
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED | ||
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS | ||
# FOR A PARTICULAR PURPOSE. | ||
# | ||
############################################################################## | ||
""" | ||
$Id: layer.py 197 2007-04-13 05:03:32Z rineichen $ | ||
""" | ||
__docformat__ = "reStructuredText" | ||
|
||
import zope.interface | ||
import zope.security | ||
from zope.traversing.browser import absoluteURL | ||
from zope.viewlet import manager | ||
from zope.app.component import hooks | ||
from zope.app.pagetemplate import ViewPageTemplateFile | ||
|
||
|
||
def getWeight((name, viewlet)): | ||
try: | ||
return int(viewlet.weight) | ||
except AttributeError: | ||
return 0 | ||
|
||
|
||
# base menu manager mixin | ||
class MenuManager(manager.ViewletManagerBase): | ||
"""Menu manager for all kind of menu items""" | ||
|
||
def sort(self, viewlets): | ||
return sorted(viewlets, key=getWeight) | ||
|
||
def filter(self, viewlets): | ||
"""Filter available menu items.""" | ||
# Only return viewlets accessible to the principal | ||
return [(name, viewlet) for name, viewlet in viewlets | ||
if zope.security.canAccess(viewlet, 'render') and | ||
viewlet.available == True] | ||
|
||
def render(self): | ||
"""Return the template whihc renders the menu items.""" | ||
if not self.viewlets: | ||
return u'' | ||
return self.template() | ||
|
||
def __repr__(self): | ||
return '<%s %r>' % (self.__class__.__name__, self.__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 @@ | ||
<tal:block define="viewlets view/viewlets"> | ||
<ul tal:condition="viewlets"> | ||
<tal:block repeat="viewlet viewlets" | ||
content="structure viewlet/render" /> | ||
</ul> | ||
</tal:block> |