Source: http://docs.consumoteca.com/documents/preview/236
Timestamp: 2019-01-23 22:35:54+00:00

Document:
Alquiler de vivienda para uso vacacional - Genera Documentos Online - DOCXPRESSO
CONTRATO DE ARRENDAMIENTO DE USO TURÍSTICO O VACACIONAL SOMETIDO AL CÓDIGO CIVIL
En ciudad a fecha
De una parte, D/Dª arrendadora mayor de edad, con DNI DNI1 y con domicilio en la ciudad de ciudad1 C/ direccion-completa1 actuando como parte arrendadora.
De otra parte, D/Dª arrendataria mayor de edad, con DNI DNI2 y con domicilio en la ciudad de ciudad2 C/ direccion-completa2 actuando como parte arrendataria.
Las partes intervienen en su propio nombre y derecho, y se reconocen la capacidad legal necesaria para celebrar el presente contrato, a cuyo efecto
PRIMERO.- Que D/Dª arrendadora es dueño en pleno dominio del inmueble amueblado sito en la ciudad de ciudad3 C/ direccion-completa3 con una superficie construida de metros-cuadrados metros cuadrados, cuya superficie y composición así como demás características son perfectamente conocidas por los intervinientes. Se adjunta como anexo I al presente contrato, fotocopia del Certificado de eficiencia energética y como anexo II se adjunta relación del inventario del mobiliario y contenido de la vivienda, incluyendo los electrodomésticos de la vivienda.
SEGUNDO.- Que D/Dª. arrendataria ha convenido con D/Dª arrendadora el arrendamiento del inmueble amueblado anteriormente descrito que llevan a cabo por medio del presente contrato y con arreglo a las siguientes
PRIMERA.- DESTINO. Que D/Dª arrendadora arrienda a D/Dª arrendataria el inmueble descrito en el expositivo primero de este contrato para ser destinado a constituir vivienda temporal del arrendatario durante el periodo comprendido entre el fecha-inicio y el fecha-fin por motivo de vacaciones/ocio/turismo. Así, la vivienda objeto de este contrato no tendrá en ningún caso la finalidad de vivienda permanente del arrendatario.
La parte arrendataria no podrá modificar el destino mencionado sin el previo consentimiento por escrito del arrendador. El incumplimiento de este precepto será motivo de rescisión del contrato.
SEGUNDA.- ESTADO. El arrendatario declara recibir el inmueble en un buen estado de uso y conservación y se compromete a devolverlo en el mismo estado a la conclusión de la relación contractual.
TERCERA.- DURACIÓN. El presente contrato se acuerda por la temporada comprendida entre las 12:00h. del día fecha-inicio y las 12:00h. del día fecha-fin.
CUARTA.- RENTA. El arrendatario abonará al arrendador, en concepto de renta, la cantidad de cantidad-alquiler euros por la totalidad de la temporada. La forma de pago acordada por las partes consiste en la entrega del porcentaje-inicio% en este acto y el porcentaje-fin% restante en el momento en que el arrendatario reciba el inmueble para su disfrute, es decir, a las 12:00h. del día en que se inicia la temporada pactada para el arrendamiento.
Si a las 24h. del inicio de la temporada acordada por cualquier motivo no se hubiera hecho efectivo el pago pendiente del porcentaje-fin% de la renta pactada, el contrato de arrendamiento quedará automáticamente resuelto, teniendo absoluta libertad el arrendador para arrendar de nuevo la vivienda. Además, tendrá derecho el arrendador a no devolver el primer pago realizado por el arrendatario, como indemnización por los perjuicios causados.
QUINTA.- CESIÓN Y SUBARRIENDO. Con expresa renuncia a lo dispuesto en el artículo 1550 CC., el arrendatario se obliga a no subarrendar, en todo o en parte, el inmueble arrendado sin el consentimiento expreso y escrito del arrendador. Se prohibe en cualquier caso la cesión o traspaso del contrato. El incumplimiento de esta cláusula será causa de resolución del contrato.
SEXTA.- DERECHO DE ADQUISICIÓN PREFERENTE. Se acuerda que en caso de venta del inmueble arrendado no tendrá el arrendatario derecho de adquisición preferente sobre el mismo. El arrendador comunicará al arrendatario con treinta días de antelación a la fecha de formalización del contrato de compraventa su intención de vender el inmueble.
SÉPTIMA.- OBRAS. No podrá realizar la parte arrendataria ningún otro tipo de obra o modificación en el inmueble o edificio al que pertenece sin el consentimiento expreso de la parte arrendadora.
A pesar de no tener la consideración de obra, se prohíbe expresamente al arrendatario la realización de agujeros o perforaciones en las paredes del inmueble, descontándose de la fianza el importe que sea necesario para que las paredes recuperen su estado original en su caso.
OCTAVA.- GASTOS GENERALES. Los gastos de comunidad serán de cuenta de la parte arrendadora.
Los gastos por servicios con que cuente el inmueble arrendado que se individualicen mediante aparatos contadores (agua, luz, gas, teléfono etc.) serán de cuenta del arrendador, así como el alta y la baja en los referidos suministros si ello fuese necesario.
Los gastos comunes extraordinarios y el Impuesto sobre Bienes Inmuebles será de cuenta del arrendador.
NOVENA.- CLAUSULA DE PENALIZACIÓN EXPRESA. La parte arrendataria hará entrega de las llaves del inmueble en la fecha de finalización del presente contrato. De realizar la entrega más tarde, el arrendatario abonará al arrendador la cantidad de euros-retraso euros por cada día de retraso en la puesta a disposición de las llaves de la vivienda, en concepto de cláusula penal, además de todos los gastos que directos e indirectos que dicho retraso generen de cara a la recuperación de la vivienda. Todo ello siempre que las partes no hubieran acordado por escrito una prórroga de la temporada inicialmente pactada, en cuyo caso se estará a lo acordado en el documento de prórroga.
DÉCIMA.- NORMAS DE CONVIVENCIA. La parte arrendataria se someterá durante toda la vigencia del contrato a las normas de la comunidad de propietarios, especialmente las relativas a la convivencia. Se prohíbe expresamente la estancia de cualquier tipo de animal en la vivienda.
DÉCIMO PRIMERA.- FIANZA. A la firma de este contrato el arrendatario hace entrega al arrendador en concepto de fianza de la cantidad de fianza euros en metálico.
El saldo de la fianza en metálico que deba ser restituido al arrendatario al final del arriendo, devengará el interés legal, transcurrido un mes desde la entrega de las llaves por el mismo sin que se hubiere hecho efectiva dicha restitución.
DÉCIMO SEGUNDA.- INCUMPLIMIENTO DE OBLIGACIONES. El incumplimiento por cualquiera de las partes de las obligaciones resultantes del contrato dará derecho a la parte que hubiere cumplido las suyas a exigir el cumplimiento de la obligación o a promover la resolución del contrato de acuerdo con lo dispuesto en el artículo 1.124 del Código Civil.
Además, el arrendador podrá resolver de pleno derecho el contrato por las siguientes causas establecidas en el artículo 1569 CC: 1ª Haber expirado el término convencional o el que se fija para la duración de los arrendamientos en los artículos 1.577 y 1.581; 2ª Falta de pago en el precio convenido; 3ª Infracción de cualquiera de las condiciones estipuladas en el contrato; y 4ª Destinar la cosa arrendada a usos o servicios no pactados que la hagan desmerecer; o no sujetarse en su uso a lo que se ordena en el número 2.º del artículo 1.555.
DÉCIMO TERCERA.- DOMICILIO A EFECTO DE NOTIFICACIONES. Las partes fijan como domicilio a efectos de notificaciones derivadas de la relación contractual el que figura para cada uno de ellos en el encabezamiento del contrato. Deberán notificarse mutuamente una parte a la otra cualquier cambio que se produzca en este sentido.
DÉCIMO CUARTA.- LEGISLACIÓN APLICABLE. Queda expresamente excluida la aplicación de la ley 29/1994 de arrendamientos urbanos a la presente relación arrendaticia, por disposición de la letra “e” del artículo 5 de dicha Ley, por lo que el presente contrato se regulará por las normas en él contenidas y, en lo no pactado por las partes, por las normas del Código Civil.
DÉCIMO QUINTA.- SUMISIÓN. Los contratantes se someten expresamente a los Juzgados y Tribunales de la ciudad en la que se encuentra ubicado el inmueble arrendado, para todas aquellas cuestiones litigiosas que pudieran derivarse del mismo.
Y con el carácter expresado en la intervención, firman el presente contrato por duplicado, en el lugar y fecha indicados.
EL/LA Arrendador/a
EL/LA Arrendatario/a
').appendTo(sel); sel.val(other); sel.parent().find('span.h5p_varspan').text(other); sel.webuiPopover('destroy'); sel.click(function(){ if($(this).val() != ''){ $(this).next().find('span:first').html($(this).val()); } if(data.global){ $('select[data-reference="' + data.name+ '"]').val($(this).val()); $('select[data-reference="' + data.name+ '"]').next().find('span:first').html($(this).val()); } }); } else { toastr.error('Debe incluir un valor no vacío.', 'Aviso'); } } $(document).ready(function(){ $(window).scroll(function() { if ( $(window).scrollTop() > 240 ) { $('#goTop').fadeIn('slow'); } else { $('#goTop').fadeOut('slow'); } }); $('#goTop').click(function() { $('body, html').animate({scrollTop: 0}, 500); return false; }); //Preset saveModal values //preselect the first available format $("#saveModal").find('input[type="radio"]:first').prop('checked', true); skipOutputModal = false; //special case of preview version $('#gobacktoHistory').click(function(){ window.location.href=decodeURIComponent(''); }); // set a variable to hold a reference to the current active //text area var currentTextArea = null; //parse GET query var query = $.parseQuery(); var progressTimer = 2000; serverData = false; local = localStorage.getItem("preview_236"); localTime = localStorage.getItem("previewTime_236"); if (local !== null && !serverData) { $('#loadLocalData').click(function(){ retrieveLocalData(); }); $('#localModal').modal('show'); } if (serverData) { $('#serverModal').modal('show'); } var loadedData = 'false'; var preparsedServerData = $('
'); if (dxo[myVar]['global'] === true) { var varspan = $('.h5p_varspan[data-name="' + myVar + '"]') } else { var varspan = currentTextArea.find('.h5p_varspan[data-name="' + myVar + '"]') } preparseWYSIWYG(varspan, textarea); currentTextArea = null; $('#textareaModal').modal('hide'); }); $('.summernoteComments').summernote({ height: 70, toolbar: [ ['font', ['bold', 'italic', 'underline', 'clear']], ['para', ['ul', 'ol']], ], 'lang': 'es' }); //parse RPC data //jsonp callbacks function rpc_callback(){ //do nothing } function remoteProcedureCallsDropdowns () { l = window.rpcs.length; for (var j = 0; j < l; j++) { var val = window.rpcs[j].slice(); populateDropdown(val[0], val[1], val[2], val[3]); }; } function populateDropdown (name, rpcurl, type, trigger) { $.ajax({ url: rpcurl, crossDomain: true, dataType: "jsonp", cache: false, // parse response success: function( options ) { for (var k=0; k < options.length; k++) { var key = options[k][0]; if (options[k][1] != '') { var value = options[k][1]; } else { var value = options[k][0]; } $('select[data-list="' + name + '"]').each(function(){ $(this).removeAttr('disabled'); $(this).css('opacity', 1); $(this).children('option').attr('disabled'); if (value.charAt(0) == '@') { value = value.substring(1); optionData = '' + key + ''; $(this).parent().find('span.h5p_varspan').html(value); } else { optionData = '' + key + ''; } $(this).append($(optionData)); }); } if (type == 'rpc' && trigger != 0) { //let us activate the associated rpc trigger $('select[data-list="' + name + '"]').each(function(){ $(this).change(function(){ RemoteCallFromDropdown($(this), trigger); }); }); } if (serverData && typeof dataToLoadFromServer.varValues[name] !== 'undefined') { //make sure that the server data is reloaded var serverValues = {}; serverValues[name] = dataToLoadFromServer.varValues[name]; replaceVars(serverValues, false); } //we have to make sure that there were no previously loaded local data if (window.localDataLoaded) { loadSingleVarFromLocal(name); } }, error: function( xhr, status, errorThrown ) { //alert( "Sorry, there was a problem!" ); console.log( "Error: " + errorThrown ); console.log( "Status: " + status ); console.dir( xhr ); } }); } function RemoteCallFromDropdown(node, trigger) { rpcurl = rpcData[trigger]['url']; rpcurl += '?callback=?&method=' + rpcData[trigger]['method']; rpcurl += '×tamp=' + rpcData[trigger]['timestamp']; rpcurl += '&uniqid=' + rpcData[trigger]['uniqid']; rpcurl += '&APIKEY=' + rpcData[trigger]['APIKEY']; rpcurl += '&' + rpcData[trigger]['params'] + '=' + node.val(); $.ajax({ url: rpcurl, crossDomain: true, dataType: "jsonp", cache: false, // parse response success: function( data ) { if (typeof data.replaceMode != 'undefined' && data.replaceMode == 'row') { //find the enclosing tbody element var tbody = node.parents('tbody:first'); for (name in data) { if (data.hasOwnProperty(name)){ if (typeof dxo[name] != 'undefined') { var type = dxo[name]['type']; if (type == 'image') { var selector = tbody.find('img[data-image="' + name + '"]'); selector.attr('src', data[name]); } else { var selector = tbody.find('span.h5p_varspan[data-name="' + name + '"]'); selector.html(data[name]); //set the focus so special variables are updated selector.focus(); } } } } } else { //clone the blocks cloneBlocks(data.blocks); //replace variables replaceVars(data.varValues, false); //replace spacial variables replaceVars(data.specialVarValues, true); } }, error: function( xhr, status, errorThrown ) { //alert( "Sorry, there was a problem!" ); console.log( "Error: " + errorThrown ); console.log( "Status: " + status ); console.dir( xhr ); } }); } //parse general data json = '{"data":[{"name":"ciudad","label":"ciudad","tip":"ciudad","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7569},{"name":"fecha","label":"fecha","tip":"fecha","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7569},{"name":"arrendadora","label":"arrendadora","tip":"arrendadora","comment":"
","type":"text","options":"","list":"","rpc":"","global":false,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.757},{"name":"DNI1","label":"DNI1","tip":"DNI1","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.757},{"name":"ciudad1","label":"ciudad1","tip":"ciudad1","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.757},{"name":"direccion-completa1","label":"direccion-completa1","tip":"direccion-completa1","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7571},{"name":"arrendataria","label":"arrendataria","tip":"arrendataria","comment":"
","type":"text","options":"","list":"","rpc":"","global":false,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7571},{"name":"DNI2","label":"DNI2","tip":"DNI2","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7571},{"name":"ciudad2","label":"ciudad2","tip":"ciudad2","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7572},{"name":"direccion-completa2","label":"direccion-completa2","tip":"direccion-completa2","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7572},{"name":"ciudad3","label":"ciudad3","tip":"ciudad3","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7572},{"name":"direccion-completa3","label":"direccion-completa3","tip":"direccion-completa3","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7573},{"name":"metros-cuadrados","label":"metros-cuadrados","tip":"metros-cuadrados","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7573},{"name":"fecha-inicio","label":"fecha-inicio","tip":"fecha-inicio","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7574},{"name":"fecha-fin","label":"fecha-fin","tip":"fecha-fin","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7574},{"name":"cantidad-alquiler","label":"cantidad-alquiler","tip":"cantidad-alquiler","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7575},{"name":"porcentaje-inicio","label":"porcentaje-inicio","tip":"porcentaje-inicio","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7575},{"name":"porcentaje-fin","label":"porcentaje-fin","tip":"porcentaje-fin","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7575},{"name":"euros-retraso","label":"euros-retraso","tip":"euros-retraso","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7576},{"name":"fianza","label":"fianza","tip":"fianza","comment":"
","type":"text","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7577},{"name":"firma-vendedor","label":"firma-vendedor","tip":"firma-vendedor","comment":"
","type":"image","source":"picture","format":"preserveWidth","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7577},{"name":"firma-comprador","label":"firma-comprador","tip":"firma-comprador","comment":"
","type":"image","source":"picture","format":"preserveWidth","options":"","list":"","rpc":"","global":true,"choice":"dropdown","editable":true,"richText":true,"validation":"none","exp":"","regex":"","addTo":[],"timestamp":1465591805.7577}],"groups":[{"type":"table","bookmark":"","active":true,"groupId":"f5ffc2560de170bcc5419d4881923a2d","variables":["arrendadora","arrendataria"],"display":"show","toggleWith":null,"toggleValues":null,"timestamp":1465591805.7578}],"special":[],"signatures":[],"settings":{"numberFormat":".,","outputFormat":["odt","pdf","doc","docx","doc-legacy","rtf"],"outputComments":0,"timestamp":1465591805.758}}'; docxpressoData = JSON.parse(json); console.log(docxpressoData); numData = docxpressoData.data.length; numGroups = docxpressoData.groups.length; console.log(numGroups); numSpecial = docxpressoData.special.length; //get the number format as an array preformat = docxpressoData.settings.numberFormat; window.format = preformat.split(''); //we need to retrieve the default values for validation in case we //load some server data ref = '{"ciudad":"ciudad","fecha":"fecha","arrendadora":"arrendadora","DNI1":"DNI1","ciudad1":"ciudad1","direccion-completa1":"direccion-completa1","arrendataria":"arrendataria","DNI2":"DNI2","ciudad2":"ciudad2","direccion-completa2":"direccion-completa2","ciudad3":"ciudad3","direccion-completa3":"direccion-completa3","metros-cuadrados":"metros-cuadrados","fecha-inicio":"fecha-inicio","fecha-fin":"fecha-fin","cantidad-alquiler":"cantidad-alquiler","porcentaje-inicio":"porcentaje-inicio","porcentaje-fin":"porcentaje-fin","euros-retraso":"euros-retraso","fianza":"fianza","firma-vendedor":"firma-vendedor","firma-comprador":"firma-comprador"}'; refData = JSON.parse(ref); var dxoGroups = {}; var dxoSpecial = {}; //we first need to parse block dependencies for (j = 0; j < numGroups; j++) { dataGroup = docxpressoData.groups[j]; if (dataGroup.toggleWith !== null) { if (typeof window.dependencies[dataGroup.toggleWith] == 'undefined') { window.dependencies[dataGroup.toggleWith] = {}; window.dependencies[dataGroup.toggleWith][dataGroup.groupId] = dataGroup.toggleValues; } else { window.dependencies[dataGroup.toggleWith][dataGroup.groupId] = dataGroup.toggleValues; } } } delete dataGroup; //generate dxoGroups for the data parsing for (j = 0; j < numGroups; j++) { dxoGroups[docxpressoData.groups[j].groupId] = docxpressoData.groups[j]; console.log('***dxoGroups***'); console.log(dxoGroups); } //parse now the general data $.each(docxpressoData.data, function(index) { dxo[docxpressoData.data[index].name] = docxpressoData.data[index]; var decorate = true; if (window.prefix != '') { //check if the variable name starts with window.prefix + '_' var varname = docxpressoData.data[index].name; var blockPrefix = window.prefix + '_'; if (varname.indexOf(blockPrefix) != 0) { decorate = false; dxo[docxpressoData.data[index].name]['editable'] = false; } } if (docxpressoData.data[index].type == 'text') { decorateTextVar(docxpressoData.data[index], 'text', decorate); } else if (docxpressoData.data[index].type == 'multilineText') { decorateTextVar(docxpressoData.data[index], 'multilineText', decorate); } else if (docxpressoData.data[index].type == 'textarea') { decorateTextVar(docxpressoData.data[index], 'textarea', decorate); } else if (docxpressoData.data[index].type == 'date') { decorateDateVar(docxpressoData.data[index], decorate); } else if (docxpressoData.data[index].type == 'options') { decorateOptionsVar(docxpressoData.data[index], decorate); } else if (docxpressoData.data[index].type == 'list') { decorateListVar(docxpressoData.data[index], 'list', decorate); } else if (docxpressoData.data[index].type == 'rpc') { decorateListVar(docxpressoData.data[index], 'rpc', decorate); } else if (docxpressoData.data[index].type == 'image') { decorateImageVar(docxpressoData.data[index], decorate); } }); //parse Groups for (j = 0; j < numGroups; j++) { if (docxpressoData.groups[j].type == 'table') { decorateTable(docxpressoData.groups[j].groupId, docxpressoData.groups[j].active); } else if (docxpressoData.groups[j].type == 'list') { decorateList(docxpressoData.groups[j].groupId, docxpressoData.groups[j].active); } else if (docxpressoData.groups[j].type == 'block') { decorateBlock(docxpressoData.groups[j]); } } //populate "remote dropdowns" remoteProcedureCallsDropdowns(); //decorate multiselects $('select[multiple]').multiselect({ onChange: function(option, checked, select) { reference = $(this)[0]['$select'].data('reference'); window.multiselects[reference] = $('select[data-reference="' + reference + '"]').val(); } }); //remove the first selected value in multiselects $('select[multiple]').each(function(){ var label = decodeURI($(this).data('label')); $(this).multiselect('deselect', label); $(this).next().find('input[value="' + label + '"]').prop('disabled', true); }); for (j = 0; j < numSpecial; j++) { if (typeof dxoSpecial[docxpressoData.special[j].name] == 'undefined') { decorateSpecial(docxpressoData.special[j]); dxoSpecial[docxpressoData.special[j].name] = docxpressoData.special[j]; } } //Text variables function decorateTextVar (data, type, decorate) { span = $('span.h5p_varspan[data-name="' + data.name + '"]'); span.each(function(){ if (data.validation == 'email'){ if (window.emails.indexOf(data.name) < 0){ window.emails.push(data.name); } } if (data.editable && decorate) { if (data.global) { $(this).attr('data-global', '1'); } if (typeof data.value !== 'undefined') { $(this).html(decodeDXO(data.value)); } else { $(this).html(decodeDXO(data.label)); } spanParent = $(this).parents('span.spanWrapper:first'); //enforce original span CSS props parentTag = $(spanParent).parent(); parentTagName = $(parentTag).prop('tagName'); if (parentTagName.toLowerCase() == 'span') { var classes = $(parentTag).attr('class'); if (typeof classes == 'string' && classes != '') { $(span).attr('class', classes + ' h5p_varspan'); } } if (type == 'textarea') { $('
').prependTo(spanParent); } else { spanParent.addClass('spanWrapperBackground'); spanParent.addClass('spanWrapperIcon'); //$(' ').prependTo(spanParent); } spanParent.data('label', data.label); spanParent.data('name', data.name); spanParent.data('type', type); if (type == 'textarea') { $(this).removeAttr('contenteditable'); span.attr('style', 'display: inline-block'); } } else { $(this).removeAttr('contenteditable'); } }); console.log(window.emails); } //Date variables function decorateDateVar (data, decorate) { span = $('span.h5p_varspan[data-name="' + data.name + '"]'); span.each(function(){ if (data.editable && decorate) { if (data.global) { $(this).attr('data-global', '1'); } if (typeof data.value !== 'undefined') { $(this).html(decodeDXO(data.value)); } else { $(this).html(decodeDXO(data.label)); } spanParent = $(this).parents('span.spanWrapper:first'); spanParent.addClass('spanWrapperBackground'); parentTag = $(spanParent).parent(); parentTagName = $(parentTag).prop('tagName'); if (parentTagName.toLowerCase() == 'span') { var classes = $(parentTag).attr('class'); if (typeof classes == 'string' && classes != '') { $(span).attr('class', classes + ' h5p_varspan'); } } $(' ').prependTo(spanParent); spanParent.data('label', data.label); spanParent.data('name', data.name); if (typeof data.exp === 'undefined') { data.exp = 'dd/mm/yyyy'; } $(spanParent).datepicker({format: data.exp, todayHighlight: true, autoclose: true, language: 'es'}); $(spanParent).on("changeDate", function(event) { $(this).children('span:first').html( $(this).datepicker('getFormattedDate') ); $(this).datepicker('hide'); }); } else { $(this).removeAttr('contenteditable'); } }); } //Select variables function decorateListVar (data, type, decorate) { span = $('span.h5p_varspan[data-name="' + data.name + '"]'); var counter = 0; $.each(span, function(){ if (data.editable && decorate){ if (data.global) { $(this).attr('data-global', '1'); } if (typeof data.value !== 'undefined') { $(this).html(decodeDXO(data.value)); } else { $(this).html(decodeDXO(data.label)); } spanParent = $(this).parents('span.spanWrapper:first'); $(' ').prependTo(spanParent); spanParent.data('label', data.label); spanParent.data('name', data.name); spanParent.css('display', 'none'); var selectData = ' '; selectData += '' + decodeDXO(data.label) + ''; selectData += ' '; spanParent.before(selectData); spanParent.prev().click(function(){ if($(this).val() != ''){ $(this).next().find('span:first').html($(this).val()); } if(data.global){ $('select[data-reference="' + data.name+ '"]').val($(this).val()); $('select[data-reference="' + data.name+ '"]').next().find('span:first').html($(this).val()); } }); if (typeof window.dependencies[data.name] != 'undefined') { spanParent.prev().change(function(){ modifyBlockVisibility(data.name, $(this).val()); }); } //get the options from the resource if (counter == 0){ //this condition is to avoid loading the same resource more than once trigger = 0; if (type == 'list') { var rpcurl = "http://docs.consumoteca.com/auxdata/resourcedata?callback=?&id=" + data.list; } else { rpc = window.rpcData[data.rpc]; var rpcurl = rpc.url; params = []; defaultParamValues = []; if (typeof rpc.params !== 'undefined') { params = rpc.params.split(';'); } if (typeof rpc.defaultParamValues !== 'undefined') { defaultParamValues = rpc.defaultParamValues.split(';'); } getParams = '?callback=?&method=' + rpc.method; getParams += '×tamp=' + rpc.timestamp; getParams += '&uniqid=' + rpc.uniqid; getParams += '&APIKEY=' + rpc.apikey; getParams = '&'; len = params.length; for (var n = 0; n < len; n++) { getParams += params[n] + "="; if(typeof query[params[n]] == 'undefined'){ if (typeof defaultParamValues[n] !== 'undefined' && defaultParamValues[n] !== '') { message = rpc.prompt.replace('%param%', params[n]); answer = prompt(message, defaultParamValues[n]); } else { answer = prompt('Por favor, inserte el valor requerido', params[n]); } if (answer !== null){ getParams += answer; } else if (typeof defaultParamValues[n] !== 'undefined' ){ getParams += defaultParamValues[n]; } else { getParams += 'undefined'; } } else { getParams += query[params[n]]; } getParams += '&'; } rpcurl += getParams; if (typeof rpc.trigger != 'undefined') { trigger = rpc.trigger; } } window.rpcs.push([data.name, rpcurl, type, trigger]); } counter++; } else { $(this).removeAttr('contenteditable'); } //change visibility on load modifyBlockVisibility(data.name, $(this).val()); }); } function decorateOptionsVar (data, decorate) { span = $('span.h5p_varspan[data-name="' + data.name + '"]'); if (typeof data.choice === 'undefined' || data.choice === 'dropdown' || data.choice === 'multipleSelect'){ span.each(function(){ if (data.global) { $(this).attr('data-global', '1'); } if (typeof data.value !== 'undefined') { $(this).html(decodeDXO(data.value)); } else { $(this).html(decodeDXO(data.label)); } spanParent = $(this).parents('span.spanWrapper:first'); $(' ').prependTo(spanParent); spanParent.data('label', data.label); spanParent.data('name', data.name); spanParent.css('display', 'none'); var selectData = ' '; selectData += '' + decodeDXO(data.label) + ''; optionStr = decodeDXO(data.options); options = optionStr.split(';'); for (var k=0; k < options.length; k++) { if (options[k].charAt(0) == '@') { opt = options[k].substring(1); selectData += '' + opt + ''; $(this).html(opt); } else if (options[k].charAt(0) == '#') { opt = options[k].substring(1); selectData += '' + opt + ''; } else { selectData += '' + options[k] + ''; } } selectData += ' '; spanParent.before(selectData); spanParent.prev().click(function(){ if($(this).val() != ''){ $(this).next().find('span:first').html($(this).val()); } if(data.global){ $('select[data-reference="' + data.name+ '"]').val($(this).val()); $('select[data-reference="' + data.name+ '"]').next().find('span:first').html($(this).val()); } }); if (typeof window.dependencies[data.name] !== 'undefined') { spanParent.prev().change(function(){ modifyBlockVisibility(data.name, $(this).val()); }); } //change visibility on load modifyBlockVisibility(data.name, spanParent.prev().val()); }); } else if (data.choice === 'radio' || data.choice === 'checkbox') { optionStr = decodeDXO(data.options); options = optionStr.split(';'); olength = options.length; span.each(function(index){ spanParent = $(this).parents('span.spanWrapper:first'); spanParent.data('label', data.label); spanParent.data('name', data.name); $(this).addClass('choice'); $(this).attr('contenteditable', false); $(this).html(''); opt = options[index % olength]; if (opt.charAt(0) == '@') { opt = opt.substring(1); var element = ' '; } else { var element = ' '; } choice = $(element).appendTo($(this)); if (typeof window.dependencies[data.name] !== 'undefined') { choice.change(function(){ choices = $('input[name="' + data. name + '"]:checked'); if (choices.length > 0) { choices.each(function(){ modifyBlockVisibility(data.name, $(this).val()); }); } else { modifyBlockVisibility(data.name, '--toggle--it'); } }); } }); //change visibility on load choices = $('input[name="' + data. name + '"]:checked'); if (choices.length > 0) { choices.each(function(){ modifyBlockVisibility(data.name, $(this).val()); }); } else { modifyBlockVisibility(data.name, '--toggle--it'); } } } function updateSelects(){ $('select[data-reference]').each(function(){ selData = $(this).next().find('.h5p_varspan').text(); if (selData != decodeURIComponent($(this).attr('data-reference')) && selData != '') { //the first condition is to avoid trying to update the select to its placeholder value $(this).val(selData); } }); $('select[data-reference][multiple]').each(function(){ var name = $(this).attr('data-reference'); if (typeof window.multiselects[name] !== 'undefined') $(this).val(window.multiselects[name]); }); } //image variables function decorateImageVar (data, decorate) { img = $('img[data-image="' + data.name + '"]'); img.each(function(){ if (data.editable && decorate) { $(this).removeAttr('title'); if (data.global) { $(this).attr('data-global', '1'); } if (typeof data.value !== 'undefined') { $(this).attr('src', data.value); } //populate the original images object with the original value on pre-load imageValue = img.attr('src'); if (window.originalImages.hasOwnProperty(data.name)) { window.originalImages[data.name].push(imageValue); } else { window.originalImages[data.name] = []; window.originalImages[data.name][0] = imageValue; } inputImage = $(' '); $(this).before(inputImage); preImageNode = ' '; $(preImageNode).insertBefore(this); $(inputImage).change(function() { var fileReader = new FileReader(), files = this.files, input = this, file; if (!files.length) { return; } file = files[0]; if (/^image\/\w+$/.test(file.type)) { fileReader.readAsDataURL(file); fileReader.onload = function () { if(dxo[data.name]['global']) { $('img[data-image="' + data.name + '"]').attr('src', this.result); } else { $(input).parent().children('img[data-image="' + data.name + '"]').attr('src', this.result); } }; //take care of potential resizing format = dxo[data.name]['format']; if (format == 'preserveWidth') { $('img[data-image="' + data.name + '"]').css('height', 'auto'); $('img[data-image="' + data.name + '"]').parent().css('height', 'auto'); } else if (format == 'preserveHeight') { $('img[data-image="' + data.name + '"]').css('width', 'auto'); $('img[data-image="' + data.name + '"]').parent().css('width', 'auto'); } else if (format == 'redimension') { $('img[data-image="' + data.name + '"]').css('width', 'auto'); $('img[data-image="' + data.name + '"]').css('height', 'auto'); $('img[data-image="' + data.name + '"]').parent().css('width', 'auto'); $('img[data-image="' + data.name + '"]').parent().css('height', 'auto'); } //because images can be hidden grab now its size window.imageSize[name] = {}; window.imageSize[name]['width'] = $('img[data-image="' + data.name + '"]').css('width'); window.imageSize[name]['height'] = $('img[data-image="' + data.name + '"]').css('height'); } else { toastr.error('por favor, escoja un archivo tipo imagen.', 'Aviso'); } }); } else { $(this).removeAttr('contenteditable'); } }); } //special variable function decorateSpecial (data) { span = $('span.h5p_varspecial[data-name="' + data.name + '"]'); span.each(function(){ spanParent = $(this).parents('span.spanWrapperSpecial:first'); parentTag = $(spanParent).parent(); parentTagName = $(parentTag).prop('tagName'); if (parentTagName.toLowerCase() == 'span') { var classes = $(parentTag).attr('class'); if (typeof classes == 'string' && classes != '') { $(span).attr('class', classes + ' h5p_varspecial'); } } if (typeof data.value !== 'undefined') { $(this).html(decodeDXO(data.value)); } else { $(this).html(decodeDXO(data.label)); } $(' ').prependTo(spanParent); spanParent.data('label', data.label); spanParent.data('name', data.name); }); } //block visibility function modifyBlockVisibility(name, value){ for (blocks in window.dependencies[name]) { groupId = blocks; values = window.dependencies[name][groupId]; var tmp = values.split(';'); console.log('***dxoGroups***'); console.log(dxoGroups); display = dxoGroups[groupId]['display']; div = $('*[data-id="' + groupId + '"]'); if (tmp.indexOf(encodeURI(value.trim())) > -1 || tmp.indexOf(value.trim()) > -1){ //toggle visibility if (display === 'show') { $(div).hide(); } else { $(div).show(); } } else { //recover original state if (display === 'show') { $(div).show(); } else { $(div).hide(); } } } } //TABLES //transform tables into responsive tables function decorateTable (groupId, active){ //we should also check that there is at least an editable variable within var editable = false; var innerVars = dxoGroups[groupId].variables; var n = innerVars.length; for (var j = 0; j < n; j++){ if (dxo[innerVars[j]].editable){ editable = true; } } //run over the variables inside the group to check that there is at least an editable one if (active == false || editable == false) { $( "table[data-id='" + groupId + "'] tbody.h5p_clone_row_group > tr.h5p_rowgroup" ).removeClass('h5p_rowgroup'); $( "table[data-id='" + groupId + "'] tbody.h5p_clone_row_group" ).eq(0).removeClass('h5p_clone_row_group'); return false; } TB = $( "table[data-id='" + groupId + "'] tbody.h5p_clone_row_group" ); //insert the buttons and handlers leftTools = '
').text().trim() != ''){ $(helper).prependTo(page); } $('.h5p-help').css('top', y - 75).show(); }); $('span.spanWrapperSpecial').mouseleave(function(){ $('#h5p-tooltip-wrapper').hide(); $('.h5p-help').remove(); }); $('span.spanWrapperSpecial').click(function(){ $('#h5p-tooltip-wrapper').hide(); }); //RICH TEXT EDITOR $('*[data-proc]').click(function(){ cmd = $(this).data('proc'); if (typeof $(this).data('value') !== 'undefined') { value = $(this).data('value'); } else { value = null; } document.execCommand(cmd, false, value); }); //ATTACHMENTS $('.loadFile').click(function(){ $('input[name="' + $(this).attr('data-file') + '"]').click(); }); $('input.fileAttached').change(function(){ name = $(this).attr('name'); $('small[data-file="' + name + '"]').html($(this)[0].files[0].name); window.attachments[name]['file'] = $(this)[0].files[0].name; }); $('#saveContinue').click(function(){ $("#attachmentModal").modal('hide'); if (skipOutputModal == true){ $('#saveAndDownload').click(); } else { $("#saveModal").modal('show'); } }); //FORM $('.i-checks').iCheck({ checkboxClass: 'icheckbox_square-green', radioClass: 'iradio_square-green' }); $('#cancel').click(function(){ $("#cancelModal").modal('show'); }); $('#cancelGo').click(function(){ window.warning = false; //window.location.href = 'http://docs.consumoteca.com/documents/show/236'; window.history.back(); }); $('#process').click(function(){ window.location.href = 'http://docs.consumoteca.com/documents/process/236'; }); $('#attachPane').click(function(){ openAttachmentPad(); }); //parsing the HTML $('#validate').click(function(){ validateModal(true, true); }); //check if the required data has been included and if it is valid or function validata() { var totalFields = 0; var validations = {}; var attachs = {}; var filled = {}; var valid = {}; //check for attachments checkAttachments(); for (var file in window.attachments) { if (window.attachments.hasOwnProperty(file)){ if (window.attachments[file]['active']){ if (typeof window.attachments[file]['file'] !== 'undefined' && window.attachments[file]['file'] != ''){ attachs[file] = true; } else { attachs[file] = false; } } } } //check for variables for (j = 0; j < numData; j++) { filled[docxpressoData.data[j].name] = []; valid[docxpressoData.data[j].name] = []; if ( docxpressoData.data[j].editable && (docxpressoData.data[j].type == 'options' && (typeof docxpressoData.data[j].choice !== 'undefined' && docxpressoData.data[j].choice == 'radio'))) { input = $('input[type="radio"][data-name="' + docxpressoData.data[j].name + '"]'); var counter = 0; if (input.length > 0) { if (inactiveFieldset($(this))) { return true; } radioValue = $("input:radio[name ='" + docxpressoData.data[j].name + "']:checked").val(); if (typeof radioValue !== 'undefined' && radioValue != '' ) { filled[docxpressoData.data[j].name][counter] = true; //then the value is automatically valid valid[docxpressoData.data[j].name][counter] = true; } else { filled[docxpressoData.data[j].name][counter] = false; } } counter++; } else if ( docxpressoData.data[j].editable && (docxpressoData.data[j].type == 'options' && (typeof docxpressoData.data[j].choice !== 'undefined' && docxpressoData.data[j].choice == 'checkbox'))) { input = $('input[type="checkbox"][data-name="' + docxpressoData.data[j].name + '"]'); var counter = 0; //The checkboxes may preserve their default value because they do not need to be checked filled[docxpressoData.data[j].name][counter] = true; var value = ''; input.each(function(){ if ($(this).is(':checked')){ value += $(this).val() + ';' } }); var validVar = isValid(value, decodeURI(docxpressoData.data[j].regex)); if (validVar) { valid[docxpressoData.data[j].name][counter] = true; } else { valid[docxpressoData.data[j].name][counter] = false; } counter++; } else if (docxpressoData.data[j].editable && docxpressoData.data[j].type != 'bookmark' && docxpressoData.data[j].type != 'image') { span = $('span.h5p_varspan[data-name="' + docxpressoData.data[j].name + '"]'); var counter = 0; span.each(function(){ if (inactiveFieldset($(this))) { return true; } //we need a little hack for compatibility with some MAC systems that do not //properly update data comming from a dropdown for unknown reasons if (docxpressoData.data[j].type == 'list' || docxpressoData.data[j].type == 'options' || docxpressoData.data[j].type == 'rpc') { var dropval = $(this).parents('p:first').find('select[data-list="' + docxpressoData.data[j].name + '"]').val(); if ($(this).html() != dropval) { //console.log(docxpressoData.data[j].name + ': enforce updating to ' + dropval); $(this).html(dropval); } else { //console.log('no upgrading necessary'); } } //exclude the case where validation is set explicitely to none if(docxpressoData.data[j].validation == 'novalidation') { filled[docxpressoData.data[j].name][counter] = true; valid[docxpressoData.data[j].name][counter] = true; } else { if ($(this).html() == decodeDXO(refData[docxpressoData.data[j].name]) ) { filled[docxpressoData.data[j].name][counter] = false; } else { filled[docxpressoData.data[j].name][counter] = true; } var validVar = isValid($(this).html(), decodeURI(docxpressoData.data[j].regex)); if (validVar) { valid[docxpressoData.data[j].name][counter] = true; } else { valid[docxpressoData.data[j].name][counter] = false; } } counter++; }); } else if (docxpressoData.data[j].editable && docxpressoData.data[j].type == 'image') { img = $('img[data-image="' + docxpressoData.data[j].name + '"]'); var counter = 0; img.each(function(){ if (inactiveFieldset($(this))) { return true; } if($(this).attr('src') == window.originalImages[docxpressoData.data[j].name][counter] ){ filled[docxpressoData.data[j].name][counter] = false; } else { filled[docxpressoData.data[j].name][counter] = true; } if($(this).attr('src').substring(0,10) == 'data:image'){ valid[docxpressoData.data[j].name][counter] = true; } else { valid[docxpressoData.data[j].name][counter] = false; } counter++; }) } } validations.filled = filled; validations.valid = valid; validations.attachs = attachs; return validations; } function inactiveFieldset (node) { var fsparent = node.parents('div.h5p_wrappingdiv, table[data-type]:first, div[data-type]:first'); var skip = false; fsparent.each(function(){ if ($(this).css('display') == 'none') { skip = true; } }); return skip; } function isValid(val, regex) { str = val.trim(); str = $('
' } else { attHTML = ''; } $('#validation-pad').html(valHTML + attHTML + attachHTML); $('#validation-pad button').click(function(){ if($(this).attr('data-valtype') == 'list' || $(this).attr('data-valtype') == 'options' || $(this).attr('data-valtype') == 'rpc'){ selStr = 'select[data-list="' + $(this).attr('data-valname') + '"]:eq(' + $(this).attr('data-num') + ')'; selStr += ', input[data-list="' + $(this).attr('data-valname') + '"]:eq(' + $(this).attr('data-num') + ')'; selector = $(selStr); } else if($(this).attr('data-pad') == 'open'){ $("#validateModal").modal('hide'); openAttachmentPad(); return; } else if($(this).attr('data-valtype') != 'image'){ selector = $('.h5p_varspan[data-name="' + $(this).attr('data-valname') + '"]:eq(' + $(this).attr('data-num') + ')'); } else { selector = $('img[data-image="' + $(this).attr('data-valname') + '"]:eq(' + $(this).attr('data-num') + ')'); } //when there are tabs things get a little more complex because //we need to "show" the correct tab first if (typeof docxpressoData['settings']['tabs'] !== 'undefined' && docxpressoData['settings']['tabs'] == 1) { section = selector.parents('section:first'); num = section.attr('data-order'); //trigger a click on the corresponding tab $('a[data-order="' + num + '"]').click(); } $("#validateModal").modal('hide'); $.scrollTo(selector, 500, {offset: -80}); //flash the variable that should be edited again originalBColor = selector.css('background-color'); originalColor = selector.css('color'); selector.css('background-color', '#ffff99') .css('color', '#b70000') .fadeOut('slow').fadeIn('slow') .fadeOut('fast').fadeIn('fast') .fadeOut('fast').fadeIn('fast') .fadeOut('fast').fadeIn('fast', function(){ selector.css('background-color', originalBColor); selector.css('color', originalColor); }); }); console.log('**********validations**********'); console.log(totalFields); console.log(emptyFields); console.log(validated); console.log('********************'); if (totalFields > 0){ var percentage = parseInt(100* (totalFields - emptyFields)/totalFields); } else { var percentage = 100; } $('#percentComp').val(percentage); $('#validated').val(validated); if (open) { $("#validateModal").modal('show'); } } function parseBlocks(node) { var blocks = {}; var step = function(node, blocks) { var counter = 0; var currentBlock = ''; do { if (node.nodeType == 1){ if (node.getAttribute('data-type')){ if (node.getAttribute('data-h5p') != currentBlock) { currentBlock = node.getAttribute('data-h5p'); counter= 0; } blocks[node.getAttribute('data-h5p') + '::' + counter] = {}; if(node.hasChildNodes()){ step(node.firstChild, blocks[node.getAttribute('data-h5p') + '::' + counter]); } counter++; } else if (node.hasChildNodes()){ step(node.firstChild, blocks); } } } while (node = node.nextSibling); } step(node, blocks); return blocks; } function parseVars() { var vars = {}; for (j = 0; j < numData; j++) { if (docxpressoData.data[j].type == 'options' && (docxpressoData.data[j].choice == 'radio' || docxpressoData.data[j].choice == 'checkbox')) { vars[docxpressoData.data[j].name] = []; choice = $('input[data-list="' + docxpressoData.data[j].name + '"]'); choice.each(function(){ if ($(this).is(':checked')) { vars[docxpressoData.data[j].name].push(encodeDXO($(this).val())); } else { vars[docxpressoData.data[j].name].push(''); } }); } else if (docxpressoData.data[j].type == 'options' && docxpressoData.data[j].choice == 'multipleSelect') { vars[docxpressoData.data[j].name] = []; span.each(function(){ vars[docxpressoData.data[j].name].push(window.multiselects[docxpressoData.data[j].name]); }); } else if (docxpressoData.data[j].type != 'bookmark' && docxpressoData.data[j].type != 'image') { vars[docxpressoData.data[j].name] = []; span = $('span.h5p_varspan[data-name="' + docxpressoData.data[j].name + '"]'); span.each(function(){ if (docxpressoData.data[j].validation == 'email' || docxpressoData.data[j].validation == 'URL') { var newLink = linkDressUp ($(this).html(), docxpressoData.data[j].validation); vars[docxpressoData.data[j].name].push(encodeDXO(newLink)); } else { vars[docxpressoData.data[j].name].push(encodeDXO($(this).html())); } //console.log(docxpressoData.data[j].name + ': ' + $(this).html()); }); } else if (docxpressoData.data[j].type == 'image') { vars[docxpressoData.data[j].name] = []; img = $('img[data-image="' + docxpressoData.data[j].name + '"]'); img.each(function(){ vars[docxpressoData.data[j].name].push($(this).attr('src')); if (typeof window.imageSize[docxpressoData.data[j].name] !== 'undefined') { dxo[docxpressoData.data[j].name]['width'] = window.imageSize[docxpressoData.data[j].name]['width']; } else { dxo[docxpressoData.data[j].name]['width'] = $('img[data-image="' + docxpressoData.data[j].name + '"]').css('width'); } if (typeof window.imageSize[docxpressoData.data[j].name] !== 'undefined') { dxo[docxpressoData.data[j].name]['height'] = window.imageSize[docxpressoData.data[j].name]['height']; } else { dxo[docxpressoData.data[j].name]['height'] = $('img[data-image="' + docxpressoData.data[j].name + '"]').css('height'); } }) } } return vars; } function parseSpecialVars() { var svars = {}; for (j = 0; j < numSpecial; j++) { svars[docxpressoData.special[j].name] = []; span = $('span.h5p_varspecial[data-name="' + docxpressoData.special[j].name + '"]'); span.each(function(){ svars[docxpressoData.special[j].name].push(encodeDXO($(this).html())); }); } return svars; } function checkAttachments() { counter = 0; if (typeof docxpressoData.attachments !== 'undefined' && typeof docxpressoData.attachments.files !== 'undefined' ) { numAttachments = docxpressoData.attachments.files.length; for (j = 0; j < numAttachments; j++) { name = docxpressoData.attachments['files'][j]['name']; counter += verifyAttachment(name, j); } } return counter; } function verifyAttachment(name, j){ count = 0; if (typeof window.attachments[name] == 'undefined' ){ window.attachments[name] = {}; } if(docxpressoData.attachments['files'][j]['dependsOn'] == ''){ count++; window.attachments[name]['active'] = true; $('div.attachedFile[data-file="' + name + '"]').show(); $('div.attachedFile[data-file="' + name + '"]').next('div.hr-line-dashed').show(); $('input[name="' + name + '"]').prop('disabled', false); } else { //get the variable value dependsOn = docxpressoData.attachments['files'][j]['dependsOn']; value = docxpressoData.attachments['files'][j]['value']; var tmp = value.split(';'); //console.log('valores a comprobar') //console.log(tmp); vars= []; if (dxo[dependsOn].type == 'options' && (dxo[dependsOn].choice == 'radio' || dxo[dependsOn].choice == 'checkbox')) { choice = $('input[data-list="' + dependsOn + '"]'); choice.each(function(){ if ($(this).is(':checked')) { vars.push($(this).val()); } }); } else { span = $('span.h5p_varspan[data-name="' + dependsOn + '"]'); span.each(function(){ vars.push(encodeDXO($(this).html())); }); } varLen = vars.length; found = false; for (var n = 0; n < varLen; n++) { if (tmp.indexOf(vars[n].trim()) > -1 || tmp.indexOf(encodeURI(vars[n].trim())) > -1){ found = true; } } if (found){ count++; window.attachments[name]['active'] = true; $('div.attachedFile[data-file="' + name + '"]').show(); $('div.attachedFile[data-file="' + name + '"]').next('div.hr-line-dashed').show(); $('input[name="' + name + '"]').prop('disabled', false); } else { window.attachments[name]['active'] = false; //hide and disable this attachment $('div.attachedFile[data-file="' + name + '"]').hide(); $('div.attachedFile[data-file="' + name + '"]').next('div.hr-line-dashed').hide(); $('input[name="' + name + '"]').prop('disabled', true); } } return count; } function openAttachmentPad () { attachmentsNumber = checkAttachments(); if (attachmentsNumber > 0){ $('#saveContinue').hide(); $("#attachmentModal").modal('show'); } else { toastr.error('No hay archivos adjuntos asociados a este documento.', 'Aviso'); } } $('#download').click(function(){ attachmentsNumber = checkAttachments(); if (attachmentsNumber > 0) { $('#saveContinue').show(); $("#attachmentModal").modal('show'); } else { if (skipOutputModal == true){ $('#saveAndDownload').click(); } else { $("#saveModal").modal('show'); } } }); $('#continueLater').click(function(){ $("#saveContinueModal").modal('show'); }); $('#emailLinkValue').keyup(function(){ if ($(this).val() != '') { $('#emailLink').iCheck('check'); } }); $('#submitContinueLater').click(function(){ //check if we should send a link by email if($('#emailLink').prop('checked')){ var email = $('#emailLinkValue').val(); var valid_email = function(email) { return /^.+@.+\..+$/.test(email); } if (valid_email(email)) { $('#email').val(email); } else { //inform the user toastr.error('El email no es válido.', 'Aviso'); return; } } else { $('#email').val(''); } //check if data should be saved locally if($('#localdata').prop('checked')){ saveLocally(); }; $("#saveContinueModal").modal('hide'); $('#download').click(); }); $('#saveAndDownload').click(function(){ $("#saveModal").modal('hide'); var validations; var repair = false validations = validata(); //check if a variable does not validate for (prop in validations.filled) { //first check that the variable is editable if (dxo[prop]['editable']){ if (validations.filled.hasOwnProperty(prop)){ if (dxo[prop]['global'] || validations.filled[prop].length == 1) { if ((typeof validations.filled[prop][0] !== 'undefined' && !validations.filled[prop][0]) || (typeof validations.valid[prop][0] !== 'undefined' && !validations.valid[prop][0])){ repair = true; } } else { var len = validations.filled[prop].length; for(var j=0; j < len; j++) { if ((typeof validations.filled[prop][j] !== 'undefined' && !validations.filled[prop][j]) || (typeof validations.valid[prop][j] !== 'undefined' && !validations.valid[prop][j])){ repair = true; } } } } } } //look for empty attachments //console.log('attachments'); //console.log(window.attachments); for (var file in window.attachments) { if (window.attachments.hasOwnProperty(file)){ if (window.attachments[file]['active']){ //console.log(window.attachments[file]['file']); if (typeof window.attachments[file]['file'] === 'undefined' || window.attachments[file]['file'] == ''){ repair = true; } } } } //SIGNATURES if (repair) { validateModal(false, true); } else { validateModal(false, false); saveAndDownload(); } }); function parseData() { docxpressoData.blocks = parseBlocks(document.body); docxpressoData.varValues = parseVars(); docxpressoData.specialVarValues = parseSpecialVars(); docxpressoData.dependencies = window.dependencies; //also send the blocks that should be removed for simplicity var remove = []; $('div[data-type="block"]').each(function(){ if ($(this).css('display') == 'none') { remove.push($(this).attr('data-h5p')); } }); $('table[data-type="table"]').each(function(){ if ($(this).css('display') == 'none') { remove.push($(this).attr('data-h5p')); } }); docxpressoData.remove = remove; } function saveAndDownload() { parseData() $( "form" ).submit(); } $( "form" ).submit(function( event ) { $('#uploadingModal').modal('show'); //fake motion progress bar var bar = 10; progressBar = setInterval(function() { if (bar > 99) { clearInterval(progressBar); } else { bar++; $('#uploadVar').css('width', bar + '%'); } }, progressTimer/50); $('#docFormat').val($('input[name=format]:checked').val()); $('#comments').val($('.summernoteComments').code()); json = JSON.stringify(docxpressoData); console.log('sent:'); console.log(docxpressoData); //take care of simple quotes json = json.replace(/\'/g, "&apos;"); $('#data').val(json); warning = false; return; }); //save to local and recover $('#localStorage').click(function(){ saveLocally(); }); $('#retrieveLocalData').click(function(){ retrieveLocalData(); }); $('#removeLocalData').click(function(){ removeLocalData(); }); function saveLocally () { parseData(); json = JSON.stringify(docxpressoData); //store with local storage localStorage.setItem("preview_236", json); localStorage.setItem("previewTime_236", new Date().getTime()); } function removeLocalData () { localStorage.removeItem("preview_236"); localStorage.removeItem("previewTime_236"); toastr.success('Los metadatos salvados localmente han sido eliminados.', 'Datos locales eliminados'); } function retrieveLocalData () { raw = localStorage.getItem("preview_236"); storedTime = localStorage.getItem("previewTime_236"); if (raw !== null) { destroyListeners(); data = JSON.parse(localStorage.getItem("preview_236")); //clone the blocks cloneBlocks(data.blocks); //replace variables replaceVars(data.varValues, false); //replace spacial variables replaceVars(data.specialVarValues, true); refreshListeners(); } else { toastr.error('No hay datos locales asociados a este documento', 'Aviso'); } } function cloneBlocks(blocks, node){ if (typeof node === 'undefined') { node = $('body'); } if (typeof blocks !== 'undefined') { var childBlocks = []; //run over the childs for (block in blocks) { if (blocks.hasOwnProperty(block)){ var temp = block.split('::'); var blockName = temp[0]; if (typeof childBlocks[blockName] === 'undefined') { childBlocks[blockName] = 1; } else { childBlocks[blockName]++; } } } for (child in childBlocks) { toClone = node.find('*[data-h5p ="{{' + child + '}}"] , *[data-h5p="' + child + '"]'); //remove precloned objects toClone.each(function(index){ if (index > 0) { $(this).remove(); } }); //start the cloning for (var n = 0; n < childBlocks[child]-1; n++) { toClone.eq(0).clone(true, true).insertBefore(toClone.eq(0)); } } //run over the childs for (block in blocks) { if (blocks.hasOwnProperty(block)){ var subBlocks = blocks[block]; var subBlockCount = Object.keys(subBlocks).length; if (subBlockCount > 0) { var nTemp = block.split('::'); var bName = nTemp[0]; var order = nTemp[1] var newNode = node.find('*[data-h5p ="{{' + bName + '}}"] , *[data-h5p="' + bName + '"]').eq(order); cloneBlocks(subBlocks, newNode); } } } } } function replaceVars (data, special) { for (name in data) { if (data.hasOwnProperty(name)){ var len = data[name].length; if (special) { var selector = $('span.h5p_varspecial[data-name="' + name + '"]'); for (var k = 0; k < len; k++) { selector.eq(k).html(decodeDXO(data[name][k])); } } else { //let us protect the case where only var values are //sent assuming they are standard text variables //by default if (typeof dxo[name] !== 'undefined' && typeof dxo[name]['type'] !== 'undefined') { var type = dxo[name]['type']; if (type == 'options' && typeof dxo[name]['choice'] !== 'undefined' ) { var choice = dxo[name]['choice']; } else { var choice = 'dropdown'; } } else { var type = 'unknown'; } if (type == 'image') { var selector = $('img[data-image="' + name + '"]'); for (var k = 0; k < len; k++) { selector.eq(k).attr('src', data[name][k]); } } else if (type == 'list' || (type == 'options' && choice == 'dropdown') || type == 'rpc') { var selector = $('select[data-list="' + name + '"]'); for (var k = 0; k < len; k++) { if (decodeDXO(data[name][k]) != '') { selector.eq(k).val(decodeDXO(data[name][k])); } } //we also have to update the associated span var selector = $('span.h5p_varspan[data-name="' + name + '"]'); for (var k = 0; k < len; k++) { selector.eq(k).html(decodeDXO(data[name][k])); //update block visibility if (typeof window.dependencies[name] !== 'undefined') { modifyBlockVisibility(name, decodeDXO(data[name][k])); } } } else if(type == 'options' && choice == 'multipleSelect') { var selector = $('select[data-list="' + name + '"]'); for (var k = 0; k < len; k++) { selector.eq(k).val(data[name][0]); selector.multiselect('refresh'); window.multiselects[name] = data[name][0]; } } else if(type == 'options' && choice != 'dropdown') { var selector = $('input[data-list="' + name + '"]'); for (var k = 0; k < len; k++) { if (decodeDXO(data[name][k]) != '') { selector.eq(k).prop("checked", true); } else { selector.eq(k).prop("checked", false); } } } else { var selector = $('span.h5p_varspan[data-name="' + name + '"]'); for (var k = 0; k < len; k++) { //if the value has been left empty load the label if (data[name][k] != '') { selector.eq(k).html(decodeDXO(data[name][k])); } else { selector.eq(k).html(decodeDXO(dxo[name]['label'])); } } } } } } window.localDataLoaded = true; } function loadSingleVarFromLocal(name) { var raw = localStorage.getItem("preview_236"); if (raw !== null) { destroyListeners(); var data = JSON.parse(localStorage.getItem("preview_236")); var vals = {}; vals[name] = data.varValues[name]; //replace variables replaceVars(vals, false); refreshListeners(); } } //load server data if any if (serverData) { //fake motion progress bar var bar = 38; progressBar = setInterval(function() { if (bar > 98) { clearInterval(progressBar); } else { bar++; $('#loadVar').css('width', bar + '%'); } }, progressTimer/80); //clone the blocks if (typeof dataToLoadFromServer.blocks != 'undefined' ) { cloneBlocks(dataToLoadFromServer.blocks); } //replace variables if (typeof dataToLoadFromServer.varValues != 'undefined' ) { replaceVars(dataToLoadFromServer.varValues, false); } //replace spacial variables if (typeof dataToLoadFromServer.specialVarValues != 'undefined' ) { replaceVars(dataToLoadFromServer.specialVarValues, true); } //close modal setTimeout(function(){ $('#serverModal').modal('hide'); }, progressTimer); } }); function preparseWYSIWYG (varspan, HTMLdata) { //get the font styles var color = varspan.css('color'); var family = varspan.css('font-family'); var size = varspan.css('font-size'); varspan.html(HTMLdata); varspan.find('p, li').each(function(){ var styleArray = $(this).attr('style'); if (typeof styleArray === 'undefined') { styleArray = []; } var styles = {}; var prop = ''; var numStyles = styleArray.length; for (var j = 0; j < numStyles; j++) { prop = styleArray[j].split(':'); styles[$.trim(prop[0].replace('-',''))] = $.trim(prop[1]); } if( typeof styles.color === 'undefined') { $(this).css('color', color); } if( typeof styles.fontsize === 'undefined') { $(this).css('font-size', size); } if( typeof styles.fontfamily === 'undefined') { $(this).css('font-family', family); } }); } function linkDressUp(linkable, type) { var linkedData = linkable; str = $('

References: artículo 1550
 resolución 
 resolución 
 artículo 1
 artículo 1569
 artículo 1
 artículo 5