リポジトリにはさまざまなドキュメント リストがあります。つまり、データ ディクショナリ、ユーザー ホーム、ゲストハウスなどがあります。ビューを「詳細ビュー」に変更すると、お気に入り、コメント リンクなどが表示されます。それらを表示したくない場合は、どこを変更する必要がありますか。これらのリンクを表示しないためのコードにコメントする必要があるファイルを教えてください。前もって感謝します。
5 に答える
この質問に対する「モジュール式」の回答が必要でした。この回答は、この問題をどのように処理したかを示すことです。
コンテキスト: Alfresco 4.2.f、org.alfresco.maven.archetype:alfresco-amp-archetype:1.1.1
アーキタイプから Maven をプロジェクト、可能であればすべてを埋め込み JAR に入れました。
共有用のモジュール拡張を作成します (詳細については、このブログを参照してください)。ここに私の拡張ファイルがあります:
src/main/resources/alfresco/site-data/extensions/my-custom-extension.xml
<extension>
<modules>
<module>
<id>Main module of my custom extension</id>
<version>${project.version}</version>
<auto-deploy>true</auto-deploy>
<customizations>
<customization>
<!-- Order matters here! target before source, always! -->
<targetPackageRoot>org.alfresco</targetPackageRoot>
<sourcePackageRoot>my-custom.main</sourcePackageRoot>
</customization>
</customizations>
</module>
</modules>
</extension>
モジュール パッケージのdocumentlibrary
コンポーネントで、javascript を宣言するために次の FTL を作成します。
src/main/resources/alfresco/site-webscripts/my-custom/main/components/documentlibrary/documentlist-v2.get.html.ftl
<#-- Add a Javascript declaration -->
<@markup id="my-custom-js" target="js" action="after">
<@script type="text/javascript" group="documentlibrary"
src="${url.context}/res/my-custom/main/components/documentlibrary/documentlist.js"/>
</@>
リソース (META-INF) のdocumentlibrary
コンポーネントで、Javascript を作成します。
src/main/resources/META-INF/my-custom/main/components/documentlibrary/documentlist.js
YAHOO.lang.augmentObject(Alfresco.DocumentList.prototype, {
// Possible values: i18nLabel, lockBanner, syncFailed, syncTransientError
// date, size, name, version, description, tags, categories
myCustomDisabledRenderers: ["description", "version", "tags"],
// Possible values: favourites, likes, comments, quickShare
myCustomDisabledSocials: ["favourites", "comments", "likes", "quickShare"],
myCustomIsSocialDisabled: function(propertyName) {
return Alfresco.util.arrayContains(
this.myCustomDisabledSocials, propertyName);
},
myCustomIsRendererDisabled: function(propertyName) {
if (Alfresco.util.arrayContains(
this.myCustomDisabledRenderers, propertyName)) {
return true;
}
// Disable the social renderer when all the social features are
// disabled
if (propertyName === "social" && this.myCustomDisabledSocials.length == 4) {
return true;
}
return false;
},
/** Helper function to disable socials
* propertyName must be one of "favourites", "comments", "likes", "quickShare"
*/
myCustomDisableSocial: function(propertyName) {
if (!Alfresco.util.arrayContains(
this.myCustomDisabledSocials, propertyName)) {
this.myCustomDisabledSocials.push(propertyName);
}
},
// Custom registerRenderer for social features, originally defined in:
// webapps/share/components/documentlibrary/documentlist.js:2134
myCustomSocialRegisterRenderer: function(record) {
var jsNode = record.jsNode;
var html = "";
// Current usage of the separator variable allow to change the order
// of the different social features (the 'if' blocks below) without
// changing their content
var separator = "";
/* Favourite / Likes / Comments */
if (!this.myCustomIsSocialDisabled("favourites")) {
html += '<span class="item item-social' + separator + '">' +
Alfresco.DocumentList.generateFavourite(this, record) +
'</span>';
separator = " item-separator";
}
if (!this.myCustomIsSocialDisabled("likes")) {
html += '<span class="item item-social' + separator + '">' +
Alfresco.DocumentList.generateLikes(this, record) +
'</span>';
separator = " item-separator";
}
if (!this.myCustomIsSocialDisabled("comments") &&
jsNode.permissions.user.CreateChildren) {
html += '<span class="item item-social' + separator + '">' +
Alfresco.DocumentList.generateComments(this, record) +
'</span>';
separator = " item-separator";
}
if (!this.myCustomIsSocialDisabled("quickShare") && !record.node.isContainer &&
Alfresco.constants.QUICKSHARE_URL) {
html += '<span class="item' + separator + '">' +
Alfresco.DocumentList.generateQuickShare(this, record) +
'</span>';
separator = " item-separator";
}
return html;
},
// Overwrite registerRenderer which was originally defined in:
// webapps/share/components/documentlibrary/documentlist.js:1789
registerRenderer: function DL_registerRenderer(propertyName, renderer) {
if (Alfresco.util.isValueSet(propertyName) &&
Alfresco.util.isValueSet(renderer) &&
!this.myCustomIsRendererDisabled(propertyName)) {
if (propertyName === "social") {
this.renderers[propertyName] = this.myCustomSocialRegisterRenderer;
} else {
this.renderers[propertyName] = renderer;
}
return true;
}
return false;
}
}, true);
myCustomDisabledRenderers
次に、 および/またはを更新して、リンクを無効にすることができますmySocialDisabledRenderers
。
このようにして、たった 6 つの簡単な手順で、(たとえば) "ドキュメントへのコメント" や "ドキュメントへのいいね" 機能を個別に無効にするモジュールを作成することもできます!
例、ドキュメントのコメントのみを無効にするモジュールを 6 つのステップで作成する方法
documentlist.js
重要: まず、メイン モジュールの「コメント無効化」を削除します。myCustomDisabledSocials: ["favourites", "likes", "quickShare"],
同じ構造の新しいモジュール「my-custom.nocomment」を作成します。
<extension> <modules> <module> <id>Main module of my custom extension</id> [...] </module> <module> <id>No comment module of my custom extension</id> <version>${project.version}</version> <customizations> <customization> <targetPackageRoot>org.alfresco</targetPackageRoot> <sourcePackageRoot>my-custom.nocomment</sourcePackageRoot> </customization> </customizations> </module> </modules> </extension>
FTL を追加...
src/main/resources/alfresco/site-webscripts/my-custom/nocomment/components/documentlibrary/documentlist-v2.get.html.ftl
<#-- Add a Javascript declaration --> <@markup id="my-custom-js" target="js" action="after"> <@script type="text/javascript" group="documentlibrary" src="${url.context}/res/my-custom/nocomment/components/documentlibrary/documentlist.js"/> </@>
それからJavascript...
src/main/resources/META-INF/my-custom/nocomment/components/documentlibrary/documentlist.js
Alfresco.DocumentList.prototype.myCustomDisableSocial("comment");
すべてがスムーズになったと感じたら、拍手してください。
ノート:
- モジュールは
nocomment
モジュールに依存しmain
ます。 - モジュールをモジュールの後に
nocomment
ロードすることが重要です ( )。main
http://localhost:8080/share/page/modules/deploy
- モジュールを完成させる
nocomment
には、ドキュメントの詳細ページからコメントを無効にする必要もあります。以下を参照してください。
- モジュールは
ドキュメントの詳細ページからのコメントを無効にする
これが別の場所に文書化されていたとしても、私はこの数日間を検索するのに多くの時間を費やしたので、できるだけ包括的にする必要があると感じています.
src/main/resources/alfresco/site-data/extensions/my-custom-extension.xml
これをモジュール宣言に追加するmy-custom.nocomment
と、ドキュメントの詳細ページからコメント フォームとリストが削除されます。
[...]
<module>
<id>No comment module of my custom extension</id>
[...]
<components>
<component>
<region-id>comments</region-id>
<source-id>document-details</source-id>
<scope>template</scope>
<sub-components>
<sub-component id="default">
<evaluations>
<evaluation id="guaranteedToHide">
<render>false</render>
</evaluation>
</evaluations>
</sub-component>
</sub-components>
</component>
</components>
</module>
[...]
src/main/resources/alfresco/site-webscripts/my-custom/nocomment/components/node-details/node-header.get.js
これは、ドキュメントの詳細ページのヘッダーにあるボタンを無効にするためのものです。
// Disable comments
for (var i = 0; i < model.widgets.length; i++) {
if (model.widgets[i].id == "NodeHeader") {
model.widgets[i].options.showComments = false;
}
}
// And since it does not work, disable comments this way too
model.showComments = "false";
注:これらのスニペットはテストしていません。「匿名化」(基本的にモジュールの名前を変更) 後にプロジェクトから取得したものです。間違いを見つけたらお知らせください。
あなたが探しているのは、おそらくクライアントサイドのJavaScriptによって生成されたものです。次のように、share-config-custom.xmlを使用してShareを開発モードに設定する必要があります。
<alfresco-config>
<!-- Put Share Client in debug mode -->
<config replace="true">
<flags>
<client-debug>true</client-debug>
<client-debug-autologging>false</client-debug-autologging>
</flags>
</config>
</alfresco-config>
次に、firebugまたはブラウザの開発者コンソールを使用して、クライアント側のJavaScriptをステップ実行します。ドキュメントライブラリ要素がレンダリングされるポイントを見つけることができるはずです。
Alfrescoのクライアント側のJavaScriptコンポーネントを独自のコンポーネントでオーバーライドできます。Alfrescoとの衝突を避けるために、それらを独自の名前空間に配置してください。
あなたの質問をよく理解しているかどうかわかりません.Alfresco Explorerの特定のビューからいくつかの列を非表示にしようとしていますか? もしそうなら、/jsp/browse/browse.jsp ファイルを編集する必要がありますが、それは良い考えではないと思います。独自の NodePropertyResolver を実装する方が良い方法かもしれません。このトピックに関する私の古いブログ投稿を見てください:
\opt\alfresco-4.0.d\tomcat\webapps\share\components\documentlibrary\documentlist.js にすべてあるようです。トリックは this.registerRenderer("social"...) にあると思いますhtml 1981 行前 (お気に入りの前のお気に入りの後) 少なくとも faorite を保持したい場合