def post_install(context): """Post install script""" if isNotCurrentProfile(context): return # Setup portal_transforms logger.info('Updating portal_transform safe_html settings') tid = 'safe_html' pt = getToolByName(context, 'portal_transforms') if tid not in pt.objectIds(): return trans = pt[tid] tconfig = trans._config tconfig['nasty_tags'] = {'applet': '1'} tconfig['remove_javascript'] = 1 tconfig['stripped_attributes'] = ['lang', 'valign', 'halign', 'border', 'frame', 'rules', 'cellspacing', 'cellpadding', 'bgcolor'] tconfig['stripped_combinations'] = {} tconfig['style_whitelist'] = ['text-align', 'list-style-type', 'float', 'width', 'height', 'padding-left', 'padding-right'] valid_tags = tconfig['valid_tags'] valid_tags['embed'] = 0 valid_tags['iframe'] = 1 valid_tags['object'] = 1 valid_tags['script'] = 1 make_config_persistent(tconfig) trans._p_changed = True trans.reload()
def configure_portal_transforms(context): """ Following a hack in http://developer.plone.org/misc/portal_transforms.html and (more definitive) https://github.com/plone/plone.app.controlpanel/blob/master/plone/app/controlpanel/filter.py PortalTransforms no té api publica i cal fer hacks fastigosos per modificar-lo. """ logger.info('Configure portal_transform safe_html settings') trans = getattr(getToolByName(context, 'portal_transforms'), 'safe_html') tconfig = trans._config # import pdb; pdb.set_trace() if 'embed' in tconfig['nasty_tags']: del tconfig['nasty_tags']['embed'] if 'object' in tconfig['nasty_tags']: del tconfig['nasty_tags']['object'] # valid_tags = XHTML_TAGS - stripped_tags + custom_tags tconfig['valid_tags']['iframe']=1 tconfig['valid_tags']['embed']=1 tconfig['valid_tags']['param']=0 tconfig['valid_tags']['object']=1 make_config_persistent(tconfig) trans._p_changed = True trans.reload()
def setup_portal_transforms(context): if context.readDataFile('setup_portal_transform_step.txt') is None: # Not your add-on return logger.info('Updating portal_transform safe_html settings') tid = 'safe_html' pt = getToolByName(context, 'portal_transforms') if not tid in pt.objectIds(): return trans = pt[tid] tconfig = trans._config tconfig['nasty_tags'] = {'style': 1, 'script': 1, 'object': 0, 'applet': 1, 'meta': 1, 'embed': 0} # tconfig['remove_javascript'] = 0 tconfig['stripped_attributes'] = ['lang', 'valign', 'halign', 'border', 'rules', 'cellspacing', 'cellpadding', 'bgcolor'] tconfig['valid_tags']['embed'] = 1 tconfig['valid_tags']['iframe'] = 1 # tconfig['valid_tags'] = { # 'code': '1', 'meter': '1', 'tbody': '1', 'style': '1', 'img': '0', # 'title': '1', 'tt': '1', 'tr': '1', 'param': '1', 'li': '1', # 'source': '1', 'tfoot': '1', 'th': '1', 'td': '1', 'dl': '1', # 'blockquote': '1', 'big': '1', 'dd': '1', 'kbd': '1', 'dt': '1', # 'p': '1', 'small': '1', 'output': '1', 'div': '1', 'em': '1', # 'datalist': '1', 'hgroup': '1', 'video': '1', 'rt': '1', 'canvas': '1', # 'rp': '1', 'sub': '1', 'bdo': '1', 'sup': '1', 'progress': '1', # 'body': '1', 'acronym': '1', 'base': '0', 'br': '0', 'address': '1', # 'article': '1', 'strong': '1', 'ol': '1', 'script': '1', 'caption': '1', # 'dialog': '1', 'col': '1', 'h2': '1', 'h3': '1', 'h1': '1', 'h6': '1', # 'h4': '1', 'h5': '1', 'header': '1', 'table': '1', 'span': '1', # 'area': '0', 'mark': '1', 'dfn': '1', 'var': '1', 'cite': '1', # 'thead': '1', 'head': '1', 'hr': '0', 'link': '1', 'ruby': '1', # 'b': '1', 'colgroup': '1', 'keygen': '1', 'ul': '1', 'del': '1', # 'iframe': '1', 'embed': '1', 'pre': '1', 'figure': '1', 'ins': '1', # 'aside': '1', 'html': '1', 'nav': '1', 'details': '1', 'u': '1', # 'samp': '1', 'map': '1', 'object': '1', 'a': '1', 'footer': '1', # 'i': '1', 'q': '1', 'command': '1', 'time': '1', 'audio': '1', # 'section': '1', 'abbr': '1'} make_config_persistent(tconfig) trans._p_changed = True trans.reload()
def configureFiltering(self): """ """ tid = 'safe_html' pt = getToolByName(self, 'portal_transforms') if not tid in pt.objectIds(): return trans = pt[tid] tconfig = trans._config tconfig['class_blacklist'] = [] tconfig['nasty_tags'] = {'meta': '1'} tconfig['remove_javascript'] = 0 tconfig['stripped_attributes'] = ['lang', 'valign', 'halign', 'border', 'frame', 'rules', 'cellspacing', 'cellpadding', 'bgcolor'] tconfig['stripped_combinations'] = {} tconfig['style_whitelist'] = ['text-align', 'list-style-type', 'float', 'width', 'height', 'padding-left', 'padding-right'] # allow specific styles for tconfig['valid_tags'] = { 'code': '1', 'meter': '1', 'tbody': '1', 'style': '1', 'img': '0', 'title': '1', 'tt': '1', 'tr': '1', 'param': '1', 'li': '1', 'source': '1', 'tfoot': '1', 'th': '1', 'td': '1', 'dl': '1', 'blockquote': '1', 'big': '1', 'dd': '1', 'kbd': '1', 'dt': '1', 'p': '1', 'small': '1', 'output': '1', 'div': '1', 'em': '1', 'datalist': '1', 'hgroup': '1', 'video': '1', 'rt': '1', 'canvas': '1', 'rp': '1', 'sub': '1', 'bdo': '1', 'sup': '1', 'progress': '1', 'body': '1', 'acronym': '1', 'base': '0', 'br': '0', 'address': '1', 'article': '1', 'strong': '1', 'ol': '1', 'script': '1', 'caption': '1', 'dialog': '1', 'col': '1', 'h2': '1', 'h3': '1', 'h1': '1', 'h6': '1', 'h4': '1', 'h5': '1', 'header': '1', 'table': '1', 'span': '1', 'area': '0', 'mark': '1', 'dfn': '1', 'var': '1', 'cite': '1', 'thead': '1', 'head': '1', 'hr': '0', 'link': '1', 'ruby': '1', 'b': '1', 'colgroup': '1', 'keygen': '1', 'ul': '1', 'del': '1', 'iframe': '1', 'embed': '1', 'pre': '1', 'figure': '1', 'ins': '1', 'aside': '1', 'html': '1', 'nav': '1', 'details': '1', 'u': '1', 'samp': '1', 'map': '1', 'object': '1', 'a': '1', 'footer': '1', 'i': '1', 'q': '1', 'command': '1', 'time': '1', 'audio': '1', 'section': '1', 'abbr': '1', 'strike': '1'} make_config_persistent(tconfig) trans._p_changed = True trans.reload()
def setup_portal_transforms(context): if not context.readDataFile('collective-tinymceplugins-embedly-default.txt'): return logger.info('Updating portal_transform safe_html settings') tid = 'safe_html' pt = getToolByName(context, 'portal_transforms') if not tid in pt.objectIds(): return trans = pt[tid] tconfig = trans._config tconfig['valid_tags']['iframe'] = '1' make_config_persistent(tconfig) trans._p_changed = True trans.reload()
def setup_portal_transforms(context): if not context.readDataFile('sc.embedder-default.txt'): return logger.info('Updating portal_transform safe_html settings') tid = 'safe_html' pt = api.portal.get_tool('portal_transforms') if tid not in pt.objectIds(): return trans = pt[tid] tconfig = trans._config tconfig['valid_tags']['iframe'] = '1' make_config_persistent(tconfig) trans._p_changed = True trans.reload()
def setup_portal_transforms(context): if not context.readDataFile('sc.embedder-default.txt'): return logger.info('Updating portal_transform safe_html settings') tid = 'safe_html' pt = api.portal.get_tool('portal_transforms') if tid not in pt.objectIds(): return trans = pt[tid] tconfig = trans._config tconfig['valid_tags']['iframe'] = '1' make_config_persistent(tconfig) trans._p_changed = True trans.reload()
def setup_portal_transforms(context): if isNotThisProfile(context, 'sc.tinymce.mediaembed.txt'): return logger.info('Updating portal_transform safe_html settings') tid = 'safe_html' pt = getToolByName(context, 'portal_transforms') if not tid in pt.objectIds(): return trans = pt[tid] tconfig = trans._config tconfig['style_whitelist'] = ['text-align', 'list-style-type', 'float', 'padding-left', 'width', 'height', 'display'] make_config_persistent(tconfig) trans._p_changed = True trans.reload()
def setup_portal_transforms(context, transform_id, transform_config, logger=logger): """Persistently configure a specific transformation in portal_transforms. @param context: A Plone context. @param transform_id: The transformation identifier (e.g. "safe_html") @param transform_config: A dictionary with the transformation configuration. @param logger: (Optional) A logging instance. """ pt = getToolByName(context, 'portal_transforms') if transform_id not in pt.objectIds(): return trans = pt[transform_id] tconfig = trans._config tconfig.update(transform_config) make_config_persistent(tconfig) trans._p_changed = True trans.reload() logger.info('portal_transform settings with id %s updated' % transform_id)
def setupTemplates(context): if context.readDataFile('imio.ckeditortemplates.txt') is None: return site = context.getSite() types = api.portal.get_tool(name='portal_types') types.getTypeInfo('cktemplatefolder').filter_content_types = False cktfolder = getattr(site, FOLDER) if not cktfolder.language: cktfolder.setLanguage('fr') try: api.content.transition(obj=cktfolder, transition='publish_and_hide') except api.exc.InvalidParameterError: logger.info("No publish_and_hide workflow") if not cktfolder.get(IMAGES_FOLDER): folder_images = api.content.create( type='Folder', title=IMAGES_FOLDER, container=cktfolder, language='fr') add_images(folder_images) types.getTypeInfo('cktemplatefolder').filter_content_types = True templates = [ {'id': 'presentation-elu', 'title': u'Présentation élu', 'text': presentationelu()}, {'id': 'presentation-service', 'title': u'Présentation service', 'text': presentationservice()} ] for template in templates: if not cktfolder.get(template['id']): rtv = RichTextValue(template['text']) template = api.content.create(type="cktemplate", id=template['id'], title=template['title'], content=rtv, container=cktfolder, language='fr') try: api.content.transition(obj=template, transition='enable') except api.exc.InvalidParameterError: logger.info("No enable workflow") """ Allow figcaption as valid tag in portal_transforms safe_html""" from Products.PortalTransforms.Transform import make_config_persistent pt = api.portal.get_tool(name='portal_transforms') tid = 'safe_html' if tid not in pt.objectIds(): return trans = pt[tid] tconfig = trans._config validtags = tconfig['valid_tags'] validtags.update({'figcaption': 1}) make_config_persistent(tconfig) trans._p_changed = True trans.reload()
def setup_portal_transforms(context): tid = 'safe_html' pt = getToolByName(context, 'portal_transforms') if not tid in pt.objectIds(): return trans = pt[tid] tconfig = trans._config tconfig['class_blacklist'] = [] tconfig['nasty_tags'] = {'meta': '1'} tconfig['remove_javascript'] = 0 tconfig['stripped_attributes'] = [ 'lang', 'valign', 'halign', 'border', 'frame', 'rules', 'cellspacing', 'cellpadding', 'bgcolor' ] tconfig['stripped_combinations'] = {} tconfig['style_whitelist'] = [ 'text-align', 'list-style-type', 'float', 'width', 'height', 'padding-left', 'padding-right' ] # allow specific styles for # TinyMCE editing tconfig['valid_tags'] = { 'code': '1', 'meter': '1', 'tbody': '1', 'style': '1', 'img': '0', 'title': '1', 'tt': '1', 'tr': '1', 'param': '1', 'li': '1', 'source': '1', 'tfoot': '1', 'th': '1', 'td': '1', 'dl': '1', 'blockquote': '1', 'big': '1', 'dd': '1', 'kbd': '1', 'dt': '1', 'p': '1', 'small': '1', 'output': '1', 'div': '1', 'em': '1', 'datalist': '1', 'hgroup': '1', 'video': '1', 'rt': '1', 'canvas': '1', 'rp': '1', 'sub': '1', 'bdo': '1', 'sup': '1', 'progress': '1', 'body': '1', 'acronym': '1', 'base': '0', 'br': '0', 'address': '1', 'article': '1', 'strong': '1', 'ol': '1', 'script': '1', 'caption': '1', 'dialog': '1', 'col': '1', 'h2': '1', 'h3': '1', 'h1': '1', 'h6': '1', 'h4': '1', 'h5': '1', 'header': '1', 'table': '1', 'span': '1', 'area': '0', 'mark': '1', 'dfn': '1', 'var': '1', 'cite': '1', 'thead': '1', 'head': '1', 'hr': '0', 'link': '1', 'ruby': '1', 'b': '1', 'colgroup': '1', 'keygen': '1', 'ul': '1', 'del': '1', 'iframe': '1', 'embed': '1', 'pre': '1', 'figure': '1', 'ins': '1', 'aside': '1', 'html': '1', 'nav': '1', 'details': '1', 'u': '1', 'samp': '1', 'map': '1', 'object': '1', 'a': '1', 'footer': '1', 'i': '1', 'q': '1', 'command': '1', 'time': '1', 'audio': '1', 'section': '1', 'abbr': '1' } make_config_persistent(tconfig) trans._p_changed = True trans.reload()