cancel
Showing results for 
Search instead for 
Did you mean: 

Hide the "Comments" and "Activity" section from the Document View

Anton_Petrov
Confirmed Champ
Confirmed Champ

I need to hide the "Comments" and "Activity" section in the Document View and also disable all the corresponding actions for the Anonymous user - not to view nor write comments on any documents in any domain. I can not find a way to manage this in the nuxeo-web-ui-bundle.html through the slots. I'm not using Studio. Any ideas would be highly appreciated, thanks in advance!

Comments section

7 REPLIES 7

Gregory_Carlin
Elite Collaborator
Elite Collaborator

Hello,

You have to override the default nuxeo-document-page.html So, basically:

  • Create in your Designer resources a copy of this element, rename it, and comment the part you need to remove
  • Reference your new element in your custom bundle
  • Add a slot contibution in the same file like:
<nuxeo-slot-content name="documentViewPage" slot="DOCUMENT_VIEWS_PAGES" order="10">
  <template>
    <nuxeo-filter document="[[document]]" expression="document.facets.indexOf('Folderish') === -1
                                                   && document.facets.indexOf('Collection') === -1">
      <template>
        <nuxeo-document-page-v2 name="view" document="[[document]]" opened></nuxeo-partners-document-page-v2>
      </template>
    </nuxeo-filter>
  </template>
</nuxeo-slot-content>
  • Et voilà!

Thanks, Gregory, but I'm not using Studio and Designer. And I can't find "nuxeo-document-page.html" on my server too...

Hello [Anton Petrov](https

Anton_Petrov
Confirmed Champ
Confirmed Champ

Hi, Rodri ! I managed to enable Anonymous user with the following contribution:

<?xml version="1.0"?>
<component name="org.nuxeo.ecm.platform.login.anonymous.config">

  <require>org.nuxeo.ecm.platform.ui.web.auth.defaultConfig</require>
  <require>org.nuxeo.ecm.platform.ui.web.auth.WebEngineConfig</require>
  <require>org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService</require>
	
  <!-- Add an Anonymous user -->
  <extension target="org.nuxeo.ecm.platform.usermanager.UserService"
    point="userManager">
    <userManager>
      <users>
        <anonymousUser id="Guest">
          <property name="firstName">Guest</property>
          <property name="lastName">User</property>
        </anonymousUser>
      </users>
    </userManager>
  </extension>

  <extension
    target="org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService"
    point="chain">
    <authenticationChain>
      <plugins>
        <plugin>BASIC_AUTH</plugin>
	<plugin>FORM_AUTH</plugin>
	<plugin>ANONYMOUS_AUTH</plugin>
      </plugins>
    </authenticationChain>
  </extension>	
</component>

Don't forget to add your contribution in the MANIFEST.MF of your bundle, something like:

Bundle-ActivationPolicy: lazy
------
------
Nuxeo-Component: OSGI-INF/anonymous-auth-config.xml

I also had the same problem as you and asked in stackoverflow without adequate answer: https://stackoverflow.com/questions/57058139/nuxeo-after-activating-the-anonymous-user-cant-log-in

The problem persists on my test Windows 10 installation, but on the ubuntu server installation the same contribution works ok without any issues. The odd thing I discovered by chance is that opening an **incognito window ** on my local Windows installation works fine, giving me the ability to log as Administrator and as the Guest!

Hi, [Rodri ](https

Rodri_
Star Contributor
Star Contributor

Hello,

thank you Anton Petrov for the information to use the anonymous authentication. In my case, even in "incognito" window in Chrome, it didn't work. I needed to clear my cookies everytime I wanted to login as Administrator. I think there is a bug for windows in this authentication method.

Anyway, I have been trying to hide the Comments and Activity sections from the document view without success, and I don't know if it is possible. As Gregory Carlin said, I have created my own "nuxeo-document-page" contribution like follows:

  1. First, I have created my own dom-module, copy of the "nuxeo-document-page" module (this module is defined inside the "elements.html" file, in ${NUXEO_HOME}/nxserver/nuxeo.war/ui). I named the module "nuxeo-document-page-v2", and the file was "nuxeo-document-page-v2.html":
<dom-module id="nuxeo-document-page-v2" assetpath="document/">
  <template>
    <style include="nuxeo-styles">
      #details {
        width: 28px;
        height: 28px;
        padding: 5px;
        opacity: 0.3;
        margin: 6px 0;
      }

      :host([opened]) #details {
        opacity: 1;
        margin-left: 6px;
      }

      #documentViewsItems {
        @apply --layout-horizontal;
        --paper-listbox-background-color: transparent;
      }

      #documentViewsItems > [name='comments'] {
        margin: 0;
      }

      .scrollerHeader {
        @apply --layout-horizontal;
      }

      :host([opened]) .scrollerHeader {
        box-shadow: 0 3px 5px rgba(0,0,0,0.04) !important;
        border-radius: 0;
        background-color: var(--nuxeo-box) !important;
      }

      .page {
        @apply --layout-horizontal;
      }

      .main {
        @apply --layout-vertical;
        @apply --layout-flex-2;
        padding-right: 8px;
        overflow: hidden;
      }

      :host([opened]) .main {
        padding-right: 16px;
      }

      .side {
        @apply --layout-vertical;
        position: relative;
        margin-bottom: var(--nuxeo-card-margin-bottom, 16px);
        min-height: 60vh;
      }

      :host([opened]) .side {
        @apply --layout-flex;
      }

      .scroller {
        @apply --nuxeo-card;
        margin-bottom: 0;
        overflow: auto;
        display: none;
        left: 0;
        top: 36px;
        right: 0;
        bottom: 0;
        position: absolute;
      }

      :host([opened]) .scroller {
        display: block;
      }

      .section {
        margin-bottom: 32px;
      }

      .section:last-of-type {
        margin-bottom: 64px;
      }

      nuxeo-document-view {
        --nuxeo-document-content-margin-bottom: var(--nuxeo-card-margin-bottom);
      }

      @media (max-width: 1024px) {
        #details {
          opacity: 1;
          margin-left: 6px;
          cursor: default;
        }

        .scrollerHeader {
          box-shadow: 0 3px 5px rgba(0,0,0,0.04) !important;
          font-family: var(--nuxeo-app-font);
          border-radius: 0;
          background-color: var(--nuxeo-box) !important;
        }

        .page {
          @apply --layout-vertical;
        }

        .main,
        :host([opened]) .main {
          padding: 0;
          max-width: initial;
          margin-right: 0;
        }

        .side {
          padding: 0;
          max-width: initial;
          min-height: initial;
          display: block;
          margin-bottom: 16px;
        }

        .scroller {
          top: 0;
          position: relative;
          display: block;
        }
      }
    </style>

    <nuxeo-document-info-bar document="[[document]]"></nuxeo-document-info-bar>

    <div class="page">

      <div class="main">
        <nuxeo-document-view document="[[document]]"></nuxeo-document-view>
      </div>

      <div class="side">
        <div class="scrollerHeader">
          <paper-icon-button id="details" noink="" icon="nuxeo:details" on-tap="_toggleOpened"></paper-icon-button>
          <nuxeo-tooltip for="details">[[i18n('documentPage.details.opened')]]</nuxeo-tooltip>
        </div>
        <div class="scroller">
          <div class="section">
            <nuxeo-document-info document="[[document]]"></nuxeo-document-info>
          </div>

          <div class="section">
            <nuxeo-document-metadata document="[[document]]"></nuxeo-document-metadata>
          </div>

          <div class="section" hidden$="[[!_hasCollections(document)]]">
            <h3>[[i18n('documentPage.collections')]]</h3>
            <nuxeo-document-collections document="[[document]]"></nuxeo-document-collections>
          </div>

          <template is="dom-if" if="[[hasFacet(document, 'NXTag')]]">
            <div class="section">
              <h3>[[i18n('documentPage.tags')]]</h3>
              <nuxeo-tag-suggestion document="[[document]]" allow-new-tags="" placeholder="[[i18n('documentPage.tags.placeholder')]]" readonly="[[!isTaggable(document)]]">
              </nuxeo-tag-suggestion>
            </div>
          </template>
          <div class="section">
            <paper-listbox id="documentViewsItems" selected="{{selectedTab}}" attr-for-selected="name">
              <nuxeo-page-item name="comments" label="[[i18n('documentPage.comments')]]"></nuxeo-page-item>
              <nuxeo-page-item name="activity" label="[[i18n('documentPage.activity')]]"></nuxeo-page-item>
            </paper-listbox>
            <iron-pages selected="[[selectedTab]]" attr-for-selected="name" selected-item="{{page}}">
              <nuxeo-document-comment-thread name="comments" uid="[[document.uid]]"></nuxeo-document-comment-thread>
              <nuxeo-document-activity name="activity" document="[[document]]"></nuxeo-document-activity>
            </iron-pages>
          </div>
        </div>
      </div>
    </div>

  </template>
  <script>
    Polymer({
      is: 'nuxeo-document-page-v2',
      behaviors: [Nuxeo.LayoutBehavior],
      properties: {
        document: {
          type: Object
        },
        selectedTab: {
          type: String,
          value: 'comments',
          notify: true
        },
        opened: {
          type: Boolean,
          value: false,
          notify: true,
          reflectToAttribute: true,
          observer: '_openedChanged',
        }
      },

      _openedChanged: function() {
        Polymer.Async.animationFrame.run(function() {
          // notify that there was a resize
          this.dispatchEvent(new CustomEvent('resize', {
            bubbles: false,
            composed: true,
          }));
        });
      },

      _toggleOpened: function() {
        this.opened = !this.opened;
      },

      _isMutable: function(doc) {
        return !this.hasFacet(doc, 'Immutable') && doc.type !== 'Root' && !this.isTrashed(doc);
      },

      _hasCollections: function(doc) {
        return this.hasCollections(doc);
      }
    });
  </script>

</dom-module>
  1. Then, I have added the contribution in another html file, defining the slot contribution (I named this file "nuxeo-custom-none-bundle.html"):
<link rel="import" href="nuxeo-document-page-v2.html">

<nuxeo-slot-content name="documentViewPage" slot="DOCUMENT_VIEWS_PAGES" order="10">
  <template>
    <nuxeo-filter document="[[document]]" expression="document.facets.indexOf('Folderish') === -1
                                                   && document.facets.indexOf('Collection') === -1">
      <template>
        <nuxeo-document-page-v2 name="view" document="[[document]]" opened=""></nuxeo-document-page-v2>
      </template>
    </nuxeo-filter>
  </template>
</nuxeo-slot-content>

Both files are located in the same directory in my project, in web/nuxeo.war/ui.

  1. Finally, I added the extensions:
<extension target="org.nuxeo.ecm.platform.WebResources" point="resources">
	<resource name="nuxeo-custom-none-bundle.html" type="import" shrinkable="false">
		<uri>/ui/nuxeo-custom-none-bundle.html</uri>
	</resource>
</extension>
<extension target="org.nuxeo.ecm.platform.WebResources" point="bundles">
	<bundle name="web-ui">
		<resources append="true">
			<resource>nuxeo-custom-none-bundle.html</resource>
		</resources>
	</bundle>
</extension>

The contribution seems to be working properly, as when I access to a document, I can see that the module loaded is the "nuxeo-document-page-v2" as expected:

type an image title

However, without modifying anything in the copied dom-module, it doesn't work as expected, as for example the comments tab is empty when the document has comments. This only happens if I am logged as Anonymous user (yes, I know that this is what we want to achieve, but this happens because of an error, not because of a filter for anonymous users).

type an image title

Anyway, what I have tried to do is to use a nuxeo-filter to remove the full "Comments & Activity" section according to user.isAnonymous property, but then I found another problem: we don't have the "user" object in that module!

I tried to modify the slot contriution as follows in order to get the "user" object in the module:

<nuxeo-document-page-v2 name="view" document="[[document]]" user="[[user]]" opened=""></nuxeo-document-page-v2>

And I also added it in "properties", inside the Polymer object in the nuxeo-document-page-v2.html file, after the "document" property:

user: {
   type: Object
},

However, the behaviour is really strange, as when I try to use the "user" object, sometimes it is the user, sometimes it is the document, and sometimes it is undefined. So I don't understand what's happening here.

Sorry for not being able to be more helpful. I will keep trying to make it work.

Regards.

HI, [Rodri ](https

Getting started

Attention: Blogs & Forums are in READ-ONLY mode from Oct 9-19 as we transition to our new platform. Learn more.

Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.