/** * BusinessAdmin: administrative software for small companies * Copyright (C) 2015 Camil Staps (ViviSoft) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ $(document).ready(function(){ // Use the plugin bootstrapValidator (a form validator) for all forms with class bootstrapValidator // The input elements should have data attributes containing all necessary information $('.bootstrapValidator').bootstrapValidator({ feedbackIcons: { valid: 'glyphicon glyphicon-ok', invalid: 'glyphicon glyphicon-remove', validating: 'glyphicon glyphicon-refresh' } }); // Use the plugin form (to ajax-ify forms) for all forms with class ajaxify $('.ajaxify').each(function(){ var options = jQuery.extend( {dataType: 'json'}, $(this).data('ajaxify-options') ); if (options.success != undefined) options.success = window[options.success]; if (options.error != undefined) options.error = window[options.error]; if (options.beforeSubmit != undefined) options.beforeSubmit = window[options.beforeSubmit]; $(this).ajaxForm(options); }); // Use the plugin X-editable for .editable elements // Editables are disabled by default $('.editable').editable().editable('disable'); // Open the editable on double click $('.editable').dblclick(function(){ if ($(this).hasClass('editable-disabled')) { $(this).editable('enable').editable('show').editable('activate'); } // Disable the editable again when it's hidden }).on('hidden', function(e, reason){ $(this).editable('disable'); }).click(function(e){ e.preventDefault(); }); // Use the bootstrap-select plugin on all selects $('select').selectpicker(); // Use the MixItUp plugin for sorting tables $('.mixitup').mixItUp({ animation: { duration: 200, effects: 'fade' }, layout: { display: 'table-row' } }); $('.mixitup .mixitup-sort').click(function(){ var mapping = { desc: 'asc', asc: 'desc' } $(this).data('sort', $(this).data('sort').replace(/asc|desc/gi, function(m){ return mapping[m]; })); $(this).closest('.mixitup').mixItUp('sort', $(this).data('sort')); var sorting = $(this).data('sort').substring($(this).data('sort').indexOf(':') + 1); $(this).parent().find('.mixitup-sort').removeClass('active sorting_asc sorting_desc').addClass('sorting'); $(this).addClass('active sorting_' + sorting).removeClass('sorting'); }); // Collapse menu var collapsed = false; $('#collapse-menu').click(function(e, p){ var animation = 200; if (typeof p != 'undefined' && p.load) animation = 0; if (!collapsed) $('.nav-title').finish().hide(); $('.sidebar').animate({ width: collapsed ? 250 : 50 }, animation); $('#page-wrapper').animate({ marginLeft: collapsed ? 250 : 50 }, animation); if (collapsed) $('.nav-title').finish().delay(animation).queue(function(){$(this).show()}); $(this).find('i.fa').removeClass('fa-caret-square-o-left fa-caret-square-o-right').addClass('fa-caret-square-o-' + (collapsed ? 'left' : 'right')); collapsed = !collapsed; $.ajax({ url: const_url_external + 'ajax/collapse', method: 'GET', crossDomain: true, cache: false, data: { setting: collapsed } }); return true; }); }); // Email modal function sendMail() { var modal = $('#modal-email'); var modalBody = modal.find('.modal-body'); var sendIcon = modal.find('.modal-footer .btn-send .fa'); var values = modalBody.find('form').serialize(); modalBody.find(':input').prop('disabled', true); sendIcon.removeClass('fa-envelope').addClass('fa-spin fa-refresh'); $.ajax({ url: const_url_external + 'ajax/email/offer', method: 'POST', data: values, success: function(data) { modal.modal('hide'); modalBody.html(''); }, error: function(jqxhr, stat, err) { modalBody.find('.alert').remove(); modalBody.html('' + modalBody.html()); }, complete: function() { modalBody.find(':input').prop('disabled', false); sendIcon.addClass('fa-envelope').removeClass('fa-spin fa-refresh'); } }); } function offerEmail(offerId) { var modal = $('#modal-email'); var modalBody = modal.find('.modal-body'); modal.modal('show'); modalBody.html(''); $.ajax({ url: const_url_external + 'ajax/email/offer', method: 'GET', data: { id: offerId }, success: function(data) { modalBody.html(data); }, error: function(jqxhr, stat, err) { modalBody.html(''); } }); }