none
Ocultar tabs en formularios segun roles RRS feed

  • Pregunta

  • Buenas a todos, alguien sabe si se pueden ocultar mediante javascript (soportada o no soportadamente) ciertos tabs de un form dependiendo del rol que tenga asignado la persona que está utilizando CRM 4.0??

     

    Gracias por su atención, un saludo

    Alberto

    lunes, 20 de diciembre de 2010 16:29

Respuestas

  • Hola Albertinson, prueba lo siguiente:

    function UserHasRole(roleName)
    {
     //get Current User Roles, oXml is an object
     var oXml = GetCurrentUserRoles();
     if(oXml != null)
     {
      //select the node text
      var roles = oXml.selectNodes("//BusinessEntity/q1:name");
      if(roles != null)
      {
       for( i = 0; i < roles.length; i++)
       {
        if(roles[i].text == roleName)
        {
         //return true if user has this role
         return true;
        }
       }
      }
     }
     //otherwise return false

    return false;
    }

    function GetCurrentUserRoles()
    {
     var xml = "" +
     "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
     "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
     GenerateAuthenticationHeader() +
     " <soap:Body>" +
     " <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
     " <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
     " <q1:EntityName>role</q1:EntityName>" +
     " <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
     " <q1:Attributes>" +
     " <q1:Attribute>name</q1:Attribute>" +
     " </q1:Attributes>" +
     " </q1:ColumnSet>" +
     " <q1:Distinct>false</q1:Distinct>" +
     " <q1:LinkEntities>" +
     " <q1:LinkEntity>" +
     " <q1:LinkFromAttributeName>roleid</q1:LinkFromAttributeName>" +
     " <q1:LinkFromEntityName>role</q1:LinkFromEntityName>" +
     " <q1:LinkToEntityName>systemuserroles</q1:LinkToEntityName>" +
     " <q1:LinkToAttributeName>roleid</q1:LinkToAttributeName>" +
     " <q1:JoinOperator>Inner</q1:JoinOperator>" +
     " <q1:LinkEntities>" +
     " <q1:LinkEntity>" +
     " <q1:LinkFromAttributeName>systemuserid</q1:LinkFromAttributeName>" +
     " <q1:LinkFromEntityName>systemuserroles</q1:LinkFromEntityName>" +
     " <q1:LinkToEntityName>systemuser</q1:LinkToEntityName>" +
     " <q1:LinkToAttributeName>systemuserid</q1:LinkToAttributeName>" +
     " <q1:JoinOperator>Inner</q1:JoinOperator>" +
     " <q1:LinkCriteria>" +
     " <q1:FilterOperator>And</q1:FilterOperator>" +
     " <q1:Conditions>" +
     " <q1:Condition>" +
     " <q1:AttributeName>systemuserid</q1:AttributeName>" +
     " <q1:Operator>EqualUserId</q1:Operator>" +
     " </q1:Condition>" +
     " </q1:Conditions>" +
     " </q1:LinkCriteria>" +
     " </q1:LinkEntity>" +
     " </q1:LinkEntities>" +
     " </q1:LinkEntity>" +
     " </q1:LinkEntities>" +
     " </query>" +
     " </RetrieveMultiple>" +
     " </soap:Body>" +
     "</soap:Envelope>" +
     "";

     var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");

     xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
     xmlHttpRequest.setRequestHeader("SOAPAction"," http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
     xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
     xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
     xmlHttpRequest.send(xml);

     var resultXml = xmlHttpRequest.responseXML;
     return(resultXml);
    }

     

    if (!UserHasRole("NOMBRE DE TU ROL"))

    {

    crmForm.all.tab0Tab.style.display="none";

    }

     

    Recuerda que debes cambiar "[NOMBRE DE TU ROL]" por el rol con el que quieras trabajar además que  los Tabs empiezan en "0".


    Julio
    • Marcado como respuesta albertinson miércoles, 22 de diciembre de 2010 15:11
    lunes, 20 de diciembre de 2010 17:55

Todas las respuestas

  • Hola Albertinson, prueba lo siguiente:

    function UserHasRole(roleName)
    {
     //get Current User Roles, oXml is an object
     var oXml = GetCurrentUserRoles();
     if(oXml != null)
     {
      //select the node text
      var roles = oXml.selectNodes("//BusinessEntity/q1:name");
      if(roles != null)
      {
       for( i = 0; i < roles.length; i++)
       {
        if(roles[i].text == roleName)
        {
         //return true if user has this role
         return true;
        }
       }
      }
     }
     //otherwise return false

    return false;
    }

    function GetCurrentUserRoles()
    {
     var xml = "" +
     "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
     "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
     GenerateAuthenticationHeader() +
     " <soap:Body>" +
     " <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
     " <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
     " <q1:EntityName>role</q1:EntityName>" +
     " <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
     " <q1:Attributes>" +
     " <q1:Attribute>name</q1:Attribute>" +
     " </q1:Attributes>" +
     " </q1:ColumnSet>" +
     " <q1:Distinct>false</q1:Distinct>" +
     " <q1:LinkEntities>" +
     " <q1:LinkEntity>" +
     " <q1:LinkFromAttributeName>roleid</q1:LinkFromAttributeName>" +
     " <q1:LinkFromEntityName>role</q1:LinkFromEntityName>" +
     " <q1:LinkToEntityName>systemuserroles</q1:LinkToEntityName>" +
     " <q1:LinkToAttributeName>roleid</q1:LinkToAttributeName>" +
     " <q1:JoinOperator>Inner</q1:JoinOperator>" +
     " <q1:LinkEntities>" +
     " <q1:LinkEntity>" +
     " <q1:LinkFromAttributeName>systemuserid</q1:LinkFromAttributeName>" +
     " <q1:LinkFromEntityName>systemuserroles</q1:LinkFromEntityName>" +
     " <q1:LinkToEntityName>systemuser</q1:LinkToEntityName>" +
     " <q1:LinkToAttributeName>systemuserid</q1:LinkToAttributeName>" +
     " <q1:JoinOperator>Inner</q1:JoinOperator>" +
     " <q1:LinkCriteria>" +
     " <q1:FilterOperator>And</q1:FilterOperator>" +
     " <q1:Conditions>" +
     " <q1:Condition>" +
     " <q1:AttributeName>systemuserid</q1:AttributeName>" +
     " <q1:Operator>EqualUserId</q1:Operator>" +
     " </q1:Condition>" +
     " </q1:Conditions>" +
     " </q1:LinkCriteria>" +
     " </q1:LinkEntity>" +
     " </q1:LinkEntities>" +
     " </q1:LinkEntity>" +
     " </q1:LinkEntities>" +
     " </query>" +
     " </RetrieveMultiple>" +
     " </soap:Body>" +
     "</soap:Envelope>" +
     "";

     var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");

     xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
     xmlHttpRequest.setRequestHeader("SOAPAction"," http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
     xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
     xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
     xmlHttpRequest.send(xml);

     var resultXml = xmlHttpRequest.responseXML;
     return(resultXml);
    }

     

    if (!UserHasRole("NOMBRE DE TU ROL"))

    {

    crmForm.all.tab0Tab.style.display="none";

    }

     

    Recuerda que debes cambiar "[NOMBRE DE TU ROL]" por el rol con el que quieras trabajar además que  los Tabs empiezan en "0".


    Julio
    • Marcado como respuesta albertinson miércoles, 22 de diciembre de 2010 15:11
    lunes, 20 de diciembre de 2010 17:55
  • Muchas gracias Julio, lo pruebo y te comento el resultado, gracias!
    lunes, 20 de diciembre de 2010 18:33
  • Muchas gracias Julio, funciona perfectamente!

     

    Un saludo, Alberto

    miércoles, 22 de diciembre de 2010 15:11