2016-08-12 3 views
9

L'exigence globale que j'essaie de mettre en œuvre consiste à afficher les commentaires (faits sur une liste, élément par élément).Sharepoint: Comment afficher AppendOnlyHistory sur un modèle d'affichage dans un scénario de publication croisée

J'ai ajouté la fonctionnalité du côté de la création en activant le versionnement dans la liste et en ajoutant un champ de texte avec l'option "Ajouter les modifications au texte existant" définie sur true. Cela me permet en effet de commenter les éléments et de les afficher chronologiquement, mais uniquement du côté de la création. Le problème est que la partie de l'interface utilisateur sera effectuée sur une autre collection de sites et je ne peux pas trouver un moyen simple d'obtenir tous les commentaires là-bas.

Jusqu'à présent, toutes les ressources que j'ai trouvé des points à

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

La chose est, je ne peux pas (ne savent pas comment) utiliser ceci à l'intérieur d'un modèle d'affichage. Jusqu'à présent, je reçois toutes mes données en utilisant l'API REST, via

 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); 
      } 
     }); 

Ce que cela me donne est le dernier commentaire que. J'ai besoin d'un moyen simple pour mettre la main sur tout le fil.

Répondre

0

Je fini par utiliser javascript modèle objet pour les obtenir comme ceci:

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); 
       }); 
      } 
     }); 
    } 
} 

l'analyse syntaxique pourrait être mieux, mais cela est juste une idée initiale de travail