Jump to content

Problemas Paypal y registro de clientes


Aldeag

Recommended Posts

Bueno. Son dos problemas separados pero que afectan uno al otro. Y no sé si es mi culpa o de Prestashop.

 

A la hora de realizar una compra al cliente se le pide registrarse. La cuestión es que para registrarse puedo pedirle que ponga el Código Postal o no, desde el Back Office

 

Pero ponga lo que ponga yo, no le aparece al cliente al registrarse el campo "Código postal". Para solucionarlo en Traducciones cambié el nombre del campo "Dirección 2" por:  "Dirección (sigue) y código postal (obligatorio)". Así al menos tengo el código postal del cliente.

 

Hasta ahí sin problema.

 

Resulta que Paypal antes me funcionaba bién. Pero ahora Paypal le pide al cliente que rellene el Código Postal porque es imprescindible para realizar la transacción, y le dá un código de error. A mí me llega otro al correo y Back Office tal que así:

 

PayPal response:TIMESTAMP -> 2017-04-03T21:24:23ZL_ERRORCODE0 -> 10730L_SHORTMESSAGE0 -> Shipping Address Postal Code EmptyL_LONGMESSAGE0 -> The field Shipping Address Postal Code is requiredL_SEVERITYCODE0 -> Error

 

O sea, que el cliente no puede registrarse con Código postal y Paypal no realiza la transacción sin Código Postal y así pocas ventas puedo hacer.

 

Tengo Prestashop 1.6.1.3 tema standar y el módulo de Paypal versión 3.11.4

 

Gracias

Edited by Aldeag (see edit history)
Link to comment
Share on other sites

Es que uso el tema por defecto.

 

Estoy preocupado por este asunto.

 

En el Backoffice puedo elegir si el código postal es obligatorio o no. Si lo pongo, le exige al cliente el Codigo Postal, pero el campo no está por ninguna parte.

Por eso tengo que deshabilitarlo, lo que me dá problemas con Paypal.

 

No sé donde hacer los cambios.

 

Estoy preocupado, ya que no puedo vender sin Paypal.

Edited by Aldeag (see edit history)
Link to comment
Share on other sites

Es que uso el tema por defecto.

 

Estoy preocupado por este asunto.

 

En el Backoffice puedo elegir si el código postal es obligatorio o no. Si lo pongo, le exige al cliente el Codigo Postal, pero el campo no está por ninguna parte.

Por eso tengo que deshabilitarlo, lo que me dá problemas con Paypal.

 

No sé donde hacer los cambios.

 

Estoy preocupado, ya que no puedo vender sin Paypal.

 

Revisa con el inspector de código de Chrome en tu formulario que el campo "código postal" que se solicita pero no se muestra, no esté escondido mediante CSS (pondrá algo como "display:none" asociado a un <input> del formulario)

Link to comment
Share on other sites

Copio y pego parte del texto que sale si lo hago en Chrome como me dices.

d="newsletter" value="1" autocomplete="off"/> Inscríbase a nuestra lista de correo</label></div><div class="checkbox"> <label for="optin"> <input type="checkbox" name="optin" id="optin" value="1" autocomplete="off"/> Recíba ofertas especiales de nuestros socios</label></div><h3 class="page-subheading top-indent">Dirección de entrega</h3><div class="required text form-group"> <label for="firstname">Nombre <sup>*</sup></label> <input type="text" class="text form-control validate" id="firstname" name="firstname" data-validate="isName" value="" /></div><div class="required text form-group"> <label for="lastname">Apellido <sup>*</sup></label> <input type="text" class="text form-control validate" id="lastname" name="lastname" data-validate="isName" value="" /></div><div class="required text form-group"> <label for="address1">Dirección <sup>*</sup></label> <input type="text" class="text form-control validate" name="address1" id="address1" data-validate="isAddress" value="" /></div><div class="text is_customer_param form-group"> <label for="address2">Dirección (2) y código postal (requerido)</label> <input type="text" class="text form-control validate" name="address2" id="address2" data-validate="isAddress" value="" /></div><div class="required postcode text form-group"> <label for="postcode">Código postal <sup>*</sup></label> <input type="text" class="text form-control validate" name="postcode" id="postcode" data-validate="isPostCode" value=""/></div><div class="required text form-group"> <label for="city">Ciudad <sup>*</sup></label> <input type="text" class="text form-control validate" name="city" id="city" data-validate="isCityName" value="" /></div><div class="required id_state form-group" style="display:none;"> <label for="id_state">Provincia o Estado <sup>*</sup></label> <select name="id_state" id="id_state" class="form-control"><option value="">-</option> </select></div><div class="required select form-group"> <label for="id_country">País <sup>*</sup></label> <select name="id_country" id="id_country" class="form-control"><option value="1">Alemania</option><option value="43">Antigua y Barbuda</option><option value="2">Austria</option><option value="48">Bahamas</option><option value="51">Barbados</option><option value="3">Bélgica</option><option value="55">Bermudas</option><option value="233">Bosnia y Herzegovina</option><option value="58">Brasil</option><option value="236">Bulgaria</option><option value="4">Canadá</option><option value="76">Chipre</option><option value="20">Dinamarca</option><option value="21">EE.UU.</option><option value="37">Eslovaquia</option><option value="193">Eslovenia</option><option value="6" selected="selected">España</option><option value="86">Estonia</option><option value="7">Finlandia</option><option value="8">Francia</option><option value="9">Grecia</option><option value="143">Hungría</option><option value="26">Irlanda</option><option value="223">Islas Vírgenes (Británicas)</option><option value="224">Islas Vírgenes (EE.UU.)</option><option value="10">Italia</option><option value="125">Letonia</option><option value="130">Liechtenstein</option><option value="131">Lituania</option><option value="12">Luxemburgo</option><option value="139">Malta</option><option value="145">México</option><option value="13">Países Bajos</option><option value="14">Polonia</option><option value="15">Portugal</option><option value="17">Reino Unido</option><option value="16">República Checa</option><option value="36">Rumania</option><option value="39">Samoa Americana</option><option value="18">Suecia</option><option value="216">Ucrania</option> </select></div><div class="required dni form-group"> <label for="dni">Número de identificación fiscal <sup>*</sup></label> <input type="text" class="text form-control validate" name="dni" id="dni" data-validate="isDniLite" value="" /> <span class="form_info">DNI/NIF/NIE</span></div><div class="form-group is_customer_param"> <label for="other">Información adicional</label><textarea class="form-control" name="other" id="other" cols="26" rows="7"></textarea></div><div class="form-group is_customer_param"> <label for="phone">Teléfono fijo <sup>**</sup></label> <input type="text" class="text form-control validate" name="phone" id="phone" data-validate="isPhoneNumber" value="" /></div><div class="required form-group"> <label for="phone_mobile">Teléfono móvil <sup>**</sup></label> <input type="text" class="text form-control validate" name="phone_mobile" id="phone_mobile" data-validate="isPhoneNumber" value="" /></div><p class="inline-infos required">** Debe registrar por lo menos un número telefónico</p> <input type="hidden" name="alias" id="alias" value="Mi dirección"/><div class="checkbox"> <label for="invoice_address"> <input type="checkbox" name="invoice_address" id="invoice_address" autocomplete="off"/> Deseo utilizar otra dirección para la facturación</label></div><div id="opc_invoice_address" class="is_customer_param"><h3 class="page-subheading top-indent">Dirección de facturación</h3><div class="required form-group"> <label for="firstname_invoice">Nombre <sup>*</sup></label> <input type="text" class="form-control validate" id="firstname_invoice" name="firstname_invoice" data-validate="isName" value="" /></div><div class="required form-group"> <label for="lastname_invoice">Apellido <sup>*</sup></label> <input type="text" class="form-control validate" id="lastname_invoice" name="lastname_invoice" data-validate="isName" value="" /></div><div class="required form-group"> <label for="address1_invoice">Dirección <sup>*</sup></label> <input type="text" class="form-control validate" name="address1_invoice" id="address1_invoice" data-validate="isAddress" value="" /></div><div class="form-group is_customer_param"> <label for="address2_invoice">Dirección (2) y código postal (requerido)</label> <input type="text" class="form-control address" name="address2_invoice" id="address2_invoice" data-validate="isAddress" value="" /></div><div class="required postcode_invoice form-group"> <label for="postcode_invoice">Código postal <sup>*</sup></label> <input type="text" class="form-control validate" name="postcode_invoice" id="postcode_invoice" data-validate="isPostCode" value=""/></div><div class="required form-group"> <label for="city_invoice">Ciudad <sup>*</sup></label> <input type="text" class="form-control validate" name="city_invoice" id="city_invoice" data-validate="isCityName" value="" /></div><div class="required id_state_invoice form-group" style="display:none;"> <label for="id_state_invoice">Provincia o Estado <sup>*</sup></label> <select name="id_state_invoice" id="id_state_invoice" class="form-control"><option value="">-</option> </select></div><div class="required form-group"> <label for="id_country_invoice">País <sup>*</sup></label> <select name="id_country_invoice" id="id_country_invoice" class="form-control"><option

Link to comment
Share on other sites

En el código que has pegado se ve el código postal en un input:

<input type="text" class="text form-control validate" name="postcode" id="postcode" data-validate="isPostCode" value=""/>

Deberías localizar ese elemento con el inspector, y en la parte derecha, donde suelen aparecer los estilos CSS asociados a un elemento, buscar si ves un "display:none"

 

O si quieres déjanos URL y le damos un vistazo al CSS.

Link to comment
Share on other sites

¿Puedes desactivar un momento la compresion de JS y CSS en parametros avanzados -> rendimiento para ver bien el problema?

 

Eso si, siendo la plantilla por defecto, no se tendria que hacer ninguna modificación de CSS ni forzarla, etc.., otra cosa es que sea un bug relativo a la 1.6.1.3 que se haya reportado y soluciones en las siguientes variantes de la 1.6

 

(Actualmente la última de la 1.6, es la 1.6.1.13)

Edited by Sergio Ruiz (see edit history)
Link to comment
Share on other sites

Tienes el parámetro display:none en el código postal de la plantilla.

 

Pero como dice Sergio, si es un bug de la plantilla, casi sería mejor actualizarla que ponerse a tocar código.

#account-creation_form .id_state, #account-creation_form .dni, #account-creation_form .postcode{
 display:none;
}
Link to comment
Share on other sites

Muchas gracias por contestar.

 

Uff. Me dá un repelús actualizar. Pero sí, mi versión es la 1.6.1.3

 

Estos son los parámetros que he cambiado y ninguno aporta solución. Tengo activado solicitar Código Postal.

 

¿Tendría que modificar algún archivo? ¿Actualizar solo la plantilla? ¿Actualizar todo? ¿Cual es el mejor método?

post-171820-0-86963000-1493719430_thumb.png

post-171820-0-94168600-1493719439_thumb.png

post-171820-0-72855400-1493719449_thumb.png

Link to comment
Share on other sites

Yo probaría a meter al final de uno de tus ficheros CSS del template estas líneas:

 

 

 #new_account_form .postcode {
    display: block!important;
}

 

Después de eso, el campo código postal apacererá y tendrías que probar muy bien que funciona todo correctamente.

 

Esas líneas podrían ir al final de un fichero situado en una ruta aproximada: /themes/default/css/global.css

 

IMPORTANTE: cuando hagas ese cambio, no verás nada hasta que no vacíes/regeneres la cache de la tienda.

IMPORTANTE: si cambias cualquier fichero, haz una copia de seguridad en local antes, para poder rectificar si rompes algo.

Link to comment
Share on other sites

Estimado Aldeag,

 

Fijate una cosa, cuando eliges por ejemplo "finlandia" te aparece el cuadro del codigo postal, y despues cuando vuelves a seleccionar "España" si te aparece.

 

Es decir,  por lo que "observo" no te aparece en la "carga inicial" (Estoy probando en el registro)

 

¿Entiendo que tienes metido en codigopostal como adjuntas en las imagenes del principio en el formato de dirección de los paises (localización -> paises) (ademas de haber señalado que Contiene Codigo Postal) ? ¿no?

 

Puedes desabilitar un momento lo que te ha dicho Sergio, que quiero ver una cosilla, creo que es mas importante averiguar la procedencia del fallo, que colocar un parche )(

Link to comment
Share on other sites

 

¿Tendría que modificar algún archivo? ¿Actualizar solo la plantilla? ¿Actualizar todo? ¿Cual es el mejor método?

No he visto tus mensajes anteriores, en la parte donde adjuntas las opciones de Smart Cache que las tienes activadas, desactivalas, pero no para ver si se soluciona el problema, sino para que los usuarios del foro (genweb, sergio, etc..) puedan ver si el problema proviene de algun JS de los que te salen errores en la consola, u de otro lado.

 

Saludos,

Link to comment
Share on other sites

Os agradezco el tiempo que os tomáis con esto. Desactivé probé, y luego activé de nuevo esas opciones, ya que no encontaba diderencia. Voy a desactivarlas unas horas (o hasta mañana) para que podáis probarlas

Link to comment
Share on other sites

Os agradezco el tiempo que os tomáis con esto. Desactivé probé, y luego activé de nuevo esas opciones, ya que no encontaba diderencia. Voy a desactivarlas unas horas (o hasta mañana) para que podáis probarlas

Por lo visto parece que tienes un error: (No puedo asegurarte de que el fallo venga por ahí porque tampoco me he puesto a mirarlo, pero un error te da en ese fichero...)

/themes/default-bootstrap/js/tools/statesManagement.js

Prueba dejar ese fichero así::

/*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2016 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/
//global variables
var countriesNeedIDNumber = [];
var countriesNeedZipCode = [];
var states = [];

$(document).ready(function(){
	setCountries();
	bindStateInputAndUpdate();
	if (typeof bindUniform !=='undefined')
		bindUniform();
	bindZipcode();
	bindCheckbox();
	$(document).on('click', '#invoice_address', function(e){
		bindCheckbox();
	});
});

function setCountries()
{
	if (typeof countries !== 'undefined' && countries)
	{
		var countriesPS = [];
	    for (var i in countries)
		{
			var id_country = countries[i]['id_country'];
			if (typeof countries[i]['states'] !== 'undefined' && parseInt(countries[i]['contains_states']))
			{
				countriesPS[id_country] = [];
	    		for (var j in countries[i]['states'])
					countriesPS[parseInt(id_country)].push({'id' : parseInt(countries[i]['states'][j]['id_state']), 'name' : countries[i]['states'][j]['name']});
			}

			if (typeof countries[i]['need_identification_number'] !== 'undefined' && parseInt(countries[i]['need_identification_number']) > 0)
				countriesNeedIDNumber.push(parseInt(countries[i]['id_country']));
			if (typeof countries[i]['need_zip_code'] !== 'undefined' && parseInt(countries[i]['need_zip_code']) > 0)
				countriesNeedZipCode[parseInt(countries[i]['id_country'])] = countries[i]['zip_code_format'];
		}
	}
	states = countriesPS;
}

function bindCheckbox()
{
	if ($('#invoice_address:checked').length > 0)
	{
		$('#opc_invoice_address').slideDown('slow');
		if ($('#company_invoice').val() == '')
			$('#vat_number_block_invoice').hide();
		if (typeof bindUniform !=='undefined')
			bindUniform();
	}
	else
		$('#opc_invoice_address').slideUp('slow');
}

function bindZipcode()
{
	$(document).on('keyup', 'input[name^=postcode]', function(e)
	{
		var char = String.fromCharCode(e.keyCode);
		if (/[a-zA-Z]/.test(char))
			$.trim($(this).val($(this).val().toUpperCase()));
	});
}

function bindStateInputAndUpdate()
{
	$('.id_state, .dni, .postcode').css({'display':'none'});

	if (typeof idSelectedCountry !== 'undefined' && idSelectedCountry)
		$('#id_country option[value=' + idSelectedCountry + ']').prop('selected', true);

	updateState();
	updateNeedIDNumber();
	updateZipCode();

	$(document).on('change', '#id_country', function(e)
	{
		updateState();
		updateNeedIDNumber();
		updateZipCode();
		if (typeof validate_field !== 'undefined')
			validate_field('#postcode');
	});

	if ($('#id_country_invoice').length !== 0)
	{
		$(document).on('change', '#id_country_invoice', function(e)
		{
			updateState('invoice');
			updateNeedIDNumber('invoice');
			updateZipCode('invoice');
			if (typeof validate_field !== 'undefined')
				validate_field('#postcode_invoice');
		});
		updateState('invoice');
		updateNeedIDNumber('invoice');
		updateZipCode('invoice');
	}

	if (typeof idSelectedState !== 'undefined' && idSelectedState)
		$('.id_state option[value=' + idSelectedState + ']').prop('selected', true);
	if (typeof idSelectedStateInvoice !== 'undefined' && idSelectedStateInvoice)
		$('.id_state_invoice option[value=' + idSelectedStateInvoice + ']').prop('selected', true);
}

function updateState(suffix)
{
	$('#id_state' + (typeof suffix !== 'undefined' ? '_' + suffix : '')+' option:not(:first-child)').remove();
	if (typeof countries !== 'undefined')
		var state_list = states[parseInt($('#id_country' + (typeof suffix !== 'undefined' ? '_' + suffix : '')).val())];
	if (typeof state_list !== 'undefined')
	{
		$(state_list).each(function(key, item){
			$('#id_state' + (typeof suffix !== 'undefined' ? '_' + suffix : '')).append('<option value="' + parseInt(item.id) + '">' + item.name + '</option>');
		});

		$('.id_state' + (typeof suffix !== 'undefined' ? '_' + suffix : '') + ':hidden').fadeIn('slow');
		$('#id_state, #id_state_invoice').uniform();
	}
	else
		$('.id_state' + (typeof suffix !== 'undefined' ? '_' + suffix : '')).fadeOut('fast');
}

function updateNeedIDNumber(suffix)
{
	var id_country = parseInt($('#id_country' + (typeof suffix !== 'undefined' ? '_' + suffix : '')).val());
	if (in_array(id_country, countriesNeedIDNumber))
	{
		$('.dni' + (typeof suffix !== 'undefined' ? '_' + suffix : '') + ':hidden').fadeIn('slow');
		$('#dni').uniform();
	}
	else
		$('.dni' + (typeof suffix !== 'undefined' ? '_' + suffix : '')).fadeOut('fast');
}

function updateZipCode(suffix)
{
	var id_country = parseInt($('#id_country' + (typeof suffix !== 'undefined' ? '_' + suffix : '')).val());
	if (typeof countriesNeedZipCode[id_country] !== 'undefined')
	{
		$('.postcode' + (typeof suffix !== 'undefined' ? '_' + suffix : '') + ':hidden').fadeIn('slow');
		$('#postcode').uniform();
	}
	else
		$('.postcode'+(typeof suffix !== 'undefined' ? '_' + suffix : '')).fadeOut('fast');
}

Haz una copia del fichero "tuyo" antes.

 

El contenido que te he pasado es del fichero que te he comentado en la versión 1.6.1.12, por lo tanto es solo para ir probando. 

 

Limpia cache, etc..

 

Saludos,

Link to comment
Share on other sites

Te pego una copia de un statesManagement.js de otra tienda con mismo template que no presenta esos bugs y que difiere en varias líneas del tuyo que da error en http://aldeaglobaltarifa.com/themes/default-bootstrap/js/tools/statesManagement.js

 

Si no tienes opción de actualizar tu template "default bootstrap" por completo, que sería lo ideal, la cosa sería sustituir tu fichero que da problemas (previa copia de seguridad) por este que te paso.

 

Suerte!

 

 

 

/*
* 2007-2014 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <[email protected]>
* @copyright 2007-2014 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
//global variables
var countriesNeedIDNumber = [];
var countriesNeedZipCode = [];

$(document).ready(function(){
    setCountries();
    bindStateInputAndUpdate();
    bindUniform();
    bindPostcode();
    bindCheckbox();
    $(document).on('click', '#invoice_address', function(e){
        bindCheckbox();
    });
});

function setCountries()
{
    if (typeof countries !== 'undefined' && countries)
    {
        var countriesPS = [];
     for (var i in countries)
        {
            var id_country = countries['id_country'];
            if (typeof countries['states'] !== 'undefined' && countries['states'] && countries['contains_states'])
            {
                countriesPS[id_country] = [];
             for (var j in countries['states'])
                    countriesPS[parseInt(id_country)].push({'id' : parseInt(countries['states'][j]['id_state']), 'name' : countries['states'][j]['name']});
            }
            if (typeof countries['need_identification_number'] !== 'undefined' && parseInt(countries['need_identification_number']) > 0)
                countriesNeedIDNumber.push(parseInt(countries['id_country']));
            if (typeof countries['need_zip_code'] !== 'undefined' && parseInt(countries['need_zip_code']) > 0)
                countriesNeedZipCode[parseInt(countries['id_country'])] = countries['zip_code_format'];
        }
    }
    countries = countriesPS;
}

function bindCheckbox()
{
    if ($('#invoice_address:checked').length > 0)
    {
        $('#opc_invoice_address').slideDown('slow');
        if ($('#company_invoice').val() == '')
            $('#vat_number_block_invoice').hide();
        bindUniform();
    }
    else
        $('#opc_invoice_address').slideUp('slow');
}

function bindUniform()
{
    $("select.form-control,input[type=radio],input[type=checkbox]").uniform();
}

function bindPostcode()
{
    $(document).on('keyup', 'input[name=postcode]', function(e)
    {
        $(this).val($(this).val().toUpperCase());
    });
}

function bindStateInputAndUpdate()
{
    $('.id_state, .dni, .postcode').css({'display':'none'});
    updateState();
    updateNeedIDNumber();
    updateZipCode();

    $(document).on('change', '#id_country', function(e)
    {
        updateState();
        updateNeedIDNumber();
        updateZipCode();
    });

    if ($('#id_country_invoice').length !== 0)
    {
        $(document).on('change', '#id_country_invoice', function(e)
        {
            updateState('invoice');
            updateNeedIDNumber('invoice');
            updateZipCode('invoice');
        });
        updateState('invoice');
        updateNeedIDNumber('invoice');
        updateZipCode('invoice');
    }

    if (typeof idSelectedState !== 'undefined' && idSelectedState)
        $('.id_state option[value= + idSelectedState + ]').prop('selected', true);
    if (typeof idSelectedStateInvoice !== 'undefined' && idSelectedStateInvoice)
        $('.id_state_invoice option[value= + idSelectedStateInvoice + ]').prop('selected', true);
}

function updateState(suffix)
{
    $('#id_state' + (typeof suffix !== 'undefined' ? '_' + suffix : '')+' option:not(:first-child)').remove();
    if (typeof countries !== 'undefined')
        var states = countries[parseInt($('#id_country' + (typeof suffix !== 'undefined' ? '_' + suffix : '')).val())];
    if (typeof states !== 'undefined')
    {
        $(states).each(function(key, item){
            $('#id_state' + (typeof suffix !== 'undefined' ? '_' + suffix : '')).append('<option value="' + parseInt(item.id) + '">' + item.name + '</option>');
        });

        $('.id_state' + (typeof suffix !== 'undefined' ? '_' + suffix : '') + ':hidden').fadeIn('slow');
        $('#id_state, #id_state_invoice').uniform();
    }
    else
        $('.id_state' + (typeof suffix !== 'undefined' ? '_' + suffix : '')).fadeOut('fast');
}

function updateNeedIDNumber(suffix)
{
    var idCountry = parseInt($('#id_country' + (typeof suffix !== 'undefined' ? '_' + suffix : '')).val());
    if (typeof countriesNeedIDNumber !== 'undefined' && in_array(idCountry, countriesNeedIDNumber))
    {
        $('.dni' + (typeof suffix !== 'undefined' ? '_' + suffix : '') + ':hidden').fadeIn('slow');
        $('#dni').uniform();
    }
    else
        $('.dni' + (typeof suffix !== 'undefined' ? '_' + suffix : '')).fadeOut('fast');
}

function updateZipCode(suffix)
{
    var idCountry = parseInt($('#id_country' + (typeof suffix !== 'undefined' ? '_' + suffix : '')).val());
    if (typeof countriesNeedZipCode !== 'undefined' && typeof countriesNeedZipCode[idCountry] !== 'undefined')
    {
        $('.postcode' + (typeof suffix !== 'undefined' ? '_' + suffix : '') + ':hidden').fadeIn('slow');
        $('#postcode').uniform();
    }
    else
        $('.postcode'+(typeof suffix !== 'undefined' ? '_' + suffix : '')).fadeOut('fast');
}

Link to comment
Share on other sites

Te pego una copia de un statesManagement.js de otra tienda con mismo template que no presenta esos bugs y que difiere en varias líneas del tuyo que da error en http://aldeaglobaltarifa.com/themes/default-bootstrap/js/tools/statesManagement.js

 

Si no tienes opción de actualizar tu template "default bootstrap" por completo, que sería lo ideal, la cosa sería sustituir tu fichero que da problemas (previa copia de seguridad) por este que te paso.

 

Suerte!

 

He hecho ese cambio, vaciado caché y sigo igual.

No tengo campo Codigo Postal y no tengo desplegable Provincia que antes creo que sí tenía...

Tengo este mensaje y estos ajustes.

post-171820-0-03021100-1493752860_thumb.png

post-171820-0-98869600-1493752887_thumb.png

post-171820-0-15933600-1493752903_thumb.png

post-171820-0-26547700-1493752916_thumb.png

post-171820-0-51509600-1493753013_thumb.png

post-171820-0-56511900-1493753023_thumb.png

Link to comment
Share on other sites

He hecho ese cambio, vaciado caché y sigo igual.

No tengo campo Codigo Postal y no tengo desplegable Provincia que antes creo que sí tenía...

Tengo este mensaje y estos ajustes.

 

El fichero http://aldeaglobaltarifa.com/themes/default-bootstrap/js/tools/statesManagement.js sigue siendo el antiguo y no el que yo te he pegado ¿has vuelto a restaurar ya el original?

Link to comment
Share on other sites

¿Y este error como se soluciona?

 

Ese error es el que estoy intentando ayudarte a solucionar

 

Las diferencias son muchas, pero la más evidente es que tu fichero tiene estas líneas en la parte superior:

 

//global variablesvar countriesNeedIDNumber = [];var countriesNeedZipCode = [];var states = [];

 

Y el que yo te he puesto más arriba, no tiene esta línea:

 

var states = [];
Link to comment
Share on other sites

Bueno, pues me he tirado a la piscina y he actualizado toda la tienda con el módulo "Actualización 1-Click" y ahora tengo la versión 1.6.1.13, que le he tenido que hacer algún cambio por la apariencia de los radio buttons, pero que parece que me ha solucionado el problema del registro, Código postal, y Provincia. Al menos por ahora

 

He vaciado caché, Reseteado CCC a su estado activo y por ahora pinta bién.

 

Ahora veré si algunas modificaciones que le tuve que hacer al tema original por problemas que traía las tengo que volver a hacer o vienen solucionadas con la actualización.

 

Me resistía a actualizar por miedo a tener que hacer nuevos cambios profundos pero, de momento, parece todo correcto.

 

Muchas gracias por el interés que os estáis tomando.

 

Sigo con las pruebas y seguiré informando y "molestando"   :)  si necesito ayuda.

 

Espero que le sirva de ayuda a quien se encuentre un problema igual.

Link to comment
Share on other sites

Bueno, pues tengo el Debug activado y me salta este error:

Error occured: TypeError: $(...).uniform is not a function
http://aldeaglobaltarifa.com/themes/default-bootstrap/cache/v_57_d4f48d71c2d0d6063fd458d3b3082f2c.js
 on Line: 970

 

Y después de registrar el mismo cliente dos veces (previo borrado desde el BackOffice) NO ME APARECE EL CAMPO CODIGO POSTAL.

Ha desaparecido!!!

Link to comment
Share on other sites

He comprobado que había eliminado el archivo /js/autoload/15-jquery.uniform-modified.js y que al restituirlo parece ser que se eliminan los problemas del registro de los clientes. También se eliminan los problemas de pagar con Paypal.

 

¿Porque había eliminado ese archivo? Tengo en mi tienda el módulo Attribute Grid de Presto Changeo para la gestion de combinaciones tipo talla color. Pero la presencia de algún comando en el archivo eliminado hacía que ese módulo funcionara mal presentando mal los radio buttons. 

 

En un comentario de otro foro aquí en Prestashop recomendaban modicar algunas líneas o directamente eliminar el archivo, es el link que he puesto arriba:

https://www.prestashop.com/forums/topic/392542-how-to-prevent-radio-button-wrapping-by-span-and-div/

 

Necesitaría saber que líneas cambiar en el archivo, ya que Attribute Grid lo necesito. No tengo ni idea de código ni programación pero parece que viene de ahí.

Link to comment
Share on other sites

En ese hilo te dicen que para no eliminar el archivo, agregues al final del mismo este código para uno de ¿tus radio button problemáticos?

 

 

$(window).load(function() {
$.uniform.restore(".noUniform");
});

 

Necesitaríamos ver un ejemplo del problema inicial (radio buttons mal presentados) para entender el problema del que hablan en ese topic e interpretar la solución menos agresiva (sin eliminar el fichero)

Link to comment
Share on other sites

A ver si soy capaz de ordenar las imágenes.

Con la modificación de arriba, pero sin el módulo Attribute Grid se ven los botones en blanco y negro y las combinaciones a la derecha.

 

Al registrar el cliente se ven todos los campos correctamente (codigo postal, provincia...)

 

Si activo Attribute Grid se ven las combinaciones en forma de cuadrícula pero no puedo marcar solo una combinación, porque al marcar otra combinación se debería desactivar la primera (son radio buttons, no checkboxes) Eso es un conflicto con Attribute Grid

 

Sin el archivo /js/autoload/15-jquery.uniform-modified.js (borrado) se ven las combinaciones correctamente y los botones en azul. Si selecciono otra cominación, se deselecciona la primera. Atribute grid funciona correctamente, pero el registro de clientes está mal, me sale un mensaje de error y no aparece el campo Codigo Postal pero el aspecto de los desplegables también cambia (aunque me gusta mas, tiene mejor aspecto)

post-171820-0-94334800-1493971394_thumb.png

post-171820-0-78166200-1493971688_thumb.png

post-171820-0-10961200-1493971928_thumb.png

post-171820-0-30450900-1493972098_thumb.png

post-171820-0-54575500-1493972108_thumb.png

post-171820-0-74279400-1493972119_thumb.png

Link to comment
Share on other sites

Con la línea modificada no es bastante. Se siguen viendo los botones en blanco y negro sobreescribiéndose al original sombreado y azul (que aparece brevemente unas décimas de segundo). Y Attribute Grid no funciona.

 

Pero al menos se puede registrar el cliente con todos los campos.

Link to comment
Share on other sites

Este es el contenido del archivo:

 

 

/*

Uniform v2.1.2
Copyright © 2009 Josh Pyles / Pixelmatrix Design LLC
http://pixelmatrixdesign.com

Requires jQuery 1.3 or newer

Much thanks to Thomas Reynolds and Buck Wilson for their help and advice on
this.

Disabling text selection is made possible by Mathias Bynens
<http://mathiasbynens.be/> and his noSelect plugin.
<https://github.com/mathiasbynens/jquery-noselect>, which is embedded.

Also, thanks to David Kaneda and Eugene Bond for their contributions to the
plugin.

Tyler Akins has also rewritten chunks of the plugin, helped close many issues,
and ensured version 2 got out the door.

License:
MIT License - http://www.opensource.org/licenses/mit-license.php

Enjoy!

*/
/*global jQuery, document, navigator*/

(function (wind, $, undef) {
    "use strict";

    /**
     * Use .prop() if jQuery supports it, otherwise fall back to .attr()
     *
     * @param jQuery $el jQuery'd element on which we're calling attr/prop
     * @param ... All other parameters are passed to jQuery's function
     * @return The result from jQuery
     */
    function attrOrProp($el) {
        var args = Array.prototype.slice.call(arguments, 1);

        if ($el.prop) {
            // jQuery 1.6+
            return $el.prop.apply($el, args);
        }

        // jQuery 1.5 and below
        return $el.attr.apply($el, args);
    }

    /**
     * For backwards compatibility with older jQuery libraries, only bind
     * one thing at a time.  Also, this function adds our namespace to
     * events in one consistent location, shrinking the minified code.
     *
     * The properties on the events object are the names of the events
     * that we are supposed to add to.  It can be a space separated list.
     * The namespace will be added automatically.
     *
     * @param jQuery $el
     * @param Object options Uniform options for this element
     * @param Object events Events to bind, properties are event names
     */
    function bindMany($el, options, events) {
        var name, namespaced;

        for (name in events) {
            if (events.hasOwnProperty(name)) {
                namespaced = name.replace(/ |$/g, options.eventNamespace);
                $el.bind(namespaced, events[name]);
            }
        }
    }

    /**
     * Bind the hover, active, focus, and blur UI updates
     *
     * @param jQuery $el Original element
     * @param jQuery $target Target for the events (our div/span)
     * @param Object options Uniform options for the element $target
     */
    function bindUi($el, $target, options) {
        bindMany($el, options, {
            focus: function () {
                $target.addClass(options.focusClass);
            },
            blur: function () {
                $target.removeClass(options.focusClass);
                $target.removeClass(options.activeClass);
            },
            mouseenter: function () {
                $target.addClass(options.hoverClass);
            },
            mouseleave: function () {
                $target.removeClass(options.hoverClass);
                $target.removeClass(options.activeClass);
            },
            "mousedown touchbegin": function () {
                if (!$el.is(":disabled")) {
                    $target.addClass(options.activeClass);
                }
            },
            "mouseup touchend": function () {
                $target.removeClass(options.activeClass);
            }
        });
    }

    /**
     * Remove the hover, focus, active classes.
     *
     * @param jQuery $el Element with classes
     * @param Object options Uniform options for the element
     */
    function classClearStandard($el, options) {
        $el.removeClass(options.hoverClass + " " + options.focusClass + " " + options.activeClass);
    }

    /**
     * Add or remove a class, depending on if it's "enabled"
     *
     * @param jQuery $el Element that has the class added/removed
     * @param String className Class or classes to add/remove
     * @param Boolean enabled True to add the class, false to remove
     */
    function classUpdate($el, className, enabled) {
        if (enabled) {
            $el.addClass(className);
        } else {
            $el.removeClass(className);
        }
    }

    /**
     * Updating the "checked" property can be a little tricky.  This
     * changed in jQuery 1.6 and now we can pass booleans to .prop().
     * Prior to that, one either adds an attribute ("checked=checked") or
     * removes the attribute.
     *
     * @param jQuery $tag Our Uniform span/div
     * @param jQuery $el Original form element
     * @param Object options Uniform options for this element
     */
    function classUpdateChecked($tag, $el, options) {
        var c = "checked",
            isChecked = $el.is(":" + c);

        if ($el.prop) {
            // jQuery 1.6+
            $el.prop(c, isChecked);
        } else {
            // jQuery 1.5 and below
            if (isChecked) {
                $el.attr(c, c);
            } else {
                $el.removeAttr©;
            }
        }

        classUpdate($tag, options.checkedClass, isChecked);
    }

    /**
     * Set or remove the "disabled" class for disabled elements, based on
     * if the element is detected to be disabled.
     *
     * @param jQuery $tag Our Uniform span/div
     * @param jQuery $el Original form element
     * @param Object options Uniform options for this element
     */
    function classUpdateDisabled($tag, $el, options) {
        classUpdate($tag, options.disabledClass, $el.is(":disabled"));
    }

    /**
     * Wrap an element inside of a container or put the container next
     * to the element.  See the code for examples of the different methods.
     *
     * Returns the container that was added to the HTML.
     *
     * @param jQuery $el Element to wrap
     * @param jQuery $container Add this new container around/near $el
     * @param String method One of "after", "before" or "wrap"
     * @return $container after it has been cloned for adding to $el
     */
    function divSpanWrap($el, $container, method) {
        switch (method) {
        case "after":
            // Result:  <element /> <container />
            $el.after($container);
            return $el.next();
        case "before":
            // Result:  <container /> <element />
            $el.before($container);
            return $el.prev();
        case "wrap":
            // Result:  <container> <element /> </container>
            $el.wrap($container);
            return $el.parent();
        }

        return null;
    }


    /**
     * Create a div/span combo for uniforming an element
     *
     * @param jQuery $el Element to wrap
     * @param Object options Options for the element, set by the user
     * @param Object divSpanConfig Options for how we wrap the div/span
     * @return Object Contains the div and span as properties
     */
    function divSpan($el, options, divSpanConfig) {
        var $div, $span, id;

        if (!divSpanConfig) {
            divSpanConfig = {};
        }

        divSpanConfig = $.extend({
            bind: {},
            divClass: null,
            divWrap: "wrap",
            spanClass: null,
            spanHtml: null,
            spanWrap: "wrap"
        }, divSpanConfig);

        $div = $('<div />');
        $span = $('<span />');

        // Automatically hide this div/span if the element is hidden.
        // Do not hide if the element is hidden because a parent is hidden.
        if (options.autoHide && $el.is(':hidden') && $el.css('display') === 'none') {
            $div.hide();
        }

        if (divSpanConfig.divClass) {
            $div.addClass(divSpanConfig.divClass);
        }

        if (options.wrapperClass) {
            $div.addClass(options.wrapperClass);
        }

        if (divSpanConfig.spanClass) {
            $span.addClass(divSpanConfig.spanClass);
        }

        id = attrOrProp($el, 'id');

        if (options.useID && id) {
            attrOrProp($div, 'id', options.idPrefix + '-' + id);
        }

        if (divSpanConfig.spanHtml) {
            $span.html(divSpanConfig.spanHtml);
        }

        $div = divSpanWrap($el, $div, divSpanConfig.divWrap);
        $span = divSpanWrap($el, $span, divSpanConfig.spanWrap);
        classUpdateDisabled($div, $el, options);
        return {
            div: $div,
            span: $span
        };
    }


    /**
     * Wrap an element with a span to apply a global wrapper class
     *
     * @param jQuery $el Element to wrap
     * @param object options
     * @return jQuery Wrapper element
     */
    function wrapWithWrapperClass($el, options) {
        var $span;

        if (!options.wrapperClass) {
            return null;
        }

        $span = $('<span />').addClass(options.wrapperClass);
        $span = divSpanWrap($el, $span, "wrap");
        return $span;
    }


    /**
     * Test if high contrast mode is enabled.
     *
     * In high contrast mode, background images can not be set and
     * they are always returned as 'none'.
     *
     * @return boolean True if in high contrast mode
     */
    function highContrast() {
        var c, $div, el, rgb;

        // High contrast mode deals with white and black
        rgb = 'rgb(120,2,153)';
        $div = $('<div style="width:0;height:0;color:' + rgb + '">');
        $('body').append($div);
        el = $div.get(0);

        // $div.css() will get the style definition, not
        // the actually displaying style
        if (wind.getComputedStyle) {
            c = wind.getComputedStyle(el, '').color;
        } else {
            c = (el.currentStyle || el.style || {}).color;
        }

        $div.remove();
        return c.replace(/ /g, '') !== rgb;
    }


    /**
     * Change text into safe HTML
     *
     * @param String text
     * @return String HTML version
     */
    function htmlify(text) {
        if (!text) {
            return "";
        }

        return $('<span />').text(text).html();
    }

    /**
     * If not MSIE, return false.
     * If it is, return the version number.
     *
     * @return false|number
     */
    function isMsie() {
        return navigator.cpuClass && !navigator.product;
    }

    /**
     * Return true if this version of IE allows styling
     *
     * @return boolean
     */
    function isMsieSevenOrNewer() {
        if (wind.XMLHttpRequest !== undefined) {
            return true;
        }

        return false;
    }

    /**
     * Test if the element is a multiselect
     *
     * @param jQuery $el Element
     * @return boolean true/false
     */
    function isMultiselect($el) {
        var elSize;

        if ($el[0].multiple) {
            return true;
        }

        elSize = attrOrProp($el, "size");

        if (!elSize || elSize <= 1) {
            return false;
        }

        return true;
    }

    /**
     * Meaningless utility function.  Used mostly for improving minification.
     *
     * @return false
     */
    function returnFalse() {
        return false;
    }

    /**
     * noSelect plugin, very slightly modified
     * http://mths.be/noselect v1.0.3
     *
     * @param jQuery $elem Element that we don't want to select
     * @param Object options Uniform options for the element
     */
    function noSelect($elem, options) {
        var none = 'none';
        bindMany($elem, options, {
            'selectstart dragstart mousedown': returnFalse
        });

        $elem.css({
            MozUserSelect: none,
            msUserSelect: none,
            webkitUserSelect: none,
            userSelect: none
        });
    }

    /**
     * Updates the filename tag based on the value of the real input
     * element.
     *
     * @param jQuery $el Actual form element
     * @param jQuery $filenameTag Span/div to update
     * @param Object options Uniform options for this element
     */
    function setFilename($el, $filenameTag, options) {
        var filename = $el.val();

        if (filename === "") {
            filename = options.fileDefaultHtml;
        } else {
            filename = filename.split(/[\/\\]+/);
            filename = filename[(filename.length - 1)];
        }

        $filenameTag.text(filename);
    }


    /**
     * Function from jQuery to swap some CSS values, run a callback,
     * then restore the CSS.  Modified to pass JSLint and handle undefined
     * values with 'use strict'.
     *
     * @param jQuery $el Element
     * @param object newCss CSS values to swap out
     * @param Function callback Function to run
     */
    function swap($elements, newCss, callback) {
        var restore, item;

        restore = [];

        $elements.each(function () {
            var name;

            for (name in newCss) {
                if (Object.prototype.hasOwnProperty.call(newCss, name)) {
                    restore.push({
                        el: this,
                        name: name,
                        old: this.style[name]
                    });

                    this.style[name] = newCss[name];
                }
            }
        });

        callback();

        while (restore.length) {
            item = restore.pop();
            item.el.style[item.name] = item.old;
        }
    }


    /**
     * The browser doesn't provide sizes of elements that are not visible.
     * This will clone an element and add it to the DOM for calculations.
     *
     * @param jQuery $el
     * @param String method
     */
    function sizingInvisible($el, callback) {
        var targets;

        // We wish to target ourselves and any parents as long as
        // they are not visible
        targets = $el.parents();
        targets.push($el[0]);
        targets = targets.not(':visible');
        swap(targets, {
            visibility: "hidden",
            display: "block",
            position: "absolute"
        }, callback);
    }


    /**
     * Standard way to unwrap the div/span combination from an element
     *
     * @param jQuery $el Element that we wish to preserve
     * @param Object options Uniform options for the element
     * @return Function This generated function will perform the given work
     */
    function unwrapUnwrapUnbindFunction($el, options) {
        return function () {
            $el.unwrap().unwrap().unbind(options.eventNamespace);
        };
    }

    var allowStyling = true,  // False if IE6 or other unsupported browsers
        highContrastTest = false,  // Was the high contrast test ran?
        uniformHandlers = [  // Objects that take care of "unification"
            {
                // Buttons
                match: function ($el) {
                    return $el.is("a, button, :submit, :reset, input[type=button]");
                },
                apply: function ($el, options) {
                    var $div, defaultSpanHtml, ds, getHtml, doingClickEvent;
                    defaultSpanHtml = options.submitDefaultHtml;

                    if ($el.is(":reset")) {
                        defaultSpanHtml = options.resetDefaultHtml;
                    }

                    if ($el.is("a, button")) {
                        // Use the HTML inside the tag
                        getHtml = function () {
                            return $el.html() || defaultSpanHtml;
                        };
                    } else {
                        // Use the value property of the element
                        getHtml = function () {
                            return htmlify(attrOrProp($el, "value")) || defaultSpanHtml;
                        };
                    }

                    ds = divSpan($el, options, {
                        divClass: options.buttonClass,
                        spanHtml: getHtml()
                    });
                    $div = ds.div;
                    bindUi($el, $div, options);
                    doingClickEvent = false;
                    bindMany($div, options, {
                        "click touchend": function () {
                            var ev, res, target, href;

                            if (doingClickEvent) {
                                return;
                            }

                            if ($el.is(':disabled')) {
                                return;
                            }

                            doingClickEvent = true;

                            if ($el[0].dispatchEvent) {
                                ev = document.createEvent("MouseEvents");
                                ev.initEvent("click", true, true);
                                res = $el[0].dispatchEvent(ev);

                                if ($el.is('a') && res) {
                                    target = attrOrProp($el, 'target');
                                    href = attrOrProp($el, 'href');

                                    if (!target || target === '_self') {
                                        document.location.href = href;
                                    } else {
                                        wind.open(href, target);
                                    }
                                }
                            } else {
                                $el.click();
                            }

                            doingClickEvent = false;
                        }
                    });
                    noSelect($div, options);
                    return {
                        remove: function () {
                            // Move $el out
                            $div.after($el);

                            // Remove div and span
                            $div.remove();

                            // Unbind events
                            $el.unbind(options.eventNamespace);
                            return $el;
                        },
                        update: function () {
                            classClearStandard($div, options);
                            classUpdateDisabled($div, $el, options);
                            $el.detach();
                            ds.span.html(getHtml()).append($el);
                        }
                    };
                }
            },
            {
                // Checkboxes
                match: function ($el) {
                    return $el.is(":checkbox");
                },
                apply: function ($el, options) {
                    var ds, $div, $span;
                    ds = divSpan($el, options, {
                        divClass: options.checkboxClass
                    });
                    $div = ds.div;
                    $span = ds.span;

                    // Add focus classes, toggling, active, etc.
                    bindUi($el, $div, options);
                    bindMany($el, options, {
                        "click touchend": function () {
                            classUpdateChecked($span, $el, options);
                        }
                    });
                    classUpdateChecked($span, $el, options);
                    return {
                        remove: unwrapUnwrapUnbindFunction($el, options),
                        update: function () {
                            classClearStandard($div, options);
                            $span.removeClass(options.checkedClass);
                            classUpdateChecked($span, $el, options);
                            classUpdateDisabled($div, $el, options);
                        }
                    };
                }
            },
            {
                // File selection / uploads
                match: function ($el) {
                    return $el.is(":file");
                },
                apply: function ($el, options) {

                    var ds, $div, $filename, $button;

                    // The "span" is the button
                    ds = divSpan($el, options, {
                        divClass: options.fileClass,
                        spanClass: options.fileButtonClass,
                        spanHtml: options.fileButtonHtml,
                        spanWrap: "after"
                    });
                    $div = ds.div;
                    $button = ds.span;
                    $filename = $("<span />").html(options.fileDefaultHtml);
                    $filename.addClass(options.filenameClass);
                    $filename = divSpanWrap($el, $filename, "after");

                    // Set the size
                    if (!attrOrProp($el, "size")) {
                        attrOrProp($el, "size", $div.width() / 10);
                    }

                    // Actions
                    function filenameUpdate() {
                        setFilename($el, $filename, options);
                    }

                    bindUi($el, $div, options);

                    // Account for input saved across refreshes
                    filenameUpdate();

                    // IE7 doesn't fire onChange until blur or second fire.
                    if (isMsie()) {
                        // IE considers browser chrome blocking I/O, so it
                        // suspends tiemouts until after the file has
                        // been selected.
                        bindMany($el, options, {
                            click: function () {
                                $el.trigger("change");
                                setTimeout(filenameUpdate, 0);
                            }
                        });
                    } else {
                        // All other browsers behave properly
                        bindMany($el, options, {
                            change: filenameUpdate
                        });
                    }

                    noSelect($filename, options);
                    noSelect($button, options);
                    return {
                        remove: function () {
                            // Remove filename and button
                            $filename.remove();
                            $button.remove();

                            // Unwrap parent div, remove events
                            return $el.unwrap().unbind(options.eventNamespace);
                        },
                        update: function () {
                            classClearStandard($div, options);
                            setFilename($el, $filename, options);
                            classUpdateDisabled($div, $el, options);
                        }
                    };
                }
            },
            {
                // Input fields (text)
                match: function ($el) {
                    if ($el.is("input")) {
                        var t = (" " + attrOrProp($el, "type") + " ").toLowerCase(),
                            allowed = " color date datetime datetime-local email month number password search tel text time url week ";
                        return allowed.indexOf(t) >= 0;
                    }

                    return false;
                },
                apply: function ($el, options) {
                    var elType, $wrapper;

                    elType = attrOrProp($el, "type");
                    $el.addClass(options.inputClass);
                    $wrapper = wrapWithWrapperClass($el, options);
                    bindUi($el, $el, options);

                    if (options.inputAddTypeAsClass) {
                        $el.addClass(elType);
                    }

                    return {
                        remove: function () {
                            $el.removeClass(options.inputClass);

                            if (options.inputAddTypeAsClass) {
                                $el.removeClass(elType);
                            }

                            if ($wrapper) {
                                $el.unwrap();
                            }
                        },
                        update: returnFalse
                    };
                }
            },
            {
                // Radio buttons
                match: function ($el) {
                    return $el.is(":radio");
                },
                apply: function ($el, options) {
                    var ds, $div, $span;
                    ds = divSpan($el, options, {
                        divClass: options.radioClass
                    });
                    $div = ds.div;
                    $span = ds.span;

                    // Add classes for focus, handle active, checked
                    bindUi($el, $div, options);
                    bindMany($el, options, {
                        "click touchend": function () {
                            // Find all radios with the same name, then update
                            // them with $.uniform.update() so the right
                            // per-element options are used
                            $.uniform.update($(':radio[name=' + attrOrProp($el, "name") + ']'));
                        }
                    });
                    classUpdateChecked($span, $el, options);
                    return {
                        remove: unwrapUnwrapUnbindFunction($el, options),
                        update: function () {
                            classClearStandard($div, options);
                            classUpdateChecked($span, $el, options);
                            classUpdateDisabled($div, $el, options);
                        }
                    };
                }
            },
            {
                // Select lists, but do not style multiselects here
                match: function ($el) {
                    if ($el.is("select") && !isMultiselect($el)) {
                        return true;
                    }

                    return false;
                },
                apply: function ($el, options) {
                    var ds, $div, $span, origElemWidth;

                    if (options.selectAutoWidth) {
                        sizingInvisible($el, function () {
                            origElemWidth = $el.width();
                        });
                    }

                    ds = divSpan($el, options, {
                        divClass: options.selectClass,
                        spanHtml: ($el.find(":selected:first") || $el.find("option:first")).html(),
                        spanWrap: "before"
                    });
                    $div = ds.div;
                    $span = ds.span;

                    if (options.selectAutoWidth) {
                        // Use the width of the select and adjust the
                        // span and div accordingly
                        sizingInvisible($el, function () {
                            // Force "display: block" - related to bug #287
                            swap($([ $span[0], $div[0] ]), {
                                display: "block"
                            }, function () {
                                var spanPad;
                                spanPad = $span.outerWidth() - $span.width();
                                $div.width(origElemWidth);
                                $span.width(origElemWidth -spanPad);
                            });
                        });
                        
                    } else {
                        // Force the select to fill the size of the div
                        $div.addClass('fixedWidth');
                    }

                    // Take care of events
                    bindUi($el, $div, options);
                    bindMany($el, options, {
                        change: function () {
                            $span.html($el.find(":selected").html());
                            $div.removeClass(options.activeClass);
                        },
                        "click touchend": function () {
                            // IE7 and IE8 may not update the value right
                            // until after click event - issue #238
                            var selHtml = $el.find(":selected").html();

                            if ($span.html() !== selHtml) {
                                // Change was detected
                                // Fire the change event on the select tag
                                $el.trigger('change');
                            }
                        },
                        keyup: function () {
                            $span.html($el.find(":selected").html());
                        }
                    });
                    noSelect($span, options);
                    return {
                        remove: function () {
                            // Remove sibling span
                            $span.remove();

                            // Unwrap parent div
                            $el.unwrap().unbind(options.eventNamespace);
                            return $el;
                        },
                        update: function () {
                            if (options.selectAutoWidth) {
                                // Easier to remove and reapply formatting
                                $.uniform.restore($el);
                                $el.uniform(options);
                            } else {
                                classClearStandard($div, options);

                                // Reset current selected text
                                $span.html($el.find(":selected").html());
                                classUpdateDisabled($div, $el, options);
                            }
                        }
                    };
                }
            },
            {
                // Select lists - multiselect lists only
                match: function ($el) {
                    if ($el.is("select") && isMultiselect($el)) {
                        return true;
                    }

                    return false;
                },
                apply: function ($el, options) {
                    var $wrapper;

                    $el.addClass(options.selectMultiClass);
                    $wrapper = wrapWithWrapperClass($el, options);
                    bindUi($el, $el, options);

                    return {
                        remove: function () {
                            $el.removeClass(options.selectMultiClass);

                            if ($wrapper) {
                                $el.unwrap();
                            }
                        },
                        update: returnFalse
                    };
                }
            },
            {
                // Textareas
                match: function ($el) {
                    return $el.is("textarea");
                },
                apply: function ($el, options) {
                    var $wrapper;

                    $el.addClass(options.textareaClass);
                    $wrapper = wrapWithWrapperClass($el, options);
                    bindUi($el, $el, options);

                    return {
                        remove: function () {
                            $el.removeClass(options.textareaClass);

                            if ($wrapper) {
                                $el.unwrap();
                            }
                        },
                        update: returnFalse
                    };
                }
            }
        ];

    // IE6 can't be styled - can't set opacity on select
    if (isMsie() && !isMsieSevenOrNewer()) {
        allowStyling = false;
    }

    $.uniform = {
        // Default options that can be overridden globally or when uniformed
        // globally:  $.uniform.defaults.fileButtonHtml = "Pick A File";
        // on uniform:  $('input').uniform({fileButtonHtml: "Pick a File"});
        defaults: {
            activeClass: "active",
            autoHide: true,
            buttonClass: "button",
            checkboxClass: "checker",
            checkedClass: "checked",
            disabledClass: "disabled",
            eventNamespace: ".uniform",
            fileButtonClass: "action",
            fileButtonHtml: "Choose File",
            fileClass: "uploader",
            fileDefaultHtml: "No file selected",
            filenameClass: "filename",
            focusClass: "focus",
            hoverClass: "hover",
            idPrefix: "uniform",
            inputAddTypeAsClass: true,
            inputClass: "uniform-input",
            radioClass: "radio",
            resetDefaultHtml: "Reset",
            resetSelector: false,  // We'll use our own function when you don't specify one
            selectAutoWidth: true,
            selectClass: "selector",
            selectMultiClass: "uniform-multiselect",
            submitDefaultHtml: "Submit",  // Only text allowed
            textareaClass: "uniform",
            useID: true,
            wrapperClass: null
        },

        // All uniformed elements - DOM objects
        elements: []
    };

    $.fn.uniform = function (options) {
        var el = this;
        options = $.extend({}, $.uniform.defaults, options);

        // If we are in high contrast mode, do not allow styling
        if (!highContrastTest) {
            highContrastTest = true;

            if (highContrast()) {
                allowStyling = false;
            }
        }

        // Only uniform on browsers that work
        if (!allowStyling) {
            return this;
        }

        // Code for specifying a reset button
        if (options.resetSelector) {
            $(options.resetSelector).mouseup(function () {
                wind.setTimeout(function () {
                    $.uniform.update(el);
                }, 10);
            });
        }

        return this.each(function () {
            var $el = $(this), i, handler, callbacks;

            // Avoid uniforming elements already uniformed - just update
            if ($el.data("uniformed")) {
                $.uniform.update($el);
                return;
            }

            // See if we have any handler for this type of element
            for (i = 0; i < uniformHandlers.length; i = i + 1) {
                handler = uniformHandlers;

                if (handler.match($el, options)) {
                    callbacks = handler.apply($el, options);
                    $el.data("uniformed", callbacks);

                    // Store element in our global array
                    $.uniform.elements.push($el.get(0));
                    return;
                }
            }

            // Could not style this element
        });
    };

    $.uniform.restore = $.fn.uniform.restore = function (elem) {
        if (elem === undef) {
            elem = $.uniform.elements;
        }

        $(elem).each(function () {
            var $el = $(this), index, elementData;
            elementData = $el.data("uniformed");

            // Skip elements that are not uniformed
            if (!elementData) {
                return;
            }

            // Unbind events, remove additional markup that was added
            elementData.remove();

            // Remove item from list of uniformed elements
            index = $.inArray(this, $.uniform.elements);

            if (index >= 0) {
                $.uniform.elements.splice(index, 1);
            }

            $el.removeData("uniformed");
        });
    };

    $.uniform.update = $.fn.uniform.update = function (elem) {
        if (elem === undef) {
            elem = $.uniform.elements;
        }

        $(elem).each(function () {
            var $el = $(this), elementData;
            elementData = $el.data("uniformed");

            // Skip elements that are not uniformed
            if (!elementData) {
                return;
            }

            elementData.update($el, elementData.options);
        });
    };
}(this, jQuery));


if (typeof isMobile != 'undefined' && !isMobile){

    $(window).load(function () {
        $("select.form-control,input[type=checkbox]:not(.comparator), input[type=radio],input#id_carrier2, input[type=file]").uniform();
    });

    // refresh uniform selects on document width change
    $(window).resize(
        function () {
            $.uniform.update("select.form-control, input[type=file]");
        }
    );
}

Link to comment
Share on other sites

El problema es que con capturas o código que nos pegues, no podemos hacer nada, necesitamos ver el fallo en la tienda para debuguearlo con el inspector de chrome y ver una posible solución.

 

Incluso a veces viendo el código solo, sin acceso a modificar archivos, se vuelve una tarea casi imposible el resolverlo.

 

Entiendo que tal y como está ahora la tienda, todo te iría perfecto, ¿salvo el código postal que veo que sigue sin salir?

 

Lo mejor va a ser que nos centremos en resolver ese tema, que parece el menor de los fallos.

Link to comment
Share on other sites

En principio parece ser una incompatibilidad con el módulo Attribute Grid (ya me he puesto en contacto con el desarrollador Presto-Changeo) ya que para que el módulo funcione bien, hay que desactivar algún comando y es desactivando el archivo que contiene ese comando cuando el módulo funciona, presenta los radio buttons en celeste en lugar de blanco y negro y y permite seleccionarlos adecuadamente, pero con el problema de que desaparecen algunos campos imprescindibles para el registro.

 

El borrado del archivo /js/autoload/15-jquery.uniform-modified.js es el que me produce esos problemas de registro.

 

La modificación del archivo no ha quedado bién explicada en el hilo que propuse así que espero una solución del desarrollador.

 

Creo que de momento al menos he localizado la procedencia del problema. Y eso no lo hubiera hecho sin vuestra ayuda, ya que vuestros comentarios me han permitido seguirle la pista.

Seguiré informando.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...