Ejemplo n.º 1
0
 def handleSave(self, action):
     data, errors = self.extractData()
     if errors:
         self.status = self.formErrorsMessage
         return
     
     title = data['title']
     description = data['description']
     content = data['content']
     
     createTemplatePageLayout(title, description, content)
     
     IStatusMessage(self.request).add(_(u"Changes saved"), type="info")
     self.request.response.redirect(self.context.absolute_url() + "/@@deco-controlpanel#fieldset")
Ejemplo n.º 2
0
 def test_createTemplatePageLayout(self):
     from plone.app.page.interfaces import PAGE_LAYOUT_MANIFEST_FORMAT
     from plone.app.page.utils import createTemplatePageLayout
     
     from plone.resource.utils import queryResourceDirectory
     from plone.resource.manifest import getManifest
     
     from plone.app.testing import TEST_USER_ID
     from plone.app.testing import setRoles
     
     portal = self.layer['portal']
     
     setRoles(portal, TEST_USER_ID, ('Manager',))
     createTemplatePageLayout(u"A title", u"A description", u"<html><body><p>Stuff</p></body></html>")
     setRoles(portal, TEST_USER_ID, ('Member',))
     
     directory = queryResourceDirectory('pagelayout', 'a-title')
     
     self.assertTrue('page.html' in directory)
     self.assertTrue('manifest.cfg' in directory)
     self.assertEqual(directory.readFile('page.html'), "<html><body><p>Stuff</p></body></html>")
     
     manifest = getManifest(directory.openFile('manifest.cfg'), PAGE_LAYOUT_MANIFEST_FORMAT)
     self.assertEqual(manifest, {'title': "A title", 'description': "A description", 'file': 'page.html'})
     
     # Create a second one with the same title
     
     setRoles(portal, TEST_USER_ID, ('Manager',))
     createTemplatePageLayout(u"A title", u"Another description", u"<html><body><p>Other stuff</p></body></html>")
     setRoles(portal, TEST_USER_ID, ('Member',))
     
     directory = queryResourceDirectory('pagelayout', 'a-title-1')
     
     self.assertTrue('page.html' in directory)
     self.assertTrue('manifest.cfg' in directory)
     self.assertEqual(directory.readFile('page.html'), "<html><body><p>Other stuff</p></body></html>")
     
     manifest = getManifest(directory.openFile('manifest.cfg'), PAGE_LAYOUT_MANIFEST_FORMAT)
     self.assertEqual(manifest, {'title': "A title", 'description': "Another description", 'file': 'page.html'})
     
Ejemplo n.º 3
0
    def handleSave(self, action):
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return

        title = data["title"]
        description = data["description"]
        change = data["change"]

        layoutAware = ILayoutAware(self.context)

        content = layoutAware.content
        siteLayout = layoutAware.pageSiteLayout

        # Save the resource for the template page layout
        pagelayout = utils.createTemplatePageLayout(title, description, content)

        # Clone the page type

        portal_types = getToolByName(self.context, "portal_types")

        name = basename = getUtility(IIDNormalizer).normalize(title)
        idx = 1
        while name in portal_types:
            name = "%s-%d" % (basename, idx)
            idx += 1

        filename = PAGE_LAYOUT_FILE_NAME
        utils.clonePageType(
            portal_types,
            self.context.portal_type,
            name,
            title=title,
            description=description,
            default_site_layout=siteLayout,
            default_page_layout_template="/++%s++%s/%s" % (PAGE_LAYOUT_RESOURCE_NAME, pagelayout, filename),
        )

        # Change the current item's page type if applicable
        if change:
            utils.changePageType(self.context, name)

        self.request.response.redirect(self.context.absolute_url())