SharePoint2010のグループカレンダーで設備の予約管理をしたいと考えています。
デフォルトでは「リソースの追加」を毎回行う必要があり、ページを開きなおすと追加したリソースが消えてしまい不便です。
ネット上で以下のサイトを見つけ、カスタマイズを行ってみました。
http://zepeda-mcmillan.blogspot.jp/2011/03/displaying-default-resources-on-group.html
http://social.msdn.microsoft.com/Forums/en-IN/sharepoint2010general/thread/0833985b-e9ec-4732-a66f-529969203425
しかし、「メッセージ: 'undefined' は Null またはオブジェクトではありません。」エラーとなり実行されません。
環境としては
・SharePoint Server 2010 SP1
・2011年12月CU適用
行った作業は以下の通りです。
1.「スタイルライブラリ」-「jQuery」フォルダに「jquery-1.5.1.min.js」をアップして発行
2.「グループの予定表」を作成し、設備として「PC1」「PC2」・・「PC5」と「PC_all」グループとして登録
3.「Fiddler2」を使用して「PC_all」追加時のretの情報を取得し、以下のコードを作成
-------------------------
<script type="text/javascript" src="/Style%20Library/jQuery/jquery-1.5.1.min.js"></script>
<script type="text/javascript">
function _setDefaultResources() {
var el = $(".ms-acal-rootdiv");
var xml = "'\u003cEntities Append=\u0022True\u0022 Error=\u0022\u0022 DoEncodeErrorMessage=\u0022True\u0022 Separator=\u0022;\u0022 MaxHeight=\u00223\u0022\u003e\u003cEntity Key=\u0022PC1\u0022 DisplayText=\u0022PC1\u0022
IsResolved=\u0022True\u0022 Description=\u0022\u0022\u003e\u003cExtraData\u003e\u003cArrayOfDictionaryEntry xmlns:xsi=\u0022http:\u002f\u002fwww.w3.org\u002f2001\u002fXMLSchema-instance\u0022 xmlns:xsd=\u0022http:\u002f\u002fwww.w3.org\u002f2001\u002fXMLSchema\u0022\u003e\u003cDictionaryEntry\u003e\u003cKey
xsi:type=\u0022xsd:string\u0022\u003eSPResourceId\u003c\u002fKey\u003e\u003cValue xsi:type=\u0022xsd:string\u0022\u003e1\u003c\u002fValue\u003e\u003c\u002fDictionaryEntry\u003e\u003cDictionaryEntry\u003e\u003cKey xsi:type=\u0022xsd:string\u0022\u003ePrincipalType\u003c\u002fKey\u003e\u003cValue
xsi:type=\u0022xsd:string\u0022\u003eResource\u003c\u002fValue\u003e\u003c\u002fDictionaryEntry\u003e\u003c\u002fArrayOfDictionaryEntry\u003e\u003c\u002fExtraData\u003e\u003cMultipleMatches \u002f\u003e\u003c\u002fEntity\u003e\u003c\u002fEntities\u003e";
var sel = SP.UI.ApplicationPages.CalendarSelector.instance().getSelector(1, $(el).attr('ctxid'));
sel.selectEntities(xml, true);
}
ExecuteOrDelayUntilScriptLoaded(_setDefaultResources, "sp.ribbon.js");
</script>
----------------------------
4.「スタイルライブラリ」-「Ctrl」に「GroupCalendar.js」としてファイルをアップして発行
以上となります。
開発者ツールでデバッグしてみると、以下のコードのところで止まっていました。
sel.selectEntities(xml, true);
試しにdocument.writeでそれぞれの返り値を確認してみると以下のようになっていました。
$(".ms-acal-rootdiv"); → object object
$(el).attr('ctxid'); → undefined
SP.UI.ApplicationPages.CalendarSelector.instance().getSelector(1, $(el).attr('ctxid')); → undefined
本来、「$(el).attr('ctxid'); → WPQ2」になるはずですが、この値も取得できていないようです。
また、海外のMSDNのフォーラムをもとに以下のようにctxidに直接「WPQ2」を指定してみましたが、やはりundefinedが返ってきてしまいます。
var sel = SP.UI.ApplicationPages.CalendarSelector.instance().getSelector(1, 'WPQ2'); → undefined
同じコードを使用して実際に動いているサイトも発見しソースを確認してみましたが、当方の環境との違いはわかりませんでした。
http://213.246.42.130/Lists/Rservation%20de%20ressources/calendar.aspx
上記エラーの回避方法やグループカレンダーでリソースをデフォルトで表示させる方法について、ご存知の方がいらっしゃいましたらご教示いただければ幸いです。
以上、よろしくお願いします。