7

SharePoint 2007 で動的な項目ごとのメニュー (編集コントロール ブロック) をセットアップしようとしています。私の目標は、現在のユーザーのグループ メンバーシップに基づいて特定の機能を利用できるようにすることです。

このメニュー項目の作成を制御する CustomAction タグに Rights 属性があることはわかっています。これに関する問題は、使用しているグループがサイト内で同じ権限を持っていることです (ViewListItems、ManageAlerts など)。設定したグループは、マネージャー、従業員など、より多くの機能を扱います。カスタム機能をグループに割り当て、その機能に関連付けられたメニュー項目をそのグループのメンバーのみに表示できるようにしたいと考えています。 . 全員が同じ基本的なサイト権限を持っていますが、ログイン資格情報に基づいて追加のオプションを利用できます。

Core.js ファイルを変更してコンテキスト メニューの項目を非表示にする方法に関する記事をいくつか見てきましたが、それらはオール オア ナッシングのアプローチです。http://blog.thekid.me.uk/archive/2008/04/29/sharepoint-custom-actions-in-a-list-view-webpart.aspxに、動的に変更する方法を示す興味深い投稿があります。アクションメニュー。この例を変更して、ユーザー グループをチェックし、メンバーシップに基づいてメニューを表示または非表示にするのは簡単です。残念ながら、この例は、 http://forums.msdn.microsoft.com/en-US/sharepointdevelopment/thread/c2259839-24c4-4a7e-83e5-3925cdd17c44/で証明されているように、コンテキスト メニュー項目には適用されないようです。

JavaScriptを使わずにこれを行う方法を知っている人はいますか? そうでない場合、javascript からユーザーのグループを確認する最良の方法は何ですか?

4

2 に答える 2

2

メニュー項目をリスト項目ドロップダウンに動的に追加するために実装できる 2 つの異なる Javascript 関数があります。Core.js (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033\CORE.JS) は、選択したリスト項目のメニュー項目を生成するときに、これらのメソッドの存在を確認します。「Custom_AddDocLibMenuItems」および「Custom_AddListMenuItems」は Javascript メソッドの名前です。

特定の問題を解決するために使用できると思われる記事の 1 つである、ユーザー ロール メンバーシップに基づく動的なメニュー項目のカスタマイズは、次の場所にあります。

MSDN: ドキュメント ライブラリ アイテムのコンテキスト メニューのカスタマイズ(プロセスはどのリスト タイプでもまったく同じであることに注意してください)

この記事では、表示されるメニュー項目を定義するためにサーバー側コードを実行する方法について概説します。

[...] より複雑なケースでは、使用可能なコマンドのリストをサーバーから取得する必要があります。これは、ビジネス ロジックを実行し、カスタム データベースからコマンドを取得できるのはそこでのみであるためです。通常、これは、各ドキュメントに独自のプロセス状態があり、それに関連付けられたコマンドがあるワークフロー ソリューションを実装している場合に行います。

この状況の解決策は、Custom_AddDocLibMenuItems でカスタム ASP.NET ページを動的に呼び出すことです。このページは、ドキュメント ライブラリの ID とクエリ文字列の特定のアイテムを取得し、その特定のドキュメントで使用できるコマンドのすべての情報を含む XML 文字列を返します。これらのコマンドは、ドキュメントのプロセス ステータス (またはその他のカスタム ビジネス ロジック) に従って使用できます。[...]

于 2008-09-12T06:56:04.813 に答える
2

残念ながら、これは JavaScript を使用しないと実現できません。ECB は、カスタム アクションとして定義されたサーバー コントロールをレンダリングしません (SiteActions などとは異なります)。

Javascript を使用してこれを達成する方法については、次の記事を参照して ください。 aspx

于 2008-10-02T09:50:03.100 に答える