Wednesday, February 9, 2011

Load an associated view into an IFrame, hide it from LHS navigation menu

/**
* Load an associated view into an IFrame, hide it from LHS navigation menu,
* and remove "Add Existing" button in the associated view.
* @author Daniel Cai, http://danielcai.blogspot.com/
*
* Parameters:
* @param iframe: The IFrame's object, e.g. crmForm.all.IFrame_Employer_Address
* @param navItemId: LHS navigator's HTML element ID of the associated view.
It usually starts with "nav".
* @param relName: The relationship name, this parameter is only required
* when you want to remove "Add Existing" button.
* @param roleOrd: Role ordinary of the relationship, this parameter is only
* required for N:N relationship.
*/
function
loadAssociatedViewInIFrame(iframe, navItemId, relName, roleOrd) {var clickActionPattern = /loadArea\(['"]{1}([A-Za-z0-9_]+)['"]{1}\).*/;

url +=
url +=
url +=
url += (!roleOrd) ?

};



var getFrameSrc = function(areaId) {var url = "areas.aspx?oId=" + encodeURI(crmForm.ObjectId);"&oType=" + crmForm.ObjectTypeCode;"&security=" + crmFormSubmit.crmFormSubmitSecurity.value;"&tabSet=" + areaId;"" : "&roleOrd=" + roleOrd;return url;var removeAddExistingButton = function(frameDoc) {if (!frameDoc || !!roleOrd) { return; }var grid = frameDoc.all['crmGrid'];// Locate the "Add Existing" button using its magic id.


btn.parentNode.removeChild(btn);
}
};



removeAddExistingButton(frameDoc);
var btnId = '_MBtoplocAssocOneToMany' + grid.GetParameter('otc') + relName.replace(/_/g, "");var btn = frameDoc.getElementById(btnId);if (btn) {var onReadyStateChange = function() {if (iframe.readyState === 'complete') {var frameDoc = iframe.contentWindow.document;// Remove the padding space around the iframeframeDoc.body.scroll =
frameDoc.body.childNodes[0].rows[0].cells[0].style.padding =
}
};
(






}
navItem.style.display =

iframe.src = getFrameSrc(areaId);
iframe.allowTransparency =
"no";"0px";function init() {if (!crmForm.ObjectId) { return; }var navItem = document.getElementById(navItemId);if (!navItem) { return; }var clickAction = navItem.getAttributeNode('onclick').nodeValue;if (!clickAction || !clickActionPattern.test(clickAction)) {return;'none';var areaId = clickAction.replace(clickActionPattern, '$1');true; // Get rid of the white area around the IFrameiframe.attachEvent(
})();
};
'onreadystatechange', onReadyStateChange);

1 comment: