Exemplo n.º 1
0
 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)
Exemplo n.º 3
0
 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))
Exemplo n.º 5
0
    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))
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
 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())
Exemplo n.º 9
0
    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)
Exemplo n.º 11
0
    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.")
Exemplo n.º 12
0
 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
Exemplo n.º 14
0
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
Exemplo n.º 15
0
    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))
Exemplo n.º 17
0
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)