Commit 03ad6d198913c80079862fb4bc91f3f162725007

Authored by Adrian
1 parent 35e9527b

Mejoras estéticas en la intefaz del módulo en la ficha del producto. Implementac…

…ión con prestashop 8.
config.xml
... ... @@ -2,7 +2,7 @@
2 2 <module>
3 3 <name>imaxmultiean</name>
4 4 <displayName><![CDATA[Gestor de EANs Múltiples]]></displayName>
5   - <version><![CDATA[1.6]]></version>
  5 + <version><![CDATA[1.7]]></version>
6 6 <description><![CDATA[Permite añadir y gestionar múltiples códigos EAN para cada producto y combinación.]]></description>
7 7 <author><![CDATA[Informax]]></author>
8 8 <tab><![CDATA[administration]]></tab>
... ...
functionsForm.php
... ... @@ -5,7 +5,7 @@
5 5 */
6 6 class imaxForm {
7 7  
8   - private $sinFormulario, $formulario = '', $modulo;
  8 + private $sinFormulario, $formulario = '', $modulo, $context, $_path, $_modulePath, $ajax, $idLang, $idShop;
9 9  
10 10 function __construct($modulo, $modulePath = '', $action = '', $method = 'post', $name = '', $enctype = '', $extras = false, $sinFormulario = false, $pathToModule = '', $ajax = false) {
11 11 if ($action == '') {
... ...
imaxAcordeon.php
... ... @@ -3,6 +3,7 @@
3 3 * @version 1.3
4 4 */
5 5 class imaxAcordeon {
  6 + private $context, $_path;
6 7  
7 8 function __construct($modulePath) {
8 9 $this->context = Context::getContext();
... ...
imaxmultiean.php
... ... @@ -11,7 +11,7 @@ class ImaxMultiEAN extends Module {
11 11 var $idShop;
12 12 var $idLang;
13 13 var $idTab;
14   - private $_html = '';
  14 + private $_html = '', $path, $idManual, $forceCheck, $sufijo, $prefijo;
15 15  
16 16 private static $funciones;
17 17  
... ... @@ -22,7 +22,7 @@ class ImaxMultiEAN extends Module {
22 22 $this->name = 'imaxmultiean';
23 23 $this->tab = 'administration';
24 24 $this->path = _PS_MODULE_DIR_ . $this->name . '/';
25   - $this->version = '1.6';
  25 + $this->version = '1.7';
26 26 $this->author = 'Informax';
27 27 $this->need_instance = 0;
28 28 $this->idManual = '';
... ...
templates/hook/admin_products_extra.tpl
... ... @@ -3,24 +3,30 @@
3 3 font-family: Arial, sans-serif;
4 4 width: 50%;
5 5 }
6   -
7   - #multiEAN h3, #multiEAN h4 {
  6 +
  7 + #multiEAN h3{
  8 + padding-top: 25px;
  9 + }
  10 +
  11 + #multiEAN h3,
  12 + #multiEAN h4 {
8 13 color: #333;
  14 + }
  15 +
  16 + #multiEAN hr {
9 17 border-bottom: 2px solid #ddd;
10   - padding-bottom: 10px;
11   - margin-bottom: 15px;
12 18 }
13   -
  19 +
14 20 #multiEAN p {
15 21 color: #555;
16 22 margin-bottom: 10px;
17 23 }
18   -
  24 +
19 25 #multiEAN ul {
20 26 list-style-type: none;
21 27 padding: 0;
22 28 }
23   -
  29 +
24 30 #multiEAN li {
25 31 margin: 10px 0;
26 32 background: #f9f9f9;
... ... @@ -28,7 +34,7 @@
28 34 border-radius: 5px;
29 35 position: relative;
30 36 }
31   -
  37 +
32 38 #multiEAN .borrarEAN {
33 39 color: #f44336;
34 40 cursor: pointer;
... ... @@ -39,7 +45,7 @@
39 45 text-decoration: none;
40 46 font-size: 0.9em;
41 47 }
42   -
  48 +
43 49 #multiEAN button {
44 50 background-color: #4CAF50;
45 51 color: white;
... ... @@ -48,14 +54,14 @@
48 54 border-radius: 5px;
49 55 cursor: pointer;
50 56 transition: background-color 0.2s;
51   - display: block;
  57 + display: block;
52 58 margin: 10px 0;
53 59 }
54   -
  60 +
55 61 #multiEAN button:hover {
56 62 background-color: #45a049;
57 63 }
58   -
  64 +
59 65 #multiEAN input[type="text"] {
60 66 padding: 10px;
61 67 border: 1px solid #ddd;
... ... @@ -64,7 +70,6 @@
64 70 box-sizing: border-box;
65 71 margin-bottom: 10px;
66 72 }
67   -
68 73 </style>
69 74  
70 75 <div id="multiEAN">
... ... @@ -77,50 +82,56 @@
77 82 </ul>
78 83 <input type="text" id="new_product_ean" placeholder="Introduce el nuevo EAN" />
79 84 <button class="guardarEAN">Agregar EAN al producto</button>
80   -
81   -{foreach $combinations_details as $combination}
82   - <h4>Combinación: {$combination.attribute_name}</h4>
83   - <p>EANs:</p>
84   - <ul id="combination_{$combination.id}_eans_list">
85   - {foreach $combination.eans as $ean}
86   - <li>{$ean.ean13} <span class="borrarEAN" data-ean13='{$ean.ean13}' data-id_combinacion='{$combination.id}'>[Eliminar]</span></li>
87   - {/foreach}
88   - </ul>
89   - <input type="text" id="new_combination_{$combination.id}_ean" placeholder="Introduce el nuevo EAN para esta combinación" />
90   - <button class="guardarEAN" data-id_combinacion='{$combination.id}'>Agregar EAN a la combinación</button>
91   -{/foreach}
  85 + <hr>
  86 + {foreach $combinations_details as $combination}
  87 + <h4>Combinación: {$combination.attribute_name}</h4>
  88 + <p>EANs:</p>
  89 + <ul id="combination_{$combination.id}_eans_list">
  90 + {foreach $combination.eans as $ean}
  91 + <li>{$ean.ean13} <span class="borrarEAN" data-ean13='{$ean.ean13}'
  92 + data-id_combinacion='{$combination.id}'>[Eliminar]</span></li>
  93 + {/foreach}
  94 + </ul>
  95 + <input type="text" id="new_combination_{$combination.id}_ean"
  96 + placeholder="Introduce el nuevo EAN para esta combinación" />
  97 + <button class="guardarEAN" data-id_combinacion='{$combination.id}'>Agregar EAN a la combinación</button>
  98 + <hr>
  99 + {/foreach}
92 100 </div>
93 101  
94 102 <script>
95   -$(function(){
96   - $('.guardarEAN').click(function(ev){
97   - ev.preventDefault();
98   - let data = {
99   - accion: 'storeEAN',
100   - productId: "{$product_id}",
101   - };
102   -
103   - let combinationId = $(this).data('id_combinacion');
104   - let eanInput = combinationId ? $('#new_combination_' + combinationId + '_ean') : $('#new_product_ean');
105   - data.ean = eanInput.val().trim();
106   -
107   - if (!data.ean) {
108   - showErrorMessage('El campo EAN no puede estar vacío.');
109   - return;
110   - }
111   -
112   - if (combinationId) {
113   - data.combinationId = combinationId;
114   - }
115   -
116   - $.getJSON('//{$urlBase}/imaxmultiean_ajax.php?callback=?', data, function (respuesta) {
  103 + $(function() {
  104 + $('.guardarEAN').click(function(ev) {
  105 + ev.preventDefault();
  106 + let data = {
  107 + accion: 'storeEAN',
  108 + productId: "{$product_id}",
  109 + };
  110 +
  111 + let combinationId = $(this).data('id_combinacion');
  112 + let eanInput = combinationId ? $('#new_combination_' + combinationId + '_ean') : $(
  113 + '#new_product_ean');
  114 + data.ean = eanInput.val().trim();
  115 +
  116 + if (!data.ean) {
  117 + showErrorMessage('El campo EAN no puede estar vacío.');
  118 + return;
  119 + }
  120 +
  121 + if (combinationId) {
  122 + data.combinationId = combinationId;
  123 + }
  124 +
  125 + $.getJSON('//{$urlBase}/imaxmultiean_ajax.php?callback=?', data, function (respuesta) {
117 126 if (respuesta.ok) {
118 127 showSuccessMessage('EAN almacenado con éxito.');
119 128  
120   - let eanList = combinationId ? $('#combination_' + combinationId + '_eans_list') : $('#product_eans_list');
121   - let eanItem = $('<li>').text(data.ean).append($('<span>').addClass('borrarEAN').attr('data-ean13', data.ean).text('[Eliminar]'));
  129 + let eanList = combinationId ? $('#combination_' + combinationId + '_eans_list') : $(
  130 + '#product_eans_list');
  131 + let eanItem = $('<li>').text(data.ean).append($('<span>').addClass('borrarEAN').attr(
  132 + 'data-ean13', data.ean).text('[Eliminar]'));
122 133 eanList.append(eanItem);
123   -
  134 +
124 135 eanInput.val(''); // Limpiar el campo de entrada
125 136  
126 137 } else {
... ... @@ -130,32 +141,30 @@ $(function(){
130 141 });
131 142  
132 143 // En este bloque, usaremos la delegación de eventos para asegurarnos de que también funcione para los elementos EAN recién agregados.
133   - $(document).on('click', '.borrarEAN', function(){
134   - let data = {
135   - accion: 'deleteEAN',
136   - productId: "{$product_id}",
137   - ean: $(this).data('ean13'),
138   - };
  144 + $(document).on('click', '.borrarEAN', function() {
  145 + let data = {
  146 + accion: 'deleteEAN',
  147 + productId: "{$product_id}",
  148 + ean: $(this).data('ean13'),
  149 + };
  150 +
  151 + let combinationId = $(this).data('id_combinacion');
  152 + if (combinationId) {
  153 + data.combinationId = combinationId;
  154 + }
139 155  
140   - let combinationId = $(this).data('id_combinacion');
141   - if (combinationId) {
142   - data.combinationId = combinationId;
143   - }
  156 + let eanItem = $(this).closest('li'); // Referencia al elemento <li> que contiene el EAN
144 157  
145   - let eanItem = $(this).closest('li'); // Referencia al elemento <li> que contiene el EAN
  158 + $.getJSON('//{$urlBase}/imaxmultiean_ajax.php?callback=?', data, function (respuesta) {
  159 + if (respuesta.ok) {
  160 + showSuccessMessage('EAN eliminado con éxito.');
146 161  
147   - $.getJSON('//{$urlBase}/imaxmultiean_ajax.php?callback=?', data, function (respuesta) {
148   - if (respuesta.ok) {
149   - showSuccessMessage('EAN eliminado con éxito.');
150   -
151   - eanItem.remove(); // Remover el elemento <li> del DOM
  162 + eanItem.remove(); // Remover el elemento <li> del DOM
152 163  
153   - } else {
154   - showErrorMessage('Hubo un error al eliminar el EAN.');
155   - }
156   - });
  164 + } else {
  165 + showErrorMessage('Hubo un error al eliminar el EAN.');
  166 + }
  167 + });
  168 + });
157 169 });
158   -});
159   -
160   -
161 170 </script>
162 171 \ No newline at end of file
... ...