precyx
12/24/2019 - 7:30 AM

Document Version

Get Document Minor Version

Files:

  • getMinorVersion.js

Example is from a display template context, using sharepoint's _vti_history API.

/**
 * Display Template managed properties
 **/
var webAbsoluteUrl = _spPageContextInfo.webAbsoluteUrl || "";
var path = ctx.CurrentItem.Path || "";
var fileName = calcFilename(path);
var majorVersion = ctx.CurrentItem.UIVersionStringOWSTEXT || "";
var id = ctx.ClientControl.get_nextUniqueId();
var linkId = id + "link_id";


getMinorVersion(webAbsoluteUrl, path, fileName, function(data){
    //console.log("data", data);

    // get majorminor version e.g. 1.5
    var minorVersion = data.value || "0";
    var majorMinorVersion = Math.floor(+majorVersion) + "." + minorVersion;

    // get whole version number e.g 1 * 512 = 512
    var majorMinorVersionWholeNumber = 0;
    var nr = parseInt(majorMinorVersion);
    if(!isNaN(nr)) majorMinorVersionWholeNumber = (majorVersion * 512);

    // build link to file
    var linkToVersionedFile = path;
    if(Math.floor(parseInt(majorMinorVersion)) != +majorMinorVersion) linkToVersionedFile = webAbsoluteUrl + "/_vti_history/" + majorMinorVersionWholeNumber + endPath;

    document.getElementById(linkId).href = linkToVersionedFile;
    //console.log("link-to-file", linkToVersionedFile);

}, function(error){
    console.warn("error", error);
});


/**
 * Gets minor version of file by it's filename and path
 */
function getMinorVersion(webAbsoluteUrl, path, filename, onSuccess, onFail){
    var _webAbsoluteUrl = webAbsoluteUrl || "";
    var _path = path || "";
    var _filename = filename || "";
    var _onSuccess = onSuccess || function(){};
    var _onFail = onFail || function(){};

    // REGEX: match all start and end occurances of '/' character
    var folder = _path.replace(_webAbsoluteUrl, "").replace("/" + filename, "").replace(/(^\/+|\/+$)/g, "");

    var url = _webAbsoluteUrl + "/_api/web/getfolderbyserverrelativeurl('"+folder+"')/files('"+filename+"')/minorversion";

    httpGet(url, _onSuccess, _onFail);
}


function calcFilename(path){
    if(!path) return "";
    var segments = path.split("/");
    if(!segments[segments.length-1]) return "";
    return segments[segments.length-1];
}