2

リポジトリにはさまざまなドキュメント リストがあります。つまり、データ ディクショナリ、ユーザー ホーム、ゲストハウスなどがあります。ビューを「詳細ビュー」に変更すると、お気に入り、コメント リンクなどが表示されます。それらを表示したくない場合は、どこを変更する必要がありますか。これらのリンクを表示しないためのコードにコメントする必要があるファイルを教えてください。前もって感謝します。

4

5 に答える 5

4

この質問に対する「モジュール式」の回答が必要でした。この回答は、この問題をどのように処理したかを示すことです。

コンテキスト: 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 つのステップで作成する方法

  1. documentlist.js重要: まず、メイン モジュールの「コメント無効化」を削除します。

    myCustomDisabledSocials: ["favourites", "likes", "quickShare"],
    
  2. 同じ構造の新しいモジュール「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>
    
  3. 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"/>
    </@>
    
  4. それからJavascript...

    src/main/resources/META-INF/my-custom/nocomment/components/documentlibrary/documentlist.js

    Alfresco.DocumentList.prototype.myCustomDisableSocial("comment");
    
  5. すべてがスムーズになったと感じたら、拍手してください。

  6. ノート:

    • モジュールはnocommentモジュールに依存しmainます。
    • モジュールをモジュールの後nocommentロードすることが重要です ( )。mainhttp://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";

注:これらのスニペットはテストしていません。「匿名化」(基本的にモジュールの名前を変更) 後にプロジェクトから取得したものです。間違いを見つけたらお知らせください。

于 2014-06-01T14:49:01.723 に答える
3

あなたが探しているのは、おそらくクライアントサイドの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との衝突を避けるために、それらを独自の名前空間に配置してください。

于 2012-06-21T17:13:39.607 に答える
0

あなたの質問をよく理解しているかどうかわかりません.Alfresco Explorerの特定のビューからいくつかの列を非表示にしようとしていますか? もしそうなら、/jsp/browse/browse.jsp ファイルを編集する必要がありますが、それは良い考えではないと思います。独自の NodePropertyResolver を実装する方が良い方法かもしれません。このトピックに関する私の古いブログ投稿を見てください:

于 2012-06-20T22:03:00.713 に答える
0

\opt\alfresco-4.0.d\tomcat\webapps\share\components\documentlibrary\documentlist.js にすべてあるようです。トリックは this.registerRenderer("social"...) にあると思いますhtml 1981 行前 (お気に入りの前のお気に入りの後) 少なくとも faorite を保持したい場合

于 2012-07-13T02:20:27.320 に答える