Almacenando arreglos en un campo

abril 26, 2016 • Publicado en Software y Hardware
Etiquetas:

Agregar las vistas

La primera plantilla que agregaremos será la plantilla para atender la edición.

/<directorio_crm>/modules/<Módulo>/templates/forEditView<Variable_Plural>.tpl

<script type="text/javascript" src="modules/<Módulo>/templates/scripts/<variable_plural>.js"></script>
<script>
	//Declarar los datos para el QuickSearch para la búsqueda de un establecimiento
	var sqs_<módulo_campo_quicksearch> = '{$sqs_<módulo_campo_quicksearch>}';
	//Declarar el objecto del QuickSearch como un arreglo vacío si aun no lo han declarado
	if(typeof sqs_objects == 'undefined') var sqs_objects = new Array;
</script>
<link rel="stylesheet" type="text/css" href="modules/<Módulo>/templates/styles/<variable_plural>.css" />
<table class='lista'>
	<tbody>
		<tr class='repositorio'>
			<td>
				<input type='hidden' name='<variable>[]' value='%rand%'>
				<input type='text' name='<variable>_<campo_a>_%rand%' value=''>
				<input type='text' name='<variable>_<campo_b>_%rand%' value=''>
				<input type='text'   name='<variable>_<campo_quicksearch>name_%rand%' id='<variable>_<campo_quicksearch>name_%rand%' value='' class='sqsEnabled'>
				<input type='hidden' name='<variable>_<campo_quicksearch>id_%rand%'   id='<variable>_<campo_quicksearch>id_%rand%'   value=''>
			</td>
			<td>
				<button type="button" onclick="remove<Variable>Item(this);">{sugar_getimage name="id-ff-remove-nobg" alt="$app_strings.LBL_ID_FF_REMOVE" ext=".png"}</button>
			</td>
		</tr>
		<tr class='cabecera'>
			<td><button type="button" onclick="rand = add<Variable>Item(this);  set<Variable>QuickSearch(rand, '<campo_quicksearch>', sqs_<módulo_campo_quicksearch>);">{sugar_getimage name="id-ff-add" alt="$app_strings.LBL_ID_FF_ADD" ext=".png"}</button></td>
		</tr>
		{foreach from=
lt;variable_plural> item=<variable>}{assign var=rand value=100000|mt_rand:999999}
		<tr>
			<td>
				<input type='hidden' name='<variable>[]' value='{$rand}'>
				<input type='text' name='<variable>_<campo_a>_{$rand}' value='{
lt;variable>.<campo_a>}'>
				<input type='text' name='<variable>_<campo_b>_{$rand}' value='{
lt;variable>.<campo_b>}'>
				<input type='text'   name='<variable>_<campo_quicksearch>name_{$rand}' id='<variable>_<campo_quicksearch>name_{$rand}' value='{
lt;variable>.<campo_quicksearch>name}' class='sqsEnabled'>
				<input type='hidden' name='<variable>_<campo_quicksearch>id_{$rand}'   id='<variable>_<campo_quicksearch>id_{$rand}'   value='{
lt;variable>.<campo_quicksearch>id}'>
			</td>
			<td>
				<button type="button" onclick="remove<Variable>Item(this);">{sugar_getimage name="id-ff-remove-nobg" alt="$app_strings.LBL_ID_FF_REMOVE" ext=".png"}</button>
			</td>
			<script type="text/javascript">
				 set<Variable>QuickSearch('{$rand}', '<campo_quicksearch>', sqs_<módulo_campo_quicksearch>);
			</script>
		</tr>
		{/foreach}
	</tbody>
</table>

La siguiente plantilla es la que visualiza la variable.

/<directorio_crm>/modules/<Módulo>/templates/forDetailView<Variable_Plural>.tpl

<ul>{foreach from=<variable_plural> item=<variable>}
<li>
A: {<variable>.<campo_a>} - B: {<variable>.<campo_b>} - {<variable>.<campo_quicksearch>name} - 
ID: {<variable>.<campo_quicksearch>id}
</li>
{/foreach}
</ul>

El siguiente es el archivo de estilo con el que ocultaremos el repositorio.

/<directorio_crm>/modules/<Módulo>/templates/styles/<variable_plural>.css

.lista .repositorio { display: none; }

El siguiente archivo es el script que atenderá las acciones en la lista. La documentación puede ayudar a entender el funcionamiento, pero en resumen el objetivo es eliminar la fila cuando se hace uso del botón eliminar, y agregar al final de la lista un clon del repositorio al usar el botón agregar.

/<directorio_crm>/modules/<Módulo>/templates/scripts/<variable_plural>.js

function add<Variable>Item( item ) {
	//Buscar la lista
	var lista = jQuery(item).parents('.lista')[0];
	//Buscar el repositorio y extraer el elemento
	var aux = jQuery(lista).find('tr.repositorio')[0];
	//Crear el clon del repositorio
	var clon = jQuery(aux).clone();
	//Crear el número aleatorio con el que identificaremos el item
	var rand = Math.ceil(Math.random() * 899999 + 100000);
	//Aplicar el identificador en el clon del repositorio
	var html = clon.html().replace(/%rand%/g, rand);
	clon.html(html);
	//Agregar el repositorio al final de la tabla
	clon.appendTo( jQuery(lista).find('tbody') );
	//Eliminar la clase repositorio del clon para permitir que se visualice.
	jQuery(clon).removeClass('repositorio');
	
	//Retornar el identificador de este nuevo item
	return rand;
}

function remove<Variable>Item( item ) {
	//Eliminar este item de la tabla
	jQuery(item).parents('tr')[0].remove();
}

function set<Variable>QuickSearch(rand, campo, sqs_data) {
	//Declarar el nuevo item de QuickSearch
	sqs_objects[ '<variable>_' + campo + 'name_' + rand] = jQuery.parseJSON(sqs_data.replace(/%rand%/g, rand));
	//Determinar el evento para vincular el nuevo item de QuickSearch con la activación del servicio
	SUGAR.util.doWhen(
		"typeof(sqs_objects) != 'undefined' && typeof(sqs_objects['<variable>_" + campo + "name_" + rand + "']) != 'undefined'",
			enableQS
	);
}

El último paso es agregar la declaración del idioma por defecto

/<directorio_crm>/modules/<Módulo>/language/en_us.lang.php

'LBL_<VARIABLE_PLURAL>' => 'Nombre de la variable',

A continuación ejecutamos la acción de “Reparar y Reconstruir“, poniendo especial atención a la lista de aciones que se viusalizarán al final del proceso con las acciones a ejecutar en la base de datos.

La variable ya estará disponible en la base de datos y en el estudio para ser agregado en las distintas vista.

Capí­tulos: | Anterior | 1 | 2 | 3 | 4 | Siguiente |

Dejar un Comentario