Zoeken in deze blog

donderdag 9 september 2010

Collapsable Form Sections

http://marcoamoedo.com/blog/collapsable-form-sections-ndash-a-bit-of-the-future-in-crm-4/

function getElementsByCondition(condition, container) {
container = container || document;
var all = container.all || container.getElementsByTagName('*');
var arr = [];
for (var k = 0; k < all.length; k++) {
var elm = all[k];
if (condition(elm, k))
arr[arr.length] = elm;
}
return arr;
}
function attachCollapsableToSections() {
var sections = getElementsByCondition(function (elm) { if (elm.className.indexOf("ms-crm-Form-Section") != -1) return true; }, null);
for (var i = 0; i < sections.length; i++) {
sections[i].innerHTML = '<img alt="Expanded, click to collapse" src="/_imgs/navup.gif" style="cursor:hand;"/>' + sections[i].innerHTML;
sections[i].childNodes[0].attachEvent('onclick', toggleVisibility);
}
}
function toggleVisibility(e) {
var sectionContainer = e.srcElement.parentNode.parentNode.parentNode;
var elements = getElementsByCondition(function (elm) { if (elm.vAlign == "top") return true; }, sectionContainer);
for (var i = 0; i < elements.length; i++) {
if (elements[i].style.display == "none") {
elements[i].style.display = "";
e.srcElement.src = e.srcElement.src.replace("navdown", "navup");
}
else {
elements[i].style.display = "none";
e.srcElement.src = e.srcElement.src.replace("navup", "navdown");
}
}
}
attachCollapsableToSections();

dinsdag 7 september 2010

Custom Warning

/*============== addNotification function =============

Adds a warning message on the top of the entity form using
the same visual style as Microsoft CRM

Params: message to be shown to the user
=======================================================*/

addNotification = function(message) {

var notificationHTML = '<DIV class="Notification"><TABLE cellSpacing="0" cellPadding="0"><TBODY><TR><TD vAlign="top"><IMG class="ms-crm-Lookup-Item" alt="" src="/_imgs/error/notif_icn_crit16.png" /></TD><TD><SPAN>' + message + '</SPAN></TD></TR></TBODY></TABLE></DIV>';

var notificationsArea = document.getElementById('Notifications');

if (notificationsArea == null) return;

notificationsArea.innerHTML += notificationHTML;

notificationsArea.style.display = 'block';

}
/*============= END addNotification function ===========*/


//Example of utilizations
addNotification('Some warning message that you want to show to the user ');

Een sectie open- of dichtklappen

Met onderstaand script creëer je een sectie die je open- of dicht kunt klappen:

function OnCrmPageLoad()
{
/* false - collapsed, true - expanded */
//First Tab, Second Section, Expanded
ConvertSection(0,1,false);
//First Tab, Third Section, Collapsed
ConvertSection(0,2,false);
}
function ConvertSection( tabIndex , sectionIndex , state ) {
var sec = document.getElementById( "tab" + tabIndex );
var td = sec.childNodes[0].rows[ sectionIndex ].cells[0].childNodes[0].rows[0].cells[0];
var secHTML = td.innerHTML;
state = (typeof(state) == "undefined")? false:!state;
var src = (state == false)? "/_imgs/tree/dashPlus.gif":"/_imgs/tree/dashMinus.gif";
td.innerHTML = "<NOBR style='VERTICAL-ALIGN: middle;cursor:hand' onclick='excoSection(this)'><IMG src='" + src + "' align='middle' /> " + td.innerHTML + "</NOBR>";
td.childNodes[0].childNodes[0].state = state;
excoSection(td.childNodes[0]);
}
/* Toggle SectionState */
function excoSection( sec ) {
sec = sec.childNodes[0];
sec.state = !sec.state;
sec.src = (sec.state)? "/_imgs/tree/dashMinus.gif":"/_imgs/tree/dashPlus.gif";
var display = (sec.state)? "inline" :"none";
var tblsec = sec.parentElement.parentElement.parentElement.parentElement;
for( var i =1 ; i < tblsec.rows.length ; i++ )
tblsec.rows[i].style.display = display;
}


//Expose the toggling function at the window level
this.excoSection = excoSection;
OnCrmPageLoad();

Optie uit de NavBar hiden

if(document.getElementById('navWriteInProducts') != null)
{
document.getElementById('navWriteInProducts').style.display="none";
}

Alle velden op een form op read-only zetten

Om in één keer alle velden op een formulier op read-only te zetten (bijvoorbeeld na wijziging van een status), gebruik je onderstaand JavaScript:

for(var index = 0; index <>
if(crmForm.all[index].Disabled != null)
crmForm.all[index].Disabled = true;

Items uit een picklist hiden

Om items uit een picklist te hiden, gebruik je onderstaand JavaScript:

//Onzichtbaar maken picklist items
crmForm.all.CFPOrderstatus.DeleteOption(2);
crmForm.all.CFPOrderstatus.DeleteOption(5);

Opmaak vast telefoonnummer wanneer land = Nederland

//OPMAAK TELEFOONNUMER BIJ LAND = NEDERLAND

PhonenumberFormat = function()
{
if(crmForm.all.cov_landid_ba.DataValue != null)
{
LookupItem = crmForm.all.cov_landid_ba.DataValue;
if(LookupItem[0].name == 'Nederland')
{
var formFld = event.srcElement;var TelNo = "";
if(formFld.DataValue != null)
{
TelNo = formFld.DataValue.replace(/[^[0-9]/g, "");
}
else
{
return;
}
if(TelNo.substr(0,2) == "31")
{
var TelNo = "0" + TelNo.substr(2);
}
if(TelNo.substr(0,4) == "0031")
{
var TelNo = "0" + TelNo.substr(4);
}
if(TelNo.length > 9)
{
switch (TelNo.substr(0,3))
{
case "010":
case "013":
case "015":
case "020":
case "023":
case "024":
case "026":
case "030":
case "033":
case "035":
case "036":
case "038":
case "040":
case "043":
case "045":
case "046":
case "050":
case "053":
case "055":
case "058":
case "070":
case "071":
case "072":
case "073":
case "074":
case "075":
case "076":
case "077":
case "078":
case "079":
case "085":
case "088":

formFld.DataValue = "(+31)" + " " + TelNo.substr(1,2) + " " + TelNo.substr(3,3) + " " + TelNo.substr(6,2) + " " + TelNo.substr(8,2);
break;

default:formFld.DataValue = "(+31)" + " " + TelNo.substr(1,3) + " " + TelNo.substr(4,2) + " " + TelNo.substr(6,2) + " " + TelNo.substr(8,TelNo.length-8);
break;
}
}
}
}
}

maandag 6 september 2010

Selectievakje (bit-veld) reageert niet op scripting

Wanneer je aan een selectievakje (bit-veld) een JavaScript koppelt, gaat het script niet af wanneer je het desbetreffende vinkje aan- of uitzet. Alleen door met tab het veld te verlaten, zal het script afgaan. Door onderstaand script te gebruiken in de OnLoad van het formulier, wordt dit gedrag afgevangen:

crmForm.all.cov_adverteerder.onclick = function()
{
crmForm.all.cov_adverteerder.FireOnChange();
}

Focus op een tab zetten

crmForm.all.tab1Tab.click();

Veld in hoofdletters

if(crmForm.all.address1_city.DataValue != null)
{
crmForm.all.address1_city.DataValue = crmForm.all.address1_city.DataValue.toUpperCase();
}

Eigenschappen van een lookup field uitvragen

In onderstaand voorbeeld zie je hoe je de verschillende eigenschappen van een lookup field kunt uitvragen:

function HandleOnChangeLookup()
{
if(crmForm.all.primarycontactid.DataValue != null)
{
var lookupItem = new Array;
lookupItem = crmForm.all.primarycontactid.DataValue;
 // The text value of the lookup.
alert(lookupItem[0].name);

// The GUID of the lookup.
alert(lookupItem[0].id);

// The entity type name.
alert(lookupItem[0].typename);

// The entity type code of the lookup: 1=account, 2= contact.
alert(lookupItem[0].type);
}
}