def renderer(self, context=None, request=None, view=None, manager=None, assignment=None): context = context or self.folder request = request or self.folder.REQUEST view = view or self.folder.restrictedTraverse('@@plone') manager = manager or getUtility(IPortletManager, name='plone.rightcolumn', context=self.portal) assignment = assignment or static.Assignment(header=u"title", text="text") return getMultiAdapter((context, request, view, manager, assignment), IPortletRenderer)
def test_portlets_adapter_sync(self): # getter adapter = getAdapter(self.layer['folder1'], IDataCollector, name="portlet_data_adapter") data = adapter.getData() # setter - on folder2 adapter2 = getAdapter(self.layer['folder2'], IDataCollector, name="portlet_data_adapter") adapter2.setData(data, metadata=None) # add another portlet to folder1 self.layer['left_portlets']['title3'] = static.Assignment( header='Title3', text="some text", omit_border=False) # now get data again adapter3 = getAdapter(self.layer['folder1'], IDataCollector, name="portlet_data_adapter") data2 = adapter3.getData() # and sync adapter4 = getAdapter(self.layer['folder2'], IDataCollector, name="portlet_data_adapter") adapter4.setData(data2, metadata=None)
def test_no_header(self): r = self.renderer(context=self.portal, assignment=static.Assignment(text="<b>text</b>")) r = r.__of__(self.folder) r.update() output = r.render() self.assertTrue('<a class="tile"' not in output) self.assertTrue('<dt class="portletHeader titleless"' in output)
def testInvokeEditView(self): mapping = PortletAssignmentMapping() request = self.portal.REQUEST mapping['foo'] = static.Assignment(header=u"title", text="text") editview = getMultiAdapter((mapping['foo'], request), name='edit') self.failUnless(isinstance(editview, static.EditForm))
def testMigrateStaticTextPortlets(self): class HiddenAssignment(static.Assignment): hide = True self.setRoles(["Manager"]) self.portal.invokeFactory('Folder', id="statictest") folder = self.portal['statictest'] manager = getUtility( IPortletManager, name='plone.rightcolumn', context=folder) assignments = getMultiAdapter( (folder, manager), IPortletAssignmentMapping) hidden_portlet = HiddenAssignment() visible_portlet = static.Assignment() assignments['hidden'] = hidden_portlet assignments['visible'] = visible_portlet migrateStaticTextPortlets(self.portal) self.assertFalse( IPortletAssignmentSettings(hidden_portlet).get( 'visible', True)) self.assertTrue( IPortletAssignmentSettings(visible_portlet).get( 'visible', True))
def test_render(self): r = self.renderer(context=self.portal, assignment=static.Assignment(header=u"title", text="<b>text</b>")) r = r.__of__(self.folder) r.update() output = r.render() self.failUnless('title' in output) self.failUnless('<b>text</b>' in output)
def test_relative_link(self): folder_id = self.portal.invokeFactory('Folder', id='folder1', title='My Folder Title') r = self.renderer(context=self.portal[folder_id], assignment=static.Assignment(text="""<a href="relative/link">link</a>""")) r = r.__of__(self.folder) r.__portlet_metadata__ = dict(category='context', key='/'.join(self.portal.getPhysicalPath())) r.update() output = r.render() self.assertTrue("http://nohost/plone/relative/link" in output)
def test_css_class(self): r = self.renderer( context=self.portal, assignment=static.Assignment( header=u"Welcome text", text="<b>text</b>" ) ) self.assertEquals('portlet-static-welcome-text', r.css_class())
def test_portlets_render_static(self): assignment = static.Assignment(header=u"a static title", text=u"a static text") renderer = StaticTextPortletRenderer(self.context, self.request, None, None, assignment) result = renderer.render() # self.assertEqual(result['header'], u'a static title') self.assertEqual(result['text'], u'a static text')
def test_relative_link(self): r = self.renderer(context=self.portal, assignment=static.Assignment( text="""<a href="relative/link">link</a>""")) r = r.__of__(self.portal) r.__portlet_metadata__ = dict(category='context', key='/'.join( self.portal.getPhysicalPath())) r.update() output = r.render() self.assertTrue("http://nohost/plone/relative/link" in output)
def testRenderer(self): context = self.folder request = self.folder.REQUEST view = self.folder.restrictedTraverse('@@plone') manager = getUtility(IPortletManager, name='plone.rightcolumn', context=self.portal) assignment = static.Assignment(header=u"title", text="text") renderer = getMultiAdapter((context, request, view, manager, assignment), IPortletRenderer) self.failUnless(isinstance(renderer, static.Renderer)) self.failUnless(renderer.available, "Renderer should be available by default.")
def __call__(self): return { 'ubify.homecontentportletsmanager': ( sitedescriptionportlet.Assignment(), tagsportlet.Assignment(), activityportlet.Assignment(count=20), commentsportlet.Assignment(), ), 'ubify.mindmapportletmanager': (static.Assignment(header=site_home_top_banner_static_header, text=site_home_top_banner_static_text, omit_border=True), ), 'ubify.homeleftblockportletmanager': ( recentsiteupdatesportlet.Assignment(), topratedportlet.Assignment(), statisticsportlet.Assignment(), ), }
def renderer(self, context=None, request=None, view=None, manager=None, assignment=None): context = context or self.portal request = request or self.portal.REQUEST view = view or self.portal.restrictedTraverse('@@plone') manager = manager or getUtility( IPortletManager, name='plone.rightcolumn', context=self.portal) assignment = assignment or static.Assignment(header=u"title", text="text") ren = getMultiAdapter((context, request, view, manager, assignment), IPortletRenderer) ren.__portlet_metadata__ = { 'key': '/'.join(self.portal.getPhysicalPath()) } return ren
def assignStackerRelatedPortlet(portal): from ubify.policy.config import list_of_portletmanagers_for_stackerportlet_assignment, cynin_desktop_left_column_text static_portlet_text = cynin_desktop_left_column_text #static_portlet_nav_url = portal.absolute_url() + "/stacker-badge" #static_portlet_text = static_portlet_text % (static_portlet_nav_url) from plone.portlet.static import static assignments = (static.Assignment(header='cyn.in Desktop', text=static_portlet_text, omit_border=True), ) for name in list_of_portletmanagers_for_stackerportlet_assignment: if assignments: try: portletManager = getUtility(IPortletManager, name=name) except ComponentLookupError: sm = getSiteManager(portal) objportletManager = PortletManager() sm.registerUtility(component=objportletManager, provided=IPortletManager, name=name) portletManager = getUtility(IPortletManager, name=name) assignable = getMultiAdapter(( portal, portletManager, ), ILocalPortletAssignmentManager) manager = getMultiAdapter((portal, portletManager), IPortletAssignmentMapping) if portletManager is not None: chooser = INameChooser(manager) for assignment in assignments: strtitle = assignment.title.lower() strtitle = strtitle.replace(' ', '-') if manager.has_key(strtitle) == 0: manager[chooser.chooseName(None, assignment)] = assignment
def setUpPloneSite(self, portal): if IS_PLONE_5: applyProfile(portal, 'plone.app.contenttypes:default') setRoles(portal, TEST_USER_ID, ['Manager']) login(portal, TEST_USER_NAME) self.folder = portal.get( portal.invokeFactory('Folder', 'testing_example_data')) # add some default plone types testdoc1id = self.folder.invokeFactory('Document', 'test-doc-1') self['testdoc1'] = getattr(self.folder, testdoc1id, None) folder1id = self.folder.invokeFactory('Folder', 'test-folder-1') self['folder1'] = getattr(self.folder, folder1id, None) self['newfolder'] = getattr( self['folder1'], self['folder1'].invokeFactory('Folder', 'newfolder')) folderid2 = self.folder.invokeFactory('Folder', 'test-folder-2') self['folder2'] = getattr(self.folder, folderid2, None) testdoc2id = self['folder1'].invokeFactory('Document', 'test-doc-2') self['testdoc2'] = getattr(self['folder1'], testdoc2id, None) # create a topic if not IS_PLONE_5: topicid = self.folder.manage_addProduct[ 'ATContentTypes'].addATTopic(id='atopic', title='A topic') self.topic = getattr(self.folder, topicid, None) # set some custom properties self['testdoc1'].manage_addProperty(id='bool', value=True, type='boolean') self['testdoc1'].manage_addProperty(id='date', value='2000/01/01', type='date') self['testdoc1'].manage_addProperty(id='float', value=2.1, type='float') self['testdoc1'].manage_addProperty(id='int', value=2, type='int') self['testdoc1'].manage_addProperty(id='lines', value=('row1', 'row2'), type='lines') self['testdoc1'].manage_addProperty(id='string', value='Hello World!', type='string') # put some custom portlets on folder1 - prepare to get # portlets from folder 2 self['left_column'] = getUtility(IPortletManager, name=u'plone.leftcolumn', context=self['folder1']) self['left_column2'] = getUtility(IPortletManager, name=u'plone.leftcolumn', context=self['folder2']) self['right_column'] = getUtility(IPortletManager, name=u'plone.rightcolumn', context=self['folder1']) self['right_column2'] = getUtility(IPortletManager, name=u'plone.rightcolumn', context=self['folder2']) self['left_portlets'] = getMultiAdapter(( self['folder1'], self['left_column'], ), IPortletAssignmentMapping, context=self['folder1']) self['right_portlets'] = getMultiAdapter(( self['folder1'], self['right_column'], ), IPortletAssignmentMapping, context=self['folder1']) # static-text-portlets on right and left column self['left_portlets']['title1'] = static.Assignment(header='Title1', text="some text", omit_border=False) self['right_portlets']['title2'] = static.Assignment(header='Title2', text="some text", omit_border=False) self['right_portlets']['blubb'] = static.Assignment(header='blubb', text="some text", omit_border=False) self['right_portlets']['news'] = portlets.news.Assignment() self['right_portlets']['search'] = portlets.search.Assignment() # collection portlet on the right if not IS_PLONE_5: self['right_portlets']['collection'] = collection.Assignment( header="My collection", target_collection='/'.join(self.topic.getPhysicalPath()), limit="5", random=False, show_more=False, show_dates=True, ) if IS_PLONE_5: root = 'root_uid' else: root = 'root' custom_navi_portlet = { 'name': 'custom Navigation', root: '/'.join(self.folder.getPhysicalPath()) } # custom Navigation portlet on the left side self['left_portlets']['custom_navigation'] = navigation.Assignment( **custom_navi_portlet) # set dummy interfaces alsoProvides(self['testdoc1'], IDummyIface) alsoProvides(self['testdoc1'], IDummyIface2) alsoProvides(self['folder2'], IDummyIface2) alsoProvides(self['folder2'], IDummyIface3)
def testInterfaces(self): portlet = static.Assignment(header=u"title", text="text") self.failUnless(IPortletAssignment.providedBy(portlet)) self.failUnless(IPortletDataProvider.providedBy(portlet.data))
def create_static_portlet(data): """ expects a data dictionary """ portlet = static.Assignment(unicode(data['title']), unicode(data['text'])) context = api.content.get(path=data['location']['path']) addPortlet(context, data['location']['portlet_manager'], portlet)