Ejemplo n.º 1
0
 def customizeTemplate(self):
     reg = self.getRegistrationFromRequest()
     viewzpt = registration.customizeTemplate(reg)
     self.registerTTWView(viewzpt, reg)
     path = aq_inner(viewzpt).getPhysicalPath()
     url = self.request.physicalPathToURL(path) + '/manage_workspace'
     self.request.response.redirect(url)
Ejemplo n.º 2
0
 def customizeTemplate(self):
     reg = self.getRegistrationFromRequest()
     viewzpt = registration.customizeTemplate(reg)
     self.registerTTWView(viewzpt, reg)
     path = aq_inner(viewzpt).getPhysicalPath()
     url = self.request.physicalPathToURL(path) + "/manage_workspace"
     self.request.response.redirect(url)
Ejemplo n.º 3
0
 def moveViewletToViewletManager(self, viewlethash, toManagerName):
     """ Register the viewlet as belonging to the specified viewlet manager """
     # Unhash the viewlet info. Pull out what we need.
     unhashedInfo = unhashViewletInfo(viewlethash)
     fromManagerName = unhashedInfo['managerName']
     viewletName = unhashedInfo['viewletName']
     
     reg = findTemplateViewRegistrationFromHash(viewlethash)
     
     fromViewletManager = queryMultiAdapter((self.context, self.request, self), IViewletManager, fromManagerName)
     fromManagerInterface = list(providedBy(fromViewletManager).flattened())[0]
     toViewletManager = queryMultiAdapter((self.context, self.request, self), IViewletManager, toManagerName)
     toManagerInterface = list(providedBy(toViewletManager).flattened())[0]
     
     # Create a new tuple of the "required" interfaces.
     reqList = list(reg.required)
     pos = reqList.index(fromManagerInterface)
     reqList[pos] = toManagerInterface
     reqs = tuple(reqList)
     
     registration.createTTWViewTemplate(reg)
     attr, pt = findViewletTemplate(reg.factory)
     reg.factory.template = mangleAbsoluteFilename(pt.filename)
     
     # Register the new adapter
     gsm = getGlobalSiteManager()
     gsm.registerAdapter(name=viewletName, required=reqs, provided=reg.provided, factory=reg.factory)
     
     # "Customize" it to force persistence
     reqstr = ','.join([a.__identifier__ for a in reqs])
     toreg = registration.findTemplateViewRegistration(reqstr, viewletName)
     viewzpt = registration.customizeTemplate(toreg)
     
     sm = getSiteManager(self.context)
     sm.registerAdapter(viewzpt, required=toreg.required, provided=toreg.provided, name=toreg.name)
     
     # Hide the original
     self.hideViewlet(viewlethash)
     
     # Rerender the new one
     # We can't do this with a refreshProvider call because then we lose the <tal:viewletmanager> block.
     toViewletManager.update()
     ksscore = self.getCommandSet('core')
     selector = ksscore.getCssSelector('.kssattr-viewletmanagername-' + toManagerName.replace('.', '-'))
     ksscore.replaceInnerHTML(selector, toViewletManager.render())
     
     # Inspect the new viewlet
     return self.inspectViewlet(hashViewletInfo(viewletName, toManagerName, unhashedInfo['provided']))
Ejemplo n.º 4
0
 def customizeViewlet(self, viewlethash):
     """ Display an edit form for modifiying a viewlet's template """
     logger.debug("in customizeViewlet")
     
     # Unhash the viewlet info
     unhashedViewletInfo = unhashViewletInfo(viewlethash)
     
     # Get the viewlet's registration information from portal_view_customizations
     container = queryUtility(IViewTemplateContainer)
     reg = findTemplateViewRegistrationFromHash(viewlethash)
     regInfo = list(registration.templateViewRegistrationInfos([reg]))[0]
     
     # TODO We should be looking at regInfo['customized'] to determine whether or not a customization exists.
     # It never seems to have a value though... check on this.
     templateName = registration.generateIdFromRegistration(reg)
     
     # Check to see if the viewlet has already been customized. Get the template code accordingly.
     if templateName not in container.objectIds():
         viewzpt = registration.customizeTemplate(reg)
         sm = getSiteManager(self.context)
         sm.registerAdapter(viewzpt, required= reg.required, provided = reg.provided, name=reg.name)
     else:
         viewzpt = container[templateName]
     templateCode = viewzpt.read()
     template = ViewPageTemplateFile('panel_customize_viewlet.pt')
     # Wrap it so that Zope knows in what context it's being called
     # Otherwise, we get an "AttributeError: 'str' object has no attribute 'other'" error
     template = BoundPageTemplate(template, self)
     out = template(templateURL = viewzpt.absolute_url(),
                    viewletHash = viewlethash,
                    templateCode = templateCode)
     
     # Dump the output to the output panel
     self.updatePanelBodyContent(out)
     
     # Force a resize update of the panel so that the form elements are sized to the dimensions of the panel.
     kssglo = self.getCommandSet('gloWorm')
     kssglo.forceGlowormPanelResize()
     
     return self.render()