Package Products :: Package ZenUtils :: Package extdirect :: Package zope :: Module metaconfigure |
[hide private]
[frames] | no frames]

# Source Code for Module Products.ZenUtils.extdirect.zope.metaconfigure

     1  ###########################################################################
     2  #
     3  # This program is part of Zenoss Core, an open source monitoring platform.
     4  # Copyright (C) 2009, Zenoss Inc.
     5  #
     6  # This program is free software; you can redistribute it and/or modify it
     7  # under the terms of the GNU General Public License version 2 or (at your
     8  # option) any later version as published by the Free Software Foundation.
     9  #
    10  # For complete information please visit: http://www.zenoss.com/oss/
    11  #
    12  ###########################################################################
    13  import zope.component
    14  from zope.interface import Interface
    15  from zope.viewlet.metaconfigure import viewletDirective
    16  from zope.publisher.interfaces.browser import IBrowserView
    17  from zope.publisher.interfaces.browser import IDefaultBrowserLayer
    18  from zope.viewlet.viewlet import ViewletBase
    19  try:
    20      from Products.Five.browser.metaconfigure import page
    21  except ImportError:
    22      from zope.publisher.browser.viewmeta import page
    23
    24  from Products.ZenUtils.extdirect.router import DirectProviderDefinition
    25
    26  from interfaces import IExtDirectJavaScriptManager
    27
    28 -class SourceViewletBase(ViewletBase):
    29      _source = ""
    30      weight=0
    31 -    def render(self):
    32          return self._source
    33
    34 -def JavaScriptSourceViewlet(source):
    35      klass = type('JavaScriptSourceViewlet',
    36                   (SourceViewletBase,),
    37                   {'_source':source,
    38                    'weight':2})
    39      return klass
    40
    41
    42 -def directRouter(_context, name, class_, namespace=None, for_=Interface,
    43                   layer=IDefaultBrowserLayer, timeout="180000",
    44                   permission='zenoss.Common'):
    45
    46      # Register the view at which the class will be available
    47      page(_context, name, permission, for_, layer, class_=class_)
    48
    49      # Make a viewlet class with the appropriate javascript source
    50      source = DirectProviderDefinition(class_, name, timeout, namespace).render()
    51      viewletclass = JavaScriptSourceViewlet(source)
    52
    53      viewletDirective(_context, name, 'zope2.Public', for_, layer,
    54                       manager=IExtDirectJavaScriptManager, class_=viewletclass)
    55