2017/07/12
Alfresco Shareでのメニューの表示、非表示青地 芳彦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:普通の状態
図2:アスペクト(mn:internalUseOnly)をつけた状態
しかし、これではサイト管理者もこれらが見れなくなってしまいます。アスペクトが設定してあっても、権限のある人はメニューが表示されるようにするには、カスタムのevaluatorを用意しなければならないかもしれませんが、設定だけでできる方法があります。この続きは、次号にて。。。
ご質問、ご相談のある方は、お気軽にお問い合わせください。
アトラシアン社ではサポート範囲外となっているサードパーティ製のアドオンをリックソフトのRS標準サポートではサポートします。
リックソフトのRS標準サポートは開発元が提供するサポート以上の価値があります。
ツールを導入しただけでは成功とはいえません。利用者が効果を感じていただくことが大切です。独自で制作した各種ガイドブックはツール活用を促進します。
リックソフトからライセンス購入を頂いたお客様にはガイドブックを無料進呈いたします。
ツール操作の研修だけでなく「ウォータフォール型開発」「アジャイル型開発」のシミュレーション研修も提供。
日本随一の生産性向上にも効果のある研修サービスです。
リックソフトからライセンス購入を頂いたお客様には無料招待や割引特典がございます。