[Zope-CVS] CVS: Packages/Moztop/CMFMoztop - MoztopSupportTool.py:1.1 __init__.py:1.1 tool.gif:1.1

Sidnei da Silva sidnei@x3ng.com.br
Fri, 21 Feb 2003 10:41:25 -0500


Update of /cvs-repository/Packages/Moztop/CMFMoztop
In directory cvs.zope.org:/tmp/cvs-serv31948/CMFMoztop

Added Files:
	MoztopSupportTool.py __init__.py tool.gif 
Log Message:
Adding CMF support tools and skins.

=== Added File Packages/Moztop/CMFMoztop/MoztopSupportTool.py ===
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (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
#
##############################################################################
""" Tool for supporting Moztop functions.

$Id: MoztopSupportTool.py,v 1.1 2003/02/21 15:41:24 sidnei Exp $
"""

from AccessControl import ClassSecurityInfo
from Acquisition import aq_inner
from Acquisition import aq_parent
from Globals import InitializeClass
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from OFS.SimpleItem import SimpleItem

from Products.CMFCore.ActionProviderBase import ActionProviderBase
from Products.CMFCore.CMFCorePermissions import ManagePortal
from Products.CMFCore.CMFCorePermissions import View
from Products.CMFCore.utils import UniqueObject
from Products.CMFCore.utils import getToolByName

from interfaces.moztop_support import moztop_support as IMoztopTool
import md5

class MoztopSupportTool(UniqueObject, SimpleItem, ActionProviderBase):
    """ Moztop Support Tool.
    """

    __implements__ = (IMoztopTool, ActionProviderBase.__implements__)

    id = 'moztop_support'
    meta_type = 'Moztop Support Tool'
    _actions = ()

    security = ClassSecurityInfo()
    security.declareObjectProtected(View)

    manage_options = ( {'label':'Overview',
                          'action':'manage_overview'}
                       ,
                     ) \
                     + ActionProviderBase.manage_options \
                     + SimpleItem.manage_options

    #
    #   ZMI methods
    #
    security.declareProtected(ManagePortal, 'manage_overview')
    manage_overview = PageTemplateFile('www/explainMoztopSupport.zpt', globals(),
                                       __name__='manage_overview')
    
    #
    #   'moztop_support' interface methods
    #

    def _resourcePath(self, url):
        url_tool = getToolByName(self, 'portal_url')
        portal_path = url_tool()
        path_size = len(portal_path.split('/'))
        return ''.join(url.split('/')[path_size:])

    def _resourceParentPath(self, url):
        url_tool = getToolByName(self, 'portal_url')
        portal_path = url_tool()
        path_size = len(portal_path.split('/'))
        return ''.join(url.split('/')[path_size:-1])

    def _normalizePortalType(self, portal_type):
        return ''.join(str(portal_type).split()).lower()

    security.declareProtected(View, 'getResources')
    def getResources(self):
        """ See interface definition on moztop_support """
        catalog = getToolByName(self, 'portal_catalog')
        results = []
        for r in catalog.searchResults():
            results.append({'title':r.Title or r.title or r.id, \
                            'type':self._normalizePortalType(r.portal_type), \
                            'path':self._resourcePath(r.getURL()), \
                            'parentPath':self._resourceParentPath(r.getURL())})

        return results

    security.declareProtected(View, 'getParentResources')
    def getParentResources(self):
        """ See interface definition on moztop_support """

        results = self.getResources()

        containers = {}
        for r in results:
            if r['parentPath']:
                s = containers.get(r['parentPath'], None)
                if s is None:
                    s = []
                s.append(r)
                containers[r['parentPath']] = s
            else:
                s = containers.get('__root__', None)
                if s is None:
                    s = []
                s.append(r)
                containers['__root__'] = s

        return containers

    security.declareProtected(View, 'getRealm')
    def getRealm(self):
        url_tool = getToolByName(self, 'portal_url')
        portal_path = url_tool.getPortalObject().absolute_url()
        hash = md5.new(portal_path).digest()
        func = lambda x: hex( ord( x ) )[2:]
        md5_sum = '0' + ''.join( map( func, hash ) )
        return md5_sum       

        
InitializeClass(MoztopSupportTool)


=== Added File Packages/Moztop/CMFMoztop/__init__.py ===
from Products.CMFCore import DirectoryView
from Products.CMFCore.utils import ToolInit
import MoztopSupportTool

moztop_globals=globals()

DirectoryView.registerDirectory('skins', moztop_globals)

tools = ( MoztopSupportTool.MoztopSupportTool, )

def initialize( context ):
    ToolInit('Moztop Support Tool', tools=tools,
             product_name='CMFMoztop', icon='tool.gif',
             ).initialize( context )


=== Added File Packages/Moztop/CMFMoztop/tool.gif ===
  <Binary-ish file>