def setDefaultLayoutForNewPage(obj, event): """When a new page is created, set its layout based on the default in the FTI """ layoutAware = ILayoutAware(obj, None) if layoutAware is None: return # Initialise object layoutAware.content = ILayoutAware['content'].missing_value layoutAware.pageSiteLayout = ILayoutAware['pageSiteLayout'].missing_value layoutAware.sectionSiteLayout = ILayoutAware['sectionSiteLayout'].missing_value portal_type = obj.portal_type template = getDefaultPageLayout(portal_type) if template is None: raise ValueError("Cannot find layout template for %s" % portal_type) templatePath = urlparse.urljoin(obj.absolute_url_path(), template) try: layoutAware.content = resolveResource(templatePath) except: LOGGER.exception("Could not resolve default page layout %s" % portal_type)
def save(self): adapted = ILayoutAware(self.context) data = self.request.form.get('data') if not data: return data = json.loads(data) adapted.pageSiteLayout = data['page_layout'] adapted.sectionSiteLayout = data['section_layout'] return {'success': True}
def save(self): adapted = ILayoutAware(self.context) data = self.request.form.get('data') if not data: return data = json.loads(data) adapted.pageSiteLayout = data['page_layout'] adapted.sectionSiteLayout = data['section_layout'] parent = aq_parent(self.context) if ISiteRoot.providedBy(parent): # check if default page... if getDefaultPage(parent) == self.context.id: # also set site wide global layout setting... registry = getUtility(IRegistry) field = registry_field.TextLine(title=u'Default layout', required=False) new_record = Record(field) registry.records['castle.cms.default_layout'] = new_record registry['castle.cms.default_layout'] = data['section_layout'] return {'success': True}