MRBS 1.12.2 等保2.0二级整改完整提交
包含:登录失败锁定、90天密码有效期、30分钟会话超时、 强制改密、登录审计日志、屏幕水印、企业背景图、 备案信息固定底部、favicon、JS空集合保护、 会话过期体验优化(403 JSON)、display_errors 关闭、 固定 key 根治 Integrity check failed 等全部改动 注意:config.inc.php/.htaccess/.user.ini 含敏感信息, 通过 .gitignore 排除,勿推送到公开仓库。
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
/*! Bootstrap integration for DataTables' Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-bs', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net-bs')(root, $);
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window === 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
$.extend(true, DataTable.Buttons.defaults, {
|
||||
dom: {
|
||||
container: {
|
||||
className: 'dt-buttons btn-group flex-wrap'
|
||||
},
|
||||
button: {
|
||||
className: 'btn btn-secondary',
|
||||
active: 'active'
|
||||
},
|
||||
collection: {
|
||||
action: {
|
||||
dropHtml: '<span class="caret"></span>'
|
||||
},
|
||||
container: {
|
||||
tag: 'div',
|
||||
className: 'dt-button-collection',
|
||||
content: {
|
||||
tag: 'ul',
|
||||
className: 'dropdown-menu'
|
||||
}
|
||||
},
|
||||
closeButton: false,
|
||||
button: {
|
||||
tag: 'li',
|
||||
className: 'dt-button',
|
||||
active: 'dt-button-active-a',
|
||||
disabled: 'disabled',
|
||||
liner: {
|
||||
tag: 'a'
|
||||
},
|
||||
spacer: {
|
||||
className: 'divider',
|
||||
tag: 'li'
|
||||
}
|
||||
}
|
||||
},
|
||||
split: {
|
||||
action: {
|
||||
tag: 'a',
|
||||
className: 'btn btn-secondary dt-button-split-drop-button',
|
||||
closeButton: false
|
||||
},
|
||||
dropdown: {
|
||||
tag: 'button',
|
||||
dropHtml: '<span class="caret"></span>',
|
||||
className:
|
||||
'btn btn-secondary dt-button-split-drop dropdown-toggle dropdown-toggle-split',
|
||||
closeButton: false,
|
||||
align: 'split-left',
|
||||
splitAlignClass: 'dt-button-split-left'
|
||||
},
|
||||
wrapper: {
|
||||
tag: 'div',
|
||||
className: 'dt-button-split btn-group',
|
||||
closeButton: false
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! Bootstrap integration for DataTables' Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(e){var a,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-buttons"],function(t){return e(t,window,document)}):"object"==typeof exports?(a=require("jquery"),o=function(t,n){n.fn.dataTable||require("datatables.net-bs")(t,n),n.fn.dataTable.Buttons||require("datatables.net-buttons")(t,n)},"undefined"==typeof window?module.exports=function(t,n){return t=t||window,n=n||a(t),o(t,n),e(n,0,t.document)}:(o(window,a),module.exports=e(a,window,window.document))):e(jQuery,window,document)}(function(t,n,e,a){"use strict";var o=t.fn.dataTable;return t.extend(!0,o.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group flex-wrap"},button:{className:"btn btn-secondary",active:"active"},collection:{action:{dropHtml:'<span class="caret"></span>'},container:{tag:"div",className:"dt-button-collection",content:{tag:"ul",className:"dropdown-menu"}},closeButton:!1,button:{tag:"li",className:"dt-button",active:"dt-button-active-a",disabled:"disabled",liner:{tag:"a"},spacer:{className:"divider",tag:"li"}}},split:{action:{tag:"a",className:"btn btn-secondary dt-button-split-drop-button",closeButton:!1},dropdown:{tag:"button",dropHtml:'<span class="caret"></span>',className:"btn btn-secondary dt-button-split-drop dropdown-toggle dropdown-toggle-split",closeButton:!1,align:"split-left",splitAlignClass:"dt-button-split-left"},wrapper:{tag:"div",className:"dt-button-split btn-group",closeButton:!1}}}}),o});
|
||||
@@ -0,0 +1,117 @@
|
||||
/*! Bootstrap integration for DataTables' Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-bs4', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net-bs4')(root, $);
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window === 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
$.extend(true, DataTable.Buttons.defaults, {
|
||||
dom: {
|
||||
container: {
|
||||
className: 'dt-buttons btn-group flex-wrap'
|
||||
},
|
||||
button: {
|
||||
className: 'btn btn-secondary',
|
||||
active: 'active'
|
||||
},
|
||||
collection: {
|
||||
action: {
|
||||
dropHtml: ''
|
||||
},
|
||||
container: {
|
||||
tag: 'div',
|
||||
className: 'dropdown-menu dt-button-collection'
|
||||
},
|
||||
closeButton: false,
|
||||
button: {
|
||||
tag: 'a',
|
||||
className: 'dt-button dropdown-item',
|
||||
active: 'dt-button-active',
|
||||
disabled: 'disabled',
|
||||
spacer: {
|
||||
className: 'dropdown-divider',
|
||||
tag: 'hr'
|
||||
}
|
||||
}
|
||||
},
|
||||
split: {
|
||||
action: {
|
||||
tag: 'a',
|
||||
className: 'btn btn-secondary dt-button-split-drop-button',
|
||||
closeButton: false
|
||||
},
|
||||
dropdown: {
|
||||
tag: 'button',
|
||||
dropHtml: '',
|
||||
className:
|
||||
'btn btn-secondary dt-button-split-drop dropdown-toggle dropdown-toggle-split',
|
||||
closeButton: false,
|
||||
align: 'split-left',
|
||||
splitAlignClass: 'dt-button-split-left'
|
||||
},
|
||||
wrapper: {
|
||||
tag: 'div',
|
||||
className: 'dt-button-split btn-group',
|
||||
closeButton: false
|
||||
}
|
||||
}
|
||||
},
|
||||
buttonCreated: function (config, button) {
|
||||
return config.buttons ? $('<div class="btn-group"/>').append(button) : button;
|
||||
}
|
||||
});
|
||||
|
||||
DataTable.ext.buttons.collection.className += ' dropdown-toggle';
|
||||
DataTable.ext.buttons.collection.rightAlignClassName = 'dropdown-menu-right';
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! Bootstrap integration for DataTables' Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(o){var e,a;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-buttons"],function(t){return o(t,window,document)}):"object"==typeof exports?(e=require("jquery"),a=function(t,n){n.fn.dataTable||require("datatables.net-bs4")(t,n),n.fn.dataTable.Buttons||require("datatables.net-buttons")(t,n)},"undefined"==typeof window?module.exports=function(t,n){return t=t||window,n=n||e(t),a(t,n),o(n,0,t.document)}:(a(window,e),module.exports=o(e,window,window.document))):o(jQuery,window,document)}(function(o,t,n,e){"use strict";var a=o.fn.dataTable;return o.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group flex-wrap"},button:{className:"btn btn-secondary",active:"active"},collection:{action:{dropHtml:""},container:{tag:"div",className:"dropdown-menu dt-button-collection"},closeButton:!1,button:{tag:"a",className:"dt-button dropdown-item",active:"dt-button-active",disabled:"disabled",spacer:{className:"dropdown-divider",tag:"hr"}}},split:{action:{tag:"a",className:"btn btn-secondary dt-button-split-drop-button",closeButton:!1},dropdown:{tag:"button",dropHtml:"",className:"btn btn-secondary dt-button-split-drop dropdown-toggle dropdown-toggle-split",closeButton:!1,align:"split-left",splitAlignClass:"dt-button-split-left"},wrapper:{tag:"div",className:"dt-button-split btn-group",closeButton:!1}}},buttonCreated:function(t,n){return t.buttons?o('<div class="btn-group"/>').append(n):n}}),a.ext.buttons.collection.className+=" dropdown-toggle",a.ext.buttons.collection.rightAlignClassName="dropdown-menu-right",a});
|
||||
@@ -0,0 +1,117 @@
|
||||
/*! Bootstrap integration for DataTables' Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-bs5', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net-bs5')(root, $);
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window === 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
$.extend(true, DataTable.Buttons.defaults, {
|
||||
dom: {
|
||||
container: {
|
||||
className: 'dt-buttons btn-group flex-wrap'
|
||||
},
|
||||
button: {
|
||||
className: 'btn btn-secondary',
|
||||
active: 'active'
|
||||
},
|
||||
collection: {
|
||||
action: {
|
||||
dropHtml: ''
|
||||
},
|
||||
container: {
|
||||
tag: 'div',
|
||||
className: 'dropdown-menu dt-button-collection'
|
||||
},
|
||||
closeButton: false,
|
||||
button: {
|
||||
tag: 'a',
|
||||
className: 'dt-button dropdown-item',
|
||||
active: 'dt-button-active',
|
||||
disabled: 'disabled',
|
||||
spacer: {
|
||||
className: 'dropdown-divider',
|
||||
tag: 'hr'
|
||||
}
|
||||
}
|
||||
},
|
||||
split: {
|
||||
action: {
|
||||
tag: 'a',
|
||||
className: 'btn btn-secondary dt-button-split-drop-button',
|
||||
closeButton: false
|
||||
},
|
||||
dropdown: {
|
||||
tag: 'button',
|
||||
dropHtml: '',
|
||||
className:
|
||||
'btn btn-secondary dt-button-split-drop dropdown-toggle dropdown-toggle-split',
|
||||
closeButton: false,
|
||||
align: 'split-left',
|
||||
splitAlignClass: 'dt-button-split-left'
|
||||
},
|
||||
wrapper: {
|
||||
tag: 'div',
|
||||
className: 'dt-button-split btn-group',
|
||||
closeButton: false
|
||||
}
|
||||
}
|
||||
},
|
||||
buttonCreated: function (config, button) {
|
||||
return config.buttons ? $('<div class="btn-group"/>').append(button) : button;
|
||||
}
|
||||
});
|
||||
|
||||
DataTable.ext.buttons.collection.className += ' dropdown-toggle';
|
||||
DataTable.ext.buttons.collection.rightAlignClassName = 'dropdown-menu-right';
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! Bootstrap integration for DataTables' Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(o){var e,a;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bs5","datatables.net-buttons"],function(t){return o(t,window,document)}):"object"==typeof exports?(e=require("jquery"),a=function(t,n){n.fn.dataTable||require("datatables.net-bs5")(t,n),n.fn.dataTable.Buttons||require("datatables.net-buttons")(t,n)},"undefined"==typeof window?module.exports=function(t,n){return t=t||window,n=n||e(t),a(t,n),o(n,0,t.document)}:(a(window,e),module.exports=o(e,window,window.document))):o(jQuery,window,document)}(function(o,t,n,e){"use strict";var a=o.fn.dataTable;return o.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group flex-wrap"},button:{className:"btn btn-secondary",active:"active"},collection:{action:{dropHtml:""},container:{tag:"div",className:"dropdown-menu dt-button-collection"},closeButton:!1,button:{tag:"a",className:"dt-button dropdown-item",active:"dt-button-active",disabled:"disabled",spacer:{className:"dropdown-divider",tag:"hr"}}},split:{action:{tag:"a",className:"btn btn-secondary dt-button-split-drop-button",closeButton:!1},dropdown:{tag:"button",dropHtml:"",className:"btn btn-secondary dt-button-split-drop dropdown-toggle dropdown-toggle-split",closeButton:!1,align:"split-left",splitAlignClass:"dt-button-split-left"},wrapper:{tag:"div",className:"dt-button-split btn-group",closeButton:!1}}},buttonCreated:function(t,n){return t.buttons?o('<div class="btn-group"/>').append(n):n}}),a.ext.buttons.collection.className+=" dropdown-toggle",a.ext.buttons.collection.rightAlignClassName="dropdown-menu-right",a});
|
||||
@@ -0,0 +1,131 @@
|
||||
/*! Bulma integration for DataTables' Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-bm', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net-bm')(root, $);
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window === 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
$.extend(true, DataTable.Buttons.defaults, {
|
||||
dom: {
|
||||
container: {
|
||||
className: 'dt-buttons field is-grouped'
|
||||
},
|
||||
button: {
|
||||
className: 'button is-light',
|
||||
active: 'is-active',
|
||||
disabled: 'is-disabled'
|
||||
},
|
||||
collection: {
|
||||
action: {
|
||||
tag: 'div',
|
||||
className: 'dropdown-content',
|
||||
dropHtml: ''
|
||||
},
|
||||
button: {
|
||||
tag: 'a',
|
||||
className: 'dt-button dropdown-item',
|
||||
active: 'dt-button-active',
|
||||
disabled: 'is-disabled',
|
||||
spacer: {
|
||||
className: 'dropdown-divider',
|
||||
tag: 'hr'
|
||||
}
|
||||
},
|
||||
closeButton: false,
|
||||
container: {
|
||||
className: 'dt-button-collection dropdown-menu',
|
||||
content: {
|
||||
className: 'dropdown-content'
|
||||
}
|
||||
}
|
||||
},
|
||||
split: {
|
||||
action: {
|
||||
tag: 'button',
|
||||
className: 'dt-button-split-drop-button button is-light',
|
||||
closeButton: false
|
||||
},
|
||||
dropdown: {
|
||||
tag: 'button',
|
||||
dropHtml: '<i class="fa fa-angle-down" aria-hidden="true"></i>',
|
||||
className: 'button is-light',
|
||||
closeButton: false,
|
||||
align: 'split-left',
|
||||
splitAlignClass: 'dt-button-split-left'
|
||||
},
|
||||
wrapper: {
|
||||
tag: 'div',
|
||||
className: 'dt-button-split dropdown-trigger buttons has-addons',
|
||||
closeButton: false
|
||||
}
|
||||
}
|
||||
},
|
||||
buttonCreated: function (config, button) {
|
||||
// For collections
|
||||
if (config.buttons) {
|
||||
// Wrap the dropdown content in a menu element
|
||||
config._collection = $('<div class="dropdown-menu"/>').append(config._collection);
|
||||
|
||||
// And add the collection dropdown icon
|
||||
$(button).append(
|
||||
'<span class="icon is-small">' +
|
||||
'<i class="fa fa-angle-down" aria-hidden="true"></i>' +
|
||||
'</span>'
|
||||
);
|
||||
}
|
||||
|
||||
return button;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! Bulma integration for DataTables' Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(e){var o,a;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bm","datatables.net-buttons"],function(t){return e(t,window,document)}):"object"==typeof exports?(o=require("jquery"),a=function(t,n){n.fn.dataTable||require("datatables.net-bm")(t,n),n.fn.dataTable.Buttons||require("datatables.net-buttons")(t,n)},"undefined"==typeof window?module.exports=function(t,n){return t=t||window,n=n||o(t),a(t,n),e(n,0,t.document)}:(a(window,o),module.exports=e(o,window,window.document))):e(jQuery,window,document)}(function(e,t,n,o){"use strict";var a=e.fn.dataTable;return e.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons field is-grouped"},button:{className:"button is-light",active:"is-active",disabled:"is-disabled"},collection:{action:{tag:"div",className:"dropdown-content",dropHtml:""},button:{tag:"a",className:"dt-button dropdown-item",active:"dt-button-active",disabled:"is-disabled",spacer:{className:"dropdown-divider",tag:"hr"}},closeButton:!1,container:{className:"dt-button-collection dropdown-menu",content:{className:"dropdown-content"}}},split:{action:{tag:"button",className:"dt-button-split-drop-button button is-light",closeButton:!1},dropdown:{tag:"button",dropHtml:'<i class="fa fa-angle-down" aria-hidden="true"></i>',className:"button is-light",closeButton:!1,align:"split-left",splitAlignClass:"dt-button-split-left"},wrapper:{tag:"div",className:"dt-button-split dropdown-trigger buttons has-addons",closeButton:!1}}},buttonCreated:function(t,n){return t.buttons&&(t._collection=e('<div class="dropdown-menu"/>').append(t._collection),e(n).append('<span class="icon is-small"><i class="fa fa-angle-down" aria-hidden="true"></i></span>')),n}}),a});
|
||||
@@ -0,0 +1,260 @@
|
||||
/*!
|
||||
* Column visibility buttons for Buttons and DataTables.
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net')(root, $);
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window === 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
$.extend(DataTable.ext.buttons, {
|
||||
// A collection of column visibility buttons
|
||||
colvis: function (dt, conf) {
|
||||
var node = null;
|
||||
var buttonConf = {
|
||||
extend: 'collection',
|
||||
init: function (dt, n) {
|
||||
node = n;
|
||||
},
|
||||
text: function (dt) {
|
||||
return dt.i18n('buttons.colvis', 'Column visibility');
|
||||
},
|
||||
className: 'buttons-colvis',
|
||||
closeButton: false,
|
||||
buttons: [
|
||||
{
|
||||
extend: 'columnsToggle',
|
||||
columns: conf.columns,
|
||||
columnText: conf.columnText
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
// Rebuild the collection with the new column structure if columns are reordered
|
||||
dt.on('column-reorder.dt' + conf.namespace, function (e, settings, details) {
|
||||
dt.button(null, dt.button(null, node).node()).collectionRebuild([
|
||||
{
|
||||
extend: 'columnsToggle',
|
||||
columns: conf.columns,
|
||||
columnText: conf.columnText
|
||||
}
|
||||
]);
|
||||
});
|
||||
|
||||
return buttonConf;
|
||||
},
|
||||
|
||||
// Selected columns with individual buttons - toggle column visibility
|
||||
columnsToggle: function (dt, conf) {
|
||||
var columns = dt
|
||||
.columns(conf.columns)
|
||||
.indexes()
|
||||
.map(function (idx) {
|
||||
return {
|
||||
extend: 'columnToggle',
|
||||
columns: idx,
|
||||
columnText: conf.columnText
|
||||
};
|
||||
})
|
||||
.toArray();
|
||||
|
||||
return columns;
|
||||
},
|
||||
|
||||
// Single button to toggle column visibility
|
||||
columnToggle: function (dt, conf) {
|
||||
return {
|
||||
extend: 'columnVisibility',
|
||||
columns: conf.columns,
|
||||
columnText: conf.columnText
|
||||
};
|
||||
},
|
||||
|
||||
// Selected columns with individual buttons - set column visibility
|
||||
columnsVisibility: function (dt, conf) {
|
||||
var columns = dt
|
||||
.columns(conf.columns)
|
||||
.indexes()
|
||||
.map(function (idx) {
|
||||
return {
|
||||
extend: 'columnVisibility',
|
||||
columns: idx,
|
||||
visibility: conf.visibility,
|
||||
columnText: conf.columnText
|
||||
};
|
||||
})
|
||||
.toArray();
|
||||
|
||||
return columns;
|
||||
},
|
||||
|
||||
// Single button to set column visibility
|
||||
columnVisibility: {
|
||||
columns: undefined, // column selector
|
||||
text: function (dt, button, conf) {
|
||||
return conf._columnText(dt, conf);
|
||||
},
|
||||
className: 'buttons-columnVisibility',
|
||||
action: function (e, dt, button, conf) {
|
||||
var col = dt.columns(conf.columns);
|
||||
var curr = col.visible();
|
||||
|
||||
col.visible(
|
||||
conf.visibility !== undefined ? conf.visibility : !(curr.length ? curr[0] : false)
|
||||
);
|
||||
},
|
||||
init: function (dt, button, conf) {
|
||||
var that = this;
|
||||
button.attr('data-cv-idx', conf.columns);
|
||||
|
||||
dt.on('column-visibility.dt' + conf.namespace, function (e, settings) {
|
||||
if (!settings.bDestroying && settings.nTable == dt.settings()[0].nTable) {
|
||||
that.active(dt.column(conf.columns).visible());
|
||||
}
|
||||
}).on('column-reorder.dt' + conf.namespace, function (e, settings, details) {
|
||||
// Button has been removed from the DOM
|
||||
if (conf.destroying) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (dt.columns(conf.columns).count() !== 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
// This button controls the same column index but the text for the column has
|
||||
// changed
|
||||
that.text(conf._columnText(dt, conf));
|
||||
|
||||
// Since its a different column, we need to check its visibility
|
||||
that.active(dt.column(conf.columns).visible());
|
||||
});
|
||||
|
||||
this.active(dt.column(conf.columns).visible());
|
||||
},
|
||||
destroy: function (dt, button, conf) {
|
||||
dt.off('column-visibility.dt' + conf.namespace).off(
|
||||
'column-reorder.dt' + conf.namespace
|
||||
);
|
||||
},
|
||||
|
||||
_columnText: function (dt, conf) {
|
||||
// Use DataTables' internal data structure until this is presented
|
||||
// is a public API. The other option is to use
|
||||
// `$( column(col).node() ).text()` but the node might not have been
|
||||
// populated when Buttons is constructed.
|
||||
var idx = dt.column(conf.columns).index();
|
||||
var title = dt.settings()[0].aoColumns[idx].sTitle;
|
||||
|
||||
if (!title) {
|
||||
title = dt.column(idx).header().innerHTML;
|
||||
}
|
||||
|
||||
title = title
|
||||
.replace(/\n/g, ' ') // remove new lines
|
||||
.replace(/<br\s*\/?>/gi, ' ') // replace line breaks with spaces
|
||||
.replace(/<select(.*?)<\/select>/g, '') // remove select tags, including options text
|
||||
.replace(/<!\-\-.*?\-\->/g, '') // strip HTML comments
|
||||
.replace(/<.*?>/g, '') // strip HTML
|
||||
.replace(/^\s+|\s+$/g, ''); // trim
|
||||
|
||||
return conf.columnText ? conf.columnText(dt, idx, title) : title;
|
||||
}
|
||||
},
|
||||
|
||||
colvisRestore: {
|
||||
className: 'buttons-colvisRestore',
|
||||
|
||||
text: function (dt) {
|
||||
return dt.i18n('buttons.colvisRestore', 'Restore visibility');
|
||||
},
|
||||
|
||||
init: function (dt, button, conf) {
|
||||
conf._visOriginal = dt
|
||||
.columns()
|
||||
.indexes()
|
||||
.map(function (idx) {
|
||||
return dt.column(idx).visible();
|
||||
})
|
||||
.toArray();
|
||||
},
|
||||
|
||||
action: function (e, dt, button, conf) {
|
||||
dt.columns().every(function (i) {
|
||||
// Take into account that ColReorder might have disrupted our
|
||||
// indexes
|
||||
var idx =
|
||||
dt.colReorder && dt.colReorder.transpose
|
||||
? dt.colReorder.transpose(i, 'toOriginal')
|
||||
: i;
|
||||
|
||||
this.visible(conf._visOriginal[idx]);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
colvisGroup: {
|
||||
className: 'buttons-colvisGroup',
|
||||
|
||||
action: function (e, dt, button, conf) {
|
||||
dt.columns(conf.show).visible(true, false);
|
||||
dt.columns(conf.hide).visible(false, false);
|
||||
|
||||
dt.columns.adjust();
|
||||
},
|
||||
|
||||
show: [],
|
||||
|
||||
hide: []
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,5 @@
|
||||
/*!
|
||||
* Column visibility buttons for Buttons and DataTables.
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(t){var o,i;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(n){return t(n,window,document)}):"object"==typeof exports?(o=require("jquery"),i=function(n,e){e.fn.dataTable||require("datatables.net")(n,e),e.fn.dataTable.Buttons||require("datatables.net-buttons")(n,e)},"undefined"==typeof window?module.exports=function(n,e){return n=n||window,e=e||o(n),i(n,e),t(e,0,n.document)}:(i(window,o),module.exports=t(o,window,window.document))):t(jQuery,window,document)}(function(n,e,t,l){"use strict";var o=n.fn.dataTable;return n.extend(o.ext.buttons,{colvis:function(o,i){var l=null,n={extend:"collection",init:function(n,e){l=e},text:function(n){return n.i18n("buttons.colvis","Column visibility")},className:"buttons-colvis",closeButton:!1,buttons:[{extend:"columnsToggle",columns:i.columns,columnText:i.columnText}]};return o.on("column-reorder.dt"+i.namespace,function(n,e,t){o.button(null,o.button(null,l).node()).collectionRebuild([{extend:"columnsToggle",columns:i.columns,columnText:i.columnText}])}),n},columnsToggle:function(n,e){return n.columns(e.columns).indexes().map(function(n){return{extend:"columnToggle",columns:n,columnText:e.columnText}}).toArray()},columnToggle:function(n,e){return{extend:"columnVisibility",columns:e.columns,columnText:e.columnText}},columnsVisibility:function(n,e){return n.columns(e.columns).indexes().map(function(n){return{extend:"columnVisibility",columns:n,visibility:e.visibility,columnText:e.columnText}}).toArray()},columnVisibility:{columns:l,text:function(n,e,t){return t._columnText(n,t)},className:"buttons-columnVisibility",action:function(n,e,t,o){var e=e.columns(o.columns),i=e.visible();e.visible(o.visibility!==l?o.visibility:!(i.length&&i[0]))},init:function(o,n,i){var l=this;n.attr("data-cv-idx",i.columns),o.on("column-visibility.dt"+i.namespace,function(n,e){e.bDestroying||e.nTable!=o.settings()[0].nTable||l.active(o.column(i.columns).visible())}).on("column-reorder.dt"+i.namespace,function(n,e,t){i.destroying||1===o.columns(i.columns).count()&&(l.text(i._columnText(o,i)),l.active(o.column(i.columns).visible()))}),this.active(o.column(i.columns).visible())},destroy:function(n,e,t){n.off("column-visibility.dt"+t.namespace).off("column-reorder.dt"+t.namespace)},_columnText:function(n,e){var t=n.column(e.columns).index(),o=n.settings()[0].aoColumns[t].sTitle;return o=(o=o||n.column(t).header().innerHTML).replace(/\n/g," ").replace(/<br\s*\/?>/gi," ").replace(/<select(.*?)<\/select>/g,"").replace(/<!\-\-.*?\-\->/g,"").replace(/<.*?>/g,"").replace(/^\s+|\s+$/g,""),e.columnText?e.columnText(n,t,o):o}},colvisRestore:{className:"buttons-colvisRestore",text:function(n){return n.i18n("buttons.colvisRestore","Restore visibility")},init:function(e,n,t){t._visOriginal=e.columns().indexes().map(function(n){return e.column(n).visible()}).toArray()},action:function(n,e,t,o){e.columns().every(function(n){n=e.colReorder&&e.colReorder.transpose?e.colReorder.transpose(n,"toOriginal"):n;this.visible(o._visOriginal[n])})}},colvisGroup:{className:"buttons-colvisGroup",action:function(n,e,t,o){e.columns(o.show).visible(!0,!1),e.columns(o.hide).visible(!1,!1),e.columns.adjust()},show:[],hide:[]}}),o});
|
||||
@@ -0,0 +1,58 @@
|
||||
/*! DataTables styling wrapper for Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-dt', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net-dt')(root, $);
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window === 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! DataTables styling wrapper for Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(n){var o,d;"function"==typeof define&&define.amd?define(["jquery","datatables.net-dt","datatables.net-buttons"],function(e){return n(e,window,document)}):"object"==typeof exports?(o=require("jquery"),d=function(e,t){t.fn.dataTable||require("datatables.net-dt")(e,t),t.fn.dataTable.Buttons||require("datatables.net-buttons")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||o(e),d(e,t),n(t,0,e.document)}:(d(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)}(function(e,t,n,o){"use strict";return e.fn.dataTable});
|
||||
@@ -0,0 +1,122 @@
|
||||
/*! Foundation integration for DataTables' Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-zf', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net-zf')(root, $);
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window === 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
$.extend(true, DataTable.Buttons.defaults, {
|
||||
dom: {
|
||||
container: {
|
||||
tag: 'div',
|
||||
className: 'dt-buttons button-group'
|
||||
},
|
||||
button: {
|
||||
tag: 'a',
|
||||
className: 'dt-button button small',
|
||||
active: 'secondary active'
|
||||
},
|
||||
collection: {
|
||||
action: {
|
||||
dropHtml: ''
|
||||
},
|
||||
button: {
|
||||
tag: 'li',
|
||||
className: '',
|
||||
active: 'dt-button-active-a',
|
||||
liner: {
|
||||
tag: 'a'
|
||||
}
|
||||
},
|
||||
container: {
|
||||
tag: 'div',
|
||||
className: 'dt-button-collection',
|
||||
content: {
|
||||
tag: 'ul',
|
||||
className: 'dropdown menu is-dropdown-submenu'
|
||||
}
|
||||
}
|
||||
},
|
||||
split: {
|
||||
action: {
|
||||
tag: 'button',
|
||||
className: 'button small'
|
||||
},
|
||||
dropdown: {
|
||||
tag: 'button',
|
||||
className: 'button dropdown arrow-only',
|
||||
dropHtml: ''
|
||||
},
|
||||
wrapper: {
|
||||
tag: 'div',
|
||||
className: 'button-group dt-button-split'
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
DataTable.ext.buttons.collection.className = 'dropdown';
|
||||
|
||||
$(document).on('buttons-popover.dt', function () {
|
||||
var notButton = false;
|
||||
$('.dtsp-panesContainer').each(function () {
|
||||
if (!$(this).is('button')) {
|
||||
notButton = true;
|
||||
}
|
||||
});
|
||||
if (notButton) {
|
||||
$('.dtsp-panesContainer').removeClass('button-group stacked');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! Foundation integration for DataTables' Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(o){var e,a;"function"==typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-buttons"],function(t){return o(t,window,document)}):"object"==typeof exports?(e=require("jquery"),a=function(t,n){n.fn.dataTable||require("datatables.net-zf")(t,n),n.fn.dataTable.Buttons||require("datatables.net-buttons")(t,n)},"undefined"==typeof window?module.exports=function(t,n){return t=t||window,n=n||e(t),a(t,n),o(n,0,t.document)}:(a(window,e),module.exports=o(e,window,window.document))):o(jQuery,window,document)}(function(n,t,o,e){"use strict";var a=n.fn.dataTable;return n.extend(!0,a.Buttons.defaults,{dom:{container:{tag:"div",className:"dt-buttons button-group"},button:{tag:"a",className:"dt-button button small",active:"secondary active"},collection:{action:{dropHtml:""},button:{tag:"li",className:"",active:"dt-button-active-a",liner:{tag:"a"}},container:{tag:"div",className:"dt-button-collection",content:{tag:"ul",className:"dropdown menu is-dropdown-submenu"}}},split:{action:{tag:"button",className:"button small"},dropdown:{tag:"button",className:"button dropdown arrow-only",dropHtml:""},wrapper:{tag:"div",className:"button-group dt-button-split"}}}}),a.ext.buttons.collection.className="dropdown",n(o).on("buttons-popover.dt",function(){var t=!1;n(".dtsp-panesContainer").each(function(){n(this).is("button")||(t=!0)}),t&&n(".dtsp-panesContainer").removeClass("button-group stacked")}),a});
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,98 @@
|
||||
/*! jQuery UI integration for DataTables' Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-jqui', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net-jqui')(root, $);
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window === 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
$.extend(true, DataTable.Buttons.defaults, {
|
||||
dom: {
|
||||
collection: {
|
||||
action: {
|
||||
dropHtml: '<span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"/>'
|
||||
},
|
||||
button: {
|
||||
active: 'dt-button-active'
|
||||
}
|
||||
},
|
||||
container: {
|
||||
className: 'dt-buttons ui-buttonset'
|
||||
},
|
||||
button: {
|
||||
className: 'dt-button ui-button ui-corner-all',
|
||||
disabled: 'ui-state-disabled',
|
||||
active: 'ui-state-active',
|
||||
liner: {
|
||||
tag: '',
|
||||
className: ''
|
||||
}
|
||||
},
|
||||
split: {
|
||||
action: {
|
||||
tag: 'button',
|
||||
className: 'dt-button-split-drop-button ui-button ui-corner-left'
|
||||
},
|
||||
dropdown: {
|
||||
tag: 'button',
|
||||
dropHtml: '<span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"/>',
|
||||
className: 'dt-button-split-drop ui-button ui-corner-right'
|
||||
},
|
||||
wrapper: {
|
||||
tag: 'div',
|
||||
className: 'dt-button-split'
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! jQuery UI integration for DataTables' Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(e){var o,i;"function"==typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-buttons"],function(t){return e(t,window,document)}):"object"==typeof exports?(o=require("jquery"),i=function(t,n){n.fn.dataTable||require("datatables.net-jqui")(t,n),n.fn.dataTable.Buttons||require("datatables.net-buttons")(t,n)},"undefined"==typeof window?module.exports=function(t,n){return t=t||window,n=n||o(t),i(t,n),e(n,0,t.document)}:(i(window,o),module.exports=e(o,window,window.document))):e(jQuery,window,document)}(function(t,n,e,o){"use strict";var i=t.fn.dataTable;return t.extend(!0,i.Buttons.defaults,{dom:{collection:{action:{dropHtml:'<span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"/>'},button:{active:"dt-button-active"}},container:{className:"dt-buttons ui-buttonset"},button:{className:"dt-button ui-button ui-corner-all",disabled:"ui-state-disabled",active:"ui-state-active",liner:{tag:"",className:""}},split:{action:{tag:"button",className:"dt-button-split-drop-button ui-button ui-corner-left"},dropdown:{tag:"button",dropHtml:'<span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"/>',className:"dt-button-split-drop ui-button ui-corner-right"},wrapper:{tag:"div",className:"dt-button-split"}}}}),i});
|
||||
@@ -0,0 +1,242 @@
|
||||
/*!
|
||||
* Print button for Buttons and DataTables.
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net')(root, $);
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window === 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
var _link = document.createElement('a');
|
||||
|
||||
/**
|
||||
* Clone link and style tags, taking into account the need to change the source
|
||||
* path.
|
||||
*
|
||||
* @param {node} el Element to convert
|
||||
*/
|
||||
var _styleToAbs = function (el) {
|
||||
var url;
|
||||
var clone = $(el).clone()[0];
|
||||
var linkHost;
|
||||
|
||||
if (clone.nodeName.toLowerCase() === 'link') {
|
||||
clone.href = _relToAbs(clone.href);
|
||||
}
|
||||
|
||||
return clone.outerHTML;
|
||||
};
|
||||
|
||||
/**
|
||||
* Convert a URL from a relative to an absolute address so it will work
|
||||
* correctly in the popup window which has no base URL.
|
||||
*
|
||||
* @param {string} href URL
|
||||
*/
|
||||
var _relToAbs = function (href) {
|
||||
// Assign to a link on the original page so the browser will do all the
|
||||
// hard work of figuring out where the file actually is
|
||||
_link.href = href;
|
||||
var linkHost = _link.host;
|
||||
|
||||
// IE doesn't have a trailing slash on the host
|
||||
// Chrome has it on the pathname
|
||||
if (linkHost.indexOf('/') === -1 && _link.pathname.indexOf('/') !== 0) {
|
||||
linkHost += '/';
|
||||
}
|
||||
|
||||
return _link.protocol + '//' + linkHost + _link.pathname + _link.search;
|
||||
};
|
||||
|
||||
DataTable.ext.buttons.print = {
|
||||
className: 'buttons-print',
|
||||
|
||||
text: function (dt) {
|
||||
return dt.i18n('buttons.print', 'Print');
|
||||
},
|
||||
|
||||
action: function (e, dt, button, config) {
|
||||
var data = dt.buttons.exportData(
|
||||
$.extend({ decodeEntities: false }, config.exportOptions) // XSS protection
|
||||
);
|
||||
var exportInfo = dt.buttons.exportInfo(config);
|
||||
var columnClasses = dt
|
||||
.columns(config.exportOptions.columns)
|
||||
.flatten()
|
||||
.map(function (idx) {
|
||||
return dt.settings()[0].aoColumns[dt.column(idx).index()].sClass;
|
||||
})
|
||||
.toArray();
|
||||
|
||||
var addRow = function (d, tag) {
|
||||
var str = '<tr>';
|
||||
|
||||
for (var i = 0, ien = d.length; i < ien; i++) {
|
||||
// null and undefined aren't useful in the print output
|
||||
var dataOut = d[i] === null || d[i] === undefined ? '' : d[i];
|
||||
var classAttr = columnClasses[i] ? 'class="' + columnClasses[i] + '"' : '';
|
||||
|
||||
str += '<' + tag + ' ' + classAttr + '>' + dataOut + '</' + tag + '>';
|
||||
}
|
||||
|
||||
return str + '</tr>';
|
||||
};
|
||||
|
||||
// Construct a table for printing
|
||||
var html = '<table class="' + dt.table().node().className + '">';
|
||||
|
||||
if (config.header) {
|
||||
html += '<thead>' + addRow(data.header, 'th') + '</thead>';
|
||||
}
|
||||
|
||||
html += '<tbody>';
|
||||
for (var i = 0, ien = data.body.length; i < ien; i++) {
|
||||
html += addRow(data.body[i], 'td');
|
||||
}
|
||||
html += '</tbody>';
|
||||
|
||||
if (config.footer && data.footer) {
|
||||
html += '<tfoot>' + addRow(data.footer, 'th') + '</tfoot>';
|
||||
}
|
||||
html += '</table>';
|
||||
|
||||
// Open a new window for the printable table
|
||||
var win = window.open('', '');
|
||||
|
||||
if (!win) {
|
||||
dt.buttons.info(
|
||||
dt.i18n('buttons.printErrorTitle', 'Unable to open print view'),
|
||||
dt.i18n(
|
||||
'buttons.printErrorMsg',
|
||||
'Please allow popups in your browser for this site to be able to view the print view.'
|
||||
),
|
||||
5000
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
win.document.close();
|
||||
|
||||
// Inject the title and also a copy of the style and link tags from this
|
||||
// document so the table can retain its base styling. Note that we have
|
||||
// to use string manipulation as IE won't allow elements to be created
|
||||
// in the host document and then appended to the new window.
|
||||
var head = '<title>' + exportInfo.title + '</title>';
|
||||
$('style, link').each(function () {
|
||||
head += _styleToAbs(this);
|
||||
});
|
||||
|
||||
try {
|
||||
win.document.head.innerHTML = head; // Work around for Edge
|
||||
} catch (e) {
|
||||
$(win.document.head).html(head); // Old IE
|
||||
}
|
||||
|
||||
// Inject the table and other surrounding information
|
||||
win.document.body.innerHTML =
|
||||
'<h1>' +
|
||||
exportInfo.title +
|
||||
'</h1>' +
|
||||
'<div>' +
|
||||
(exportInfo.messageTop || '') +
|
||||
'</div>' +
|
||||
html +
|
||||
'<div>' +
|
||||
(exportInfo.messageBottom || '') +
|
||||
'</div>';
|
||||
|
||||
$(win.document.body).addClass('dt-print-view');
|
||||
|
||||
$('img', win.document.body).each(function (i, img) {
|
||||
img.setAttribute('src', _relToAbs(img.getAttribute('src')));
|
||||
});
|
||||
|
||||
if (config.customize) {
|
||||
config.customize(win, config, dt);
|
||||
}
|
||||
|
||||
// Allow stylesheets time to load
|
||||
var autoPrint = function () {
|
||||
if (config.autoPrint) {
|
||||
win.print(); // blocking - so close will not
|
||||
win.close(); // execute until this is done
|
||||
}
|
||||
};
|
||||
|
||||
if (navigator.userAgent.match(/Trident\/\d.\d/)) {
|
||||
// IE needs to call this without a setTimeout
|
||||
autoPrint();
|
||||
}
|
||||
else {
|
||||
win.setTimeout(autoPrint, 1000);
|
||||
}
|
||||
},
|
||||
|
||||
title: '*',
|
||||
|
||||
messageTop: '*',
|
||||
|
||||
messageBottom: '*',
|
||||
|
||||
exportOptions: {},
|
||||
|
||||
header: true,
|
||||
|
||||
footer: false,
|
||||
|
||||
autoPrint: true,
|
||||
|
||||
customize: null
|
||||
};
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,5 @@
|
||||
/*!
|
||||
* Print button for Buttons and DataTables.
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(n){var o,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(t){return n(t,window,document)}):"object"==typeof exports?(o=require("jquery"),r=function(t,e){e.fn.dataTable||require("datatables.net")(t,e),e.fn.dataTable.Buttons||require("datatables.net-buttons")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||o(t),r(t,e),n(e,t,t.document)}:(r(window,o),module.exports=n(o,window,window.document))):n(jQuery,window,document)}(function(m,b,t,p){"use strict";function h(t){return n.href=t,-1===(t=n.host).indexOf("/")&&0!==n.pathname.indexOf("/")&&(t+="/"),n.protocol+"//"+t+n.pathname+n.search}var e=m.fn.dataTable,n=t.createElement("a");return e.ext.buttons.print={className:"buttons-print",text:function(t){return t.i18n("buttons.print","Print")},action:function(t,e,n,o){function r(t,e){for(var n="<tr>",o=0,r=t.length;o<r;o++){var i=null===t[o]||t[o]===p?"":t[o];n+="<"+e+" "+(s[o]?'class="'+s[o]+'"':"")+">"+i+"</"+e+">"}return n+"</tr>"}var i=e.buttons.exportData(m.extend({decodeEntities:!1},o.exportOptions)),a=e.buttons.exportInfo(o),s=e.columns(o.exportOptions.columns).flatten().map(function(t){return e.settings()[0].aoColumns[e.column(t).index()].sClass}).toArray(),u='<table class="'+e.table().node().className+'">';o.header&&(u+="<thead>"+r(i.header,"th")+"</thead>"),u+="<tbody>";for(var d=0,c=i.body.length;d<c;d++)u+=r(i.body[d],"td");u+="</tbody>",o.footer&&i.footer&&(u+="<tfoot>"+r(i.footer,"th")+"</tfoot>"),u+="</table>";var l=b.open("","");if(l){l.document.close();var f="<title>"+a.title+"</title>";m("style, link").each(function(){f+=function(t){t=m(t).clone()[0];return"link"===t.nodeName.toLowerCase()&&(t.href=h(t.href)),t.outerHTML}(this)});try{l.document.head.innerHTML=f}catch(t){m(l.document.head).html(f)}l.document.body.innerHTML="<h1>"+a.title+"</h1><div>"+(a.messageTop||"")+"</div>"+u+"<div>"+(a.messageBottom||"")+"</div>",m(l.document.body).addClass("dt-print-view"),m("img",l.document.body).each(function(t,e){e.setAttribute("src",h(e.getAttribute("src")))}),o.customize&&o.customize(l,o,e);a=function(){o.autoPrint&&(l.print(),l.close())};navigator.userAgent.match(/Trident\/\d.\d/)?a():l.setTimeout(a,1e3)}else e.buttons.info(e.i18n("buttons.printErrorTitle","Unable to open print view"),e.i18n("buttons.printErrorMsg","Please allow popups in your browser for this site to be able to view the print view."),5e3)},title:"*",messageTop:"*",messageBottom:"*",exportOptions:{},header:!0,footer:!1,autoPrint:!0,customize:null},e});
|
||||
@@ -0,0 +1,135 @@
|
||||
/*! Bootstrap integration for DataTables' Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-se', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net-se')(root, $);
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window === 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
$.extend(true, DataTable.Buttons.defaults, {
|
||||
dom: {
|
||||
container: {
|
||||
className: 'dt-buttons ui buttons'
|
||||
},
|
||||
button: {
|
||||
tag: 'button',
|
||||
active: 'active',
|
||||
className: 'dt-button ui button',
|
||||
spacerClass: 'dt-button ui button'
|
||||
},
|
||||
collection: {
|
||||
action: {
|
||||
dropHtml: '<i class="dropdown icon"></i>'
|
||||
},
|
||||
container: {
|
||||
tag: 'div',
|
||||
className: 'ui dropdown active visible dt-button-collection',
|
||||
content: {
|
||||
className: 'menu transition visible'
|
||||
}
|
||||
},
|
||||
closeButton: false,
|
||||
button: {
|
||||
tag: 'div',
|
||||
className: 'item',
|
||||
active: 'dt-button-active',
|
||||
spacer: {
|
||||
className: 'divider',
|
||||
tag: 'div'
|
||||
}
|
||||
},
|
||||
split: {
|
||||
action: {
|
||||
tag: 'div',
|
||||
className: ''
|
||||
},
|
||||
dropdown: {
|
||||
tag: 'span',
|
||||
className: 'dt-button-split-drop dropdown icon',
|
||||
dropHtml: '<i class="dropdown icon"></i>'
|
||||
},
|
||||
wrapper: {
|
||||
tag: 'div',
|
||||
className: 'dt-button-split'
|
||||
}
|
||||
}
|
||||
},
|
||||
split: {
|
||||
action: {
|
||||
tag: 'button',
|
||||
className: 'dt-button-split-drop-button ui button'
|
||||
},
|
||||
dropdown: {
|
||||
tag: 'button',
|
||||
className: 'ui floating button dt-button-split-drop dropdown icon'
|
||||
},
|
||||
wrapper: {
|
||||
tag: 'div',
|
||||
className: 'dt-button-split buttons'
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$(document).on('buttons-popover.dt', function () {
|
||||
var notButton = false;
|
||||
$('.dtsp-panesContainer').each(function () {
|
||||
if (!$(this).is('button')) {
|
||||
notButton = true;
|
||||
}
|
||||
});
|
||||
if (notButton) {
|
||||
$('.dtsp-panesContainer').removeClass('vertical buttons');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! Bootstrap integration for DataTables' Buttons
|
||||
* © SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(o){var e,a;"function"==typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-buttons"],function(t){return o(t,window,document)}):"object"==typeof exports?(e=require("jquery"),a=function(t,n){n.fn.dataTable||require("datatables.net-se")(t,n),n.fn.dataTable.Buttons||require("datatables.net-buttons")(t,n)},"undefined"==typeof window?module.exports=function(t,n){return t=t||window,n=n||e(t),a(t,n),o(n,0,t.document)}:(a(window,e),module.exports=o(e,window,window.document))):o(jQuery,window,document)}(function(n,t,o,e){"use strict";var a=n.fn.dataTable;return n.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons ui buttons"},button:{tag:"button",active:"active",className:"dt-button ui button",spacerClass:"dt-button ui button"},collection:{action:{dropHtml:'<i class="dropdown icon"></i>'},container:{tag:"div",className:"ui dropdown active visible dt-button-collection",content:{className:"menu transition visible"}},closeButton:!1,button:{tag:"div",className:"item",active:"dt-button-active",spacer:{className:"divider",tag:"div"}},split:{action:{tag:"div",className:""},dropdown:{tag:"span",className:"dt-button-split-drop dropdown icon",dropHtml:'<i class="dropdown icon"></i>'},wrapper:{tag:"div",className:"dt-button-split"}}},split:{action:{tag:"button",className:"dt-button-split-drop-button ui button"},dropdown:{tag:"button",className:"ui floating button dt-button-split-drop dropdown icon"},wrapper:{tag:"div",className:"dt-button-split buttons"}}}}),n(o).on("buttons-popover.dt",function(){var t=!1;n(".dtsp-panesContainer").each(function(){n(this).is("button")||(t=!0)}),t&&n(".dtsp-panesContainer").removeClass("vertical buttons")}),a});
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user