Añadir a lista de deseos por talla, y añadir desde la página de carrito

La clienta pidió que al pulsar en el botón de añadir a la lista de deseos se añadiera la talla seleccionada, no la por defecto.

También pidió que se pudiera añadir desde el listado de la página de carrito.

Modificamos los siguientes ficheros:

/modules/pk_wishlist/views/templates/hook/blockwishlist-extra.tpl linea 24
        <!--custom code natural - /modules/pk_wishlist/views/templates/hook/blockwishlist-extra.tpl - añadimos el enlace con onclick para que siempre se pueda añadir, pero con la clase añadido -->
        <!--<a href="#" id="wishlist_button" class="icon_checked flex-container align-items-center addToWishlist icon-button" onclick="return false;">-->
        <a id="wishlist_button" class=" icon_checked flex-container align-items-center addToWishlist icon-button" href="#" onclick="WishlistCart('wishlist_block_list', 'add', '{$id_product|intval}', $('#idCombination').val()); return false;" rel="nofollow" title="{l s='Add to wishlist' mod='pk_wishlist'}">
            {$wl_icon nofilter}<span>{l s='Add to wishlist' mod='pk_wishlist'}</span>
        </a>
        <!--fin custom code natural-->
/themes/particulares/templates/checkout/_partials/cart-detailed-product-line.tpl línea 69
    <!--custom code natural - /themes/particulares/templates/checkout/_partials/cart-detailed-product-line.tpl - sacamos información de las combinaciones para poder modificar el boton de añadir a la lista de deseos-->

    {assign var="combinaciones" value=Product::getProductAttributesIds($product->id)}
    {foreach from=$combinaciones item=comb}
      {assign var="param" value=Product::getAttributesParams($product->id,$comb.id_product_attribute)}
      {assign var="idcomb" value=$comb.id_product_attribute}
      {assign var="tallavalue" value=$param[1].name}
      <input type="hidden" class="idCombinacion" data-value="{$tallavalue}" data_attribute="{$idcomb}">
    {/foreach}
    <!--añadimos el nombre del atributo para identificar la capa-->
    {foreach from=$product.attributes key="attribute" item="value"}
      <div class="product-line-info prod-features {$attribute}">
        <span>{$attribute}:</span>
        <span class="value">{$value}</span>
      </div>
    {/foreach}

    <!--fin custom code natural-->

/themes/particulares/templates/checkout/_partials/cart-detailed-product-line.tpl línea 116

    <!--custom code natural - /themes/particulares/templates/checkout/_partials/cart-detailed-product-line.tpl-->
    <div class="productButtons flex-container align-items-center">
      {hook h='displayMoreButtons' product_id=$product.id}
    </div>
    <!--fin custom code natural-->
/themes/particulares/templates/catalog/_partials/product-variants.tpl línea 26
<!--custom code natural - /themes/particulares/templates/catalog/_partials/product-variants.tpl - sacamos id combinacion para añadir a lista de deseos-->
{foreach from=$combinations key=idcomb item=combinacion}
  <input type="hidden" class="idCombinacion" data-value="{$combinacion.attributes_values[5]}" data_attribute="{$idcomb}">
{/foreach}
<!--fin custom code natural-->

/themes/particulares/assets/js/custom.js línea 746

//Añadir talla a la lista de deseos, al pulsar en elboton dentro en la ficha de producto

function deseoTallaProducto(){
	$.ajax({
		type:'POST',
		url: window.location.href,
		success:function(){
			var clickboton = $('#wishlist_button').attr('onclick');
			var clickbotonlimpio = clickboton.split(',');
			var talla = $('.product-variants ul li input:checked + span.radio-label').text();
			$('.idCombinacion').each(function(){//Recorremos todos los input hidden para comprobar si la talla checked corresponde con la del input
				var este = $(this);
				var valor = este.attr('data-value');
				var id = este.attr('data_attribute');
				if(talla == valor){//Si corresponde modificamos el onclick del botón de añadir con el id de la combinacion
					$('#wishlist_button').attr('onclick', clickbotonlimpio[0]+','+clickbotonlimpio[1]+','+clickbotonlimpio[2]+','+id+'); return false;');
				}
			});
		}
	});
}

$(document).on('change',function(){
	if($('body').is('#product')){
		deseoTallaProducto();
	}
});

//Añadir talla a la lista de deseos, al pulsar en elboton en la página de carrito

function deseoTallaCarrito(){
	$.ajax({
		type:'POST',
		url: window.location.href,
		success:function(){
			$('.product-line-grid').each(function(){
				var linea = $(this);
				var clickboton = linea.find('#wishlist_button').attr('onclick');
				var clickbotonlimpio = clickboton.split(',');
				var talla = linea.find('.product-line-info.prod-features.Talla .value').text();
				linea.find('.idCombinacion').each(function(){//Recorremos todos los input hidden para comprobar si la talla checked corresponde con la del input
					var este = $(this);
					var valor = este.attr('data-value');
					var id = este.attr('data_attribute');
					if(talla == valor){//Si corresponde modificamos el onclick del botón de añadir de esta línea con el id de la combinacion
						linea.find('#wishlist_button').attr('onclick', clickbotonlimpio[0]+','+clickbotonlimpio[1]+','+clickbotonlimpio[2]+','+id+'); return false;');
					}
				});
				//Añadimos clase anadido a todos los botones de los productos añadidos
				if(linea.find('#wishlist_button').hasClass('icon_checked')){
					linea.find('#wishlist_button').addClass('anadido');
				}
				//Al hacer click en uno de lso botones, le pone clase anadido y elimina, de todos los que no tengan anadido la clase de icon_checked
				linea.find('#wishlist_button').click(function(){
					$(this).addClass('anadido');
					$.ajax({
						type:'POST',
						url: window.location.href,
						success:function(){
							$('#wishlist_button:not(.anadido)').removeClass('icon_checked');
						}
					});
				});
			});
		}
	});
}

$(document).on('ready',function(){
	if($('body').is('#cart')){
		deseoTallaCarrito();
	}
});