SharePoint 2007のリストにJavascript で「イイネ」的なボタンを実装する

SharePoint 2010 にはアイテム/ファイルにレイティング(星)を付与するソーシャル(風味)な機能がありますが、SharePoint 2007にはありません。そこで、Javascriptを使って「イイネ」的な何か(笑)を投票するするボタンを作って見ました。

なお、このサンプルでは「お知らせリスト」にボタンを配置しています。ブログについては…リストなので動くのは間違いありませんが、少し修正が必要かも。多分(試していません)

さて、例によって、DispForm.aspx を編集モードで開き、コンテンツエディタWebパーツを配置。テキストファイルからスクリプトを読み込みます。フォームが開いたタイミングで、スクリプトがHTMLを書換え、ツールバーに「イイネ!」ボタンを配置します。([通知]の右です)

これをクリックすると「イイネ」が投稿されます。

ちなみに、重複投稿はできません。一人一票。

仕組みとしては、「イイネ」が投稿される都度、Webサービス経由で裏の「イイネ投稿記録リスト(カスタムリスト)」にアイテムを作成しています。ただし、投稿処理を行う前に、やはりWebサービス経由で同じユーザが、同じリストの同じIDのアイテムについて、既に「イイネ」を投稿していないかを調べます。もしある場合は投稿処理は行いません。

まあ、実はWebサービスがチェックしているのは「同じリストの同じIDのアイテム」だけなんですけどね。「同じユーザ」については、スクリプトで処理しようとすると実装難易度が高くなるので、SharePointの基本機能でやや無理矢理にしのいでみました。

具体的には、次のような仕様です。

履歴用のリストは二つ用意します。
片方は全ユーザが閲覧できる履歴→イイネ件数取得用。
もうひとつは、リストの詳細設定で、閲覧権限を「所有するアイテムのみ」に絞る→クリックしたユーザの既イイネチェック用。

このため、リストに管理権限をもつユーザ、それにサイトコレクションの所有者は、本当に最初の一票でないかぎり「イイネ」できません(笑)

さて、これで「イイネ」投稿ができるようになりましたが、これだけですと、現在「何イイネ」なのか判りませんし、「イイネ」ボタンもいまひとつ目立ちません。そこで、もうひとつスクリプトを用意しました。

編集時、本文中に「#iine#」とマークアップすると、

それを、現在のカウントつきイイネボタンに置換します。

ちょっと大きすぎかな?もちろん、このボタンをクリックしても、イイネ投稿になります。

以下、資材とごく簡単な配置手順です。なお、このスクリプトは例によってサンプルですので、クロスブラウザ性等には全く配慮しておらず、動作保証しません(ie9でしか確認していません)。また「判りやすさ」を優先したため、とても非効率なスクリプトになっていますが、そこはご勘弁下さい。

資材一式:iine.zip

配置手順:
1. リストテンプレート iine.stp からリストを二つ作成する。
2. 片方のリストは閲覧=所有するアイテムのみにする。
3. iine.stp 以外を、まとめてSharePointのライブラリにアップロード。
4. 3つの *.js ファイルをテキストエディタで開き、「環境設定」を修正。
5. iine.txt をテキストエディタで開き、URLを四カ所修正する。
6. お知らせリストの DispForm.aspx を編集モードで開く
7. コンテンツエディタを配置し、iine.txt を読み込む。

なお、もし「これだけでは判らないけど、どうしても試してみたい!」という方がいらっしゃいましたら、お仕事としてご支援させて頂きます。こちらからご連絡下さい

お気に召しましたら、ぜひ「イイネ」お願いします(笑)

シンプレッソ・コンサルティング株式会社


Author

中村 和彦(シンプレッソ・コンサルティング株式会社 代表)が「ユーザ視点の SharePoint 情報」を発信します。元大手製造業 SharePoint 運用担当。現SharePoint コンサルタント。お仕事のお問い合わせはこちらまでお願いします。当ブログにおける発信内容は個人に帰属し所属組織の公式発信/見解ではありません。
FB : 中村 和彦
blog: Be・Better!
MS MVP SharePoint 2009/10-2011/9
MS MVP Office 365 2012/10-2014/9