source: extensions/MyPiwiShop/admin/template/product.tpl @ 27781

Revision 27781, 15.7 KB checked in by Miklfe, 6 years ago (diff)
Line 
1{combine_script id='jquery.dataTables' load='footer' path='themes/default/js/plugins/jquery.dataTables.js'}
2{combine_css path="themes/default/js/plugins/datatables/css/jquery.dataTables.css"}
3{combine_css path=$MPS_PATH|@cat:"admin/template/style.css"}
4{combine_script id='jquery.ui.sortable' load='footer' path='themes/default/js/ui/minified/jquery.ui.sortable.min.js'}
5{combine_script id='jquery.chosen' load='footer' path='themes/default/js/plugins/chosen.jquery.min.js'}
6{combine_css path="themes/default/js/plugins/chosen.css"}
7
8
9{footer_script}{literal}
10(function($) {
11        $(document).ready(function(){
12               
13               
14                var $oTable,
15                        $nEditing = null,
16                        $val      = $('.val').html(),
17                        $add_opt  = $('#add_option_prod').html();
18                       
19                $('#product_list input[type=checkbox]').each(function(){
20                        $(this).prop('checked', false)
21                });
22               
23                $('#AddProd').click(function() {
24                        $('.add_wrap').css('top','100px')
25                        $('.Tadd').show();
26                        $('#Add_product').fadeIn();
27                        $('#showAddProd .infos').hide();
28                        $('input[name=product]').focus();
29                        return false;
30                });
31
32                $('#close_Add_product').click(function() {
33                        $('#Add_product').fadeOut(function(){
34                                $('#add_option_prod').hide();
35                                $('.tit').hide();
36                                $('#AddProdForm input[type=text]').attr('value','');
37                                $('#AddProdForm textarea#noteAdmin').val('');
38                                $('li.search-choice').remove();
39                                $('select.chzn-select option').each(function(){
40                                        $(this).removeAttr('selected');
41                                })
42                        });
43                        return false;
44                });
45               
46                $('#AddProdForm').submit(function(){
47                        var $return = true;
48                        if($.trim($('input#product',this).val()).length==0 || $.trim($('input#price',this).val()).length==0){
49                                $return = false;
50                                $('.errors').show();
51                                setTimeout(function(){
52                                        $('.errors').hide()
53                                },3000);
54                        }
55                        return $return
56                })
57               
58                $('#permitAction input[type="submit"]').click(function() {
59                        if (!confirm("{/literal}{'Are you sure?'|translate|escape:javascript}{literal}")) {
60                                $('#product_list input[type=checkbox]').each(function(){
61                                        $(this).prop('checked', false);
62                                        delet_button()
63                                });
64                        } else {
65                                $('#formTab_prod').submit();
66                        }
67                        return false;
68                } ); 
69               
70                        $oTable = $('#product_list').dataTable({
71                                "bAutoWidth":   false,
72                                "bStateSave": true,
73                                "aoColumns" : [
74                           { sWidth: '2%','sClass': 'center', 'bSortable': false},
75                           { sWidth: '38%','sClass': 'product_row'  },
76                           { sWidth: '38%'},
77                           { sWidth: '12%', 'bSortable': false,  },
78                                                   { sWidth: '8%', },
79                          ],
80                                "oLanguage": {
81                                        "sProcessing":     "{/literal}{'Loading...'|translate|escape:'javascript'}{literal}",
82                                        "sSearch":         '<span class="icon-search"></span>'+"{/literal}{'Search'|translate|escape:'javascript'}{literal}",
83                                        "sLengthMenu":     "{/literal}{'Display _MENU_ records per page'|translate|escape:'javascript'}{literal}",
84                                        "sInfo":           "{/literal}{'Showing _START_ to _END_ of _TOTAL_ records'|translate|escape:'javascript'}{literal}",
85                                        "sInfoEmpty":      "{/literal}{'Showing 0 to 0 of 0 records'|translate|escape:'javascript'}{literal}",
86                                        "sInfoFiltered":   "{/literal}{'(filtered from _MAX_ total records)'|translate|escape:'javascript'}{literal}",
87                                        "sInfoPostFix":    "",
88                                        "sLoadingRecords": "{/literal}{'Loading...'|translate|escape:'javascript'}{literal}",
89                                        "sZeroRecords":    "{/literal}{'No matching option found'|translate|escape:'javascript'}{literal}",
90                                        "oPaginate": {
91                                                "sFirst":    "{/literal}{'First'|translate|escape:'javascript'}{literal}",
92                                                "sPrevious": '&larr; '+"{/literal}{'Previous'|translate|escape:'javascript'}{literal}",
93                                                "sNext":     "{/literal}{'Next'|translate|escape:'javascript'}{literal}"+' &rarr;',
94                                                "sLast":     "{/literal}{'Last'|translate|escape:'javascript'}{literal}",
95                                        },
96                                },
97                        });
98               
99                function _rempform($this){
100                        var $nRow               = $this.parents('tr')[0],
101                                $jqInputs       = $('input', $nRow),
102                                $id             = $jqInputs[0].value,
103                                $prod           = $('#prodvar').data('product'),
104                                $product        = $prod[$id].product,
105                                $Nadmin         = $prod[$id].noteAdmin,
106                                $price          = $prod[$id].price,
107                                $option         = $prod[$id].option;
108                        for(key in $option) {
109                                $('.chzn-select option').each(function(){
110                                        if($(this).text()==$option[key]){
111                                                $(this).attr('selected','selected');
112                                        }
113                                });
114                        }
115                        $('.chzn-select').trigger("chosen:updated");
116                       
117                        $('input#product_id').attr('value',$id);
118                        $('input#product').attr('value',$product);
119                        $('textarea#noteAdmin').val($Nadmin);
120                        $('input#price').attr('value',$price);
121                }
122               
123                $(document).on('click','#formTab_prod .prodEdit', function () {
124                        var $this       = $(this),
125                                $pos    = $(document).scrollTop(),
126                                $pos    = $pos + 100;
127                               
128                        $('.add_content').css('top',$pos)
129                        $('.Tedit').show();
130                        _rempform($this);
131                        $('#Add_product').fadeIn();
132       
133                        return false;
134                });
135           
136                $(document).on('click','#formTab_prod .prodDupli', function () {
137                        var $this       = $(this);
138                                $pos    = $(document).scrollTop(),
139                                $pos    = $pos + 100;
140                               
141                        $('.add_content').css('top',$pos)
142                        $('.Tdupli').show();
143                        _rempform($this);
144                        $('input#product_id').attr('value','');
145                        $('#Add_product').fadeIn();
146                       
147                        return false
148                });
149
150                $(document).on('click', '#selectAll', function () {
151                        $('#product_list input[type=checkbox]').prop('checked', true);
152                        delet_button()
153                        return false;
154                });
155
156                $(document).on('click', '#selectNone', function () {
157                        $('#product_list input[type=checkbox]').prop('checked', false);
158                        delet_button()
159                        return false;
160                });
161
162                $(document).on('click', '#selectInvert', function () {
163                        $('#product_list input[type=checkbox]').each(function(){
164                                if($(this).is (':checked')){
165                                        $(this).prop('checked', false);
166                                }else{
167                                        $(this).prop('checked', true);
168                                }
169                                delet_button()
170                        });
171                        return false;
172                });
173               
174                $(document).on('change','#product_list input[type=checkbox]', function () {
175                        delet_button()
176                });
177                               
178                function delet_button(){
179                        if($('#product_list input[type=checkbox]:checked').length > 0){
180                                $('#forbidAction').css('display','none');
181                                $('#permitAction').css('display','block');
182                        }else{
183                                $('#forbidAction').css('display','block');
184                                $('#permitAction').css('display','none');
185                        }
186                };
187               
188                $("#listOrder").sortable({
189                        placeholder: 'highlight',
190                        update: function() { 
191                                var $order = $("#listOrder").sortable("toArray");
192                $('#newOrder').val($order.join(","));   
193                        }
194                });
195               
196                $("#listOrder").disableSelection();
197               
198                $('#ChangeOrder').click(function() {
199                        var $pos        = $(document).scrollTop(),
200                                $pos    = $pos + 100;
201                               
202                        $('#change_Order .add_content').css('top',$pos)
203                        $("#change_Order").fadeIn(
204                        );
205                        return false;
206                });
207               
208                $('#close_changeOrder').click(function() {
209                        $("#change_Order").fadeOut();
210
211                        return false;
212                });
213                               
214                $('.chzn-select').chosen({width:"400px"})
215               
216                $('.addopt').click(function(){
217                        $('#add_option_prod').show();
218                        $('#sub_add_product').hide();
219                });
220                               
221                $(document).on('change','#optType',function(){
222                        var     $valSel = $('.addopt_table select#optType option:selected').attr('value');
223                        if($valSel=="text" || $valSel=="textarea"){
224                                $('.valeur').fadeOut('fast');
225                        } else {
226                                $('.valeur').fadeIn('fast')
227                        }
228                });
229               
230                $(document).on('click','.addVal',function(){
231                        $('.valeur').append($('<div/>').addClass('val').append($val));
232                        ;return false;
233                })
234
235                $(document).on('click','.delVal',function(){
236                        if (confirm("{/literal}{'Are you sure?'|translate|escape:javascript}{literal}")) {
237                                        var $Nval = $('.addopt_table .valeur input').length;
238                                if($Nval>1){
239                                        $(this).parents('div.val').remove();
240                                }else{
241                                        var $val = $(this).parents('div.val');
242                                        $('input', $val).val('').attr('value','');
243                                }
244                        }
245                        return false
246                });
247               
248                $(document).on('click','#close_addoption',function() {
249                        $('#sub_add_product').show();
250                        $('#add_option_prod input[type=text]').attr('value','');
251                        $('.val').remove();
252                        $('.valeur').append($('<div/>').addClass('val').append($val));
253                        $('select#optType option').each(function(){
254                                $(this).removeAttr('selected');
255                        });
256                        $('#add_option_prod').hide().html($add_opt);
257                        return false
258                });
259               
260                $(document).on('submit','#addopt_form',function(){
261                        if($.trim($('input#optName',this).val()).length==0){
262                                $('.erroropt').show();
263                                setTimeout(function(){
264                                        $('.erroropt').hide()
265                                },3000);
266                        }else{
267                                var $optecour = $('input#optName').val();
268                                if($('.valeur').is(':hidden')){
269                                        $('.valeur').remove();
270                                }
271                                $('.optadded').show();
272                                setTimeout(function(){
273                                        $('.optadded').hide()
274                                },3000);
275                                $.ajax({
276                                        type:"POST",
277                                        data: $(this).serialize(),
278                                        success: function(html){
279                                                var $idlo = $(html).find('#idlastopt').data('idlo');
280                                                $('#opt select').append($('<option />').attr({'value':$idlo,'selected':'selected'}).text($optecour));
281                                                $('.chzn-select').trigger("chosen:updated");
282                                        }
283                                });
284                                $('#sub_add_product').show();
285                                $('#add_option_prod input[type=text]').attr('value','');
286                                $('.val').remove();
287                                $('.valeur').append($('<div/>').addClass('val').append($val));
288                                $('select#optType option').each(function(){
289                                        $(this).removeAttr('selected');
290                                });
291
292                                $('#add_option_prod').hide().html($add_opt);
293                        }
294                        return false
295                })
296
297        });
298})(jQuery);
299{/literal}{/footer_script}
300
301<div id="prodvar" class="titrePage" data-product='{$mps_product|@json_encode}'>
302  <ul class="HelpActions">
303        <li>
304        <a title="Aide" onclick="popuphelp(this.href); return false;" href="admin/popuphelp.php?page=cat_options">
305        <img alt="(?)" src="admin/themes/clear/icon/help.png">
306        </a>
307        </li>
308</ul>
309  <h2>{'Products'|@translate}</h2>
310</div>
311<p class="showCreateAlbum" id="showAddProd">
312  <a href="#" id="AddProd" class="icon-plus-circled">{'Add a product'|translate}</a>
313  <span class="infos" style="display:none"></span>
314</p>
315
316<div id="Add_product" class="add_wrap" style="display:none">
317<div class="add_content">
318<span id="close_Add_product" class="close_box_add"></span>
319        <div class="boxtitre"><h1>
320        <span class="tit Tadd">{'Add '|translate}</span>
321        <span class="tit Tdupli">{'Duplicate '|translate}</span>
322        <span class="tit Tedit">{'Edit '|translate}</span>
323        <span class="tit Tedit Tdupli">{'the product'|translate}</span>
324        <span class="tit Tadd">{'a product'|translate}</span>
325        </h1></div>
326<form id="AddProdForm"  method="post" name="add_prod" action="">
327 <div style="margin: 0 0 10px 5px">
328        <div class="addprod_table">
329    <div>
330                <span>{'Product'|translate}</span>
331                <span><input id="product" type="text" name="product" size="100"></span>
332                <span><input id="product_id" type="hidden" name="id"></span>
333        </div>
334   
335        <div>
336      <span valign="top">{'Note administrator'|translate}</span>
337      <span><textarea id="noteAdmin" rows="8" cols="50" name="noteAdmin" maxlength="50"></textarea></span>
338    </div>
339    <div>
340      <span>{'Price'|@translate}</span>
341      <span><input id="price" type="text" name="price"> {$mps_conf.currency}</span>
342    </div>
343        <div id="opt">
344          <span>{'Options'|@translate}</span>
345          <span>
346      <select data-placeholder="{'select a option'|@translate}" class="chzn-select" multiple style="width:700px;" name="opt[]">
347          {html_options options=$mps_option }
348          </select>
349          </span>
350<p class="showCreateAlbum" id="showAddProd">
351  <a href="#" class="addopt icon-plus-circled">{'Add a option'|translate}</a><span class="infos optadded" style="display:none">{'option registered'|translate}</span>
352
353</p>
354        </div>
355
356 </div>
357 </div>
358    <span class="actionButtons">
359         
360          <input type="hidden" name="product_add">
361      <input id="sub_add_product" class="submit" name="product_add" type="submit" value="{'Submit'|@translate}">
362    </span>
363        <span class="errors" style="display:none">{'you must enter the product and not the price'|@translate}</span>
364</form>
365
366
367<div id="add_option_prod"  style="display:none">
368<div>
369<span id="close_addoption" class="close_box_add"></span>
370
371<form id="addopt_form" method="post" name="add_opt" action="">
372 <div style="margin: 0 0 10px 5px" >
373        <div class="addopt_table">
374    <div>
375                <span>{'Name'|translate}</span>
376                <span><input id="optId" type="hidden" name="id"></span>
377                <span><input id="optName" type="text" name="name" size="40"></span>
378        </div>
379   
380        <div id="typeOpt">
381      <span valign="top">{'Type of option'|translate}</span>
382      <span id="select">{html_options name=type options=$mps_type_opt selected="select" id="optType"}</span>
383    </div>
384 
385        <div>
386      <span><label>{'The field is required'|@translate}
387      <input id="optRequi" type="checkbox" name="requi" value="1">
388          </label><span>
389    </div>
390        <div>
391      <span>{'Note administrator'|@translate}</span>
392      <span><input id="optTitle" type="text" name="title" size="40"></span>
393    </div>
394
395        <div class="valeur">
396        <div>
397        <span>{'Option value'|@translate}</span>
398        <span><a class="icon-plus-circled addVal" href="#">{'add value'|@translate}</a></span>
399        </div>
400       
401        <div class="val">
402        <span>{'Value'|@translate}</span>
403        <span><input type="text" name="val[]" size="20"></span>
404        <span><a class="icon-cancel-circled delVal"  href="#">{'delete'|@translate}</a></span>
405        </div>
406        </div>
407       
408        </div>
409 </div>
410 
411    <span class="actionButtons">
412          <input name="option_add" type="hidden" value="{'Submit'|@translate}">
413
414      <input id="option_add" class="submit" type="submit" value="{'Submit'|@translate}">
415    </span>
416        <span class="errors erroropt" style="display:none">{'you must enter the name of the option'|@translate}</span>
417
418</form>
419</div>
420</div>
421
422</div>
423</div>
424
425<div id=prod_table>
426<form id="formTab_prod" method="post" name="add_prod" action="">
427        <table id="product_list">
428        <thead>
429                <tr>
430                        <th></th>
431                        <th>{'Product'|@translate}</th>
432                        <th>{'Note administrator'|@translate}</th>
433                        <th>{'Options'|@translate}</th>
434                        <th>{'Price'|@translate}</th>
435                       
436                </tr>
437        </thead>
438        <tbody>
439        {foreach from=$mps_product item=product name=product}
440                <tr class="{if $smarty.foreach.product.index is odd}row1{else}row2{/if}">
441                        <td><input type="checkbox" name="check[]" value={$product.id}></td>
442                        <td><span>{$product.product}</span> <a title="{'edit'|translate|escape:'javascript'}" class="prodEdit icon-pencil tabact">{'edit'|translate}</a> <a title="{'duplicate'|translate|escape:'javascript'}" class="prodDupli icon-pencil tabact">{'duplicate'|translate}</a></td>
443                        <td>{$product.noteAdmin} </td>
444                        <td>{foreach from=$product.option item=option name=option}{if !empty($option)}{$option}/{/if}{/foreach}</td>
445                        <td>{$product.price} {$mps_conf.currency}</td>
446                </tr>
447
448
449        {/foreach}
450        </tbody>
451        </table>
452
453
454<div style="clear:right"></div>
455
456<p class="checkActions">
457  {'Select:'|@translate}
458  <a href="#" id="selectAll">{'All'|@translate}</a>,
459  <a href="#" id="selectNone">{'None'|@translate}</a>,
460  <a href="#" id="selectInvert">{'Invert'|@translate}</a>
461</p>
462
463</div>
464
465  <div id="forbidAction">{'No product selected'|@translate}</div>
466  <div id="permitAction" style="display:none">
467<input type="submit" name="delete" value="{'Delete'|@translate}">
468<br></br>
469  </div>
470</form>   
471 
472<p class="showCreateAlbum" id="showChangeOrder">
473  <a href="#" id="ChangeOrder" class="icon-plus-circled">{'Change the display order of products in the form'|translate}</a>
474</p>
475
476
477<div id="change_Order" class="add_wrap" style="display:none">
478<div class="add_content">
479<span id="close_changeOrder" class="close_box_add"></span>
480<div class="boxtitre"><h1>{'Change the display order of products in the form'|translate}</h1>
481        <p> {'drag / drop to change the order'|translate}</p></div>
482<div id="form_order">
483<form id="changeOrder"  method="post" name="add_prod" action="">
484<fieldset>  
485       
486 <ul id="listOrder">
487        {foreach from=$mps_product item=product name=product}
488        <li id="{$product.id}">{$product.product} -> {$product.noteAdmin} -> {$product.price} {$mps_conf.currency}</li>
489        {/foreach}
490    <br />
491</fieldset>
492<input id="newOrder" type="hidden" value="" name="newOrder">
493<input id="sortable" type="submit" name="submit" value="{'Submit'|@translate}">
494
495</form>
496</div>
497</div>
498</div>
499
500
501 
502 
503 
504 
505 
506 
507 
Note: See TracBrowser for help on using the repository browser.