Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create inline dialog in MS CRM 2013

MS CRM 2013 introduced new approach to dialogs opened inside the system. In version 2011 look-ups were opened as separate (modal) windows, but in 2013 look-ups are opened as inline iframes on current page.

Definitely it's possible via following jQuery statements:

$('body').append("<div id='InlineDialog_Background' class='ms-crm-InlineDialogBackground' tabindex='0' style='position: absolute; width: 100%; height: 100%; top: 0px; background-color: rgb(128, 128, 128); z-index: 1005; opacity: 0.5;'></div>");
$('body').append("<div id='InlineDialog' class='ms-crm-DialogChrome' tabindex='1' style='position: absolute; top: 50%; left: 50%; z-index: 1006; margin-top: -240px; margin-left: -400px; height: 540px; width: 800px;'><iframe id='InlineDialog_Iframe' name='InlineDialog_Iframe' src='custom_url' style='height: 540px; width: 800px; border: 0px;'></iframe><div id='DialogLoadingDiv' style='position: absolute; background-color: white; height: 480px; width: 800px; top: 50%; left: 50%; margin-top: -240px; margin-left: -400px; z-index: 1007; display: none;'><table class='ms-crm-LoadingContainer' style='width:100%;height:100%'><tbody><tr class='ms-crm-LoadingContainer'><td style='vertical-align: middle' align='center'><img id='DialogLoadingDivImg' alt='' src='/_imgs/AdvFind/progress.gif'><br>Loading...</td></tr></tbody></table></div></div>");

But it also requires some additional routines to close such dialog properly.

Is there any Microsoft-provided javascript methods to open such a iframe?

like image 216
shytikov Avatar asked Dec 26 '22 09:12

shytikov


2 Answers

Here is the example of displaying web resource in such dialog box.

In the parent window:

var src = <Relative_Url_of_the_Webresource>;
var DialogOptions = new Xrm.DialogOptions(); 
DialogOptions.width = 500;
DialogOptions.height = 400;
Xrm.Internal.openDialog(src, DialogOptions, null, null, CallbackFunction);

function CallbackFunction(returnValue){ }

Also, you have to include ClientGlobalContext.js.aspx in your web resource, for example:

<script type="text/javascript" src="/webresources/ClientGlobalContext.js.aspx"></script> 

For passing the return value from the dialog box to the parent window:

Mscrm.Utilities.setReturnValue(result);
try {
    closeWindow(true); //Close the dialog box
}
catch (e) { }
like image 110
G_Iashyn Avatar answered Dec 28 '22 07:12

G_Iashyn


Of course this is unsupported and methods are not documented but you can try to use following approach - http://a33ik.blogspot.com/2014/05/show-your-dialog-in-crm-2013-modal-style.html

Here is the code:

if (typeof Custom == "undefined") {
    Custom = {
        OpenDialog: function (webresource) {
            var $v_0 = new Mscrm.CrmDialog(Mscrm.CrmUri.create(webresource), window, 370, 370, null);
            $v_0.show();
        },
        __namespace: true
    };
}

Sample of usage:

Custom.OpenDialog("/webresources/new_webresource.htm");
like image 44
Andrew Butenko Avatar answered Dec 28 '22 05:12

Andrew Butenko