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 を読み込む。
なお、もし「これだけでは判らないけど、どうしても試してみたい!」という方がいらっしゃいましたら、お仕事としてご支援させて頂きます。こちらからご連絡下さい。
お気に召しましたら、ぜひ「イイネ」お願いします(笑)
login