2016-08-12 8 views
9

私が実装しようとしている最も重要な要件は、コメントを表示することです(アイテムごとにリストで作成)。Sharepoint:クロスパブリッシングシナリオで表示テンプレートにAppendOnlyHistoryを表示する方法

リストのバージョン管理を有効にして、オプション「既存のテキストに変更を追加」がtrueに設定されたテキストフィールドを追加することで、この機能をオーサリング側に追加しました。 これは実際にアイテムにコメントすることができ、時間順に表示しますが、オーサリング側でのみ表示されます。 問題は、UI部分が別のサイトコレクションで実行されるため、そこにすべてのコメントを取得する簡単な方法が見つからないということです。

これまでのところ、私は

<SharePoint:AppendOnlyHistory runat="server" FieldName="YourCommentsFieldName" ControlMode="Display"/> 

にポイントを発見したすべてのリソースは事は、私が表示テンプレート内でこれを使用(する方法がわからない)ことはできません。 これまでのところ、私はこれは私が唯一の最新のコメントである与えるもの

 var siteUrl=_spPageContextInfo.webAbsoluteUrl.replace("publishing","authoring"); 
     $.ajax({ 
      url: siteUrl + "/_api/web/lists/getbytitle('" + listname + "')/items(" + id + ")", 
      type: 'GET', 
      async:false, 
      headers: {"accept": "application/json;odata=verbose",}, 
      dataType: 'JSON', 
      success: function(json) { 
       console.log(json); 
       //var obj = $.parseJSON(JSON.stringify(json.d.results)); 
       //alert(obj); 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       alert("error :"+XMLHttpRequest.responseText); 
      } 
     }); 

を経由して、REST APIを使用してすべての私のデータを取得しています。スレッド全体を保持するための簡単な方法が必要です。

答えて

0

私はそうのようにそれらを取得するにはjavascriptオブジェクトモデルを使用して終了:

function GetComments(listname, itemId) { 
    var siteUrl = _spPageContextInfo.webAbsoluteUrl.replace("publishing", "authoring"); 
    if ($(".comments-history").length) { 
     $().SPServices({ 
      operation: "GetVersionCollection", 
      async: false, 
      webURL: siteUrl, 
      strlistID: listname, 
      strlistItemID: itemId, 
      strFieldName: "Comments", 
      completefunc: function (xData, Status) { 

       $(xData.responseText).find("Version").each(function (data, i) { 

        var xmlComment = $(this)[0].outerHTML; 
        var arr = xmlComment.split(/comments|modified|editor/g); 
        var comment = arr[1].trim().substring(2, arr[1].length-2); 
        var dateSt = Date.parse((arr[2].substring(1, arr[2].length)).replace('/"', '')); 
        var user = getUsername(arr[3]); 

        var st = "<div class='comment-item'><div class='comment-user'>" + user + "(" + FormatDate(dateSt) + ")</div>"; 
        st += "<div class='comment-text'>" + comment + "</div></div>"; 
        $(".comments-history").append(st); 
       }); 
      } 
     }); 
    } 
} 

解析がより良いかもしれないが、これは単に初期作業アイデア

です
関連する問題