diff --git a/Gruntfile.js b/Gruntfile.js
index 9bed001a2..3b38b3df3 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -61,7 +61,7 @@ module.exports = function(grunt) {
separator: ';'
},
files: {
- 'dist/<%= pkg.name %>.js': ['tmp/opensourcepos_bower.js', 'js/*.js']
+ 'dist/<%= pkg.name %>.js': ['tmp/opensourcepos_bower.js', 'js/jquery*', 'js/*.js']
}
},
sql: {
@@ -85,7 +85,7 @@ module.exports = function(grunt) {
}
},
jshint: {
- files: [ 'Gruntfile.js', 'js/*.js' ],
+ files: ['Gruntfile.js', 'js/*.js'],
options: {
// options here to override JSHint defaults
globals: {
@@ -104,7 +104,7 @@ module.exports = function(grunt) {
closeTag: '',
absolutePath: true
},
- src: [ 'css/*.css', '!css/login.css', '!css/invoice_email.css' ],
+ src: ['css/*.css', '!css/login.css', '!css/invoice_email.css'],
dest: 'application/views/partial/header.php',
dest: 'templates/spacelab/views/partial/header.php'
},
@@ -115,7 +115,7 @@ module.exports = function(grunt) {
closeTag: '',
absolutePath: true
},
- src: [ 'dist/*.css' ],
+ src: ['dist/*.css'],
dest: 'application/views/partial/header.php',
},
mincss_header_templates: {
@@ -125,7 +125,7 @@ module.exports = function(grunt) {
closeTag: '',
absolutePath: true
},
- src: [ 'dist/*.css', '!dist/bootstrap.min.css' ],
+ src: ['dist/*.css', '!dist/bootstrap.min.css'],
dest: 'templates/spacelab/views/partial/header.php'
},
css_login: {
@@ -135,7 +135,7 @@ module.exports = function(grunt) {
closeTag: '',
absolutePath: true
},
- src: [ 'dist/bootstrap.min.css', 'css/login.css' ],
+ src: ['dist/bootstrap.min.css', 'css/login.css'],
dest: 'application/views/login.php'
},
js: {
@@ -145,7 +145,7 @@ module.exports = function(grunt) {
closeTag: '',
absolutePath: true
},
- src: [ 'js/*.js' ],
+ src: ['js/jquery*', 'js/*.js'],
dest: 'application/views/partial/header.php',
dest: 'templates/spacelab/views/partial/header.php'
},
@@ -156,7 +156,7 @@ module.exports = function(grunt) {
closeTag: '',
absolutePath: true
},
- src: [ 'dist/*min.js' ],
+ src: ['dist/*min.js'],
dest: 'application/views/partial/header.php',
dest: 'templates/spacelab/views/partial/header.php'
}
@@ -188,7 +188,7 @@ module.exports = function(grunt) {
replacement: 'md5'
},
files: {
- src: [ '**/header.php', '**/login.php' ]
+ src: ['**/header.php', '**/login.php']
}
}
}
diff --git a/application/views/partial/header.php b/application/views/partial/header.php
index fea01f2d7..6a79578c1 100644
--- a/application/views/partial/header.php
+++ b/application/views/partial/header.php
@@ -64,7 +64,7 @@
-
+
diff --git a/dist/opensourcepos.js b/dist/opensourcepos.js
index d96430705..675265084 100644
--- a/dist/opensourcepos.js
+++ b/dist/opensourcepos.js
@@ -49732,6 +49732,87 @@ if(ac){if(/\?/.test(ac)){ac=ac.split("?")[1]}if(ad==null){return N(ac)}var ab=ac
return $.tablesorter;
}));
+;/*
+ *
+ * StaticRow widget for jQuery TableSorter 2.0
+ * Version 1.0
+ *
+ * Copyright (c) 2011 Nils Luxton
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ */
+
+$.tablesorter.addWidget({
+
+ // Give the new Widget an ID to be used in the tablesorter() call, as follows:
+ // $('#myElement').tablesorter({ widgets: ['zebra','staticRow'] });
+ id: 'staticRow',
+
+ // "Format" is run on all widgets once when the tablesorter has finished initialising,
+ // and then again every time a sort has finished.
+ format: function(table) {
+
+ // Use a property of the function to determine
+ // whether this is the first run of "Format"
+ // (i.e. is this the table's default starting position,
+ // or has it been sorted?)
+ if (typeof $(table).data('hasSorted') == 'undefined')
+ {
+ $(table).data('hasSorted', true); // This will force us into the "else" block the next time "Format" is run
+
+ // "Index" the static rows, saving their current (starting)
+ // position in the table inside a data() param on the
+ //
element itself for later use.
+ $('tbody .static', table).each(function() {
+ $(this).data('tableindex', $(this).index());
+ });
+ }
+ else
+ {
+ // Loop the static rows, moving them to their
+ // original "indexed" position, and keep doing
+ // this until no more re-shuffling needs doing
+ var hasShuffled = true;
+
+ while (hasShuffled)
+ {
+ hasShuffled = false;
+ $('tbody .static', table).each(function() {
+ var targetIndex = $(this).data('tableindex');
+ if (targetIndex != $(this).index())
+ {
+ hasShuffled = true;
+ var thisRow = $(this).detach();
+ var numRows = $('tbody tr', table).length;
+
+ // Are we trying to be the last row?
+ if (targetIndex >= numRows)
+ {
+ thisRow.appendTo($('tbody', table));
+ }
+ // Are we trying to be the first row?
+ else if (targetIndex == 0)
+ {
+ thisRow.prependTo($('tbody', table));
+ }
+ // No, we want to be somewhere in the middle!
+ else
+ {
+ thisRow.insertBefore($('tbody tr:eq(' + targetIndex + ')', table));
+ }
+ }
+ });
+ }
+ }
+
+ $('tbody .static-last', table).each(function() {
+ var row = $(this).detach();
+ row.appendTo($('tbody', table));
+ });
+
+ }
+});
;function set_feedback(text, classname, keep_displayed)
{
if(text)
@@ -49860,88 +49941,7 @@ return $.tablesorter;
};
-})(jQuery);;/*
- *
- * StaticRow widget for jQuery TableSorter 2.0
- * Version 1.0
- *
- * Copyright (c) 2011 Nils Luxton
- * Licensed under the MIT license:
- * http://www.opensource.org/licenses/mit-license.php
- *
- */
-
-$.tablesorter.addWidget({
-
- // Give the new Widget an ID to be used in the tablesorter() call, as follows:
- // $('#myElement').tablesorter({ widgets: ['zebra','staticRow'] });
- id: 'staticRow',
-
- // "Format" is run on all widgets once when the tablesorter has finished initialising,
- // and then again every time a sort has finished.
- format: function(table) {
-
- // Use a property of the function to determine
- // whether this is the first run of "Format"
- // (i.e. is this the table's default starting position,
- // or has it been sorted?)
- if (typeof $(table).data('hasSorted') == 'undefined')
- {
- $(table).data('hasSorted', true); // This will force us into the "else" block the next time "Format" is run
-
- // "Index" the static rows, saving their current (starting)
- // position in the table inside a data() param on the
- //
element itself for later use.
- $('tbody .static', table).each(function() {
- $(this).data('tableindex', $(this).index());
- });
- }
- else
- {
- // Loop the static rows, moving them to their
- // original "indexed" position, and keep doing
- // this until no more re-shuffling needs doing
- var hasShuffled = true;
-
- while (hasShuffled)
- {
- hasShuffled = false;
- $('tbody .static', table).each(function() {
- var targetIndex = $(this).data('tableindex');
- if (targetIndex != $(this).index())
- {
- hasShuffled = true;
- var thisRow = $(this).detach();
- var numRows = $('tbody tr', table).length;
-
- // Are we trying to be the last row?
- if (targetIndex >= numRows)
- {
- thisRow.appendTo($('tbody', table));
- }
- // Are we trying to be the first row?
- else if (targetIndex == 0)
- {
- thisRow.prependTo($('tbody', table));
- }
- // No, we want to be somewhere in the middle!
- else
- {
- thisRow.insertBefore($('tbody tr:eq(' + targetIndex + ')', table));
- }
- }
- });
- }
- }
-
- $('tbody .static-last', table).each(function() {
- var row = $(this).detach();
- row.appendTo($('tbody', table));
- });
-
- }
-});
-;function checkbox_click(event)
+})(jQuery);;function checkbox_click(event)
{
event.stopPropagation();
do_email(enable_email.url);
diff --git a/dist/opensourcepos.min.js b/dist/opensourcepos.min.js
index fe3bd6d15..e237cf9c3 100644
--- a/dist/opensourcepos.min.js
+++ b/dist/opensourcepos.min.js
@@ -1,4 +1,4 @@
-/*! opensourcepos 12-04-2016 */
+/*! opensourcepos 13-04-2016 */
function set_feedback(a,b,c){a?($("#feedback_bar").removeClass().addClass(b).html(a).css("opacity","1"),c||$("#feedback_bar").fadeTo(5e3,1).fadeTo("fast",0)):$("#feedback_bar").css("opacity","0")}function checkbox_click(a){a.stopPropagation(),do_email(enable_email.url),$(a.target).is(":checked")?$(a.target).parent().parent().find("td").addClass("selected").css("backgroundColor",""):$(a.target).parent().parent().find("td").removeClass()}function enable_search(a){a.format_item||(format_item=function(a){return a[0]}),enable_search.enabled||(enable_search.enabled=!0),$("#search").click(function(){$(this).attr("value","")});var b=$("#search").autocomplete({source:function(b,c){var d={limit:100};$.each(a.extra_params,function(a,b){d[a]="function"==typeof b?b():b}),$.ajax({type:"POST",url:a.suggest_url,dataType:"json",data:$.extend(b,d),success:function(a){c($.map(a,function(a){return{value:a.label}}))}})},delay:10,autoFocus:!1,select:function(b,c){$(this).val(c.item.value),do_search(!0,a.on_complete)}});return attach_search_listener(),$("#search_form").submit(function(b){b.preventDefault(),$("#limit_from").val(0),get_selected_values().length>0&&!confirm(a.confirm_search_message)||do_search(!0,a.on_complete)}),b}function attach_search_listener(){$("#pagination a").click(function(a){if($("#search").val()||$("#search_form input:checked")){a.preventDefault();var b=a.currentTarget.href.split("/"),c=b.pop();$("#limit_from").val(c),do_search(!0)}})}function do_search(a,b){enable_search.enabled&&(a&&$("#search").addClass("ac_loading"),$.post($("#search_form").attr("action"),$("#search_form").serialize(),function(a){$("#sortable_table tbody").html(a.rows),"function"==typeof b&&b(a),$("#search").removeClass("ac_loading"),$("#pagination").html(a.pagination),dialog_support.init("#sortable_table a.modal-dlg"),$("#sortable_table tbody :checkbox").click(checkbox_click),$("#select_all").prop("checked",!1),a.total_rows>0&&(update_sortable_table(),enable_row_selection()),attach_search_listener()},"json"))}function enable_email(a){enable_email.enabled||(enable_email.enabled=!0),enable_email.url||(enable_email.url=a),$("#select_all, #sortable_table tbody :checkbox").click(checkbox_click)}function do_email(a){enable_email.enabled&&$.post(a,{"ids[]":get_selected_values()},function(a){$("#email").attr("href",a)})}function enable_checkboxes(){$("#sortable_table tbody :checkbox").click(checkbox_click)}function enable_delete(a,b){enable_delete.enabled||(enable_delete.enabled=!0),$("#delete").click(function(c){if(c.preventDefault(),$("#sortable_table tbody :checkbox:checked").length>0){if(!confirm(a))return!1;do_delete($(this).attr("href"))}else alert(b)})}function do_delete(a){if(enable_delete.enabled){var b=get_selected_values(),c=get_selected_rows();$.post(a,{"ids[]":b},function(a){a.success?($(c).each(function(){$(this).find("td").animate({backgroundColor:"green"},1200,"linear").end().animate({opacity:0},1200,"linear",function(){$(this).remove(),$("#sortable_table tbody tr").length>0&&update_sortable_table()})}),set_feedback(a.message,"alert alert-dismissible alert-success",!1)):set_feedback(a.message,"alert alert-dismissible alert-danger",!0)},"json")}}function enable_bulk_edit(a){enable_bulk_edit.enabled||(enable_bulk_edit.enabled=!0),$("#bulk_edit").click(function(b){return 0==$("#sortable_table tbody :checkbox:checked").length?(alert(a),!1):void b.preventDefault()})}function enable_select_all(){enable_select_all.enabled||(enable_select_all.enabled=!0),$("#select_all").click(function(){$("#sortable_table tbody :checkbox").each($(this).is(":checked")?function(){$(this).prop("checked",!0),$(this).parent().parent().find("td").addClass("selected").css("backgroundColor","")}:function(){$(this).prop("checked",!1),$(this).parent().parent().find("td").removeClass()})})}function enable_row_selection(a){enable_row_selection.enabled||(enable_row_selection.enabled=!0),"undefined"==typeof a&&(a=$("#sortable_table tbody tr")),a.hover(function(){$(this).find("td").addClass("over").css("backgroundColor",""),$(this).css("cursor","pointer")},function(){$(this).find("td").hasClass("selected")||$(this).find("td").removeClass()}),a.click(function(){var a=$(this).find(":checkbox");a.prop("checked",!a.is(":checked")),do_email(enable_email.url),a.is(":checked")?$(this).find("td").addClass("selected").css("backgroundColor",""):$(this).find("td").removeClass()})}function update_sortable_table(){if($("#sortable_table").trigger("update"),"undefined"!=typeof $("#sortable_table")[0].config){var a=$("#sortable_table")[0].config.sortList;$("#sortable_table").trigger("sorton",[a])}else window.init_table_sorting&&init_table_sorting()}function get_table_row(a){a=a||$("input[name='sale_id']").val();var b=$("#sortable_table tbody :checkbox[value='"+a+"']");return 0===b.length&&(b=$("#sortable_table tbody a[href*='/"+a+"/']")),b}function update_row(a,b,c){$.post(b,{row_id:a},function(b){var d=get_table_row(a).parent().parent();d.replaceWith(b),reinit_row(a),hightlight_row(a),c&&"function"==typeof c&&c()},"html")}function reinit_row(a){var b=$("#sortable_table tbody tr :checkbox[value="+a+"]"),c=b.parent().parent();enable_row_selection(c),update_sortable_table(),dialog_support.init(c.find("a.modal-dlg")),b.click(checkbox_click)}function animate_row(a,b){b=b||"#e1ffdd",a.find("td").css("backgroundColor","#ffffff").animate({backgroundColor:b},"slow","linear").animate({backgroundColor:b},5e3).animate({backgroundColor:"#ffffff"},"slow","linear")}function hightlight_row(a){var b=$("#sortable_table tbody tr :checkbox[value="+a+"]"),c=b.parent().parent();animate_row(c)}function get_selected_values(){var a=new Array;return $("#sortable_table tbody :checkbox:checked").each(function(){a.push($(this).val())}),a}function get_selected_rows(){var a=new Array;return $("#sortable_table tbody :checkbox:checked").each(function(){a.push($(this).parent().parent())}),a}function get_visible_checkbox_ids(){var a=new Array;return $("#sortable_table tbody :checkbox").each(function(){a.push($(this).val())}),a}function phpjsDate(a,b){var c,d,e=this,f=["Sun","Mon","Tues","Wednes","Thurs","Fri","Satur","January","February","March","April","May","June","July","August","September","October","November","December"],g=/\\?(.?)/gi,h=function(a,b){return d[a]?d[a]():b},i=function(a,b){for(a=String(a);a.length=b&&1==parseInt(a%100/10,10)&&(b=0),["st","nd","rd"][b-1]||"th"},w:function(){return c.getDay()},z:function(){var a=new Date(d.Y(),d.n()-1,d.j()),b=new Date(d.Y(),0,1);return Math.round((a-b)/864e5)},W:function(){var a=new Date(d.Y(),d.n()-1,d.j()-d.N()+3),b=new Date(a.getFullYear(),0,4);return i(1+Math.round((a-b)/864e5/7),2)},F:function(){return f[6+d.n()]},m:function(){return i(d.n(),2)},M:function(){return d.F().slice(0,3)},n:function(){return c.getMonth()+1},t:function(){return new Date(d.Y(),d.n(),0).getDate()},L:function(){var a=d.Y();return a%4===0&a%100!==0|a%400===0},o:function(){var a=d.n(),b=d.W(),c=d.Y();return c+(12===a&&9>b?1:1===a&&b>9?-1:0)},Y:function(){return c.getFullYear()},y:function(){return d.Y().toString().slice(-2)},a:function(){return c.getHours()>11?"pm":"am"},A:function(){return d.a().toUpperCase()},B:function(){var a=3600*c.getUTCHours(),b=60*c.getUTCMinutes(),d=c.getUTCSeconds();return i(Math.floor((a+b+d+3600)/86.4)%1e3,3)},g:function(){return d.G()%12||12},G:function(){return c.getHours()},h:function(){return i(d.g(),2)},H:function(){return i(d.G(),2)},i:function(){return i(c.getMinutes(),2)},s:function(){return i(c.getSeconds(),2)},u:function(){return i(1e3*c.getMilliseconds(),6)},e:function(){throw"Not supported (see source code of date() for timezone on how to add support)"},I:function(){var a=new Date(d.Y(),0),b=Date.UTC(d.Y(),0),c=new Date(d.Y(),6),e=Date.UTC(d.Y(),6);return a-b!==c-e?1:0},O:function(){var a=c.getTimezoneOffset(),b=Math.abs(a);return(a>0?"-":"+")+i(100*Math.floor(b/60)+b%60,4)},P:function(){var a=d.O();return a.substr(0,3)+":"+a.substr(3,2)},T:function(){return"UTC"},Z:function(){return 60*-c.getTimezoneOffset()},c:function(){return"Y-m-d\\TH:i:sP".replace(g,h)},r:function(){return"D, d M Y H:i:s O".replace(g,h)},U:function(){return c/1e3|0}},this.date=function(a,b){return e=this,c=void 0===b?new Date:new Date(b instanceof Date?b:1e3*b),a.replace(g,h)},this.date(a,b)}if(function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){function c(a){var b=!!a&&"length"in a&&a.length,c=na.type(a);return"function"===c||na.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}function d(a,b,c){if(na.isFunction(b))return na.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return na.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(xa.test(b))return na.filter(b,a,c);b=na.filter(b,a)}return na.grep(a,function(a){return na.inArray(a,b)>-1!==c})}function e(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}function f(a){var b={};return na.each(a.match(Da)||[],function(a,c){b[c]=!0}),b}function g(){da.addEventListener?(da.removeEventListener("DOMContentLoaded",h),a.removeEventListener("load",h)):(da.detachEvent("onreadystatechange",h),a.detachEvent("onload",h))}function h(){(da.addEventListener||"load"===a.event.type||"complete"===da.readyState)&&(g(),na.ready())}function i(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(Ia,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:Ha.test(c)?na.parseJSON(c):c}catch(e){}na.data(a,b,c)}else c=void 0}return c}function j(a){var b;for(b in a)if(("data"!==b||!na.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function k(a,b,c,d){if(Ga(a)){var e,f,g=na.expando,h=a.nodeType,i=h?na.cache:a,j=h?a[g]:a[g]&&g;if(j&&i[j]&&(d||i[j].data)||void 0!==c||"string"!=typeof b)return j||(j=h?a[g]=ca.pop()||na.guid++:g),i[j]||(i[j]=h?{}:{toJSON:na.noop}),("object"==typeof b||"function"==typeof b)&&(d?i[j]=na.extend(i[j],b):i[j].data=na.extend(i[j].data,b)),f=i[j],d||(f.data||(f.data={}),f=f.data),void 0!==c&&(f[na.camelCase(b)]=c),"string"==typeof b?(e=f[b],null==e&&(e=f[na.camelCase(b)])):e=f,e}}function l(a,b,c){if(Ga(a)){var d,e,f=a.nodeType,g=f?na.cache:a,h=f?a[na.expando]:na.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){na.isArray(b)?b=b.concat(na.map(b,na.camelCase)):b in d?b=[b]:(b=na.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;for(;e--;)delete d[b[e]];if(c?!j(d):!na.isEmptyObject(d))return}(c||(delete g[h].data,j(g[h])))&&(f?na.cleanData([a],!0):la.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}function m(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return na.css(a,b,"")},i=h(),j=c&&c[3]||(na.cssNumber[b]?"":"px"),k=(na.cssNumber[b]||"px"!==j&&+i)&&Ka.exec(na.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,na.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}function n(a){var b=Sa.split("|"),c=a.createDocumentFragment();if(c.createElement)for(;b.length;)c.createElement(b.pop());return c}function o(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||na.nodeName(d,b)?f.push(d):na.merge(f,o(d,b));return void 0===b||b&&na.nodeName(a,b)?na.merge([a],f):f}function p(a,b){for(var c,d=0;null!=(c=a[d]);d++)na._data(c,"globalEval",!b||na._data(b[d],"globalEval"))}function q(a){Oa.test(a.type)&&(a.defaultChecked=a.checked)}function r(a,b,c,d,e){for(var f,g,h,i,j,k,l,m=a.length,r=n(b),s=[],t=0;m>t;t++)if(g=a[t],g||0===g)if("object"===na.type(g))na.merge(s,g.nodeType?[g]:g);else if(Ua.test(g)){for(i=i||r.appendChild(b.createElement("div")),j=(Pa.exec(g)||["",""])[1].toLowerCase(),l=Ta[j]||Ta._default,i.innerHTML=l[1]+na.htmlPrefilter(g)+l[2],f=l[0];f--;)i=i.lastChild;if(!la.leadingWhitespace&&Ra.test(g)&&s.push(b.createTextNode(Ra.exec(g)[0])),!la.tbody)for(g="table"!==j||Va.test(g)?"