Platform Explorer / server 10.10

Extension point filters

An action filter is a set of rules that will apply - or not - given an action and a context.

Filter properties :

- id: will be used ot identify the filter from actions definitions.

- rules: set of rules composing the filter

The default filter implementation uses filter rules with the following properties:

- grant: boolean indicating whether this is a granting rule or a denying rule.

- permission: permission like "Write" that will be checked on the context for the given user. A rule can hold several permissions: it applies if user holds at least one of them.

- facet: facet like "Folderish" that can be set on the document type ({@see org.nuxeo.ecm.core.schema.types.Type}) to desribe the document type genral behaviour. A rule can hold several facets: it applies if current document in context has at least one of them.

- group: group like "members" to check against current user in context. A rule can hold several groups: it applies if current user is in one of them.

- condition: expression that can be evaluated against the current context. A rule can hold several conditions; it applies if at least one of the conditions is verified. The condition can be of the form #{somevar} or #{somevar.somemethod}, or #{somevar.somemethod(arg)}, in which case it will be interpreted a Seam expression, otherwise it will be interpreted as a Jexl expression. A reference for Jexl can be found at http://commons.apache.org/jexl/reference/syntax.html The Jexl context for the expression contains the variables "document", "principal", and "SeamContext".

- type: document type to check against current document in context. A rule can hold several types: it applies if current document is one of them. The fake 'Server' type is used to check the server context.

- schema: document schema to check against current document in context. A rule can hold several schemas: it applies if current document has one of them.

A filter is granting access to an action if, among its rules, no denying rule is found and at least one granting rule is found. If no rule is set, it is granted.

Custom filters can be defined on the extension point, provided they follow the {@see org.nuxeo.ecm.platform.actions.ActionFilter} interface, using the following syntax:

    <object class="my.package.MyFilter"/>

Example of action filter using default filter implementation:

    <filter id="theFilter">
        <rule grant="">
            <permission>Write</permission>
            <facet>Folderish</facet>
            <condition>condition</condition>
            <type>Workspace</type>
            <type>Section</type>
        </rule>
        <rule grant="false">
            <condition>condition 1</condition>
            <condition>condition 2</condition>
        </rule>
    </filter>

Contribution Descriptor

Existing Contributions

  • nuxeo-platform-webapp-core-10.10.jar /OSGI-INF/info-view-layouts-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter append="true" id="denyInfoViewPreview">
        </filter>
    
      </extension>
  • nuxeo-automation-features-10.10.jar /OSGI-INF/filters-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="directoriesManagementAccess">
          <rule grant="true">
            <condition>currentUser.administrator</condition>
            <condition>currentUser.isMemberOf('powerusers')</condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-publisher-web-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="publish_document">
          <rule grant="true">
            <facet>Publishable</facet>
          </rule>
        </filter>
    
        <filter id="admin_publication_trees_filter">
          <rule grant="true">
            <permission>Write</permission>
            <schema>publishing</schema>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-actions-core-10.10.jar /OSGI-INF/filters-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="not_folder">
          <rule grant="false">
            <facet>Folderish</facet>
          </rule>
        </filter>
    
        <filter id="folder">
          <rule grant="true">
            <facet>Folderish</facet>
          </rule>
        </filter>
    
        <filter id="not_collection">
          <rule grant="false">
            <facet>Collection</facet>
          </rule>
        </filter>
    
        <filter id="collection">
          <rule grant="true">
            <facet>Collection</facet>
          </rule>
        </filter>
    
        <filter id="not_container">
          <rule grant="false">
            <facet>Collection</facet>
            <facet>Folderish</facet>
          </rule>
        </filter>
    
        <filter id="container">
          <rule grant="true">
            <facet>Collection</facet>
            <facet>Folderish</facet>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-routing-default-10.10.jar /OSGI-INF/extensions.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
        <filter id="filter@wf@ParallelDocumentReview">
          <rule grant="true">
            <permission>ReadWrite</permission>
            <type>Audio</type>
            <type>File</type>
            <type>Note</type>
            <type>Picture</type>
            <type>Video</type>
            <condition>#{!currentDocument.locked and currentDocument.currentLifeCycleState != 'approved' and !currentDocument.trashed}</condition>
          </rule>
          <rule grant="false">
            <condition>document.isImmutable()</condition>
          </rule>
        </filter>
        <filter id="filter@SerialDocumentReview">
          <rule grant="true">
            <permission>ReadWrite</permission>
            <type>Audio</type>
            <type>File</type>
            <type>Note</type>
            <type>Picture</type>
            <type>Video</type>
            <condition>#{currentDocument.currentLifeCycleState != 'approved' and !currentDocument.trashed}</condition>
          </rule>
          <rule grant="false">
            <condition>document.isImmutable()</condition>
          </rule>
        </filter>
      </extension>
  • nuxeo-platform-video-jsf-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter append="true" id="view_preview">
          <rule grant="false">
            <facet>Video</facet>
          </rule>
        </filter>
    
        <filter append="true" id="popup_view_preview">
          <rule grant="false">
            <facet>Video</facet>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-imaging-jsf-10.10.jar /OSGI-INF/imaging-layouts-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="notHasPicture">
          <rule grant="false">
            <facet>Picture</facet>
          </rule>
        </filter>
    
        <filter id="hasPicture">
          <rule grant="true">
            <facet>Picture</facet>
          </rule>
        </filter>
    
        <filter append="true" id="denyInfoViewPreview">
          <rule grant="false">
            <facet>Picture</facet>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-template-rendering-jsf-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="is_creating_template">
          <rule grant="true">
            <condition>#{changeableDocument.type == 'TemplateSource'}</condition>
          </rule>
        </filter>
    
        <filter id="is_creating_template_instance">
          <rule grant="true">
            <condition>#{changeableDocument.hasFacet('TemplateBased')}</condition>
          </rule>
        </filter>
    
        <filter id="is_not_creating_template">
          <rule grant="false">
            <condition>#{changeableDocument.type == 'TemplateSource'}</condition>
          </rule>
          <rule grant="false">
            <condition>#{changeableDocument.hasFacet('TemplateBased')}</condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-webapp-base-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="restoreVersionDisplay">
          <rule grant="true">
            <condition>#{deleteActions.restoreActionDisplay()}
            </condition>
          </rule>
        </filter>
    
        <filter id="devModeEnabledForAdmin">
          <rule grant="true">
            <condition>#{seamReload.getCanTriggerFlush()}</condition>
          </rule>
        </filter>
    
        <filter id="seamHotReloadIsEnabled">
          <rule grant="true">
            <condition>#{seamHotReloadIsEnabled}</condition>
          </rule>
        </filter>
    
        <filter id="layoutDevModeEnabled">
          <rule grant="true">
            <condition>#{nxDevModeSet and nuxeoLayoutManagerBean.devModeSet}</condition>
          </rule>
        </filter>
    
        <filter id="layoutDevModeDisabled">
          <rule grant="true">
            <condition>#{nxDevModeSet and not nuxeoLayoutManagerBean.devModeSet}</condition>
          </rule>
        </filter>
    
        <filter id="isNotVersion">
          <rule grant="true">
            <condition>!document.isVersion()</condition>
          </rule>
        </filter>
    
        <filter id="hasSubscriptions">
          <rule grant="true">
            <condition>#{subscriptionAction.getSelectedNotifications().size() &gt; 0}</condition>
          </rule>
        </filter>
    
        <filter id="hasNoSubscriptions">
          <rule grant="true">
            <condition>#{subscriptionAction.getSelectedNotifications().size() == 0}</condition>
          </rule>
        </filter>
    
        <filter id="canSubscribe">
          <rule grant="false">
            <type>Domain</type>
            <type>WorkspaceRoot</type>
          </rule>
        </filter>
    
        <filter id="documentHasBlobs">
          <rule grant="true">
            <condition>
              #{popupHelper.isDocumentHasBlobs(document)}
            </condition>
          </rule>
        </filter>
    
        <filter id="hasNote">
          <rule grant="true">
            <schema>note</schema>
          </rule>
        </filter>
    
        <filter id="notHasNote">
          <rule grant="false">
            <schema>note</schema>
          </rule>
        </filter>
    
        <filter id="denyForFile">
          <rule grant="false">
            <type>File</type>
          </rule>
        </filter>
    
        <filter id="hasDublincore">
          <rule grant="true">
            <schema>dublincore</schema>
          </rule>
        </filter>
    
        <filter id="canToggleLayoutToEditMode">
          <documentation>
            <p>
              Filter used by the "toggleableLayoutWithForms" widget type
              to check
              wether the "edit" button should be displayed.
            </p>
            <p>
              This filter is a combination of default filters "edit" and
              "mutable_document" usually used to control rendering of the "edit" tab
              on document views.
            </p>
            @since 5.6
          </documentation>
          <rule grant="true">
            <permission>Write</permission>
          </rule>
          <rule grant="false">
            <facet>Immutable</facet>
          </rule>
          <rule grant="false">
            <condition>
              document.isTrashed()
            </condition>
          </rule>
        </filter>
    
        <filter id="isMainBlob">
          <rule grant="true">
            <condition>#{blobXPath == blobHolderGenerator.getBlobHolder(document).xpath}</condition>
          </rule>
        </filter>
    
        <filter id="isExportableToPDF">
          <rule grant="true">
            <condition>#{conversionActions.isExportableToPDF(blob)}</condition>
          </rule>
        </filter>
    
        <!--
        Not used since 10.2, kept it for backward compatibility
        -->
        <filter id="canFollow">
          <rule grant="true">
            <condition>#{subscriptionAction.canFollow()}</condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-multi-tenant-jsf-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="allowForTenantConfig">
          <rule grant="true">
            <facet>TenantConfig</facet>
          </rule>
        </filter>
    
        <filter id="denyForTenantConfig">
          <rule grant="false">
            <facet>TenantConfig</facet>
          </rule>
        </filter>
    
        <filter id="tenantAdministrators">
          <rule grant="true">
            <condition>#{currentUser.administrator}</condition>
            <condition>#{currentUser.isMemberOf('powerusers')}</condition>
          </rule>
        </filter>
    
        <filter id="readOnlyDirectory">
          <rule grant="true">
            <condition>#{multiTenantActions.isReadOnlyDirectory(directoryName)}</condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-contentview-jsf-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="contentViewShowPageSizeSelector">
          <rule grant="true">
            <condition>
              #{nxu:test(empty showPageSizeSelector,
              contentView.showPageSizeSelector,
              showPageSizeSelector)}
            </condition>
          </rule>
        </filter>
    
        <filter id="contentViewShowRefreshCommand">
          <rule grant="true">
            <condition>
              #{nxu:test(empty showRefreshCommand,
              contentView.showRefreshCommand, showRefreshCommand)}
            </condition>
          </rule>
        </filter>
    
        <filter id="contentViewShowCSVExport">
          <rule grant="true">
            <condition>
              #{nxu:test(empty showCSVExport,
              contentView.currentResultLayout.showCSVExport, showCSVExport)}
            </condition>
          </rule>
        </filter>
    
        <filter id="contentViewShowPDFExport">
          <rule grant="true">
            <condition>
              #{nxu:test(empty showPDFExport,
              contentView.currentResultLayout.showPDFExport, showPDFExport)}
            </condition>
          </rule>
        </filter>
    
        <filter id="contentViewShowSyndicationLinks">
          <rule grant="true">
            <condition>
              #{nxu:test(empty showSyndicationLinks,
              contentView.currentResultLayout.showSyndicationLinks,
              showSyndicationLinks)}
            </condition>
          </rule>
        </filter>
    
        <filter id="contentViewShowEditColumns">
          <rule grant="true">
            <condition>
              #{nxu:test(empty showEditColumns,
              contentView.currentResultLayout.showEditColumns,
              showEditColumns)}
            </condition>
          </rule>
        </filter>
    
        <filter id="contentViewShowEditRows">
          <rule grant="true">
            <condition>
              #{nxu:test(empty showEditRows,
              contentView.currentResultLayout.showEditRows,
              showEditRows)}
            </condition>
          </rule>
        </filter>
    
        <filter id="contentViewShowSpreadsheet">
          <rule grant="true">
            <condition>
              #{nxu:test(empty showSpreadsheet,
              contentView.currentResultLayout.showSpreadsheet,
              showSpreadsheet)}
            </condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-drive-jsf-10.10.jar /OSGI-INF/nuxeodrive-actions.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="can_sync_current_doc">
          <rule grant="false">
            <type>Domain</type>
            <type>SectionRoot</type>
            <type>TemplateRoot</type>
            <type>WorkspaceRoot</type>
            <type>Forum</type>
            <type>Collections</type>
          </rule>
          <rule grant="true">
            <condition>#{canSynchronizeCurrentDocument}</condition>
          </rule>
        </filter>
    
        <filter id="can_unsync_current_doc">
          <rule grant="true">
            <condition>#{canUnSynchronizeCurrentDocument}</condition>
          </rule>
        </filter>
    
        <filter id="can_navigate_to_current_synchronization_root">
          <rule grant="true">
            <condition>#{canNavigateToCurrentSynchronizationRoot}
            </condition>
          </rule>
        </filter>
    
        <filter id="can_drive_edit">
          <rule grant="true">
            <condition>#{nuxeoDriveActions.canEditDocument(document)}</condition>
          </rule>
          <rule grant="false">
            <facet>Collection</facet>
          </rule>
        </filter>
    
        <filter id="can_drive_edit_any">
          <rule grant="true">
            <condition>#{nuxeoDriveActions.canEditBlob(document, blobXPath)}</condition>
          </rule>
          <rule grant="false">
            <facet>Collection</facet>
          </rule>
        </filter>
    
        <filter id="has_one_auth_token">
          <rule grant="true">
            <condition>#{nuxeoDriveActions.hasOneDriveToken(currentUser)}</condition>
          </rule>
        </filter>
    
        <filter id="has_no_auth_token">
          <rule grant="false">
            <condition>#{nuxeoDriveActions.hasOneDriveToken(currentUser)}</condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-imaging-jsf-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="grantpicturebook">
          <rule grant="true">
            <type>PictureBook</type>
          </rule>
        </filter>
    
        <!-- not used since 5.5, keep it for compatibility -->
        <filter id="grantpicture">
          <rule grant="true">
            <type>Picture</type>
          </rule>
        </filter>
    
        <filter append="true" id="create">
          <rule grant="true">
            <permission>AddChildren</permission>
            <type>PictureBook</type>
          </rule>
        </filter>
    
        <filter append="true" id="importFile">
          <rule grant="true">
            <permission>AddChildren</permission>
            <type>PictureBook</type>
          </rule>
        </filter>
    
        <filter id="contentViewShowSlideshow">
          <rule grant="true">
            <condition>
              #{nxu:test(empty showSlideshow,
              contentView.currentResultLayout.showSlideshow,
              showSlideshow)}
            </condition>
          </rule>
        </filter>
    
        <filter id="canRecomputePictureViews">
          <rule grant="true">
            <permission>Write</permission>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-signature-web-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
        <filter id="signature_filter">
          <rule grant="true">
            <type>File</type>
          </rule>
        </filter>
      </extension>
  • nuxeo-platform-webapp-core-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="view">
          <rule grant="false">
            <facet>Folderish</facet>
          </rule>
        </filter>
    
        <filter id="create">
          <rule grant="true">
            <permission>AddChildren</permission>
            <facet>Folderish</facet>
            <type>Workspace</type>
            <type>TemplateRoot</type>
            <type>Section</type>
            <type>Folder</type>
            <type>OrderedFolder</type>
          </rule>
          <rule grant="false">
            <condition>
              #{typeManager.getAllowedSubTypes(document.getType(),document).size()==0}
            </condition>
          </rule>
        </filter>
    
        <filter id="importFile">
          <rule grant="true">
            <permission>AddChildren</permission>
            <facet>Folderish</facet>
            <type>Workspace</type>
            <type>Folder</type>
            <type>OrderedFolder</type>
            <condition>
              #{typeManager.getAllowedSubTypes(document.getType(),
              document).size()
              &gt; 0}
            </condition>
          </rule>
        </filter>
    
        <filter id="edit">
          <rule grant="false">
            <type>Root</type>
            <type>Domain</type>
            <type>WorkspaceRoot</type>
            <type>Workspace</type>
          </rule>
          <rule grant="true">
            <permission>Write</permission>
          </rule>
        </filter>
    
        <filter id="user_canedit">
          <rule grant="true">
            <permission>Write</permission>
          </rule>
        </filter>
    
        <filter id="workspace_edit">
          <rule grant="true">
            <type>Domain</type>
            <type>WorkspaceRoot</type>
            <type>Workspace</type>
            <permission>Write</permission>
          </rule>
        </filter>
    
        <filter id="metadata_edit">
          <rule grant="false">
            <type>Root</type>
          </rule>
          <rule grant="true">
            <permission>Write</permission>
          </rule>
        </filter>
    
        <!-- deprecated, use mutable_document instead -->
        <filter id="cannotEdit">
          <rule grant="false">
            <type>Root</type>
          </rule>
          <rule grant="false">
            <condition>!document.isProxy()</condition>
            <permission>Write</permission>
          </rule>
          <rule grant="false">
            <condition>!document.isProxy()</condition>
            <permission>Manage everything</permission>
          </rule>
        </filter>
    
        <filter id="anonymous">
          <rule grant="true">
            <condition>#{currentUser.anonymous}</condition>
          </rule>
        </filter>
    
        <filter id="not_anonymous">
          <rule grant="false">
            <condition>#{currentUser.anonymous}</condition>
          </rule>
        </filter>
    
        <filter id="not_transient_user">
          <rule grant="false">
            <condition>#{currentUser.transient}</condition>
          </rule>
        </filter>
    
        <filter id="view_content">
          <rule grant="true">
            <permission>ReadChildren</permission>
            <facet>Folderish</facet>
          </rule>
        </filter>
    
        <filter id="valid_for_publish">
          <rule grant="true">
            <condition>
              document.getCurrentLifeCycleState().equals("approved")
            </condition>
          </rule>
        </filter>
    
        <filter id="manage">
          <rule grant="true">
            <permission>Manage everything</permission>
          </rule>
        </filter>
    
        <filter id="not_review_documents">
          <rule grant="false">
            <condition>
              document.getCurrentLifeCycleState().equals("review")
            </condition>
          </rule>
        </filter>
    
        <filter id="mutable_document">
          <rule grant="false">
            <facet>Immutable</facet>
          </rule>
          <rule grant="false">
            <type>Root</type>
          </rule>
          <rule grant="false">
            <condition>
              document.isTrashed()
            </condition>
          </rule>
        </filter>
    
        <filter id="updatable_main_blob">
          <rule grant="true">
            <condition>#{documentActions.canUpdateMainBlob}</condition>
          </rule>
        </filter>
    
        <filter id="delete_content">
          <rule grant="true">
            <permission>RemoveChildren</permission>
            <facet>Folderish</facet>
          </rule>
        </filter>
    
        <filter id="rights">
          <rule grant="true">
            <permission>WriteSecurity</permission>
            <facet>Folderish</facet>
          </rule>
        </filter>
    
        <filter id="currentWorkListIsNotEmpty">
          <rule grant="false">
            <condition>#{clipboardActions.workListEmpty}</condition>
          </rule>
        </filter>
    
        <filter id="canPasteCurrentWorkList">
          <rule grant="true">
            <condition>#{clipboardActions.canPasteWorkList}</condition>
          </rule>
        </filter>
    
        <filter id="canMoveWorkingList">
          <rule grant="true">
            <condition>#{clipboardActions.canMoveWorkingList}</condition>
          </rule>
        </filter>
    
        <filter id="canCopyFromCurrentSelection">
          <rule grant="true">
            <condition>#{clipboardActions.canCopy}</condition>
          </rule>
        </filter>
    
        <filter id="canEditCurrentSelection">
          <rule grant="true">
            <condition>#{bulkEditActions.canEdit}</condition>
          </rule>
        </filter>
    
        <filter id="can_lock">
          <rule grant="true">
            <permission>Write</permission>
            <condition>#{lockActions.canLockCurrentDoc}</condition>
          </rule>
          <rule grant="false">
            <facet>Folderish</facet>
          </rule>
        </filter>
    
        <filter id="can_unlock">
          <rule grant="true">
            <condition>#{lockActions.canUnlockCurrentDoc}</condition>
          </rule>
          <rule grant="false">
            <facet>Folderish</facet>
          </rule>
        </filter>
    
        <filter id="only_for_manager">
          <rule grant="true">
            <condition>#{userSession.administrator}</condition>
          </rule>
        </filter>
    
        <filter id="hasAttachedFiles">
          <rule grant="true">
            <schema>files</schema>
          </rule>
        </filter>
    
        <filter id="type_section">
          <rule grant="false">
            <type>Section</type>
          </rule>
        </filter>
    
        <filter id="denyFilesTab">
          <rule grant="false">
            <type>WebSite</type>
            <type>WebPage</type>
            <type>BlogSite</type>
            <type>BlogPost</type>
          </rule>
        </filter>
    
        <filter id="inSection">
          <rule grant="true">
            <type>Section</type>
            <type>SectionRoot</type>
          </rule>
        </filter>
    
        <filter id="outSection">
          <rule grant="false">
            <type>Section</type>
            <type>SectionRoot</type>
          </rule>
        </filter>
    
        <filter id="not_readonly">
          <rule grant="true">
            <condition>#{notReadOnly}</condition>
          </rule>
        </filter>
    
        <filter id="orderable">
          <rule grant="true">
            <facet>Orderable</facet>
          </rule>
        </filter>
    
        <filter id="not_orderable">
          <rule grant="false">
            <facet>Orderable</facet>
          </rule>
        </filter>
    
        <filter id="canMoveToTop">
          <rule grant="true">
            <condition>#{orderableDocumentActions.canMoveToTop}</condition>
            <facet>Orderable</facet>
          </rule>
        </filter>
    
        <filter id="canMoveUp">
          <rule grant="true">
            <condition>#{orderableDocumentActions.canMoveUp}</condition>
            <facet>Orderable</facet>
          </rule>
        </filter>
    
        <filter id="canMoveDown">
          <rule grant="true">
            <condition>#{orderableDocumentActions.canMoveDown}</condition>
            <facet>Orderable</facet>
          </rule>
        </filter>
    
        <filter id="canMoveToBottom">
          <rule grant="true">
            <condition>#{orderableDocumentActions.canMoveToBottom}</condition>
            <facet>Orderable</facet>
          </rule>
        </filter>
    
        <filter id="has_local_configuration_available">
          <rule grant="false">
            <condition>
              #{webActions.getActionsList('LOCAL_CONFIGURATION').isEmpty()}
            </condition>
          </rule>
          <rule grant="true">
            <permission>Manage everything</permission>
            <facet>SuperSpace</facet>
          </rule>
        </filter>
    
        <filter id="is_creating_workspace">
          <rule grant="true">
            <condition>#{changeableDocument.type == 'Workspace'}</condition>
          </rule>
        </filter>
    
        <filter id="is_not_creating_workspace">
          <rule grant="false">
            <condition>#{changeableDocument.type == 'Workspace'}</condition>
          </rule>
        </filter>
    
        <!-- LiveEdit filter -->
        <filter id="is_le_create_msword">
          <rule grant="true">
            <condition>#{msword_liveeditable}</condition>
          </rule>
        </filter>
    
        <filter id="is_le_create_msexcel">
          <rule grant="true">
            <condition>#{msexcel_liveeditable}</condition>
          </rule>
        </filter>
    
        <filter id="is_le_create_mspowerpoint">
          <rule grant="true">
            <condition>#{mspowerpoint_liveeditable}</condition>
          </rule>
        </filter>
    
        <filter id="is_le_create_odwriter">
          <rule grant="true">
            <condition>#{ootext_liveeditable}</condition>
          </rule>
        </filter>
    
        <filter id="is_le_create_odcalc">
          <rule grant="true">
            <condition>#{oocalc_liveeditable}</condition>
          </rule>
        </filter>
    
        <filter id="is_le_create_odimpress">
          <rule grant="true">
            <condition>#{oopresentation_liveeditable}</condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-comment-web-10.10.jar /OSGI-INF/comment-actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
        <filter id="comment">
          <rule grant="true">
            <type>Comment</type>
          </rule>
        </filter>
    
        <filter id="commentable">
          <rule grant="true">
            <facet>Commentable</facet>
          </rule>
        </filter>
    
        <filter id="canAddComment">
          <rule grant="true">
            <permission>AddChildren</permission>
          </rule>
        </filter>
      </extension>
  • nuxeo-platform-webapp-base-10.10.jar /OSGI-INF/favorites-actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="canAddToFavorites">
          <rule grant="true">
            <condition>
              #{favoritesActions.canCurrentDocumentBeAddedToFavorites()}
            </condition>
          </rule>
        </filter>
    
        <filter id="canRemoveFromFavorites">
          <rule grant="true">
            <condition>
              #{favoritesActions.canCurrentDocumentBeRemovedFromFavorites()}
            </condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-routing-web-10.10.jar /OSGI-INF/document-routing-actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter append="true" id="create">
          <rule grant="true">
            <permission>AddChildren</permission>
            <type>DocumentRoute</type>
            <type>StepFolder</type>
          </rule>
        </filter>
    
        <filter id="isRoutable">
          <rule grant="true">
            <condition>#{routingActions.isRoutable()}</condition>
          </rule>
        </filter>
    
        <filter id="isRoute">
          <rule grant="true">
            <type>DocumentRoute</type>
          </rule>
        </filter>
    
        <filter id="isNotRoute">
          <rule grant="false">
            <type>DocumentRoute</type>
          </rule>
        </filter>
    
        <filter id="isDraftRouteModel">
          <rule grant="true">
            <condition>
              document.getCurrentLifeCycleState().equals("draft")
            </condition>
            <type>DocumentRoute</type>
          </rule>
        </filter>
    
        <filter id="isEditableRoute">
          <rule grant="true">
            <condition>#{userSession.administrator}</condition>
          </rule>
          <rule grant="true">
            <group>routeManagers</group>
          </rule>
          <rule grant="true">
            <permission>Manage everything</permission>
          </rule>
        </filter>
    
    
        <filter id="isValidatedRouteModel">
          <rule grant="true">
            <condition>
              document.getCurrentLifeCycleState().equals("validated")
            </condition>
            <type>DocumentRoute</type>
          </rule>
        </filter>
    
        <filter id="noRelatedRouteStarted">
          <rule grant="false">
            <condition>#{routingActions.hasRelatedRoute()}</condition>
          </rule>
        </filter>
    
        <filter id="hasRelatedRouteStarted">
          <rule grant="true">
            <condition>#{routingActions.hasRelatedRoute()}</condition>
          </rule>
        </filter>
    
        <filter id="isNotRunning">
          <rule grant="false">
            <condition>
              document.getCurrentLifeCycleState().equals("running")
            </condition>
          </rule>
        </filter>
    
        <filter id="isNotImutableConditionalStructure">
          <rule grant="false">
            <condition>
              #{documentManager.getParentDocument(document.getRef()).hasFacet("ConditionalStepFolder")}
            </condition>
          </rule>
        </filter>
    
        <filter id="isNotDraftRouteModel">
          <rule grant="false">
            <condition>
              !(document.getCurrentLifeCycleState().equals("draft"))
            </condition>
            <type>DocumentRoute</type>
            <type>StepFolder</type>
          </rule>
        </filter>
    
        <filter id="currentUserIsWorkflowInitatior">
          <rule grant="true">
            <condition>currentUser.administrator</condition>
            <condition>
              #{routingActions.getCurrentWorkflowInitiator().equals(currentUser.getName())}
            </condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-diff-jsf-10.10.jar /OSGI-INF/diff-actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="canDiffCurrentDocumentSelection">
          <rule grant="true">
            <condition>#{diffActions.canDiffCurrentDocumentSelection}
            </condition>
          </rule>
        </filter>
    
        <filter id="canDiffCurrentTrashSelection">
          <rule grant="true">
            <condition>#{diffActions.canDiffCurrentTrashSelection}
            </condition>
          </rule>
        </filter>
    
        <filter id="canDiffCurrentSectionSelection">
          <rule grant="true">
            <condition>#{diffActions.canDiffCurrentSectionSelection}
            </condition>
          </rule>
        </filter>
    
        <filter id="canDiffCurrentVersionSelection">
          <rule grant="true">
            <condition>#{diffActions.canDiffCurrentVersionSelection}
            </condition>
          </rule>
        </filter>
    
        <filter id="canDiffCurrentDefaultSelection">
          <rule grant="true">
            <condition>#{diffActions.canDiffCurrentDefaultSelection}
            </condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-notification-web-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="general_documents">
          <rule grant="false">
            <type>Root</type>
            <type>Domain</type>
            <type>WorkspaceRoot</type>
            <type>SectionRoot</type>
          </rule>
        </filter>
    
        <filter id="manage_subscriptions">
          <rule grant="true">
            <permission>WriteSecurity</permission>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-easyshare-core-10.10.jar /OSGI-INF/extensions.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
        <filter append="true" id="create">
          <rule grant="true">
            <permission>AddChildren</permission>
            <type>EasyShareFolder</type>
            <condition>!document.isImmutable()</condition>
            <condition>#{typeManager.getAllowedSubTypes(document.getType(), document).size() &gt; 0}</condition>
          </rule>
        </filter>
        <filter id="denyForEasyShareFolder">
          <rule grant="false">
            <type>EasyShareFolder</type>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-webapp-base-10.10.jar /OSGI-INF/collection-layout-summary-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="hasCollection">
          <rule grant="true">
            <condition>
              #{collectionActions.hasCurrentDocumentVisibleCollection()}
            </condition>
          </rule>
        </filter>
      </extension>
  • nuxeo-platform-3d-core-10.10.jar /OSGI-INF/threed-renditions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="hasThreeDFacet">
          <rule grant="true">
            <facet>ThreeD</facet>
          </rule>
        </filter>
    
    
        <filter append="true" id="allowPDFRendition">
          <rule grant="false">
            <facet>ThreeD</facet>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-directory-web-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <!--  This filter is designed to be evaluated via
              #{directoryUIActions.checkContextualDirectoryFilter('readOnlyDirectory')}
              the filter context contains the name of the current directory being displayed
    
              You can override this filter to implement a custom logic
         -->
        <filter id="readOnlyDirectory">
          <rule grant="true">
            <condition>#{directoryUIActions.isReadOnly(directoryName)}</condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-video-core-10.10.jar /OSGI-INF/video-renditions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="hasVideo">
          <rule grant="true">
            <facet>Video</facet>
          </rule>
        </filter>
    
        <filter append="true" id="allowPDFRendition">
          <rule grant="false">
            <facet>Video</facet>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-rendition-core-10.10.jar /OSGI-INF/rendition-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="allowPDFRendition"/>
    
      </extension>
  • nuxeo-platform-audio-core-10.10.jar /OSGI-INF/filters-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
        <filter append="true" id="allowPDFRendition">
          <rule grant="false">
            <facet>Audio</facet>
          </rule>
        </filter>
      </extension>
  • nuxeo-preview-core-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="view_preview">
          <rule grant="true">
            <condition>#{previewActions.hasPreview}</condition>
          </rule>
        </filter>
    
        <filter id="notHasPreview">
          <rule grant="true">
            <condition>#{not previewActions.hasPreview}</condition>
          </rule>
        </filter>
    
        <filter id="popup_view_preview">
          <rule grant="true">
            <condition>#{previewActions.documentHasPreview(document)}</condition>
          </rule>
        </filter>
    
        <filter id="hasBlobPreview">
          <rule grant="true">
            <condition>#{previewActions.hasBlobPreview(document, blobXPath)}</condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-imaging-core-10.10.jar /OSGI-INF/picture-renditions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="hasPictureFacet">
          <rule grant="true">
            <facet>Picture</facet>
          </rule>
        </filter>
    
        <filter append="true" id="allowPDFRendition">
          <rule grant="false">
            <facet>Picture</facet>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-ui-select2-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="canAddEntryFromSuggestDirectoryWidget">
          <documentation>
            <p>
              Filter used by the "suggestOneDirectory" and "suggestManyDirectory"
              widget types to check wether the "Add new entry" button should be
              displayed.
            </p>
            <p>
              This filter is a combination of default filters controlling access to
              the "Vocabularies" tab in Admin Center and read-only configuration set
              on the directory.
            </p>
            <p>
              This filter is evaluated in a context where the variable
              'directoryName' is set to the currently selected directory name.
            </p>
            @since 5.9.1
          </documentation>
          <rule grant="true">
            <condition>currentUser.administrator</condition>
            <condition>currentUser.isMemberOf('powerusers')</condition>
          </rule>
          <rule grant="false">
            <condition>#{directoryUIActions.isReadOnly(directoryName)}</condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-userworkspace-web-10.10.jar /OSGI-INF/userworkspace-actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="isInsidePersonalWorkspace">
          <rule grant="true">
            <condition>#{isInsidePersonalWorkspace}</condition>
          </rule>
        </filter>
    
        <filter id="canAccessPersonalWorkspace">
          <rule grant="false">
            <condition>#{isInsidePersonalWorkspace}</condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-search-ui-10.10.jar /OSGI-INF/search-actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter append="true" id="rights">
          <rule grant="true">
            <facet>SavedSearch</facet>
          </rule>
        </filter>
    
        <filter id="denyForDefaultSearch">
          <rule grant="false">
            <facet>DefaultSearch</facet>
          </rule>
        </filter>
    
        <filter id="isSearchEnabled">
          <rule grant="true">
            <condition>#{userServicesContext.searchEnabled}</condition>
          </rule>
        </filter>
    
        <filter id="nxqlSearchSelected">
          <rule grant="true">
            <condition>#{searchUIActions.isNxqlSearchSelected()}</condition>
          </rule>
        </filter>
    
        <filter id="notNxqlSearchSelected">
          <rule grant="false">
            <condition>#{searchUIActions.isNxqlSearchSelected()}</condition>
          </rule>
        </filter>
    
        <filter id="canSaveSearch">
          <rule grant="true">
            <condition>#{searchUIActions.getCanSaveSearch()}</condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-audit-client-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="view_content_history">
          <rule grant="false">
            <type>WorkspaceRoot</type>
            <type>SectionRoot</type>
            <type>Server</type>
          </rule>
          <rule grant="false">
            <facet>Immutable</facet>
          </rule>
        </filter>
    
        <filter id="view_proxy_history">
          <rule grant="true">
            <condition>document != null &amp;&amp; document.isProxy()</condition>
          </rule>
        </filter>
    
        <filter id="TAB_CONTENT_HISTORY_has_subtabs">
          <rule grant="false">
            <condition>
              #{webActions.getActionsList('TAB_CONTENT_HISTORY_sub_tab').isEmpty()}
            </condition>
          </rule>
        </filter>
    
        <filter id="versionable">
          <rule grant="true">
            <facet>Versionable</facet>
          </rule>
          <rule grant="false">
            <facet>Immutable</facet>
          </rule>
        </filter>
    
        <filter id="canDeleteCurrentVersionSelection">
          <rule grant="true">
            <condition>#{versionedActions.canRemoveSelectedArchivedVersions}
            </condition>
          </rule>
        </filter>
    
        <filter id="canRestoreVersion">
          <rule grant="true">
            <condition>#{versionedActions.canRestore}
            </condition>
          </rule>
        </filter>
    
        <filter id="canRestoreMainBlob">
          <rule grant="false">
            <type>File</type>
            <condition>#{blobHolderGenerator.getBlobHolder(document).blob.length lt 0}</condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-imaging-api-10.10.jar /OSGI-INF/picture-metadata-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
        <filter id="hasPictureType">
          <rule grant="true">
            <type>Picture</type>
          </rule>
        </filter>
      </extension>
  • nuxeo-platform-webapp-base-10.10.jar /OSGI-INF/collection-actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter append="true" id="create">
          <rule grant="true">
            <permission>AddChildren</permission>
            <type>Collections</type>
          </rule>
        </filter>
    
        <filter id="canAddToCollection">
          <rule grant="true">
            <condition>
              #{collectionActions.canCurrentDocumentBeCollected()}
            </condition>
          </rule>
        </filter>
    
        <filter id="canSelectedToBeAddedToCollection">
          <rule grant="true">
            <condition>
              #{collectionActions.canAddToDocsToCurrentCollection()}
            </condition>
          </rule>
        </filter>
    
        <filter id="canAddSelectedToCollection">
          <rule grant="true">
            <condition>
              #{collectionActions.canAddSelectedDocumentBeCollected()}
            </condition>
          </rule>
        </filter>
    
        <filter id="canRemoveFromCollection">
          <rule grant="true">
            <condition>
              #{collectionActions.canRemoveFromCollection()}
            </condition>
          </rule>
        </filter>
    
        <filter append="true" id="rights">
          <rule grant="true">
            <facet>Collection</facet>
          </rule>
        </filter>
    
        <filter id="collectionContentFilter">
          <rule grant="true">
            <facet>Collection</facet>
          </rule>
        </filter>
    
        <filter append="true" id="can_zip_export">
          <rule grant="false">
            <type>Collections</type>
            <type>Collection</type>
          </rule>
        </filter>
    
        <filter id="denyForCollection">
          <rule grant="false">
            <type>Collection</type>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-rendition-web-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="hasVisibleRenditions">
          <rule grant="true">
            <condition>#{renditionAction.hasVisibleRenditions('nuxeo:video:conversion,nuxeo:picture:conversion')}</condition>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-audio-jsf-10.10.jar /OSGI-INF/layouts-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="hasAudio">
          <rule grant="true">
            <facet>Audio</facet>
          </rule>
        </filter>
    
        <filter id="notHasAudio">
          <rule grant="false">
            <facet>Audio</facet>
          </rule>
        </filter>
    
        <filter append="true" id="denyInfoViewPreview">
          <rule grant="false">
            <facet>Audio</facet>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-video-jsf-10.10.jar /OSGI-INF/layouts-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="notHasVideo">
          <rule grant="false">
            <facet>Video</facet>
          </rule>
        </filter>
    
        <filter append="true" id="denyInfoViewPreview">
          <rule grant="false">
            <facet>Video</facet>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-platform-mail-jsf-10.10.jar /OSGI-INF/nxmail-actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="not_mail_message_document">
          <rule grant="false">
            <type>MailMessage</type>
          </rule>
        </filter>
        
        <filter id="not_mail_folder_document">
          <rule grant="false">
            <type>MailFolder</type>
          </rule>
        </filter>
    
      </extension>
  • nuxeo-admin-center-jsf-10.10.jar /OSGI-INF/actions-contrib.xml
    <extension point="filters" target="org.nuxeo.ecm.platform.actions.ActionService">
    
        <filter id="adminCenterAccess">
          <rule grant="true">
            <condition>#{currentUser.administrator}</condition>
            <condition>#{currentUser.isMemberOf('powerusers')}</condition>
          </rule>
        </filter>
    
        <filter id="usersGroupsManagementAccess">
          <rule grant="true">
            <condition>#{currentUser.administrator}</condition>
            <condition>#{currentUser.isMemberOf('powerusers')}</condition>
          </rule>
        </filter>
    
        <filter id="seamHotReloadIsEnabled">
          <rule grant="true">
            <condition>#{seamHotReloadIsEnabled}</condition>
          </rule>
        </filter>
    
        <filter id="user_manager">
          <rule grant="true">
            <condition>#{userServicesContext.userManagerEnabled}</condition>
          </rule>
        </filter>
    
        <filter id="isRegisteredOnConnect">
          <rule grant="true">
            <condition>#{connectUpdateStatusInfo.registered}</condition>
          </rule>
        </filter>
    
        <filter id="isNotRegisteredOnConnect">
          <rule grant="false">
            <condition>#{connectUpdateStatusInfo.registered}</condition>
          </rule>
        </filter>
    
        <filter id="hasConnectUpdates">
          <rule grant="true">
            <condition>#{connectUpdateStatusInfo.availableUpdateCount &gt; 0}</condition>
          </rule>
        </filter>
    
      </extension>