Example #1
0
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()
Example #2
0
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()
Example #3
0
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()
Example #4
0
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()
Example #6
0
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()
Example #7
0
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()
Example #8
0
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()
Example #11
0
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()