メモ帳だけで出来る! sharepoint 2013 js リンク “ちょい” hacks

25
メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks Japan SharePoint Group #9 @東京 2013/5/18 株式会社内田洋行 太田浩史

Upload: hirofumi-ota

Post on 28-Nov-2014

6.043 views

Category:

Technology


0 download

DESCRIPTION

Japan SharePoint Group勉強会 #9でお話させて頂いた資料です。 あとから知ったのですが、OnPostRender という素晴らしいのが用意されていたんですね。jQuery のプラグインなどを適用するにはこれが便利です。 http://msdn.microsoft.com/ja-jp/library/jj220045(v=office.15).aspx

TRANSCRIPT

Page 1: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

メモ帳だけで出来る! SharePoint 2013

JS リンク “ちょい” Hacks

Japan SharePoint Group #9 @東京 2013/5/18

株式会社内田洋行 太田浩史

Page 2: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

自己紹介 太田 浩史 (おおた ひろふみ) • 株式会社 内田洋行 (http://www.uchida.co.jp)

– オフィスと教育と情報の会社

– 「働き・学び」の変革

• SharePoint への関わりは MOSS 2007 から。

• Windows から SharePoint まで、サーバ構築から開発まで導入サポート

• 社内でも Notes を Office 365(SharePoint Online)へ移行

• “基本的” には SharePoint 一筋で。

Page 3: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

個人的な活動

Ota Hirofumi https://facebook.com/hrfm.jp

@hrfmjp https://twitter.com/hrfmjp

Hirofumi OTA http://www.slideshare.net/hirofumi_ota

Page 4: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

ブログ idea.toString();

http://idea.tostring.jp/ 「idea.tostring」を bing で検索すると出てきます。

Page 5: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

本日の内容

1. JS リンクってなに?

2. 実際に使ってみましょう。

SharePoint 2013 のカスタマイズでは、こんなことが出来るんだ!と、 イメージを持ってもらう。

Page 6: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

SharePoint 2013 リストやライブラリの 表示部分のカスタマイズ Visual Studio を利用する?

SharePoint Designer を利用する?

XSLT を記述する?

少しムズカシイですよね。

SharePoint 2013 の JS リンクだと、少し簡単にできます!

Page 7: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

JS リンクってなに?

これです!

リスト・ライブラリの Web パーツ設定にあります。

Page 8: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

コンテンツ レンダリング方式の変更点

SharePoint 2013 からは、クライアント サイド レンダリング(CSR)が採用されました。

メリットは、HTML・JavaScript の知識で表示を カスタマイズできること。 ※従来通りの サーバー サイド レンダリングへも設定で変更可能です。

タイトル: ○○のお知らせ 部署: 広報部

クライアント側の処理(JavaScript) によって、ページが描画される。

Page 9: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

クライアント側の処理

表示テンプレート(Display Template)

– クライアント側でコンテンツ描画時に実行される JavaScript が記述されたファイル

– 「デザイン マネージャ」が特定の HTML から自動で生成されるものもある(今回は使いません)

–今回扱うのは、「JavaScript の表示テンプレート」 (コンテンツタイプで定義されています)

Page 10: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

実際に使ってみましょう。

基本編 ブログで解説している内容です。 詳しくは下記記事をご参照下さい。

SharePoint 2013 「JS リンク」を試してみた

http://idea.tostring.jp/?p=68

続・SharePoint 2013 「JS リンク」を試してみた

http://idea.tostring.jp/?p=133

Page 11: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

「申請状況」列の入力値に応じて色分け表示をしてみたいと思います。

結果を先に確認すると…。

適用前 適用後

Page 12: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

列の入力値に応じて表示を変更する 表示テンプレート JavaScript ファイル(たったの!20行程度)

(function(){ var overrideCtx = {}; overrideCtx.Templates = {}; overrideCtx.ListTemplateType = 100; overrideCtx.BaseViewID = 1; overrideCtx.Templates.Fields = { '_x7533__x8acb__x72b6__x6cc1_': { 'View' : Color } }; SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx); function Color(ctx){ var ret; var orgVal = ctx.CurrentItem._x7533__x8acb__x72b6__x6cc1_; if(orgVal == '受付'){ ret = '<b style="color:#DA4F49">' + orgVal + '</b>'; }else if(orgVal == '作業中'){ ret = '<b style="color:#5BB75B">' + orgVal + '</b>'; }else if(orgVal == '完了'){ ret = '<b style="color:#2E7BCC">' + orgVal + '</b>'; } return ret; } })();

Page 13: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

実際に使ってみましょう。

応用編 jQuery のプラグインと組合わせて、 イメージ ローテーターを作成してみます。

Page 14: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

今回利用する jQuery プラグイン

jqFancyTransitions

http://www.workshop.rs/projects/jqfancytransitions/

このプラグインを利用するために、用意しなければいけない タグ構造は下記の通り。

<div id='slideshowHolder'> <img src='img1.jpg' alt='img1' /> <img src='img2.jpg' alt='img2' /> <img src='img3.jpg' alt='img3' /> </div>

Page 15: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

必要なタグ構造を出力するための 表示テンプレート JavaScript ファイル(たったの!20行程度)

(function(){ var overrideCtx = {}; overrideCtx.Templates = {}; overrideCtx.ListTemplateType = 109; overrideCtx.BaseViewID = 1; overrideCtx.Templates.Header = "<div id='slideshowHolder'>"; overrideCtx.Templates.Footer = "</div>"; overrideCtx.Templates.Item = slideShowItem; SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx); function slideShowItem(ctx){ var ret = "<img src='" + ctx.CurrentItem.FileRef + "' alt=''/>" return ret; } })();

Page 16: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

jQuery のプラグインを起動するコード

JavaScript ファイル

記述は、プラグインのリファレンスに沿って下さい。

ページへは、「スクリプト エディター Web パーツ」を利用して 埋め込むのがお手軽です。

<script type="text/javascript" src="/Style%20Library/myFiles/jquery-1.9.1.min.js"></script> <script type="text/javascript" src="/Style%20Library/myFiles/jqFancyTransitions.1.8.min.js"></script> <script> $(document).ready(function(){ $('#slideshowHolder').jqFancyTransitions({ width:300, height:100, navigation:true }); }); </script>

Page 17: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

実際に使ってみましょう。

変化球編 ナビゲーション等の文言を変更してみます。 JS リンクの特殊な使い方としてご紹介。

Page 18: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

リストやライブラリで表示されている標準ナビゲーションの文言を変更します。

結果を先に確認すると…。

適用前 適用後

Page 19: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

仕組み

SharePoint 2013 ではナビゲーションの文言も JavaScript としてクライアント側へ渡されています。

ページ表示時に実行される言語リソース系スクリプト

• initstrings.js

• strings.js

これらスクリプト内の文字列を定義されている変数の 格納値を上書きします。

Page 20: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

文言を上書きするためのコード

JavaScript ファイル(たったの!10行程度) (function(){ function stringsOverride(){ Strings.STS.L_SPAddNewDocument="新しい書類をアップロード・作成"; Strings.STS.L_NODOCView="条件に当てはまる書類はありません。"; } ExecuteOrDelayUntilScriptLoaded(stringsOverride, "strings.js"); ExecuteOrDelayUntilScriptLoaded(stringsOverride, "initstrings.js"); })();

Page 21: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

実際に使ってみましょう。

デモ編 • 適用手順の確認

• 動作の確認

• 注意点

Page 22: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

ポイント

• JS リンクを利用する際の、適用対象を特定するには次の値を用いる。 – ListTemplateType 参考:SharePoint 2013 の ListTemplateType 一覧 http://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.client.listtemplatetype.aspx

– BaseViewID SharePoint の一般的なルールでは、「すべての○○」ビューが “1”

特に複数の Web パーツを配置したページで、JS リンクを利用する際には注意。

overrideCtx.ListTemplateType = 109; overrideCtx.BaseViewID = 1;

Page 23: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

ポイント

• 作成した JavaScript ファイルは「マスターページ ギャラリー」に アップロード

• コンテンツ タイプは「JavaScript の表示テンプレート」を選択

• Web パーツの JS リンクの設定には、「URL トークン」を利用して 指定する

• 上手くカスタマイズが反映されない場合、サイト機能の「ダウンロード最小化戦略」を非アクティブにする 参考:SharePoint 2013 の URL とトークン http://msdn.microsoft.com/ja-jp/library/ms431831.aspx その他、日本語の情報では、MS エバンジェリスト 松崎さんのブログ SharePoint 2013 Apps : List の開発と Client Side Rendering (CSR) http://blogs.msdn.com/b/tsmatsuz/archive/2013/01/28/list-definition-list-instance-and-client-side-rendering-csr-using-apps-for-sharepoint-2013.aspx

Page 24: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks

まとめ

• SharePoint 2013 の表示カスタマイズとして「JS リンク」をご紹介しました。

• 簡単なカスタマイズであれば、数十行程度の JavaScript の記述でカスタマイズすることができます。

• アイデア次第では、色々な使い方ができる可能性があると 思います。

Page 25: メモ帳だけで出来る! SharePoint 2013 JS リンク “ちょい” Hacks