Exemplo n.º 1
0
def setDefaultEditor(context, wanted_editor='', dry_run=False):
    """Use the deault editor for all users."""
    from collective.setdefaulteditor.utils import set_editor_for_all
    # Assumes the zope.component.hooks site has already been set
    set_editor_for_all(wanted_editor, dry_run)
Exemplo n.º 2
0
def setDefaultEditor(context, wanted_editor='', dry_run=False):
    """Use the deault editor for all users."""
    from collective.setdefaulteditor.utils import set_editor_for_all
    # Assumes the zope.component.hooks site has already been set
    set_editor_for_all(wanted_editor, dry_run)
    def update(self):
        """Apply settings and update some variables on this view.
        """
        marker = object()
        context = aq_inner(self.context)
        pprops = getToolByName(context, 'portal_properties')
        md = getToolByName(context, 'portal_memberdata')
        site_props = pprops.site_properties

        # Determine the wanted editor.
        wanted_editor = self.request.get('editor', marker)

        # What are the defaults?
        self.site_default_editor = site_props.getProperty('default_editor')
        self.member_default_editor = md.getProperty('wysiwyg_editor')

        # Get possible editors.
        editors = list(site_props.getProperty('available_editors', []))
        if self.site_default_editor and '' not in editors:
            # Plone 4.  A site default is supported, so add an empty
            # string for using this.
            editors.append('')

        # Gather display information about the editors.
        self.available_editors = []
        if wanted_editor is marker:
            selected_editor = self.site_default_editor or self.member_default_editor
        else:
            selected_editor = wanted_editor
        for editor in editors:
            if editor == 'None':
                title = PMF(u"label_ordinary_content_editor",
                            default=(u"Basic HTML textarea editor (works in "
                                     u"all browsers)"))
            elif editor == '':
                title = PMF(u"vocabulary-available-editor-novalue",
                            default=u"Use site default")
            else:
                title = editor
            if editor == selected_editor:
                selected = 'selected'
            else:
                selected = None
            self.available_editors.append(dict(
                value=editor,
                selected=selected,
                title=title))

        # Only POST requests allowed beyond this point.
        if self.request.get('REQUEST_METHOD') != 'POST':
            return

        # Check the wanted editor.
        if wanted_editor is marker:
            # nothing to do
            return
        status = IStatusMessage(self.request)
        if wanted_editor not in editors:
            msg = "%r is not available as editor. Choose one of %r." % (
                wanted_editor, editors)
            status.addStatusMessage(msg, type='error')
            return

        # Is this a dry run or are we allowed to change things?
        dry_run = (self.request.get('dryrun', 'off') == 'on')

        # Change the editor for all members.
        if self.request.get('update-user'):
            same, changed = set_editor_for_all(wanted_editor, dry_run=dry_run)
            msg = "Done. %d were the same; %d needed changing." % (
                same, changed)
            status.addStatusMessage(msg, type='info')
            logger.info(msg)

        # Update the default editor.
        if self.request.get('update-default'):
            if wanted_editor == '':
                msg = ("Cannot set the default wysiwyg_editor to the site "
                       "default.")
                logger.warn(msg)
                status.addStatusMessage(msg, type='warning')
            else:
                if self.site_default_editor is None:
                    # Plone 3, usually.
                    if not dry_run:
                        md._updateProperty('wysiwyg_editor', wanted_editor)
                        self.member_default_editor = wanted_editor
                    msg = "Updated wysiwyg_editor for new members to %r" % (
                        wanted_editor)
                else:
                    if not dry_run:
                        site_props._updateProperty(
                            'default_editor', wanted_editor)
                        self.site_default_editor = wanted_editor
                        md._updateProperty('wysiwyg_editor', '')
                        self.member_default_editor = ''
                    msg = ("Updated default wysiwyg_editor to %r. New members "
                           "will use the site default." % (wanted_editor))
                logger.info(msg)
                status.addStatusMessage(msg, type='info')

        if dry_run:
            msg = 'Dry-run selected: nothing changed.'
            status.addStatusMessage(msg, type='warning')
            logger.info(msg)
            return