none
SharePoint2010 グループカレンダーに設備をデフォルトで表示させたい RRS feed

  • 質問

  • 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

    上記エラーの回避方法やグループカレンダーでリソースをデフォルトで表示させる方法について、ご存知の方がいらっしゃいましたらご教示いただければ幸いです。

    以上、よろしくお願いします。

    2012年5月29日 23:58