|
- /**
- Copyright Souke (2018)
-
- contact@souke.fr
-
- Ce logiciel est un programme informatique servant à aider les producteurs
- à distribuer leur production en circuits courts.
-
- Ce logiciel est régi par la licence CeCILL soumise au droit français et
- respectant les principes de diffusion des logiciels libres. Vous pouvez
- utiliser, modifier et/ou redistribuer ce programme sous les conditions
- de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
- sur le site "http://www.cecill.info".
-
- En contrepartie de l'accessibilité au code source et des droits de copie,
- de modification et de redistribution accordés par cette licence, il n'est
- offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
- seule une responsabilité restreinte pèse sur l'auteur du programme, le
- titulaire des droits patrimoniaux et les concédants successifs.
-
- A cet égard l'attention de l'utilisateur est attirée sur les risques
- associés au chargement, à l'utilisation, à la modification et/ou au
- développement et à la reproduction du logiciel par l'utilisateur étant
- donné sa spécificité de logiciel libre, qui peut le rendre complexe à
- manipuler et qui le réserve donc à des développeurs et des professionnels
- avertis possédant des connaissances informatiques approfondies. Les
- utilisateurs sont donc invités à charger et tester l'adéquation du
- logiciel à leurs besoins dans des conditions permettant d'assurer la
- sécurité de leurs systèmes et ou de leurs données et, plus généralement,
- à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
-
- Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
- pris connaissance de la licence CeCILL, et que vous en avez accepté les
- termes.
- */
-
- $(document).ready(function () {
- opendistrib_datepicker();
- opendistrib_popover();
- opendistrib_commandeauto();
- opendistrib_points_vente_acces();
- opendistrib_tooltip();
- opendistrib_ordre_produits();
- opendistrib_ordre_categories();
- opendistrib_products();
- opendistrib_product_prices();
- opendistrib_product_index();
- opendistrib_confirm_delete();
- opendistrib_product_availability_points_sale();
- opendistrib_user_index();
- opendistrib_menu_treeview();
- opendistrib_select2();
- opendistrib_dropdown_producers();
- opendistrib_gridview_pagesize();
- opendistrib_producers_admin();
- opendistrib_user_form();
- opendistrib_features_index();
- opendistrib_point_sale_form();
- opendistrib_check_all_checkboxes();
- opendistrib_dashboard_admin_statistics();
- opendistrib_tinymce_responsive();
- opendistrib_sponsorship();
- });
-
- function opendistrib_sponsorship() {
- $('#sponsorship-link-copy').click(function() {
- navigator.clipboard.writeText($(this).attr('href'));
- appAlerts.alert('success', 'Lien de parrainage copié');
- return false;
- });
- }
-
- function saveData (data, fileName) {
- var a = document.createElement("a");
- document.body.appendChild(a);
- a.style = "display: none";
- var blob = new Blob([data], {type: "octet/stream"}),
- url = window.URL.createObjectURL(blob);
- a.href = url;
- a.download = fileName;
- a.click();
- window.URL.revokeObjectURL(url);
- }
-
- var UrlManager = {
- getBaseUrl: function () {
- return $('meta[name=baseurl]').attr('content') + '/';
- },
- getBaseUrlAbsolute: function () {
- return $('meta[name=baseurl-absolute]').attr('content') + '/';
- }
- };
-
- function opendistrib_tinymce_responsive() {
- // tinymce.activeEditor.mode.set('readonly');
- //tinymce.activeEditor.hide();
- //tinymce.EditorManager.execCommand('mceRemoveEditor',true, 'textarea#mailform-message');
- //tinyMCE.init({readonly : 1});
- //tinymce.activeEditor.getBody().setAttribute('contenteditable', false);
- //tinyMCE.get('mailform-message').getBody().setAttribute('contenteditable', false);
- }
-
- function opendistrib_dashboard_admin_statistics() {
- var selector = '#dashboard-admin-statistics-html';
- if($(selector).length) {
- $(selector+' .btn-load').click(function() {
- $(selector).html('Chargement ...');
- $.get(UrlManager.getBaseUrl() + 'dashboard-admin/ajax-statistics-html', {}, function(result) {
- $(selector).html(result);
- });
- });
- }
- }
-
- function opendistrib_check_all_checkboxes() {
- $('.check-all-checkboxes').change(function() {
- var selector = $(this).data('selector');
- var checked = $(this).prop('checked');
- $(selector).prop('checked', checked);
-
- if(checked){
- $(selector).unbind('change').change(function() {
- if(!$(this).prop('checked')) {
- $('.check-all-checkboxes').prop('checked', false);
- }
- });
- }
- });
- }
-
- function opendistrib_point_sale_form() {
- if($('.point-sale-form').length) {
- opendistrib_point_sale_form_days_distribution_event();
- $('#days-distribution .day input[type=checkbox]').change(function() {
- opendistrib_point_sale_form_days_distribution_event();
- });
- }
- }
-
- function opendistrib_point_sale_form_days_distribution_event() {
- $('#days-distribution .day').each(function() {
- var isChecked = $(this).find('input[type=checkbox]').prop('checked');
- var $textareaInfos = $(this).find('textarea');
- if(isChecked) {
- $textareaInfos.show();
- }
- else {
- $textareaInfos.hide();
- }
- });
- }
-
- function opendistrib_user_form() {
- if($('#app-user-form').length) {
- var $fieldUserEmail = $('#app-user-form .field-user-email input');
- var $fieldSendMailWelcome = $('#app-user-form .field-user-send_mail_welcome');
-
- opendistrib_user_form_event($fieldUserEmail, $fieldSendMailWelcome);
- $fieldUserEmail.keyup(function () {
- opendistrib_user_form_event($fieldUserEmail, $fieldSendMailWelcome);
- });
- }
- }
-
- function opendistrib_user_form_event($fieldUserEmail, $fieldSendMailWelcome) {
- var val = $fieldUserEmail.val();
-
- if (val.length > 0) {
- $fieldSendMailWelcome.show();
- }
- else {
- $fieldSendMailWelcome.hide();
- }
- }
-
- function opendistrib_producers_admin() {
- $('.producer-admin-index .btn-alwaysdata, .producer-admin-index .btn-dolibarr').click(function () {
- var $button = $(this);
- $button.attr('disabled', 'disabled');
- axios.get($button.attr('href'), {})
- .then(function (response) {
- appAlerts.alertResponse(response);
- $button.removeAttr('disabled');
- });
- return false;
- });
- }
-
- function opendistrib_gridview_pagesize() {
- $('.gridview-pagesize select').change(function () {
- $(this).parent().parent().submit();
- });
- }
-
- function opendistrib_dropdown_producers() {
-
- $('.producer-menu .dropdown-toggle').click(function () {
- setTimeout(function() { $('.producer-menu .search-producer').focus(); }, 100);
- });
-
- $('.producer-menu .search-producer').keyup(function (event) {
- var $alertNoResults = $('.producer-menu .li-alert-no-results');
- var searchWords = $(this).val().toLowerCase();
- var count = 0;
-
- if (searchWords && searchWords.length > 0) {
- $('.producer-menu li.producer').each(function () {
- if ($(this).find('a').text().toLowerCase().indexOf(searchWords) >= 0 || !searchWords) {
- $(this).show();
- count++;
- } else {
- $(this).hide();
- }
- });
-
- if (count) {
- $alertNoResults.hide();
- } else {
- $alertNoResults.show();
- }
- } else {
- $alertNoResults.hide();
- $('.producer-menu li.producer').show();
- }
-
- if(event.key == 'Enter') {
- $firstProducer = $('.producer-menu li.producer:visible:first');
- if($firstProducer.length > 0) {
- window.location = $firstProducer.find('a').attr('href');
- }
- }
- });
-
- $('#link-display-producers-offline').click(function () {
- $(this).hide();
- $('.producer-menu .offline').show();
- return false;
- });
- }
-
- function opendistrib_popover() {
- $('button[data-toggle=popover], a[data-toggle=popover]').popover();
- }
-
- function opendistrib_select2() {
- $('.select2').select2({
- width: 'resolve'
- });
- }
-
- function opendistrib_user_index() {
- if ($('body').hasClass('user-index')) {
- $('#w0-filters input:first').focus();
- }
- }
-
- function opendistrib_menu_treeview() {
- $('li.treeview a').unbind('click').click(function () {
- var href = $(this).attr('href');
- if (href != '#') {
- $(location).attr('href', href);
- }
- });
- }
-
- function opendistrib_product_index() {
- $('body.product-index .toggle input').change(function () {
- var id = $(this).data('id');
- var checked = $(this).prop('checked');
- $.get(UrlManager.getBaseUrl() + 'product/ajax-toggle-status', {
- id: id,
- status: checked ? 1 : 0
- });
- })
- }
-
- function opendistrib_product_availability_points_sale() {
- $('input[name="Product[available_on_points_sale]"]').change(function () {
- var available = parseInt($(this).val());
- var label = 'disponible';
- if (available == 1) {
- label = 'indisponible';
- }
-
- $('#label-availability-points-sale span').html(label);
- });
- }
-
- function opendistrib_confirm_delete() {
- $('.btn-confirm-delete').click(function (event) {
- if (!confirm('Souhaitez-vous vraiment supprimer cette entrée ?')) {
- event.stopPropagation();
- return false;
- }
- });
- }
-
- function opendistrib_products() {
- if ($('.product-create').size() || $('.product-update').size()) {
- opendistrib_products_event_unit(false);
-
- $('#product-unit').change(function () {
- opendistrib_products_event_unit(true);
- });
-
-
- opendistrib_products_event_price_with_tax();
-
- $('#product-price').change(opendistrib_products_event_price_with_tax);
- $('#product-price-with-tax').change(opendistrib_products_event_price);
- $('#product-id_tax_rate').change(opendistrib_products_event_price_with_tax);
-
- }
- }
-
- function opendistrib_products_event_price_with_tax() {
- taxRateSelected = $('#product-id_tax_rate').find('option:selected').data('tax-rate-value');
- if (typeof taxRateSelected == 'undefined') {
- taxRateSelected = 0;
- }
-
- if ($('#product-price').length) {
- var price = $('#product-price').val().replace(',', '.');
- if (price) {
- $('#product-price-with-tax').val(getPriceWithTax(price, taxRateSelected));
- // formattage
- $('#product-price').val(parseFloat(price).toFixed(5));
- }
- }
- }
-
- function opendistrib_products_event_price() {
- taxRateSelected = $('#product-id_tax_rate').find('option:selected').data('tax-rate-value');
- if (typeof taxRateSelected == 'undefined') {
- taxRateSelected = 0;
- }
- var priceWithTax = $('#product-price-with-tax').val();
-
- if (priceWithTax) {
- $('#product-price').val(getPrice(priceWithTax, taxRateSelected));
- // formattage
- $('#product-price-with-tax').val(parseFloat(priceWithTax).toFixed(2));
- }
- }
-
-
- function opendistrib_products_event_unit(change) {
- var unit = $('#product-unit').val();
- if (unit == 'piece') {
- $('.field-product-step').hide();
- $('.field-product-weight label').html('Poids (g)');
- } else {
- $('.field-product-step').show();
- //$('.field-product-weight label').html('Poids (' + $('#product-unit').val() + ')');
- $('.field-product-weight label').html('Poids (g)');
- }
-
- var label_price_ttc = $('.field-product-price .control-label.with-tax');
- var label_price_ht = $('.field-product-price .control-label.without-tax');
- var label_step = $('.field-product-step .control-label');
- var label_quantity_max = $('.field-product-quantity_max .control-label');
-
- if (unit == 'piece') {
- label_price_ttc.html('Prix (la pièce) TTC');
- label_price_ht.html('Prix (la pièce) HT');
- label_quantity_max.html('Par défaut (pièces)');
- } else if (unit == 'g' || unit == 'kg') {
- label_price_ttc.html('Prix (au kg) TTC');
- label_price_ht.html('Prix (au kg) HT');
- label_quantity_max.html('Par défaut (kg)');
- label_step.html('Pas (' + unit + ')');
- } else if (unit == 'mL' || unit == 'L') {
- label_price_ttc.html('Prix (au litre) TTC');
- label_price_ht.html('Prix (au litre) HT');
- label_quantity_max.html('Par défaut (litres)');
- label_step.html('Pas (' + unit + ')');
- }
-
- if (change) {
- if (unit == 'piece') {
- $('#product-step').val(1);
- } else {
- $('#product-step').val('');
- }
- }
-
- }
-
- function opendistrib_product_prices() {
- if ($('.product-prices-create').size() || $('.product-prices-update').size()) {
- opendistrib_product_prices_event_price_with_tax();
- $('#productprice-price').change(opendistrib_product_prices_event_price_with_tax);
- $('#productprice-price-with-tax').change(opendistrib_product_prices_event_price);
- $('#reduction-increase-percent').change(function () {
- opendistrib_product_prices_event_reduction_increase();
- });
- }
- }
-
- function opendistrib_product_prices_event_price_with_tax() {
- var taxRateValue = $('#productprice-price-with-tax').data('tax-rate-value');
- var price = $('#productprice-price').val().replace(',', '.');
- if (price) {
- $('#productprice-price-with-tax').val(getPriceWithTax(price, taxRateValue));
- // formattage
- $('#productprice-price').val(parseFloat(price).toFixed(5));
- opendistrib_product_prices_update_reduction_increase();
- }
- }
-
- function opendistrib_product_prices_event_price() {
- var taxRateValue = $('#productprice-price-with-tax').data('tax-rate-value');
- var priceWithTax = $('#productprice-price-with-tax').val().replace(',', '.');
- if (priceWithTax) {
- $('#productprice-price').val(getPrice(priceWithTax, taxRateValue));
- // formattage
- $('#productprice-price-with-tax').val(parseFloat(priceWithTax).toFixed(2));
- opendistrib_product_prices_update_reduction_increase();
- }
- }
-
- function opendistrib_product_prices_update_reduction_increase() {
- var productPriceBase = $('#reduction-increase-percent').data('price-base');
- var productPriceSpecific = $('#productprice-price').val().replace(',', '.');
- var reductionIncreasePercent = (productPriceSpecific / productPriceBase) * 100 - 100;
- $('#reduction-increase-percent').val(parseFloat(reductionIncreasePercent).toFixed(5));
- }
-
- function opendistrib_product_prices_event_reduction_increase() {
- var productPriceBase = $('#reduction-increase-percent').data('price-base');
- var reductionIncreasePercent = $('#reduction-increase-percent').val();
- if (reductionIncreasePercent) {
- var newPrice = productPriceBase + productPriceBase * (reductionIncreasePercent / 100);
- $('#productprice-price').val(parseFloat(newPrice).toFixed(5));
- opendistrib_product_prices_event_price_with_tax();
- }
- }
-
- function opendistrib_tooltip() {
- $('[data-toggle="tooltip"]').tooltip({
- container: 'body'
- });
- }
-
- function opendistrib_nl2br(str, is_xhtml) {
- var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';
- return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
- }
-
- function opendistrib_points_vente_acces() {
- // affichage du bloc acces restreint
- $('#pointsale-restricted_access').change(function () {
- opendistrib_points_vente_acces_event();
- });
- opendistrib_points_vente_acces_event();
-
- // affichage du champs commentaire
- $('#pointsale-users input[type=checkbox]').change(function () {
- opendistrib_points_vente_commentaire_event();
- });
- opendistrib_points_vente_commentaire_event();
- }
-
- function opendistrib_points_vente_commentaire_event() {
- $('#pointsale-users input[type=checkbox]').each(function () {
- if ($(this).prop('checked')) {
- $(this).parent().find('.commentaire').fadeIn();
- } else {
- $(this).parent().find('.commentaire').hide();
- }
- });
- }
-
- function opendistrib_points_vente_acces_event() {
- if ($('#pointsale-restricted_access').prop('checked')) {
- $('#pointsale-users').fadeIn();
- } else {
- $('#pointsale-users').hide();
- }
- }
-
- function opendistrib_commandeauto() {
- $('#subscriptionform-date_begin, #subscriptionform-date_end').datepicker();
- }
-
- function opendistrib_sortable_list(element_selector, button_selector, route_ajax) {
- var fixHelper = function (e, ui) {
- ui.children().each(function () {
- $(this).width($(this).width());
- });
- return ui;
- };
-
- $(element_selector + " table tbody").sortable({
- items: "> tr",
- appendTo: "parent",
- cursor: "move",
- placeholder: "ui-state-highlight",
- handle: button_selector,
- helper: fixHelper,
- stop: function (event, ui) {
- var tab_ordre = {};
- var ordre = 1;
-
- if ($('ul.pagination').size()) {
- var page = parseInt($('ul.pagination li.active a').html());
- var nb_items_by_page = parseInt($('#page-size').html());
- if (page != 1) {
- ordre = (page - 1) * nb_items_by_page;
- }
- }
-
- $(element_selector + " table tbody tr").each(function () {
- tab_ordre[$(this).attr('data-key')] = ordre;
- ordre++;
- });
-
- $.post(UrlManager.getBaseUrl() + route_ajax, {
- array: JSON.stringify(tab_ordre)
- });
- }
- }).disableSelection();
- }
-
- function opendistrib_ordre_categories() {
- opendistrib_sortable_list(
- '.product-category-index',
- '.btn-position',
- 'product-category/position'
- );
- }
-
- function opendistrib_ordre_produits() {
-
- opendistrib_sortable_list(
- '.product-index',
- '.btn-order',
- 'product/order'
- );
- }
-
- function opendistrib_features_index() {
- $('body.feature-admin-index .toggle input').change(function () {
- var id = $(this).data('id');
- var checked = $(this).prop('checked');
- /*$.get(UrlManager.getBaseUrl() + 'feature-admin/ajax-toggle-status', {
- id: id,
- status: checked ? 1 : 0
- });*/
-
- axios.get(UrlManager.getBaseUrlAbsolute() + "feature-admin/ajax-toggle-status", {
- params: {
- id: id,
- status: checked ? 1 : 0
- }
- })
- .then(function (response) {
- appAlerts.alertResponse(response);
- });
- });
-
- opendistrib_sortable_list(
- '.feature-admin-index',
- '.btn-position',
- 'feature-admin/position'
- );
- }
-
- function opendistrib_datepicker() {
- $('input.datepicker').datepicker({dateFormat: 'dd/mm/yy'});
- }
-
- /* French initialisation for the jQuery UI date picker plugin. */
- /* Written by Keith Wood (kbwood{at}iinet.com.au),
- Stéphane Nahmani (sholby@sholby.net),
- Stéphane Raimbault <stephane.raimbault@gmail.com> */
- (function (factory) {
- if (typeof define === "function" && define.amd) {
-
- // AMD. Register as an anonymous module.
- define(["../jquery.ui.datepicker"], factory);
- } else {
-
- // Browser globals
- factory(jQuery.datepicker);
- }
- }(function (datepicker) {
- datepicker.regional['fr'] = {
- closeText: 'Fermer',
- prevText: 'Précédent',
- nextText: 'Suivant',
- currentText: 'Aujourd\'hui',
- monthNames: ['janvier', 'février', 'mars', 'avril', 'mai', 'juin',
- 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
- monthNamesShort: ['janv.', 'févr.', 'mars', 'avril', 'mai', 'juin',
- 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
- dayNames: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
- dayNamesShort: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
- dayNamesMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
- weekHeader: 'Sem.',
- dateFormat: 'dd/mm/yy',
- firstDay: 1,
- isRTL: false,
- showMonthAfterYear: false,
- yearSuffix: ''
- };
- datepicker.setDefaults(datepicker.regional['fr']);
-
- return datepicker.regional['fr'];
-
- }));
|