日本でのアトラシアン(Atlassian)製品導入No.1

  1. HOME

リックソフトブログ

2017/07/12

Alfresco Shareでのメニューの表示、非表示

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Author

青地 芳彦Yoshihiko Aochi

青地 芳彦

こんにちは。リックソフトの青地です。なんとなく梅雨の時期に入ってきましたが、最近私を憂鬱にさせるものは老眼になったと感じることです。今までは、遠くのものがはっきり見えないことが気持ち悪くて眼鏡をかけていて、眼鏡の厚みもだんだんと厚みを増していたのに、今度は眼鏡をとらないと携帯や新聞の小さな文字が見づらくなるなんて、昨年はあまり感じなかったことです。

長い時間、パソコンのディスプレイを同じぐらいの距離で見ていると、目の動く範囲も少なくなるので、疲れてしまっているためかもしれません。たまには外に飛び出して、緑の景色が多い場所で仕事をしたいと思う今日この頃です。

さて、今回はよくある問い合わせの中から、Alfresco Shareのカスタマイズについて取り上げてみたいと思います。

Alfresco Shareで条件によってメニューを表示(あるいは非表示)にしたい場合があります。例えばアクセスするユーザのロールよって、ダウンロードやブラウザで表示というようなメニューを消したい時などです。こういう場合には、share-config-custom.xmlを変更することで、簡単に実現することができます。Alfresco Shareのドキュメントライブラリ内では、Evaluatorによって決められた条件を判定し、メニューの表示などをコントロールしています。利用できるEvaluatorはこちらからご覧下さい。

これらのEvaluatorがどのように実際のShareで利用されているかを知るには、tomcat/webapps/share/WEB-INF/classes/alfresco/share-*-config.xmlを見るとヒントが得られるでしょう。

アスペクトを持っているコンテンツに対してメニューを表示(あるいは非表示)にする

アスペクトを持っているコンテンツかどうかを判定するにするには、org.alfresco.web.evaluator.HasAspectEvaluatorを使います。{extensionRoot}/alfresco/web-extension/custom-slingshot-appication-context.xmlに、該当するアスペクトを設定したbeanを定義します。ここでは、mn:internalUseOnlyというアスペクトを判定するようにしています。(extensionRoot: tomcat/shared/classes)

<beans>
   <bean id="evaluator.doclib.action.hasInternalUseOnlyAspect" class="org.alfresco.web.evaluator.HasAspectEvaluator">
      <property name="aspects">
         <list>
           <value>mn:internalUseOnly</value>
         </list>
      </property>
   </bean>
</beans>

次に、${extensionRoot}/alfresco/web-extension/share-config-custom.xmlで、該当するメニューのactionに対して、上記で設定したevaluatorのbeanを設定します。ここでは、上記のアスペクトを持っていた場合に、ドキュメントの”ダウンロード”と”ブラウザで表示”メニューを表示しないようにしています(negate=”true”)

<config evaluator="string-compare" condition="DocLibActions">
   <!–- Action definitions –>
   <actions>
      <!–- Download document –>
      <action id="document-download" type="link" label="actions.document.download">
         <param name="href">{downloadUrl}</param>
         <param name="target">_blank</param>
         <evaluator negate="true">evaluator.doclib.action.hasInternalUseOnlyAspect</evaluator>
      </action>
      <!–- View document in browser –>
      <action id="document-view-content" type="link" label="actions.document.view">
         <param name="href">{viewUrl}</param>
         <evaluator negate="true">evaluator.doclib.action.hasInternalUseOnlyAspect</evaluator>
      </action>
   </actions>
</config>

Alfresco One 4.xであればここまででよかったのかもしれませんが、5.xになった時にダウンロードリンクのボタンが右上になり、これを隠すにはshare-config-custom.xmlではだめで、JavaScript (WebScript)を変更しなければならないようです。

tomcat/webapps/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/node-details/node-header.get.jsを、tomcat/shared/classes/alfresco/web-extension/site-webscripts/org/alfresco/components/node-detailsにコピーして、mn:internalUseOnly アスペクトでダウンロードを非表示できるようにします(下ではNodeの情報はnodeDetailsに入っています)。

...(途中から)...
   if (nodeDetails)
   {
      var supressSocial = AlfrescoUtil.isComponentSuppressed(nodeDetails.item.node, AlfrescoUtil.getSupressSocialfolderDetailsConfig());
      var folderIcon = null;
      if (nodeDetails.item.node.isContainer)
      {
         folderIcon = getFolderIcon(nodeDetails.item.node)
      }
 
      if(nodeDetails.item.node.aspects.indexOf("ac:jira-attachment") >= 0){
           AlfrescoUtil.param("showDownload", "false");
      }
....

図1:普通の状態

図1:普通の状態

図2:アスペクト(mn:internalUseOnly)をつけた状態

図2:アスペクト(mn:internalUseOnly)をつけた状態

しかし、これではサイト管理者もこれらが見れなくなってしまいます。アスペクトが設定してあっても、権限のある人はメニューが表示されるようにするには、カスタムのevaluatorを用意しなければならないかもしれませんが、設定だけでできる方法があります。この続きは、次号にて。。。

ご質問、ご相談のある方は、お気軽にお問い合わせください。

お問い合わせ

Alfrescoについて

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

カテゴリ一覧

最近の記事

年別アーカイブ