0
votes

How to show annotation present in an entity in popup window by using html web resource. My requirement is to display annotation present in an entity in a popup window and in popup window user should be able to delete , upload and convert the annotation to pdf (if he wants). Can you suggest a best method to achieve this in crm 2011.

function retann() {
//debugger;

var serverUrl = Xrm.Page.context.getServerUrl();

var GUIDvalue = Xrm.Page.data.entity.getId();

// Creating the Odata Endpoint
var oDataPath = "http://url/organization/XRMServices/2011/OrganizationData.svc/";
var retrieveReq = new XMLHttpRequest();
var Odata = oDataPath + "/AnnotationSet?$select=DocumentBody,FileName,MimeType,ObjectId&$filter=ObjectId/Id eq guid'" + GUIDvalue + "'";
retrieveReq.open("GET", Odata, false);
retrieveReq.setRequestHeader("Accept", "application/json");
retrieveReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
retrieveReq.onreadystatechange = function () { retrieveReqCallBack(this); };
retrieveReq.send(); 
}


function retrieveReqCallBack(retrieveReq) {
if (retrieveReq.readyState == 4 /* complete */) {

//debugger;

    var retrieved = this.parent.JSON.parse(retrieveReq.responseText).d;

    var message = "";
    var fun_var =
    "<script type=text/javascript>" +
    "function result_value()" +
    "{" +
    "var rad_val;" +
    "for (var i=0; i < document.orderform.test.length; ++i){if (document.orderform.test[i].checked){rad_val = document.orderform.test[i].value;}}" +
    "if(rad_val==null || rad_val=='')" +
    "{" +
    "window.top.opener.Xrm.Page.data.entity.attributes.get('new_radiovalue').setValue('0');" +
     "}" +
    "else" +
    "{" +
    "window.top.opener.Xrm.Page.data.entity.attributes.get('new_radiovalue').setValue(rad_val);" +
    "}" +
     " window.top.opener.Xrm.Page.data.entity.attributes.get('new_fireplugin').setValue(1);" +
     "window.top.opener.Xrm.Page.data.entity.save();" +
    "this.window.close();" +
    "}" +
    "function result_value1()" +
    "{" +
    "var rad_val1;" +
    "for (var i=0; i < document.orderform.test.length; ++i){if (document.orderform.test[i].checked){rad_val1 = document.orderform.test[i].value;}}" +
    "if(rad_val1==null || rad_val1=='')" +
    "{" +
    "window.top.opener.Xrm.Page.data.entity.attributes.get('new_radiovalue').setValue('0');" +
     "}" +
    "else" +
    "{" +
    "window.top.opener.Xrm.Page.data.entity.attributes.get('new_radiovalue').setValue(rad_val1);" +
    "}" +
     " window.top.opener.Xrm.Page.data.entity.attributes.get('new_delete').setValue(1);" +
     "window.top.opener.Xrm.Page.data.entity.save();" +
    "this.window.close();" +
    "}" +
    "</script>";

    var n = retrieved.results.length;
    for (var i = 0; i < retrieved.results.length; i++) {
        message += " <input type='radio' name='test' value=' " + i + "' />" + retrieved.results[i].FileName + "<br />";
    }
    myWindow = window.open('', '', 'width=500,height=150,left=250,top=250,scrollbars=yes,resizable=yes,directories=yes');
    myWindow.document.write(fun_var + "<body bgcolor=GhostWhite style='font-family:verdana;font-size:11px;'><form name='orderform' style='font-family:verdana;font-size:11px;'>" + message + "</br><center ><input type='button' onclick='result_value()' style='font-family:verdana;font-size:11px;' value='Convert To PDF'/></center>" + "</form>");
    myWindow.focus();

}
}


function SetField() {
var AddressType = Xrm.Page.data.entity.attributes.get("new_radiovalue");
AddressType.setValue("");
}


function save_form() {

// var MainPhone = Xrm.Page.data.entity.attributes.get("new_name").getValue(); 
//Xrm.Page.data.entity.attributes.get("new_name").setValue(MainPhone+"."); 
Xrm.Page.data.entity.save();

}

retrieveReqCallBack(this) function displays the popup with annoatation. Using the above code i'm able to convert doc to pdf. Since i want to add multiple functionalities like upload , delete and convert to pdf. If annotation is present then popup should have option to upload and if annotation is present then it has to show delete and convert to pdf buttons.

1
@glosrob, You can check my edit for what i have tried till now.Maddy

1 Answers

0
votes

I found this as solution to my question, You'll need to create a custom web resource (html) with javascript to pull the data out of the sub-grid, parse the rows, query the crm data via REST or SOAP to see if there is an annotation, then put an icon of the 'paperclip' which'll allow users to upload attachments against that record.