// Products

This commit is contained in:
Kevin Granger
2013-07-12 17:27:25 +02:00
parent 160857bdc3
commit c12ce3dd29
6 changed files with 428 additions and 277 deletions
+152 -81
View File
@@ -281,7 +281,7 @@ img {
vertical-align: middle; vertical-align: middle;
} }
.img-responsive { .img-responsive {
display: block; display: inline-block;
max-width: 100%; max-width: 100%;
height: auto; height: auto;
} }
@@ -291,6 +291,12 @@ img {
.img-circle { .img-circle {
border-radius: 500px; border-radius: 500px;
} }
hr {
margin-top: 20px;
margin-bottom: 20px;
border: 0;
border-top: 1px solid #eeeeee;
}
p { p {
margin: 0 0 10px; margin: 0 0 10px;
} }
@@ -436,9 +442,9 @@ ol {
margin-bottom: 10px; margin-bottom: 10px;
} }
ul ul, ul ul,
ol ul,
ul ol, ul ol,
ol ol, ol ol {
ol ul {
margin-bottom: 0; margin-bottom: 0;
} }
.list-unstyled { .list-unstyled {
@@ -503,13 +509,6 @@ dd {
.dl-horizontal dd:after { .dl-horizontal dd:after {
clear: both; clear: both;
} }
hr {
margin: 20px 0;
border: 0;
border-top: 1px solid #eeeeee;
border-bottom: 1px solid #fff;
border-bottom: 1px solid rgba(255, 255, 255, 0.5);
}
abbr[title], abbr[title],
abbr[data-original-title] { abbr[data-original-title] {
cursor: help; cursor: help;
@@ -571,11 +570,7 @@ address {
} }
code, code,
pre { pre {
padding: 0 3px 2px;
font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
font-size: 12px;
color: #333333;
border-radius: 4px;
} }
code { code {
padding: 2px 4px; padding: 2px 4px;
@@ -583,6 +578,7 @@ code {
color: #c7254e; color: #c7254e;
background-color: #f9f2f4; background-color: #f9f2f4;
white-space: nowrap; white-space: nowrap;
border-radius: 4px;
} }
pre { pre {
display: block; display: block;
@@ -592,6 +588,7 @@ pre {
line-height: 1.428571429; line-height: 1.428571429;
word-break: break-all; word-break: break-all;
word-wrap: break-word; word-wrap: break-word;
color: #333333;
background-color: #f5f5f5; background-color: #f5f5f5;
border: 1px solid #ccc; border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, 0.15); border: 1px solid rgba(0, 0, 0, 0.15);
@@ -991,8 +988,10 @@ th {
} }
.table thead > tr > th, .table thead > tr > th,
.table tbody > tr > th, .table tbody > tr > th,
.table tfoot > tr > th,
.table thead > tr > td, .table thead > tr > td,
.table tbody > tr > td { .table tbody > tr > td,
.table tfoot > tr > td {
padding: 8px; padding: 8px;
line-height: 1.428571429; line-height: 1.428571429;
vertical-align: top; vertical-align: top;
@@ -1002,10 +1001,10 @@ th {
vertical-align: bottom; vertical-align: bottom;
} }
.table caption + thead tr:first-child th, .table caption + thead tr:first-child th,
.table caption + thead tr:first-child td,
.table colgroup + thead tr:first-child th, .table colgroup + thead tr:first-child th,
.table colgroup + thead tr:first-child td,
.table thead:first-child tr:first-child th, .table thead:first-child tr:first-child th,
.table caption + thead tr:first-child td,
.table colgroup + thead tr:first-child td,
.table thead:first-child tr:first-child td { .table thead:first-child tr:first-child td {
border-top: 0; border-top: 0;
} }
@@ -1017,8 +1016,10 @@ th {
} }
.table-condensed thead > tr > th, .table-condensed thead > tr > th,
.table-condensed tbody > tr > th, .table-condensed tbody > tr > th,
.table-condensed tfoot > tr > th,
.table-condensed thead > tr > td, .table-condensed thead > tr > td,
.table-condensed tbody > tr > td { .table-condensed tbody > tr > td,
.table-condensed tfoot > tr > td {
padding: 4px 5px; padding: 4px 5px;
} }
.table-bordered { .table-bordered {
@@ -1029,8 +1030,10 @@ th {
} }
.table-bordered > thead > tr > th, .table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th, .table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td, .table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td { .table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
border-left: 1px solid #dddddd; border-left: 1px solid #dddddd;
} }
.table-bordered > caption + thead > tr:first-child th, .table-bordered > caption + thead > tr:first-child th,
@@ -1075,14 +1078,14 @@ th {
border-bottom-right-radius: 0; border-bottom-right-radius: 0;
} }
.table-bordered > caption + thead > tr:first-child > th:first-child, .table-bordered > caption + thead > tr:first-child > th:first-child,
.table-bordered > caption + tbody > tr:first-child > td:first-child,
.table-bordered > colgroup + thead > tr:first-child > th:first-child, .table-bordered > colgroup + thead > tr:first-child > th:first-child,
.table-bordered > caption + tbody > tr:first-child > td:first-child,
.table-bordered > colgroup + tbody > tr:first-child > td:first-child { .table-bordered > colgroup + tbody > tr:first-child > td:first-child {
border-top-left-radius: 4px; border-top-left-radius: 4px;
} }
.table-bordered > caption + thead > tr:first-child > th:last-child, .table-bordered > caption + thead > tr:first-child > th:last-child,
.table-bordered > caption + tbody > tr:first-child > td:last-child,
.table-bordered > colgroup + thead > tr:first-child > th:last-child, .table-bordered > colgroup + thead > tr:first-child > th:last-child,
.table-bordered > caption + tbody > tr:first-child > td:last-child,
.table-bordered > colgroup + tbody > tr:first-child > td:last-child { .table-bordered > colgroup + tbody > tr:first-child > td:last-child {
border-top-right-radius: 4px; border-top-right-radius: 4px;
} }
@@ -1321,6 +1324,10 @@ input[type="checkbox"]:focus {
outline: 5px auto -webkit-focus-ring-color; outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px; outline-offset: -2px;
} }
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
height: auto;
}
input:-moz-placeholder, input:-moz-placeholder,
textarea:-moz-placeholder { textarea:-moz-placeholder {
color: #999999; color: #999999;
@@ -1427,6 +1434,7 @@ input[type="color"].input-small {
font-size: 12px; font-size: 12px;
border-radius: 3px; border-radius: 3px;
} }
.has-warning .help-block,
.has-warning .control-label { .has-warning .control-label {
color: #c09853; color: #c09853;
} }
@@ -1446,6 +1454,7 @@ input[type="color"].input-small {
border-color: #c09853; border-color: #c09853;
background-color: #fcf8e3; background-color: #fcf8e3;
} }
.has-error .help-block,
.has-error .control-label { .has-error .control-label {
color: #b94a48; color: #b94a48;
} }
@@ -1465,6 +1474,7 @@ input[type="color"].input-small {
border-color: #b94a48; border-color: #b94a48;
background-color: #f2dede; background-color: #f2dede;
} }
.has-success .help-block,
.has-success .control-label { .has-success .control-label {
color: #468847; color: #468847;
} }
@@ -1825,6 +1835,12 @@ fieldset[disabled] .btn-info.active {
background-color: #5bc0de; background-color: #5bc0de;
border-color: #5bc0de; border-color: #5bc0de;
} }
.btn-link {
color: #428bca;
font-weight: normal;
cursor: pointer;
border-radius: 0;
}
.btn-link, .btn-link,
.btn-link:active, .btn-link:active,
.btn-link[disabled], .btn-link[disabled],
@@ -1840,12 +1856,6 @@ fieldset[disabled] .btn-link {
.btn-link:active { .btn-link:active {
border-color: transparent; border-color: transparent;
} }
.btn-link {
color: #428bca;
font-weight: normal;
cursor: pointer;
border-radius: 0;
}
.btn-link:hover, .btn-link:hover,
.btn-link:focus { .btn-link:focus {
color: #2a6496; color: #2a6496;
@@ -2031,9 +2041,6 @@ input[type="button"].btn-block {
padding-left: 20px; padding-left: 20px;
padding-right: 20px; padding-right: 20px;
} }
.typeahead {
z-index: 1051;
}
.list-group { .list-group {
margin-bottom: 20px; margin-bottom: 20px;
padding-left: 0; padding-left: 0;
@@ -2055,6 +2062,10 @@ input[type="button"].btn-block {
border-bottom-right-radius: 4px; border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px; border-bottom-left-radius: 4px;
} }
.list-group-item > .badge {
float: right;
margin-right: -15px;
}
.list-group-item-heading { .list-group-item-heading {
margin-top: 0; margin-top: 0;
margin-bottom: 5px; margin-bottom: 5px;
@@ -2086,14 +2097,6 @@ a.list-group-item.active .list-group-item-heading {
a.list-group-item.active .list-group-item-text { a.list-group-item.active .list-group-item-text {
color: #e1edf7; color: #e1edf7;
} }
.list-group-item > .badge,
.list-group-item > .glyphicon-chevron-right {
float: right;
margin-right: -15px;
}
.list-group-item > .glyphicon + .badge {
margin-right: 5px;
}
.panel { .panel {
padding: 15px; padding: 15px;
margin-bottom: 20px; margin-bottom: 20px;
@@ -2591,16 +2594,16 @@ button.close {
background-color: #d5d5d5; background-color: #d5d5d5;
color: #555555; color: #555555;
} }
.navbar-nav > .dropdown > a .caret {
border-top-color: #777777;
border-bottom-color: #777777;
}
.navbar-nav > .open > a .caret, .navbar-nav > .open > a .caret,
.navbar-nav > .open > a:hover .caret, .navbar-nav > .open > a:hover .caret,
.navbar-nav > .open > a:focus .caret { .navbar-nav > .open > a:focus .caret {
border-top-color: #555555; border-top-color: #555555;
border-bottom-color: #555555; border-bottom-color: #555555;
} }
.navbar-nav > .dropdown > a .caret {
border-top-color: #777777;
border-bottom-color: #777777;
}
.navbar-nav.pull-right > li > .dropdown-menu, .navbar-nav.pull-right > li > .dropdown-menu,
.navbar-nav > li > .dropdown-menu.pull-right { .navbar-nav > li > .dropdown-menu.pull-right {
left: auto; left: auto;
@@ -2818,10 +2821,6 @@ button.close {
padding-left: 8px; padding-left: 8px;
padding-right: 8px; padding-right: 8px;
} }
.btn-group > .btn-mini + .dropdown-toggle {
padding-left: 5px;
padding-right: 5px;
}
.btn-group > .btn-large + .dropdown-toggle { .btn-group > .btn-large + .dropdown-toggle {
padding-left: 12px; padding-left: 12px;
padding-right: 12px; padding-right: 12px;
@@ -2883,20 +2882,18 @@ button.close {
display: inline-block; display: inline-block;
text-shadow: 0 1px 0 #fff; text-shadow: 0 1px 0 #fff;
} }
.breadcrumb > li:after { .breadcrumb > li + li:before {
display: inline-block; display: inline-block;
content: "\00a0 /"; content: "/\00a0";
padding: 0 5px; padding: 0 5px;
color: #ccc; color: #ccc;
} }
.breadcrumb > li:last-child:after {
display: none;
}
.breadcrumb > .active { .breadcrumb > .active {
color: #999999; color: #999999;
} }
.pagination { .pagination {
display: inline-block; display: inline-block;
padding-left: 0;
margin: 20px 0; margin: 20px 0;
border-radius: 4px; border-radius: 4px;
} }
@@ -2913,6 +2910,17 @@ button.close {
border: 1px solid #dddddd; border: 1px solid #dddddd;
border-left-width: 0; border-left-width: 0;
} }
.pagination > li:first-child > a,
.pagination > li:first-child > span {
border-left-width: 1px;
border-bottom-left-radius: 4px;
border-top-left-radius: 4px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
border-bottom-right-radius: 4px;
border-top-right-radius: 4px;
}
.pagination > li > a:hover, .pagination > li > a:hover,
.pagination > li > a:focus, .pagination > li > a:focus,
.pagination > .active > a, .pagination > .active > a,
@@ -2932,17 +2940,6 @@ button.close {
background-color: #ffffff; background-color: #ffffff;
cursor: default; cursor: default;
} }
.pagination > li:first-child > a,
.pagination > li:first-child > span {
border-left-width: 1px;
border-bottom-left-radius: 4px;
border-top-left-radius: 4px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
border-bottom-right-radius: 4px;
border-top-right-radius: 4px;
}
.pagination-large > li > a, .pagination-large > li > a,
.pagination-large > li > span { .pagination-large > li > span {
padding: 14px 16px; padding: 14px 16px;
@@ -2974,6 +2971,7 @@ button.close {
border-top-right-radius: 3px; border-top-right-radius: 3px;
} }
.pager { .pager {
padding-left: 0;
margin: 20px 0; margin: 20px 0;
list-style: none; list-style: none;
text-align: center; text-align: center;
@@ -3468,17 +3466,14 @@ button.close {
-o-transition: all 0.2s ease-in-out; -o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out;
} }
.thumbnail > img,
.img-thumbnail {
display: block;
max-width: 100%;
height: auto;
}
.thumbnail { .thumbnail {
display: block; display: block;
} }
.thumbnail > img,
.img-thumbnail { .img-thumbnail {
display: inline-block; display: inline-block;
max-width: 100%;
height: auto;
} }
a.thumbnail:hover, a.thumbnail:hover,
a.thumbnail:focus { a.thumbnail:focus {
@@ -3517,7 +3512,7 @@ a.thumbnail:focus {
margin-left: 10px; margin-left: 10px;
} }
.media-list { .media-list {
margin-left: 0; padding-left: 0;
list-style: none; list-style: none;
} }
.label { .label {
@@ -3595,9 +3590,6 @@ a.badge:focus {
position: relative; position: relative;
top: -1px; top: -1px;
} }
.btn-mini .badge {
top: 0;
}
a.list-group-item.active > .badge, a.list-group-item.active > .badge,
.nav-pills > .active > a > .badge { .nav-pills > .active > a > .badge {
color: #428bca; color: #428bca;
@@ -3743,8 +3735,6 @@ a.list-group-item.active > .badge,
.accordion-heading .accordion-toggle { .accordion-heading .accordion-toggle {
display: block; display: block;
padding: 8px 15px; padding: 8px 15px;
}
.accordion-toggle {
cursor: pointer; cursor: pointer;
} }
.accordion-inner { .accordion-inner {
@@ -3769,7 +3759,9 @@ a.list-group-item.active > .badge,
} }
.carousel-inner > .item > img, .carousel-inner > .item > img,
.carousel-inner > .item > a > img { .carousel-inner > .item > a > img {
display: block; display: inline-block;
max-width: 100%;
height: auto;
line-height: 1; line-height: 1;
} }
.carousel-inner > .active, .carousel-inner > .active,
@@ -3861,23 +3853,25 @@ a.list-group-item.active > .badge,
left: 50%; left: 50%;
z-index: 15; z-index: 15;
width: 100px; width: 100px;
margin: 0 0 0 -50px; margin-left: -50px;
padding-left: 0; padding-left: 0;
list-style: none; list-style: none;
text-align: center; text-align: center;
} }
.carousel-indicators li { .carousel-indicators li {
display: inline-block; display: inline-block;
width: 8px; width: 10px;
height: 8px; height: 10px;
margin-left: 0; margin: 1px;
margin-right: 0;
text-indent: -999px; text-indent: -999px;
border: 1px solid #fff; border: 1px solid #fff;
border-radius: 5px; border-radius: 10px;
cursor: pointer; cursor: pointer;
} }
.carousel-indicators .active { .carousel-indicators .active {
margin: 0;
width: 12px;
height: 12px;
background-color: #fff; background-color: #fff;
} }
.carousel-caption { .carousel-caption {
@@ -3996,12 +3990,33 @@ td.visible-sm {
.visible-md { .visible-md {
display: none !important; display: none !important;
} }
tr.visible-md {
display: none !important;
}
th.visible-md,
td.visible-md {
display: none !important;
}
.visible-lg { .visible-lg {
display: none !important; display: none !important;
} }
tr.visible-lg {
display: none !important;
}
th.visible-lg,
td.visible-lg {
display: none !important;
}
.hidden-sm { .hidden-sm {
display: none !important; display: none !important;
} }
tr.hidden-sm {
display: none !important;
}
th.hidden-sm,
td.hidden-sm {
display: none !important;
}
.hidden-md { .hidden-md {
display: block !important; display: block !important;
} }
@@ -4026,6 +4041,13 @@ td.hidden-lg {
.visible-sm { .visible-sm {
display: none !important; display: none !important;
} }
tr.visible-sm {
display: none !important;
}
th.visible-sm,
td.visible-sm {
display: none !important;
}
.visible-md { .visible-md {
display: block !important; display: block !important;
} }
@@ -4039,6 +4061,13 @@ td.hidden-lg {
.visible-lg { .visible-lg {
display: none !important; display: none !important;
} }
tr.visible-lg {
display: none !important;
}
th.visible-lg,
td.visible-lg {
display: none !important;
}
.hidden-sm { .hidden-sm {
display: block !important; display: block !important;
} }
@@ -4052,6 +4081,13 @@ td.hidden-lg {
.hidden-md { .hidden-md {
display: none !important; display: none !important;
} }
tr.hidden-md {
display: none !important;
}
th.hidden-md,
td.hidden-md {
display: none !important;
}
.hidden-lg { .hidden-lg {
display: block !important; display: block !important;
} }
@@ -4067,9 +4103,23 @@ td.hidden-lg {
.visible-sm { .visible-sm {
display: none !important; display: none !important;
} }
tr.visible-sm {
display: none !important;
}
th.visible-sm,
td.visible-sm {
display: none !important;
}
.visible-md { .visible-md {
display: none !important; display: none !important;
} }
tr.visible-md {
display: none !important;
}
th.visible-md,
td.visible-md {
display: none !important;
}
.visible-lg { .visible-lg {
display: block !important; display: block !important;
} }
@@ -4103,10 +4153,24 @@ td.hidden-lg {
.hidden-lg { .hidden-lg {
display: none !important; display: none !important;
} }
tr.hidden-lg {
display: none !important;
}
th.hidden-lg,
td.hidden-lg {
display: none !important;
}
} }
.visible-print { .visible-print {
display: none !important; display: none !important;
} }
tr.visible-print {
display: none !important;
}
th.visible-print,
td.visible-print {
display: none !important;
}
@media print { @media print {
.visible-print { .visible-print {
display: block !important; display: block !important;
@@ -4121,4 +4185,11 @@ td.hidden-lg {
.hidden-print { .hidden-print {
display: none !important; display: none !important;
} }
tr.hidden-print {
display: none !important;
}
th.hidden-print,
td.hidden-print {
display: none !important;
}
} }
File diff suppressed because one or more lines are too long
@@ -36,14 +36,14 @@
var attrs = new Array(); var attrs = new Array();
var modifyattributegroup = "{l s='Modify this attribute combination.' js=1}"; var modifyattributegroup = "{l s='Modify this attribute combination.' js=1}";
attrs[0] = new Array(0, "---"); attrs[0] = new Array(0, "---");
{foreach from=$attributeJs key=idgrp item=group} {foreach from=$attributeJs key=idgrp item=group}
attrs[{$idgrp}] = new Array(0 attrs[{$idgrp}] = new Array(0
, '---' , '---'
{foreach from=$group key=idattr item=attrname} {foreach from=$group key=idattr item=attrname}
, "{$idattr}", "{$attrname|addslashes}" , "{$idattr}", "{$attrname|addslashes}"
{/foreach}
);
{/foreach} {/foreach}
);
{/foreach}
</script> </script>
<legend>{l s='Add or modify combinations for this product.'}</legend> <legend>{l s='Add or modify combinations for this product.'}</legend>
@@ -53,8 +53,8 @@
{if $combination_exists} {if $combination_exists}
<div class="alert alert-info" style="display:block"> <div class="alert alert-info" style="display:block">
<p>{l s='Some combinations already exist. If you want to generate new combinations, the quantities for the existing combinations will be lost.'}</p> {l s='Some combinations already exist. If you want to generate new combinations, the quantities for the existing combinations will be lost.'}<br/>
<p>{l s='You can add a combination by clicking the link "Add new combination" on the toolbar.'}</p> {l s='You can add a combination by clicking the link "Add new combination" on the toolbar.'}
</div> </div>
{/if} {/if}
{if isset($display_multishop_checkboxes) && $display_multishop_checkboxes} {if isset($display_multishop_checkboxes) && $display_multishop_checkboxes}
@@ -63,8 +63,9 @@
{/if} {/if}
<div id="add_new_combination" style="display: none;"> <div id="add_new_combination" class="panel" style="display: none;">
<div class="panel-heading">Panel heading</div>
<div class="row"> <div class="row">
<label class="control-label col-lg-3">{l s='Attribute:'}</label> <label class="control-label col-lg-3">{l s='Attribute:'}</label>
@@ -81,27 +82,34 @@
<div class="row"> <div class="row">
<label class="control-label col-lg-3">{l s='Value:'}</label> <label class="control-label col-lg-3">{l s='Value:'}</label>
<div class="col-lg-5"> <div class="col-lg-9">
<select name="attribute" id="attribute"> <div class="row">
<option value="0">---</option> <div class="col-lg-8">
</select> <select name="attribute" id="attribute">
<option value="0">---</option>
</select>
</div>
<div class="col-lg-4">
<button type="button" class="btn btn-default btn-block" onclick="add_attr();"><i class="icon-plus-sign-alt"></i> {l s='Add'}</button>
</div>
</div>
<div class="row">
<div class="col-lg-8">
<select id="product_att_list" name="attribute_combination_list[]" multiple="multiple" ></select>
</div>
<div class="col-lg-4">
<button type="button" class="btn btn-default btn-block" onclick="del_attr()"><i class="icon-minus-sign-alt"></i> {l s='Delete'}</button>
</div>
</div>
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function(){ $(document).ready(function(){
populate_attrs(); populate_attrs();
}); });
</script> </script>
<div class="row">
<label class="control-label col-lg-3"></label>
<div class="col-lg-5">
<input type="button" value="{l s='Add'}" class="button" onclick="add_attr();"/>
<input type="button" value="{l s='Delete'}" class="button" onclick="del_attr()"/>
<select id="product_att_list" name="attribute_combination_list[]" multiple="multiple" ></select>
</div>
</div>
<hr/> <hr/>
<div class="row"> <div class="row">
@@ -120,7 +128,7 @@
<label class="control-label col-lg-3"> <label class="control-label col-lg-3">
{l s='EAN13:'} {l s='EAN13:'}
</label> </label>
<div class="col-lg-5"> <div class="col-lg-3">
<input maxlength="13" type="text" id="attribute_ean13" name="attribute_ean13" value="" /> <input maxlength="13" type="text" id="attribute_ean13" name="attribute_ean13" value="" />
</div> </div>
</div> </div>
@@ -129,7 +137,7 @@
<label class="control-label col-lg-3"> <label class="control-label col-lg-3">
{l s='UPC:'} {l s='UPC:'}
</label> </label>
<div class="col-lg-5"> <div class="col-lg-3">
<input maxlength="12" type="text" id="attribute_upc" name="attribute_upc" value="" /> <input maxlength="12" type="text" id="attribute_upc" name="attribute_upc" value="" />
</div> </div>
</div> </div>
@@ -144,7 +152,7 @@
{l s='Wholesale price:'} {l s='Wholesale price:'}
</span> </span>
</label> </label>
<div class="input-group col-lg-5"> <div class="input-group col-lg-2">
<span class="input-group-addon"> <span class="input-group-addon">
{if $currency->format % 2 != 0}{$currency->sign}{/if} {if $currency->format % 2 != 0}{$currency->sign}{/if}
{if $currency->format % 2 == 0}{$currency->sign}{/if} {if $currency->format % 2 == 0}{$currency->sign}{/if}
@@ -154,160 +162,223 @@
<span style="display:none;" id="attribute_wholesale_price_full">({l s='Overrides wholesale price on "Information" tab'})</span> <span style="display:none;" id="attribute_wholesale_price_full">({l s='Overrides wholesale price on "Information" tab'})</span>
</div> </div>
<div class="row"> <div class="row">
{include file="controllers/products/multishop/checkbox.tpl" field="attribute_price_impact" type="attribute_price_impact"} {include file="controllers/products/multishop/checkbox.tpl" field="attribute_price_impact" type="attribute_price_impact"}
<label class="control-label col-lg-3"> <label class="control-label col-lg-3">
{l s='Impact on price:'} {l s='Impact on price:'}
</label> </label>
<div class="col-lg-5"> <div class="col-lg-9">
<select name="attribute_price_impact" id="attribute_price_impact" onchange="check_impact(); calcImpactPriceTI();"> <div class="row">
<option value="0">{l s='None'}</option> <div class="col-lg-4">
<option value="1">{l s='Increase'}</option> <select name="attribute_price_impact" id="attribute_price_impact" onchange="check_impact(); calcImpactPriceTI();">
<option value="-1">{l s='Reduction'}</option> <option value="0">{l s='None'}</option>
</select> <option value="1">{l s='Increase'}</option>
<option value="-1">{l s='Reduction'}</option>
</select>
</div>
<div id="span_impact" class="col-lg-8">
<div class="row">
<label class="control-label col-lg-1">
{l s='of'}
</label>
<div class="input-group col-lg-5">
<div class="input-group-addon">
{if $currency->format % 2 != 0}{$currency->sign}{/if}
{if $currency->format % 2 == 0} {$currency->sign}{/if}
{if $country_display_tax_label}
{l s='(tax excl.)'}
{/if}
</div>
<input type="hidden" id="attribute_priceTEReal" name="attribute_price" value="0.00" />
<input type="text" id="attribute_price" value="0.00" onkeyup="$('#attribute_priceTEReal').val(this.value.replace(/,/g, '.')); if (isArrowKey(event)) return ;this.value = this.value.replace(/,/g, '.'); calcImpactPriceTI();"/>
</div>
<label class="control-label col-lg-1">
{l s='or'}
</label>
<div class="input-group col-lg-5">
<div class="input-group-addon" {if $tax_exclude_option}style="display:none"{/if}>
{if $currency->format % 2 != 0}{$currency->sign}{/if}
{if $currency->format % 2 == 0} {$currency->sign}{/if}
{l s='(tax incl.)'}
</div>
<input type="text" name="attribute_priceTI" id="attribute_priceTI" value="0.00" onkeyup="if (isArrowKey(event)) return ;this.value = this.value.replace(/,/g, '.'); calcImpactPriceTE();"/>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="alert">
{l s='final product price will be set to'}
{if $currency->format % 2 != 0}{$currency->sign}{/if}
<span id="attribute_new_total_price">0.00</span>
{if $currency->format % 2 == 0}{$currency->sign}{/if}
</div>
</div>
</div>
</div>
</div>
</div> </div>
</div> </div>
<div id="span_impact" class="row">
&nbsp;&nbsp;{l s='of'}&nbsp;&nbsp;{if $currency->format % 2 != 0}{$currency->sign} {/if}
<input type="hidden" id="attribute_priceTEReal" name="attribute_price" value="0.00" />
<input type="text" id="attribute_price" value="0.00" onkeyup="$('#attribute_priceTEReal').val(this.value.replace(/,/g, '.')); if (isArrowKey(event)) return ;this.value = this.value.replace(/,/g, '.'); calcImpactPriceTI();"/>{if $currency->format % 2 == 0} {$currency->sign}{/if}
{if $country_display_tax_label}
{l s='(tax excl.)'}
<span {if $tax_exclude_option}style="display:none"{/if}> {l s='or'}
{if $currency->format % 2 != 0}{$currency->sign} {/if}
<input type="text" size="6" name="attribute_priceTI" id="attribute_priceTI" value="0.00" onkeyup="if (isArrowKey(event)) return ;this.value = this.value.replace(/,/g, '.'); calcImpactPriceTE();"/>
{if $currency->format % 2 == 0} {$currency->sign}{/if} {l s='(tax incl.)'}
</span> {l s='final product price will be set to'}
{if $currency->format % 2 != 0}{$currency->sign} {/if}
<span id="attribute_new_total_price">0.00</span>
{if $currency->format % 2 == 0}{$currency->sign} {/if}
{/if}
</div>
<div class="row"> <div class="row">
{include file="controllers/products/multishop/checkbox.tpl" field="attribute_weight_impact" type="attribute_weight_impact"} {include file="controllers/products/multishop/checkbox.tpl" field="attribute_weight_impact" type="attribute_weight_impact"}
<label class="control-label col-lg-3"> <label class="control-label col-lg-3">
{l s='Impact on weight:'} {l s='Impact on weight:'}
</label> </label>
<div class="col-lg-5"> <div class="col-lg-9">
<select name="attribute_weight_impact" id="attribute_weight_impact" onchange="check_weight_impact();"> <div class="row">
<option value="0">{l s='None'}</option> <div class="col-lg-4">
<option value="1">{l s='Increase'}</option> <select name="attribute_weight_impact" id="attribute_weight_impact" onchange="check_weight_impact();">
<option value="-1">{l s='Reduction'}</option> <option value="0">{l s='None'}</option>
</select> <option value="1">{l s='Increase'}</option>
<option value="-1">{l s='Reduction'}</option>
</select>
</div>
<div id="span_weight_impact" class="col-lg-8">
<div class="row">
<label class="control-label col-lg-1">
{l s='of'}
</label>
<div class="input-group col-lg-5">
<div class="input-group-addon">
{$ps_weight_unit}
</div>
<input type="text" name="attribute_weight" id="attribute_weight" value="0.00" onKeyUp="if (isArrowKey(event)) return ;this.value = this.value.replace(/,/g, '.');" />
</div>
</div>
</div>
</div>
</div> </div>
<span id="span_weight_impact">&nbsp;&nbsp;{l s='of'}&nbsp;&nbsp; </div>
<input type="text" name="attribute_weight" id="attribute_weight" value="0.00" onKeyUp="if (isArrowKey(event)) return ;this.value = this.value.replace(/,/g, '.');" />
{$ps_weight_unit}
</span>
</div>
<div id="tr_unit_impact" class="row"> <div id="tr_unit_impact" class="row">
{include file="controllers/products/multishop/checkbox.tpl" field="attribute_unit_impact" type="attribute_unit_impact"} {include file="controllers/products/multishop/checkbox.tpl" field="attribute_unit_impact" type="attribute_unit_impact"}
<label class="control-label col-lg-3">{l s='Impact on unit price :'}</label> <label class="control-label col-lg-3">{l s='Impact on unit price :'}</label>
<div class="col-lg-5"> <div class="col-lg-3">
<select name="attribute_unit_impact" id="attribute_unit_impact" onchange="check_unit_impact();"> <select name="attribute_unit_impact" id="attribute_unit_impact" onchange="check_unit_impact();">
<option value="0">{l s='None'}</option> <option value="0">{l s='None'}</option>
<option value="1">{l s='Increase'}</option> <option value="1">{l s='Increase'}</option>
<option value="-1">{l s='Reduction'}</option> <option value="-1">{l s='Reduction'}</option>
</select> </select>
</div> </div>
<span id="span_weight_impact">&nbsp;&nbsp;{l s='of'}&nbsp;&nbsp;&nbsp;&nbsp; <div class="col-lg-6">
{if $currency->format % 2 != 0} {$currency->sign} {/if} <div class="row">
<input type="text" size="6" name="attribute_unity" id="attribute_unity" value="0.00" onKeyUp="if (isArrowKey(event)) return ;this.value = this.value.replace(/,/g, '.');" />{if $currency->format % 2 == 0} {$currency->sign}{/if} / <span id="unity_third">{$field_value_unity}</span> <label class="control-label col-lg-1">
</span> {l s='of'}
</label>
<div class="input-group col-lg-5">
<div class="input-group-addon">
{if $currency->format % 2 != 0}{$currency->sign}{/if}
{if $currency->format % 2 == 0}{$currency->sign}{/if}
/ <span id="unity_third">{$field_value_unity}</span>
</div>
<input type="text" name="attribute_unity" id="attribute_unity" value="0.00" onKeyUp="if (isArrowKey(event)) return ;this.value = this.value.replace(/,/g, '.');" />
</div>
</div>
</div>
</div> </div>
{if $ps_use_ecotax}
<div class="row">
{include file="controllers/products/multishop/checkbox.tpl" field="attribute_ecotax" type="default"}
<label class="control-label col-lg-3">
<span class="label-tooltip" data-toggle="tooltip"
title="{l s='overrides Eco-tax in the "Information" tab'}">
{l s='Eco-tax (tax excl.):'}
</span>
</label>
<div class="input-group col-lg-2">
<div class="input-group-addon">
{if $currency->format % 2 != 0}{$currency->sign}{/if}
{if $currency->format % 2 == 0} {$currency->sign}{/if}
</div>
<input type="text" name="attribute_ecotax" id="attribute_ecotax" value="0.00" onKeyUp="if (isArrowKey(event)) return ;this.value = this.value.replace(/,/g, '.');" />
</div>
</div>
{/if}
<div class="row">
{include file="controllers/products/multishop/checkbox.tpl" field="attribute_minimal_quantity" type="default"}
<label class="control-label col-lg-3">
<span class="label-tooltip" data-toggle="tooltip"
title="{l s='The minimum quantity to buy this product (set to 1 to disable this feature)'}">
{l s='Minimum quantity:'}
</span>
</label>
<div class="input-group col-lg-2">
<div class="input-group-addon">&times;</div>
<input maxlength="6" name="attribute_minimal_quantity" id="attribute_minimal_quantity" type="text" value="{$minimal_quantity}" />
</div>
</div>
{if $ps_use_ecotax} <div class="row">
<tr> {include file="controllers/products/multishop/checkbox.tpl" field="available_date_attribute" type="default"}
<td style="width:150px;vertical-align:top;text-align:right;padding-right:10px;font-weight:bold;"> <label class="control-label col-lg-3">
{include file="controllers/products/multishop/checkbox.tpl" field="attribute_ecotax" type="default"} <span class="label-tooltip" data-toggle="tooltip"
<label>{l s='Eco-tax (tax excl.):'}</label> title="{l s='The available date when this product is out of stock.'}">
</td> {l s='Available date:'}
<td style="padding-bottom:5px;">{if $currency->format % 2 != 0}{$currency->sign}{/if} </span>
<input type="text" size="3" name="attribute_ecotax" id="attribute_ecotax" value="0.00" onKeyUp="if (isArrowKey(event)) return ;this.value = this.value.replace(/,/g, '.');" /> </label>
{if $currency->format % 2 == 0} {$currency->sign}{/if} <div class="input-group col-lg-3">
({l s='overrides Eco-tax in the "Information" tab'}) <input class="datepicker" id="available_date_attribute" name="available_date_attribute" value="{$available_date}" type="text" />
</td> <div class="input-group-addon">
</tr> <i class="icon-calendar-empty"></i>
{/if} </div>
<tr> </div>
<td style="width:150px;vertical-align:top;text-align:right;padding-right:10px;font-weight:bold;" class="col-left"> <script type="text/javascript">
{include file="controllers/products/multishop/checkbox.tpl" field="attribute_minimal_quantity" type="default"} $(document).ready(function(){
<label>{l s='Minimum quantity:'}</label> $(".datepicker").datepicker({
</td> prevText: '',
<td style="padding-bottom:5px;"> nextText: '',
<input size="3" maxlength="6" name="attribute_minimal_quantity" id="attribute_minimal_quantity" type="text" value="{$minimal_quantity}" /> dateFormat: 'yy-mm-dd'
<p>{l s='The minimum quantity to buy this product (set to 1 to disable this feature)'}</p> });
</td> });
</tr> </script>
<tr>
<td style="width:150px;vertical-align:top;text-align:right;padding-right:10px;font-weight:bold;" class="col-left">
{include file="controllers/products/multishop/checkbox.tpl" field="available_date_attribute" type="default"}
<label>{l s='Available date:'}</label>
</td>
<td style="padding-bottom:5px;">
<input class="datepicker" id="available_date_attribute" name="available_date_attribute" value="{$available_date}" style="text-align: center;" type="text" />
<p>{l s='The available date when this product is out of stock.'}</p>
<script type="text/javascript">
$(document).ready(function(){
$(".datepicker").datepicker({
prevText: '',
nextText: '',
dateFormat: 'yy-mm-dd'
});
});
</script>
</td>
</tr>
<tr>
<td colspan="2">
<div class="separation"></div>
</td>
</tr>
<tr>
<td style="width:150px"><label>{l s='Image:'}</label></td>
<td style="padding-bottom:5px;">
<ul id="id_image_attr">
{foreach from=$images key=k item=image}
<li style="float: left; width: {$imageWidth}px;">
<input type="checkbox" name="id_image_attr[]" value="{$image.id_image}" id="id_image_attr_{$image.id_image}" />
<label for="id_image_attr_{$image.id_image}" style="float: none;">
<img src="{$smarty.const._THEME_PROD_DIR_}{$image.obj->getExistingImgPath()}-small_default.jpg" alt="{$image.legend|escape:'htmlall':'UTF-8'}" title="{$image.legend|escape:'htmlall':'UTF-8'}" />
</label>
</li>
{/foreach}
</ul>
<img id="pic" alt="" title="" style="display: none; width: 100px; height: 100px; float: left; border: 1px dashed #BBB; margin-left: 20px;" />
</td>
</tr>
<tr>
<td style="width:150px">
{include file="controllers/products/multishop/checkbox.tpl" field="attribute_default" type="attribute_default"}
<label>{l s='Default:'}</label><br /><br />
</td>
<td style="padding-bottom:5px;">
<input type="checkbox" name="attribute_default" id="attribute_default" value="1" />
&nbsp;<label for="attribute_default" style="float:none;">{l s='Make this combination the default combination for this product'}</label><br /><br />
</td>
</tr>
<tr>
<td style="width:150px">&nbsp;</td>
<td style="padding-bottom:5px;">
<span id="ResetSpan" style="float:left;margin-left:8px;display:none;">
<input type="reset" name="ResetBtn" id="ResetBtn" onclick="getE('id_product_attribute').value = 0;" class="button" value="{l s='Cancel modification'}" />
</span>
<span class="clear"></span>
</td>
</tr>
</table>
<div class="separation"></div>
</div> </div>
{$list} <hr/>
<div class="row">
<label class="control-label col-lg-3">{l s='Image:'}</label>
<div class="col-lg-9">
<ul id="id_image_attr" class="list-inline">
{foreach from=$images key=k item=image}
<li>
<input type="checkbox" name="id_image_attr[]" value="{$image.id_image}" id="id_image_attr_{$image.id_image}" />
<label for="id_image_attr_{$image.id_image}">
<img src="{$smarty.const._THEME_PROD_DIR_}{$image.obj->getExistingImgPath()}-small_default.jpg" alt="{$image.legend|escape:'htmlall':'UTF-8'}" title="{$image.legend|escape:'htmlall':'UTF-8'}" />
</label>
</li>
{/foreach}
</ul>
</div>
</div>
<div class="row">
{include file="controllers/products/multishop/checkbox.tpl" field="attribute_default" type="attribute_default"}
<label class="control-label col-lg-3">{l s='Default:'}</label>
<div class="col-lg-9">
<p class="checkbox">
<label for="attribute_default">
<input type="checkbox" name="attribute_default" id="attribute_default" value="1" />
{l s='Make this combination the default combination for this product'}
</label>
</p>
</div>
</div>
<div class="panel-footer">
<span id="ResetSpan">
<button type="reset" name="ResetBtn" id="ResetBtn" onclick="getE('id_product_attribute').value = 0;" class="btn btn-default">
<i class="icon-undo"></i> {l s='Cancel modification'}
</button>
</span>
</div>
</div>
{$list}
{/if} {/if}
@@ -25,38 +25,46 @@
{if isset($id_product) && isset($product)} {if isset($id_product) && isset($product)}
<input type="hidden" name="submitted_tabs[]" value="Images" /> <input type="hidden" name="submitted_tabs[]" value="Images" />
<h4 class="tab" >2. {l s='Images'} (<span id="countImage">{$countImages}</span>)</h4>
<h4>{if isset($id_image)}{l s='Edit this product image'}{else}{l s='Add a new image to this product'}{/if}</h4> <div class="separation"></div><br /> <legend class="tab" >
{l s='Images'}
<span class="badge" id="countImage">{$countImages}</span>
</legend>
<table cellpadding="5" style="width:100%">
<tr>
<td class="col-left"><label class="file_upload_label">{l s='File:'}</label></td> <div class="row">
<td style="padding-bottom:5px;"> <label class="control-label col-lg-3 file_upload_label">
<div id="file-uploader"> <span class="label-tooltip" data-toggle="tooltip"
<noscript> title="{l s='Format:'} JPG, GIF, PNG. {l s='Filesize:'} {$max_image_size|string_format:"%.2f"} {l s='MB max.'}">
<p>{l s='Please enable JavaScript to use file uploader:'}</p> {if isset($id_image)}{l s='Edit this product image'}{else}{l s='Add a new image to this product'}{/if}
</noscript> </span>
</div> </label>
<div id="progressBarImage" class="progressBarImage"></div> <div class="col-lg-5">
<div id="showCounter" style="display:none;"><span id="imageUpload">0</span><span id="imageTotal">0</span></div> {l s='File:'}
<p class="preference_description" style="clear: both;"> <div id="file-uploader">
{l s='Format:'} JPG, GIF, PNG. {l s='Filesize:'} {$max_image_size|string_format:"%.2f"} {l s='MB max.'} <noscript>
</p> <p>{l s='Please enable JavaScript to use file uploader:'}</p>
</td> </noscript>
</tr> </div>
<tr> <div id="progressBarImage" class="progressBarImage"></div>
<td colspan="2" style="text-align:center;"> <div id="showCounter" style="display:none;">
<input type="hidden" name="resizer" value="auto" /> <span id="imageUpload">0</span><span id="imageTotal">0</span>
{if Tools::getValue('id_image')}<input type="hidden" name="id_image" value="{Tools::getValue('id_image')|intval}" />{/if} </div>
</td> <input type="hidden" name="resizer" value="auto" />
</tr> {if Tools::getValue('id_image')}
<tr><td colspan="2" style="padding-bottom:10px;"><div class="separation"></div></td></tr> <input type="hidden" name="id_image" value="{Tools::getValue('id_image')|intval}" />
<tr> {/if}
<td colspan="2"> </div>
<table cellspacing="0" cellpadding="0" class="table tableDnD" id="imageTable"> </div>
<table class="table tableDnD" id="imageTable">
<thead> <thead>
<tr class="nodrag nodrop"> <tr class="nodrag nodrop">
<th style="width: 100px;">{l s='Image'}</th> <th>{l s='Image'}</th>
<th>{l s='Position'}</th> <th>{l s='Position'}</th>
{if $shops} {if $shops}
{foreach from=$shops item=shop} {foreach from=$shops item=shop}
@@ -70,9 +78,8 @@
<tbody id="imageList"> <tbody id="imageList">
</tbody> </tbody>
</table> </table>
</td>
</tr>
</table>
<table id="lineType" style="display:none;"> <table id="lineType" style="display:none;">
<tr id="image_id"> <tr id="image_id">
@@ -95,8 +102,8 @@
<img class="covered" src="../img/admin/blank.gif" alt="e" /></a> <img class="covered" src="../img/admin/blank.gif" alt="e" /></a>
</td> </td>
<td class="center"> <td class="center">
<a href="#" class="delete_product_image" > <a href="#" class="btn btn-default delete_product_image" >
<img src="../img/admin/delete.gif" alt="{l s='Delete this image'}" title="{l s='Delete this image'}" /> <i class="icon-trash"></i> {l s='Delete this image'}
</a> </a>
</td> </td>
</tr> </tr>
@@ -26,19 +26,20 @@
<input type="hidden" name="supplier_loaded" value="1"> <input type="hidden" name="supplier_loaded" value="1">
{if isset($product->id)} {if isset($product->id)}
<input type="hidden" name="submitted_tabs[]" value="Suppliers" /> <input type="hidden" name="submitted_tabs[]" value="Suppliers" />
<h4>{l s='Suppliers of the current product'}</h4> <legend>{l s='Suppliers of the current product'}</legend>
<div class="separation"></div> <div class="alert alert-info">
<div class="alert alert-info" style="display:block; position:'auto';"> {l s='This interface allows you to specify the suppliers of the current product and eventually its combinations.'}<br />
<p>{l s='This interface allows you to specify the suppliers of the current product and eventually its combinations.'}</p> {l s='It is also possible to specify supplier references according to previously associated suppliers.'}<br />
<p>{l s='It is also possible to specify supplier references according to previously associated suppliers.'}</p>
<br /> <br />
<p>{l s='When using the advanced stock management tool (see Preferences/Products), the values you define (prices, references) will be used in supply orders.'}</p> {l s='When using the advanced stock management tool (see Preferences/Products), the values you define (prices, references) will be used in supply orders.'}
</div> </div>
<p>{l s='Please choose the suppliers associated with this product. Please select a default supplier, as well.'}</p>
<label>{l s='Please choose the suppliers associated with this product. Please select a default supplier, as well.'}</label>
<a class="button bt-icon confirm_leave" href="{$link->getAdminLink('AdminSuppliers')|escape:'htmlall':'UTF-8'}&addsupplier"> <a class="button bt-icon confirm_leave" href="{$link->getAdminLink('AdminSuppliers')|escape:'htmlall':'UTF-8'}&addsupplier">
<img src="../img/admin/add.gif" alt="{l s='Create a new supplier'}" title="{l s='Create a new supplier'}" /><span>{l s='Create a new supplier'}</span> <img src="../img/admin/add.gif" alt="{l s='Create a new supplier'}" title="{l s='Create a new supplier'}" /><span>{l s='Create a new supplier'}</span>
</a> </a>
<table cellpadding="5" style="width:100%">
<table class="table">
<tbody> <tbody>
<tr> <tr>
<td valign="top" style="text-align:left;vertical-align:top;"> <td valign="top" style="text-align:left;vertical-align:top;">
@@ -127,7 +127,8 @@
{/if} {/if}
<table <table
class="table table-striped table-bordered table-hover" class="table table-striped table-hover"
name="list_table"
{if $table_id} id={$table_id}{/if} {if $table_id} id={$table_id}{/if}
class="table {if $table_dnd}tableDnD{/if} {$table}" class="table {if $table_dnd}tableDnD{/if} {$table}"
cellpadding="0" cellspacing="0"> cellpadding="0" cellspacing="0">