A continuación mostraré las novedades que incorpora SageCRM 7.2 con lo que respecta a los
desarrolladores de SageCRM.
- Eliminación de los frames en la distribución de la pantalla
- Uso de campos Identidad dentro de SQL Server (ya no se usará la tabla SQL_Identity)
- La nueva API Cliente de SageCRM
- Posibilidad de crear librerías JavaScript compartidas para su uso dentro de SageCRM
1.
Eliminación de los frames en la
distribución de la pantalla
A
partir de la versión 7.2, ya no veremos la distribución de SageCRM en
Frames como teníamos hasta ahora.
<FRAMESET
COLS="105,*" BORDER="0" FRAMESPACING="0"
TOPMARGIN="0" LEFTMARGIN="0" MARGINHEIGHT="0"
MARGINWIDTH="0" >
<FRAMESET ROWS="70,0,24,*,0"
TOPMARGIN="0" FRAMEBORDER="1" LEFTMARGIN="0"
MARGINHEIGHT="0" MARGINWIDTH="0" BORDER="0"
ID="FIRSTSET" FRAMESPACING="0">
<FRAME
NAME="EWARE_LOGO"
SRC="/crm/eware.dll/Do?SID=36414435332549&Act=101&Mode=1&CLk=T"
FRAMEBORDER="0" MARGINHEIGHT="0"
MARGINWIDTH="0" SCROLLING="NO" NORESIZE>
<FRAME
NAME="EWARE_RECENT" SRC="/crm/eware.dll/Do?SID=36414435332549&Act=105&Mode=1&CLk=T"
FRAMEBORDER="0" MARGINHEIGHT="0"
MARGINWIDTH="0" SCROLLING="NO" NORESIZE>
<FRAME
NAME="EWARE_HISTORY"
SRC="/crm/eware.dll/Do?SID=36414435332549&Act=106&Mode=1&CLk=T"
FRAMEBORDER="0" MARGINHEIGHT="0"
MARGINWIDTH="0" SCROLLING="NO" NORESIZE>
<FRAME
NAME="EWARE_MENU"
SRC="/crm/eware.dll/Do?SID=36414435332549&Act=102&Mode=1&CLk=T"
FRAMEBORDER="0" MARGINHEIGHT="0"
MARGINWIDTH="0" SCROLLING="NO" NORESIZE>
<FRAME
NAME="EWARE_CTIBUTTONS" SRC="/crm/eware.dll/Do?SID=36414435332549&Act=103&Mode=1&CLk=T"
TOPMARGIN="0" LEFTMARGIN="0" MARGINHEIGHT="0"
MARGINWIDTH="0" FRAMEBORDER="0" BORDER="0"
BORDERCOLOR="#7384C6" NORESIZE>
</FRAMESET>
<FRAMESET ROWS="70,*,0,0,0"
TOPMARGIN="0" FRAMEBORDER="1" LEFTMARGIN="0"
MARGINHEIGHT="0" MARGINWIDTH="0" BORDER="0"
ID="SECONDSET" FRAMESPACING="0">
<FRAME
NAME="EWARE_TOP"
SRC="/crm/eware.dll/Do?SID=36414435332549&Act=103&Mode=1&CLk=T"
FRAMEBORDER="0" MARGINHEIGHT="0"
MARGINWIDTH="0" SCROLLING="NO" NORESIZE>
<FRAME NAME="EWARE_MID"
SRC="/crm/eware.dll/Do?SID=36414435332549&Act=103&Mode=4&CLk=T"
TOPMARGIN="0" LEFTMARGIN="0" MARGINHEIGHT="0"
MARGINWIDTH="0" FRAMEBORDER="0" BORDER="0">
<FRAME
NAME="EWARE_HIDDEN"
SRC="/crm/eware.dll/Do?SID=36414435332549&Act=103&Mode=1&CLk=T"
TOPMARGIN="0" LEFTMARGIN="0" MARGINHEIGHT="0"
MARGINWIDTH="0" FRAMESPACING="0"
FRAMEBORDER="0" BORDER="0"
BORDERCOLOR="#BDBDB8" NORESIZE >
<FRAME
NAME="EWARE_CTIOBJECT"
SRC="/crm/eware.dll/Do?SID=36414435332549&Act=103&Mode=1&CLk=T"
TOPMARGIN="0" LEFTMARGIN="0" MARGINHEIGHT="0"
MARGINWIDTH="0" FRAMEBORDER="0" BORDER="0"
BORDERCOLOR="#7384C6" NORESIZE>
<FRAME
NAME="EWARE_UPDATE"
SRC="/crm/eware.dll/Do?SID=36414435332549&Act=410&Mode=1&CLk="
FRAMEBORDER="0" MARGINHEIGHT="0"
MARGINWIDTH="0" SCROLLING="NO" NORESIZE>
</FRAMESET>
</FRAMESET>
|
Por
lo tanto, todo el contenido de las pantallas ya no estará insertado dentro de
FRAME “EWARE_MID”, sino que en cada response del servidor se generará toda la
página web (tanto el top content, como los botones del menú, como el contenido
de la página…)
En
la nueva versión se han substituido los frames por bloques <DIV>, que nos
permiten mediante las capas, posicionar los bloques en el sitio correspondiente
Y en que nos beneficia a los
desarrolladores de SageCRM la eliminación de los frames???
Principalmente
en 2 cosas:
- En la propia url que nos devuelve el navegador ya podremos ver los valores de las Keys correspondientes al contexto actual
- Cuando tengamos que abrir una url dentro de SageCRM o queramos acceder al top content, ya no será necesario indicarle el frame al que queremos acceder.
El
NO uso de los frames también nos aporta otra funcionalidad para los usuarios. El
uso de la barra de navegación del propio navegador, es decir, ahora podremos
volver hacia atrás o adelante directamente con los botones de atrás/delante de
navegador, ya no necesitamos los propios botones de navegación del CRM.
A
nivel de desarrolladores también hemos de tener en cuenta otra cosa. Cuando
queramos insertar un <SCRIPT> dentro de nuestra CustomPage.asp, ya no
podremos insertarlo directamente en la página, sino que lo tendremos que añadir
al contenido del objeto de CRM, mediante un bloque tipo Content o directamente
mediante el método AddContent. Esto es debido a que ahora cuando ejecutamos el
método Response.Write(CRM.GetPage(""));
se crea todo el HTML correspondiente, y por lo tanto todo lo que no esté dentro
del content del objeto del CRM=eWare, quedará fuera de las etiquetas
<HTML></HTML>, por lo tanto quedará fuera de la página web
resultante.
2.
Uso de campos Identidad dentro de SQL
Server (ya no se usará la tabla SQL_Identity)
En
las versiones anteriores a la 7.2 no teníamos campos tipo identidad en las
tablas SQL Server de SageCRM, y como consecuencia cada vez que se insertaba un
registro dentro de una tabla de SQL se tenía que buscar el id correspondiente
para insertar un valor único en la clave primaria de la tabla.
Para
hacer esto, internamente SageCRM lo que hacía es ir a la tabla SQL_Identity y
buscar el next_id correspondiente a la tabla sobre la cual íbamos a insertar el
registro. Una vez se insertaba el registro, dentro de la tabla SQL_Identity se
actualizaba el next_id con +1.
Por
lo tanto, si en algún caso teníamos que insertar un valor directamente sobre
SQL teníamos que ser conscientes de ir actualizando la tabla SQL_Identity y
asegurarnos que mientras se hacía la inserción, nadie desde SageCRM estubiese
insertando algún registro en esa misma tabla.
A
partir de la versión 7.2 ya no tendremos este problema ya que todas las claves
primarias de las tablas son campos identidad (comp_companyid, pers_personid,
addr_addresssid…) y como consecuencia es el propio SQL Server el que gestiona
este campo y lo incrementa en cada inserción.
Porque SageCRM no utilizaba campos
identidad???
El
causante era el “SageCRM SOLO”, ya que se sincronizaban empresas desde una Base
de Datos local con la Base de Datos central del servidor, y con campos
identidad no se podía asegurar una
robustez en los datos debido a que en las dos tablas se iban creando registros.
A
partir de la versión 7.2, el CRM SOLO deja de existir, y por lo tanto ya se han
podido crear los campos primarios como identidad.
3.
La nueva API Cliente de SageCRM
Esta
es la novedad más impactante y la funcionalidad que los
implantadores/desarrolladores de SageCRM más vamos a disfrutar.
Por
fin SageCRM ha creado una API Cliente que nos permite
modificar/ocultar/manipular datos de SageCRM directamente desde el navegador
del cliente. En definitiva, esta API no es más que una librería que se basa en
javascript y jQuery para poder manipular los objetos del DOM de la página web
resultante.
Hasta
la versión 7.0 la única forma de programar los scripts de modificación o de
contenido personalizado era mediante javascript puro.
En la
versión 7.1 ya se podía utilizar jQuery, con la ventaja de olvidarnos de tener
que vigilar el navegador sobre el que se ejecutase SageCRM, y pudiendo utilizar
muchas de las funcionalidades y simpleza que nos da jQuery (como podéis ver en
posts anteriores)
Finalmente,
a partir de la versión 7.2 ya tenemos el uso de la API Cliente de SageCRM, que
además de darnos toda la funcionalidad y simpleza que nos proporciona jQuery,
también nos permitirá directamente trabajar sobre los propios objetos de
SageCRM de una manera más simple y sencilla.
Por
ejemplo:
a. Resaltar
la fila/columna de una tabla según un valor de la tabla
b. Añadir
un Botón
c. Quitar
un Botón
d. Ocultar
una pestaña
e. Obtener
datos del CurrentUser
f. Modificar
Estilo de un campo (tamaño, color…)
g. Modificar
la etiqueta de un campo
h. Ocultar
Campos
i.
…
Resaltar la fila/columna de una tabla según
un valor de la tabla
Dentro
del script de contenido personalizado de la lista “CompanyGrid” añadiremos el
siguiente script, que lo único que hace es mediante la API Cliente de CRM,
pintar de color rojo (#FF6666) la fila de la lista que contiene en el campo
“comp_status” el valor Inactive (teniendo en cuenta la traducción
correspondiente)
<script>
crm.ready(function(){
crm.grids().filterWhere('comp_status', 'eq',
crm.getTrans('comp_status','Inactive')).highlightRow('#FF6666');
});
</script>
|
Veremos
más ejemplos de código y usos de la API Cliente en próximas entradas.
4.
Posibilidad de crear librerías
JavaScript compartidas para su uso dentro de SageCRM
A
partir de la versión SageCRM 7.2 podemos crear librerías JavaScript para
reutilizar código entre diferentes pantallas de SageCRM.
Lo
único que tenemos que hacer es crear un fichero .js, que contenga las funciones
que queremos “compartir”.
Este
fichero se tiene que poner dentro de la nueva carpeta que tenemos en WWWRoot,
que se llama “js”. (Todas las librerías personalizadas que hagamos, para
tenerlas identificadas las pondremos dentro de otra subcarpeta que se llama ”custom”)
El
propio SageCRM, cada vez que genera una página HTML, incluye en ella todas las librerías
que están dentro de la carpeta “js”. Como por ejemplo “jquery-1.8.2.min.js”, “crm.js”,
“CoCalendar.js”…
Ejemplo de
creación de una librería js.
Crearemos
una librería que contenga una función que modifique el Caption de un campo, poniéndolo
de color azul, y con un tamaño de letra de 14px.
Esta
función la podremos utilizar desde cualquier pantalla dónde podamos ejecutar un
JavaScript.
MisFunciones.js
Creamos
el fichero MisFunciones.js, dentro de la carpeta “js”.
La
primera línea de código nos permite añadir la función dentro del NameSpace “MisFunciones”.
(Para tener un poco más organizadas nuestras funciones)
La
función ResaltarCaption, recibe como parámetro el nombre del campo, y sobre
este campo lo que hace es cambiar el color y el tamaño de la letra del Caption
var MisFunciones = MisFunciones ||
{};
MisFunciones.ResaltarCaption = function (campo) {
var fcomp_name = crm.fields(campo);
fcomp_name.caption().color("blue");
fcomp_name.caption().fontSize(14);
}
|
Para
ejecutar este script, lo único que tenemos que hacer es llamarlo desde el
script de contenido personalizado de la página, o desde el script de
modificación (si fuese necesario). También se podría llamar desde una página
asp (siempre y cuando se incluya dentro de la sección de <SCRIPT>)
<script>
crm.ready(function(){
MisFunciones.ResaltarCaption("comp_name");
MisFunciones.ResaltarCaption("comp_type");
MisFunciones.ResaltarCaption("addr_country");
})
</script>
|
No hay comentarios:
Publicar un comentario