From 7ecb294ae3de14b477b7b0d3746b00434f07cb53 Mon Sep 17 00:00:00 2001
From: minimus
Date: Mon, 4 Nov 2013 16:54:30 +0300
Subject: [PATCH 01/18] Reorganisation of Folders Lang folder is added.
---
.idea/.name | 1 +
.idea/encodings.xml | 5 +
.idea/misc.xml | 5 +
.idea/modules.xml | 9 +
.idea/scopes/scope_settings.xml | 5 +
.idea/simple-ads-manager.iml | 11 +
.idea/vcs.xml | 7 +
.idea/workspace.xml | 261 ++++++++++++++++++
admin.class.php | 2 +-
.../simple-ads-manager-be_BY.mo | Bin
.../simple-ads-manager-be_BY.po | 0
.../simple-ads-manager-de_DE.mo | Bin
.../simple-ads-manager-de_DE.po | 0
.../simple-ads-manager-es_ES.mo | Bin
.../simple-ads-manager-es_ES.po | 0
.../simple-ads-manager-ru_RU.mo | Bin
.../simple-ads-manager-ru_RU.po | 0
.../simple-ads-manager.pot | 0
18 files changed, 305 insertions(+), 1 deletion(-)
create mode 100644 .idea/.name
create mode 100644 .idea/encodings.xml
create mode 100644 .idea/misc.xml
create mode 100644 .idea/modules.xml
create mode 100644 .idea/scopes/scope_settings.xml
create mode 100644 .idea/simple-ads-manager.iml
create mode 100644 .idea/vcs.xml
create mode 100644 .idea/workspace.xml
rename simple-ads-manager-be_BY.mo => lang/simple-ads-manager-be_BY.mo (100%)
rename simple-ads-manager-be_BY.po => lang/simple-ads-manager-be_BY.po (100%)
rename simple-ads-manager-de_DE.mo => lang/simple-ads-manager-de_DE.mo (100%)
rename simple-ads-manager-de_DE.po => lang/simple-ads-manager-de_DE.po (100%)
rename simple-ads-manager-es_ES.mo => lang/simple-ads-manager-es_ES.mo (100%)
rename simple-ads-manager-es_ES.po => lang/simple-ads-manager-es_ES.po (100%)
rename simple-ads-manager-ru_RU.mo => lang/simple-ads-manager-ru_RU.mo (100%)
rename simple-ads-manager-ru_RU.po => lang/simple-ads-manager-ru_RU.po (100%)
rename simple-ads-manager.pot => lang/simple-ads-manager.pot (100%)
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..1996db0
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+simple-ads-manager
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..e206d70
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..1162f43
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..d5b6f67
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml
new file mode 100644
index 0000000..922003b
--- /dev/null
+++ b/.idea/scopes/scope_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/simple-ads-manager.iml b/.idea/simple-ads-manager.iml
new file mode 100644
index 0000000..ca73188
--- /dev/null
+++ b/.idea/simple-ads-manager.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..c80f219
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..6d225a1
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,261 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+ 1383567665395
+ 1383567665395
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/admin.class.php b/admin.class.php
index cb2ee9a..6395084 100644
--- a/admin.class.php
+++ b/admin.class.php
@@ -18,7 +18,7 @@ public function __construct() {
global $wp_version;
if ( function_exists( 'load_plugin_textdomain' ) )
- load_plugin_textdomain( SAM_DOMAIN, false, basename( SAM_PATH ) );
+ load_plugin_textdomain( SAM_DOMAIN, false, basename( SAM_PATH ) . '/lang' );
if(!is_dir(SAM_AD_IMG)) mkdir(SAM_AD_IMG);
diff --git a/simple-ads-manager-be_BY.mo b/lang/simple-ads-manager-be_BY.mo
similarity index 100%
rename from simple-ads-manager-be_BY.mo
rename to lang/simple-ads-manager-be_BY.mo
diff --git a/simple-ads-manager-be_BY.po b/lang/simple-ads-manager-be_BY.po
similarity index 100%
rename from simple-ads-manager-be_BY.po
rename to lang/simple-ads-manager-be_BY.po
diff --git a/simple-ads-manager-de_DE.mo b/lang/simple-ads-manager-de_DE.mo
similarity index 100%
rename from simple-ads-manager-de_DE.mo
rename to lang/simple-ads-manager-de_DE.mo
diff --git a/simple-ads-manager-de_DE.po b/lang/simple-ads-manager-de_DE.po
similarity index 100%
rename from simple-ads-manager-de_DE.po
rename to lang/simple-ads-manager-de_DE.po
diff --git a/simple-ads-manager-es_ES.mo b/lang/simple-ads-manager-es_ES.mo
similarity index 100%
rename from simple-ads-manager-es_ES.mo
rename to lang/simple-ads-manager-es_ES.mo
diff --git a/simple-ads-manager-es_ES.po b/lang/simple-ads-manager-es_ES.po
similarity index 100%
rename from simple-ads-manager-es_ES.po
rename to lang/simple-ads-manager-es_ES.po
diff --git a/simple-ads-manager-ru_RU.mo b/lang/simple-ads-manager-ru_RU.mo
similarity index 100%
rename from simple-ads-manager-ru_RU.mo
rename to lang/simple-ads-manager-ru_RU.mo
diff --git a/simple-ads-manager-ru_RU.po b/lang/simple-ads-manager-ru_RU.po
similarity index 100%
rename from simple-ads-manager-ru_RU.po
rename to lang/simple-ads-manager-ru_RU.po
diff --git a/simple-ads-manager.pot b/lang/simple-ads-manager.pot
similarity index 100%
rename from simple-ads-manager.pot
rename to lang/simple-ads-manager.pot
From 11ba7eb0bd555af9eb86c717552b460160c41806 Mon Sep 17 00:00:00 2001
From: minimus
Date: Mon, 11 Nov 2013 18:57:17 +0300
Subject: [PATCH 02/18] Some Improvements
---
.idea/codeStyleSettings.xml | 14 +
.idea/webResources.xml | 22 +
.idea/workspace.xml | 261 -
admin.class.php | 239 +-
css/sam-admin-edit.css | 39 +-
css/slick.grid.css | 158 -
css/slick.pager.css | 41 -
css/w2ui.min.css | 2 +
editor.admin.class.php | 36 +-
js/sam-admin-edit.js | 557 +-
js/sam-admin-edit.min.js | 4 +-
js/slick/jquery.event.drag-2.0.min.js | 6 -
js/slick/slick.autotooltips.js | 48 -
js/slick/slick.autotooltips.min.js | 1 -
js/slick/slick.cellcopymanager.js | 86 -
js/slick/slick.cellcopymanager.min.js | 1 -
js/slick/slick.cellrangedecorator.js | 64 -
js/slick/slick.cellrangeselector.js | 112 -
js/slick/slick.cellselectionmodel.js | 92 -
js/slick/slick.checkboxselectcolumn.js | 154 -
js/slick/slick.core.js | 424 -
js/slick/slick.editors.js | 512 --
js/slick/slick.formatters.js | 55 -
js/slick/slick.grid.js | 2799 ------
js/slick/slick.pager.js | 151 -
js/slick/slick.rowmovemanager.js | 132 -
js/slick/slick.rowselectionmodel.js | 187 -
js/w2ui.js | 11151 +++++++++++++++++++++++
js/w2ui.min.js | 1 +
readme.txt | 4 +
30 files changed, 11532 insertions(+), 5821 deletions(-)
create mode 100644 .idea/codeStyleSettings.xml
create mode 100644 .idea/webResources.xml
delete mode 100644 .idea/workspace.xml
delete mode 100644 css/slick.grid.css
delete mode 100644 css/slick.pager.css
create mode 100644 css/w2ui.min.css
delete mode 100644 js/slick/jquery.event.drag-2.0.min.js
delete mode 100644 js/slick/slick.autotooltips.js
delete mode 100644 js/slick/slick.autotooltips.min.js
delete mode 100644 js/slick/slick.cellcopymanager.js
delete mode 100644 js/slick/slick.cellcopymanager.min.js
delete mode 100644 js/slick/slick.cellrangedecorator.js
delete mode 100644 js/slick/slick.cellrangeselector.js
delete mode 100644 js/slick/slick.cellselectionmodel.js
delete mode 100644 js/slick/slick.checkboxselectcolumn.js
delete mode 100644 js/slick/slick.core.js
delete mode 100644 js/slick/slick.editors.js
delete mode 100644 js/slick/slick.formatters.js
delete mode 100644 js/slick/slick.grid.js
delete mode 100644 js/slick/slick.pager.js
delete mode 100644 js/slick/slick.rowmovemanager.js
delete mode 100644 js/slick/slick.rowselectionmodel.js
create mode 100644 js/w2ui.js
create mode 100644 js/w2ui.min.js
diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml
new file mode 100644
index 0000000..cab819f
--- /dev/null
+++ b/.idea/codeStyleSettings.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/webResources.xml b/.idea/webResources.xml
new file mode 100644
index 0000000..a9bf725
--- /dev/null
+++ b/.idea/webResources.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
deleted file mode 100644
index 6d225a1..0000000
--- a/.idea/workspace.xml
+++ /dev/null
@@ -1,261 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- false
-
-
-
-
- 1383567665395
- 1383567665395
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/admin.class.php b/admin.class.php
index 6395084..7f2f3af 100644
--- a/admin.class.php
+++ b/admin.class.php
@@ -18,7 +18,7 @@ public function __construct() {
global $wp_version;
if ( function_exists( 'load_plugin_textdomain' ) )
- load_plugin_textdomain( SAM_DOMAIN, false, basename( SAM_PATH ) . '/lang' );
+ load_plugin_textdomain( SAM_DOMAIN, false, basename( SAM_PATH ) . '/lang/' );
if(!is_dir(SAM_AD_IMG)) mkdir(SAM_AD_IMG);
@@ -278,11 +278,12 @@ public function help($contextualHelp, $screenId, $screen) {
public function adminEditStyles() {
wp_enqueue_style('adminEditLayout', SAM_URL.'css/sam-admin-edit.css', false, SAM_VERSION);
wp_enqueue_style('jquery-ui-css', SAM_URL.'css/jquery-ui.css', false, '1.10.3');
- wp_enqueue_style('ColorPickerCSS', SAM_URL.'css/colorpicker.css');
- wp_enqueue_style('slick', SAM_URL.'css/slick.grid.css', false, '2.0');
+ //wp_enqueue_style('ColorPickerCSS', SAM_URL.'css/colorpicker.css');
+ //wp_enqueue_style('slick', SAM_URL.'css/slick.grid.css', false, '2.0');
wp_enqueue_style('ComboGrid', SAM_URL.'css/jquery.ui.combogrid.css', false, '1.6.2');
wp_enqueue_style('wp-pointer');
wp_enqueue_style('colorButtons', SAM_URL.'css/color-buttons.css', false, SAM_VERSION);
+ wp_enqueue_style('W2UI', SAM_URL . 'css/w2ui.min.css', false, '1.3');
}
public function adminSettingsStyles() {
@@ -312,6 +313,7 @@ public function adminEditScripts() {
if($options['useSWF']) wp_enqueue_script('swfobject');
wp_enqueue_script('jquery');
+ wp_enqueue_script('W2UI', SAM_URL . 'js/w2ui.min.js', array('jquery'), '1.3');
wp_enqueue_script('jquery-ui-core');
wp_enqueue_script('jquery-effects-core');
//wp_enqueue_script('jquery-ui-mouse');
@@ -323,24 +325,23 @@ public function adminEditScripts() {
wp_enqueue_script('jquery-effects-blind');
wp_enqueue_script('jquery-ui-datepicker');
wp_enqueue_script('jquery-ui-tooltip');
- /*wp_enqueue_script('jquery-ui', SAM_URL.'js/jquery-ui-1.8.9.custom.min.js', array('jquery'), '1.8.9');*/
if(file_exists(SAM_PATH.'/js/i18n/jquery.ui.datepicker-'.$lc.'.js'))
wp_enqueue_script('jquery-ui-locale', SAM_URL.'js/i18n/jquery.ui.datepicker-'.$lc.'.js', array('jquery'), '1.8.9');
- wp_enqueue_script('ColorPicker', SAM_URL.'js/colorpicker.js', array('jquery'));
+ //wp_enqueue_script('ColorPicker', SAM_URL.'js/colorpicker.js', array('jquery'));
wp_enqueue_script('AjaxUpload', SAM_URL.'js/ajaxupload.js', array('jquery'), '3.9');
- wp_enqueue_script('jquery-event-drag', SAM_URL.'js/slick/jquery.event.drag-2.0.min.js', array('jquery'), '2.0');
- wp_enqueue_script('slick-core', SAM_URL.'js/slick/slick.core.js', array('jquery', 'jquery-ui-core'), '2.0');
- wp_enqueue_script('slick-checkboxes', SAM_URL.'js/slick/slick.checkboxselectcolumn.js', array('jquery', 'jquery-ui-core'), '2.0');
- wp_enqueue_script('slick-tooltips', SAM_URL.'js/slick/slick.autotooltips.js', array('jquery', 'jquery-ui-core'), '2.0');
- wp_enqueue_script('slick-cell-rd', SAM_URL.'js/slick/slick.cellrangedecorator.js', array('jquery', 'jquery-ui-core'), '2.0');
- wp_enqueue_script('slick-cell-rs', SAM_URL.'js/slick/slick.cellrangeselector.js', array('jquery', 'jquery-ui-core'), '2.0');
- wp_enqueue_script('slick-cell-cm', SAM_URL.'js/slick/slick.cellcopymanager.js', array('jquery', 'jquery-ui-core'), '2.0');
- wp_enqueue_script('slick-cell-sm', SAM_URL.'js/slick/slick.cellselectionmodel.js', array('jquery', 'jquery-ui-core'), '2.0');
- wp_enqueue_script('slick-row-sm', SAM_URL.'js/slick/slick.rowselectionmodel.js', array('jquery', 'jquery-ui-core'), '2.0');
- wp_enqueue_script('slick-formatters', SAM_URL.'js/slick/slick.formatters.js', array('jquery', 'jquery-ui-core'), '2.0');
- wp_enqueue_script('slick-editors', SAM_URL.'js/slick/slick.editors.js', array('jquery', 'jquery-ui-core'), '2.0');
- wp_enqueue_script('slick-grid', SAM_URL.'js/slick/slick.grid.js', array('jquery', 'jquery-ui-core'), '2.0');
+ //('jquery-event-drag', SAM_URL.'js/slick/jquery.event.drag-2.0.min.js', array('jquery'), '2.0');
+ //wp_enqueue_script('slick-core', SAM_URL.'js/slick/slick.core.js', array('jquery', 'jquery-ui-core'), '2.0');
+ //wp_enqueue_script('slick-checkboxes', SAM_URL.'js/slick/slick.checkboxselectcolumn.js', array('jquery', 'jquery-ui-core'), '2.0');
+ //wp_enqueue_script('slick-tooltips', SAM_URL.'js/slick/slick.autotooltips.js', array('jquery', 'jquery-ui-core'), '2.0');
+ //wp_enqueue_script('slick-cell-rd', SAM_URL.'js/slick/slick.cellrangedecorator.js', array('jquery', 'jquery-ui-core'), '2.0');
+ //wp_enqueue_script('slick-cell-rs', SAM_URL.'js/slick/slick.cellrangeselector.js', array('jquery', 'jquery-ui-core'), '2.0');
+ //wp_enqueue_script('slick-cell-cm', SAM_URL.'js/slick/slick.cellcopymanager.js', array('jquery', 'jquery-ui-core'), '2.0');
+ //wp_enqueue_script('slick-cell-sm', SAM_URL.'js/slick/slick.cellselectionmodel.js', array('jquery', 'jquery-ui-core'), '2.0');
+ //wp_enqueue_script('slick-row-sm', SAM_URL.'js/slick/slick.rowselectionmodel.js', array('jquery', 'jquery-ui-core'), '2.0');
+ //wp_enqueue_script('slick-formatters', SAM_URL.'js/slick/slick.formatters.js', array('jquery', 'jquery-ui-core'), '2.0');
+ //wp_enqueue_script('slick-editors', SAM_URL.'js/slick/slick.editors.js', array('jquery', 'jquery-ui-core'), '2.0');
+ //wp_enqueue_script('slick-grid', SAM_URL.'js/slick/slick.grid.js', array('jquery', 'jquery-ui-core'), '2.0');
//wp_enqueue_script('cg-props', SAM_URL.'js/jquery.i18n.properties-1.0.9.js', array('jquery', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position'), '1.0.9');
wp_enqueue_script('ComboGrid', SAM_URL.'js/jquery.ui.combogrid-1.6.3.js', array('jquery', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position'/*, 'cg-props'*/), '1.6.2');
@@ -352,7 +353,7 @@ public function adminEditScripts() {
'zones' => array('enabled' => $pointers['zones'], 'title' => __('Name of Ads Zone', SAM_DOMAIN), 'content' => __('This is not required parameter. But it is strongly recommended to define it if you plan to use Ads Blocks or plugin\'s widgets.', SAM_DOMAIN)),
'blocks' => array('enabled' => $pointers['blocks'], 'title' => __('Name of Ads Block', SAM_DOMAIN), 'content' => __('This is not required parameter. But it is strongly recommended to define it if you plan to use plugin\'s widgets.', SAM_DOMAIN))
));
- wp_enqueue_script('adminEditScript', SAM_URL.'js/sam-admin-edit.js', array('jquery', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position'), SAM_VERSION);
+ wp_enqueue_script('adminEditScript', SAM_URL.'js/sam-admin-edit.min.js', array('jquery', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position'), SAM_VERSION);
}
public function adminEditZBScripts() {
@@ -519,66 +520,113 @@ public function getComboDataHandler() {
}
public function getStringsHandler() {
- global $wpdb;
+ global $wpdb, $wp_taxonomies;
$tTable = $wpdb->prefix . "terms";
$ttTable = $wpdb->prefix . "term_taxonomy";
$uTable = $wpdb->prefix . "users";
$umTable = $wpdb->prefix . "usermeta";
$postTable = $wpdb->prefix . "posts";
- $sql = "SELECT $tTable.term_id AS id, $tTable.name AS title, $tTable.slug
- FROM $tTable
- INNER JOIN $ttTable
- ON $tTable.term_id = $ttTable.term_id
- WHERE $ttTable.taxonomy = 'category'
- ORDER BY $tTable.name;";
+ $sql = "SELECT wt.term_id AS id, wt.name AS title, wt.slug
+ FROM $tTable wt
+ INNER JOIN $ttTable wtt
+ ON wt.term_id = wtt.term_id
+ WHERE wtt.taxonomy = 'category'
+ ORDER BY wt.name;";
$cats = $wpdb->get_results($sql, ARRAY_A);
+ $k = 0;
+ foreach($cats as &$val) {
+ $k++;
+ $val['recid'] = $k;
+ }
- $sql = "SELECT $tTable.term_id AS id, $tTable.name AS title, $tTable.slug
- FROM $tTable
- INNER JOIN $ttTable
- ON $tTable.term_id = $ttTable.term_id
- WHERE $ttTable.taxonomy = 'post_tag'
- ORDER BY $tTable.name;";
+ $sql = "SELECT wt.term_id AS id, wt.name AS title, wt.slug
+ FROM $tTable wt
+ INNER JOIN $ttTable wtt
+ ON wt.term_id = wtt.term_id
+ WHERE wtt.taxonomy = 'post_tag'
+ ORDER BY wt.name;";
$tags = $wpdb->get_results($sql, ARRAY_A);
+ $k = 0;
+ foreach($tags as &$val) {
+ $k++;
+ $val['recid'] = $k;
+ }
+
+ $sql = "SELECT wtt.taxonomy
+ FROM wp_term_taxonomy wtt
+ WHERE NOT FIND_IN_SET(wtt.taxonomy, 'category,post_tag,nav_menu,link_category,post_format')
+ GROUP BY wtt.taxonomy;";
+
+ $sql = "SELECT wt.term_id, wt.name, wt.slug, wtt.taxonomy
+ FROM $tTable wt
+ INNER JOIN $ttTable wtt
+ ON wt.term_id = wtt.term_id
+ WHERE NOT FIND_IN_SET(wtt.taxonomy, 'category,post_tag,nav_menu,link_category,post_format');";
+
+ $cTax = $wpdb->get_results($sql, ARRAY_A);
+ $k = 0;
+ foreach($cTax as &$val) {
+ if(isset($wp_taxonomies[$val['taxonomy']])) $val['ctax_name'] = urldecode($wp_taxonomies[$val['taxonomy']]->labels->name);
+ else $val['ctax_name'] = '';
+ $k++;
+ $val['recid'] = $k;
+ }
$sql = "SELECT
- $uTable.id,
- $uTable.display_name AS title,
- $uTable.user_nicename AS slug
+ wu.id,
+ wu.display_name AS title,
+ wu.user_nicename AS slug
FROM
- $uTable
- INNER JOIN $umTable
- ON $uTable.id = $umTable.user_id
+ $uTable wu
+ INNER JOIN $umTable wum
+ ON wu.id = wum.user_id
WHERE
- $umTable.meta_key = 'wp_user_level' AND
- $umTable.meta_value > 1
- ORDER BY $uTable.id;";
+ wum.meta_key = 'wp_user_level' AND
+ wum.meta_value > 1
+ ORDER BY wu.id;";
$auth = $wpdb->get_results($sql, ARRAY_A);
+ $k = 0;
+ foreach($auth as &$val) {
+ $k++;
+ $val['recid'] = $k;
+ }
+ $roleSubscriber = __('Subscriber', SAM_DOMAIN);
+ $roleContributor = __('Contributor', SAM_DOMAIN);
+ $roleAuthor = __('Author', SAM_DOMAIN);
+ $roleEditor = __('Editor', SAM_DOMAIN);
+ $roleAdministrator = __('Administrator', SAM_DOMAIN);
+ $roleSuperAdmin = __('Super Admin', SAM_DOMAIN);
$sql = "SELECT
- $uTable.id,
- $uTable.display_name AS title,
- $uTable.user_nicename AS slug,
- (CASE $umTable.meta_value
- WHEN 0 THEN '".__('Subscriber', SAM_DOMAIN)."'
- WHEN 1 THEN '".__('Contributor', SAM_DOMAIN)."'
- WHEN 2 THEN '".__('Author', SAM_DOMAIN)."'
+ wu.id,
+ wu.display_name AS title,
+ wu.user_nicename AS slug,
+ (CASE wum.meta_value
+ WHEN 0 THEN '$roleSubscriber'
+ WHEN 1 THEN '$roleContributor'
+ WHEN 2 THEN '$roleAuthor'
ELSE
- IF($umTable.meta_value > 2 AND $umTable.meta_value <= 7, '".__('Editor', SAM_DOMAIN)."',
- IF($umTable.meta_value > 7 AND $umTable.meta_value <= 10, '".__('Administrator', SAM_DOMAIN)."',
- IF($umTable.meta_value > 10, '".__('Super Admin', SAM_DOMAIN)."', NULL)
+ IF(wum.meta_value > 2 AND wum.meta_value <= 7, '$roleEditor',
+ IF(wum.meta_value > 7 AND wum.meta_value <= 10, '$roleAdministrator',
+ IF(wum.meta_value > 10, '$roleSuperAdmin', NULL)
)
)
END) AS role
- FROM $uTable
- INNER JOIN $umTable
- ON $uTable.id = $umTable.user_id AND $umTable.meta_key = 'wp_user_level'
- ORDER BY $uTable.id;";
+ FROM $uTable wu
+ INNER JOIN $umTable wum
+ ON wu.id = wum.user_id AND wum.meta_key = 'wp_user_level'
+ ORDER BY wu.id;";
$users = $wpdb->get_results($sql, ARRAY_A);
+
+ $k = 0;
+ foreach($users as &$val) {
+ $k++;
+ $val['recid'] = $k;
+ }
$args = array('public' => true, '_builtin' => false);
$output = 'objects';
@@ -591,34 +639,43 @@ public function getStringsHandler() {
array_push($customs, array('title' => $post_type->labels->name, 'slug' => $post_type->name));
array_push($sCustoms, $post_type->name);
}
+ $k = 0;
+ foreach($customs as &$val) {
+ $k++;
+ $val['recid'] = $k;
+ }
if(!empty($sCustoms)) $custs = ',' . implode(',', $sCustoms);
else $custs = '';
$sql = "SELECT
- $postTable.id,
- $postTable.post_title AS title,
- $postTable.post_type AS type
+ wp.id,
+ wp.post_title AS title,
+ wp.post_type AS type
FROM
- $postTable
+ $postTable wp
WHERE
- $postTable.post_status = 'publish' AND
- FIND_IN_SET($postTable.post_type, 'post,page".$custs."')
- ORDER BY $postTable.id;";
+ wp.post_status = 'publish' AND
+ FIND_IN_SET(wp.post_type, 'post,page{$custs}')
+ ORDER BY wp.id;";
$posts = $wpdb->get_results($sql, ARRAY_A);
- for($i = 0; $i < sizeof($posts); $i++) {
- switch($posts[$i]['type']) {
+
+ $k = 0;
+ foreach($posts as &$val) {
+ switch($val['type']) {
case 'post':
- $posts[$i]['type'] = __('Post', SAM_DOMAIN);
+ $val['type'] = __('Post', SAM_DOMAIN);
break;
case 'page':
- $posts[$i]['type'] = __('Page', SAM_DOMAIN);
+ $val['type'] = __('Page', SAM_DOMAIN);
break;
default:
- $posts[$i]['type'] = __('Post:', SAM_DOMAIN).' '.$posts[$i]['type'];
+ $val['type'] = __('Post:', SAM_DOMAIN).' '.$val['type'];
break;
}
+ $k++;
+ $val['recid'] = $k;
}
$output = array(
@@ -630,40 +687,51 @@ public function getStringsHandler() {
'url' => SAM_AD_URL,
'cats' => array(
'columns' => array(
- array('id' => "id", 'name' => "ID", 'field' => "id", 'width' => 50),
+ /*array('id' => "id", 'name' => "ID", 'field' => "id", 'width' => 50),
array('id' => "title", 'name' => __("Category Title", SAM_DOMAIN), 'field' => "title", 'width' => 500),
- array('id' => "slug", 'name' => __("Category Slug", SAM_DOMAIN), 'field' => "slug", 'width' => 200)
+ array('id' => "slug", 'name' => __("Category Slug", SAM_DOMAIN), 'field' => "slug", 'width' => 200)*/
+ array('field' => 'id', 'caption' => 'ID', 'size' => '40px'),
+ array('field' => 'title', 'caption' => __("Category Title", SAM_DOMAIN), 'size' => '50%'),
+ array('field' => 'slug', 'caption' => __("Category Slug", SAM_DOMAIN), 'size' => '40%')
),
'cats' => $cats
),
'authors' => array(
'columns' => array(
- array('id' => "id", 'name' => "ID", 'field' => "id", 'width' => 50),
+ /*array('id' => "id", 'name' => "ID", 'field' => "id", 'width' => 50),
array('id' => "title", 'name' => __("Display Name", SAM_DOMAIN), 'field' => "title", 'width' => 500),
- array('id' => "slug", 'name' => __("User Name", SAM_DOMAIN), 'field' => "slug", 'width' => 200)
+ array('id' => "slug", 'name' => __("User Name", SAM_DOMAIN), 'field' => "slug", 'width' => 200)*/
+ array('field' => 'id', 'caption' => 'ID', 'size' => '40px'),
+ array('field' => 'title', 'caption' => __("Display Name", SAM_DOMAIN), 'size' => '50%'),
+ array('field' => 'slug', 'caption' => __("User Name", SAM_DOMAIN), 'size' => '40%')
),
'authors' => $auth
),
'tags' => array(
'columns' => array(
- array('id' => "id", 'name' => "ID", 'field' => "id", 'width' => 50),
+ /*array('id' => "id", 'name' => "ID", 'field' => "id", 'width' => 50),
array('id' => "title", 'name' => __("Tag Title", SAM_DOMAIN), 'field' => "title", 'width' => 500),
- array('id' => "slug", 'name' => __("Tag Slug", SAM_DOMAIN), 'field' => "slug", 'width' => 200)
+ array('id' => "slug", 'name' => __("Tag Slug", SAM_DOMAIN), 'field' => "slug", 'width' => 200)*/
+ array('field' => 'id', 'caption' => 'ID', 'size' => '40px'),
+ array('field' => 'title', 'caption' => __("Tag Title", SAM_DOMAIN), 'size' => '50%'),
+ array('field' => 'slug', 'caption' => __("Tag Slug", SAM_DOMAIN), 'size' => '40%')
),
'tags' => $tags
),
'customs' => array(
'columns' => array(
- array('id' => "title", 'name' => __("Custom Type Title", SAM_DOMAIN), 'field' => "title", 'width' => 550),
- array('id' => "slug", 'name' => __("Custom Type Slug", SAM_DOMAIN), 'field' => "slug", 'width' => 200)
+ /*array('id' => "title", 'name' => __("Custom Type Title", SAM_DOMAIN), 'field' => "title", 'width' => 550),
+ array('id' => "slug", 'name' => __("Custom Type Slug", SAM_DOMAIN), 'field' => "slug", 'width' => 200)*/
+ array('field' => 'title', 'caption' => __("Custom Type Title", SAM_DOMAIN), 'size' => '50%'),
+ array('field' => 'slug', 'caption' => __("Custom Type Slug", SAM_DOMAIN), 'size' => '50%')
),
'customs' => $customs
),
'posts' => array(
'columns' => array(
- array('id' => "id", 'name' => "ID", 'field' => "id", 'width' => 50),
- array('id' => "title", 'name' => __("Publication Title", SAM_DOMAIN), 'field' => "title", 'width' => 500),
- array('id' => "type", 'name' => __("Publication Type", SAM_DOMAIN), 'field' => "type", 'width' => 200)
+ array('field' => 'id', 'caption' => 'ID', 'size' => '40px'),
+ array('field' => 'title', 'caption' => __("Publication Title", SAM_DOMAIN), 'size' => '50%'),
+ array('field' => 'type', 'caption' => __("Publication Type", SAM_DOMAIN), 'size' => '40%')
),
'posts' => $posts
),
@@ -675,12 +743,25 @@ public function getStringsHandler() {
array('columnName' => 'email', 'width' => '190', 'align' => 'left', 'label' => __('Advertiser e-mail', SAM_DOMAIN))
),
'columns' => array(
- array('id' => 'id', 'name' => 'ID', 'field' => 'id', 'width' => 50),
+ /*array('id' => 'id', 'name' => 'ID', 'field' => 'id', 'width' => 50),
array('id' => "title", 'name' => __("Display Name", SAM_DOMAIN), 'field' => "title", 'width' => 250),
array('id' => "slug", 'name' => __("User Name", SAM_DOMAIN), 'field' => "slug", 'width' => 200),
- array('id' => 'role', 'name' => __("Role", SAM_DOMAIN), 'field' => 'role', 'width' => 200)
+ array('id' => 'role', 'name' => __("Role", SAM_DOMAIN), 'field' => 'role', 'width' => 200)*/
+ array('field' => 'id', 'caption' => 'ID', 'size' => '40px'),
+ array('field' => 'title', 'caption' => __("Display Name", SAM_DOMAIN), 'size' => '40%'),
+ array('field' => 'slug', 'caption' => __("User Name", SAM_DOMAIN), 'size' => '25%'),
+ array('field' => 'role', 'caption' => __("Role", SAM_DOMAIN), 'size' => '25%')
),
'users' => $users
+ ),
+ 'custom_taxes' => array(
+ 'taxes' => $cTax,
+ 'columns' => array(
+ //array('field' => 'recid', 'caption' => 'Record ID', 'size' => '30px'),
+ array('field' => 'term_id', 'caption' => __('ID', SAM_DOMAIN), 'size' => '30px'),
+ array('field' => 'name', 'caption' => __('Term Name', SAM_DOMAIN), 'size' => '50%'),
+ array('field' => 'ctax_name', 'caption' => __('Custom Taxonomy Name', SAM_DOMAIN), 'size' => '40%')
+ )
)
);
$charset = get_bloginfo('charset');
diff --git a/css/sam-admin-edit.css b/css/sam-admin-edit.css
index d83132a..9506a75 100644
--- a/css/sam-admin-edit.css
+++ b/css/sam-admin-edit.css
@@ -144,45 +144,12 @@ input.button-primary, input.button-secondary,
font-size: 11px !important;
}
-.slick-cell-checkboxsel {
- background: #f0f0f0;
- border-right-color: silver;
- border-right-style: solid;
- text-align: center;
-}
-
#posts-grid, #x-posts-grid,
#cats-grid, #x-cats-grid,
#auth-grid, #x-auth-grid,
#tags-grid, #x-tags-grid,
#cust-grid, #x-cust-grid,
-#users-grid {
- border-bottom: 1px solid #DFDFDF;
- border-left: 1px solid #DFDFDF;
- border-right: 1px solid #DFDFDF;
-}
-
-.cell-move-handle:hover {
- background: #b6b9bd;
-}
-
-.slick-row.selected .cell-move-handle {
- background: #D5DC8D;
-}
-
-.slick-cell.selected {
- background: #F4F8FE !important;
-}
-
-.slick-row .cell-actions {
- text-align: left;
-}
-
-.slick-row.complete {
- background-color: #DFD;
- color: #555;
-}
-
-.slick-checkbox-column {
- text-align: center;
+#users-grid, #ctt-grid {
+ width: 100%;
+ height: 197px;
}
diff --git a/css/slick.grid.css b/css/slick.grid.css
deleted file mode 100644
index e5ef44c..0000000
--- a/css/slick.grid.css
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
-IMPORTANT:
-In order to preserve the uniform grid appearance, all cell styles need to have padding, margin and border sizes.
-No built-in (selected, editable, highlight, flashing, invalid, loading, :focus) or user-specified CSS
-classes should alter those!
-*/
-
-.slick-header.ui-state-default, .slick-headerrow.ui-state-default {
- width: 100%;
- overflow: hidden;
- border-left: 0px;
-}
-
-.slick-header-columns, .slick-headerrow-columns {
- width: 999999px;
- position: relative;
- white-space: nowrap;
- cursor: default;
- overflow: hidden;
-}
-
-.slick-header-column.ui-state-default {
- position: relative;
- display: inline-block;
- overflow: hidden;
- text-overflow: ellipsis;
- height: 16px;
- line-height: 16px;
- margin: 0;
- padding: 4px;
- border-right: 1px solid silver;
- border-left: 0px;
- border-top: 0px;
- border-bottom: 0px;
- float: left;
-}
-
-.slick-headerrow-column.ui-state-default {
- padding: 4px;
-}
-
-.slick-header-column-sorted {
- font-style: italic;
-}
-
-.slick-sort-indicator {
- display: inline-block;
- width: 8px;
- height: 5px;
- margin-left: 4px;
-}
-
-.slick-sort-indicator-desc {
- background: url(images/sort-desc.gif);
-}
-
-.slick-sort-indicator-asc {
- background: url(images/sort-asc.gif);
-}
-
-.slick-resizable-handle {
- position: absolute;
- font-size: 0.1px;
- display: block;
- cursor: col-resize;
- width: 4px;
- right: 0px;
- top: 0;
- height: 100%;
-}
-
-.slick-sortable-placeholder {
- background: silver;
-}
-
-.grid-canvas {
- position: relative;
- outline: 0;
-}
-
-.slick-row.ui-widget-content, .slick-row.ui-state-active {
- position: absolute;
- border: 0px;
- width: 100%;
-}
-
-.slick-cell, .slick-headerrow-column {
- position: absolute;
-
- border: 1px solid transparent;
- border-right: 1px dotted silver;
- border-bottom-color: silver;
-
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- vertical-align: middle;
- z-index: 1;
- padding: 1px 2px 2px 1px;
- margin: 0;
-
- white-space: nowrap;
-
- cursor: default;
-}
-
-.slick-group {
-}
-
-.slick-group-toggle {
- display: inline-block;
-}
-
-.slick-cell.highlighted {
- background: lightskyblue;
- background: rgba(0, 0, 255, 0.2);
- -webkit-transition: all 0.5s;
- -moz-transition: all 0.5s;
- transition: all 0.5s;
-}
-
-.slick-cell.flashing {
- border: 1px solid red !important;
-}
-
-.slick-cell.editable {
- z-index: 11;
- overflow: visible;
- background: white;
- border-color: black;
- border-style: solid;
-}
-
-.slick-cell:focus {
- outline: none;
-}
-
-.slick-reorder-proxy {
- display: inline-block;
- background: blue;
- opacity: 0.15;
- filter: alpha(opacity = 15);
- cursor: move;
-}
-
-.slick-reorder-guide {
- display: inline-block;
- height: 2px;
- background: blue;
- opacity: 0.7;
- filter: alpha(opacity = 70);
-}
-
-.slick-selection {
- z-index: 10;
- position: absolute;
- border: 2px dashed black;
-}
\ No newline at end of file
diff --git a/css/slick.pager.css b/css/slick.pager.css
deleted file mode 100644
index e360ec6..0000000
--- a/css/slick.pager.css
+++ /dev/null
@@ -1,41 +0,0 @@
-.slick-pager {
- width: 100%;
- height: 26px;
- border: 1px solid gray;
- border-top: 0;
- background: url('../images/header-columns-bg.gif') repeat-x center bottom;
- vertical-align: middle;
-}
-
-.slick-pager .slick-pager-status {
- display: inline-block;
- padding: 6px;
-}
-
-.slick-pager .ui-icon-container {
- display: inline-block;
- margin: 2px;
- border-color: gray;
-}
-
-.slick-pager .slick-pager-nav {
- display: inline-block;
- float: left;
- padding: 2px;
-}
-
-.slick-pager .slick-pager-settings {
- display: block;
- float: right;
- padding: 2px;
-}
-
-.slick-pager .slick-pager-settings * {
- vertical-align: middle;
-}
-
-.slick-pager .slick-pager-settings a {
- padding: 2px;
- text-decoration: underline;
- cursor: pointer;
-}
diff --git a/css/w2ui.min.css b/css/w2ui.min.css
new file mode 100644
index 0000000..188411a
--- /dev/null
+++ b/css/w2ui.min.css
@@ -0,0 +1,2 @@
+/* w2ui 1.3 (c) http://w2ui.com, vitmalina@gmail.com */
+.w2ui-reset{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.w2ui-reset *{color:default;font-family:Verdana,Arial;font-size:11px;line-height:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0}.w2ui-reset table{max-width:none;background-color:transparent;border-collapse:separate;border-spacing:0}.w2ui-reset input,.w2ui-reset textarea{width:auto;height:auto;vertical-align:baseline;padding:4px}.w2ui-reset select{padding:1px;height:23px}.w2ui-centered{display:table;width:100%;height:100%}.w2ui-centered>div{display:table-cell;padding:10px 20px 20px 10px;text-align:center;vertical-align:middle}input[type=text],input[type=password],select,textarea{padding:4px;border:1px solid #dfdfdf;border-radius:3px;color:#000;background-color:#fff}input[type=text]:focus,input[type=password]:focus,select:focus,textarea:focus{outline-color:#72b2ff}input[type=text]:disabled,input[type=password]:disabled,select:disabled,textarea:disabled,input[type=text][readonly],input[type=password][readonly],select[readonly],textarea[readonly]{background-color:#f1f1f1;color:#888}select{padding:2px}.w2ui-overlay{position:absolute;margin-top:6px;margin-left:-17px;display:none;z-index:1300;color:inherit;background-color:#fbfbfb;border:3px solid #777;box-shadow:0 2px 10px #999;border-radius:4px;text-align:left}.w2ui-overlay table td{color:inherit}.w2ui-overlay:before{content:"";position:absolute;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg);width:10px;height:10px;border:3px solid #777;border-color:inherit;background-color:inherit;border-left:1px solid transparent;border-bottom:1px solid transparent;border-bottom-left-radius:50px;margin:-9px 0 0 32px}.w2ui-overlay.w2ui-overlay-popup{z-index:1700}.w2ui-tag{position:absolute;z-index:1300;opacity:0;-webkit-transition:opacity .3s;-moz-transition:opacity .3s;-ms-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}.w2ui-tag .w2ui-tag-body{background-color:rgba(60,60,60,.82);display:inline-block;position:absolute;border-radius:4px;padding:4px 10px;margin-left:10px;margin-top:0;color:#fff!important;box-shadow:1px 1px 3px #000;line-height:normal;font-size:11px;font-family:Verdana,Arial}.w2ui-tag .w2ui-tag-body:before{content:"";position:absolute;width:0;height:0;border-top:5px solid transparent;border-right:5px solid rgba(60,60,60,.82);border-bottom:5px solid transparent;margin:2px 0 0 -15px}.w2ui-tag.w2ui-tag-popup{z-index:1700}.w2ui-marker{color:#444;background-color:#FFF8B0}.w2ui-spinner{display:inline-block;background-size:100%;background-repeat:no-repeat;background-image:url(data:image/gif;base64,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)}.w2ui-icon{background-repeat:no-repeat;height:16px;width:16px;overflow:hidden;margin:2px;display:inline-block}.w2ui-icon.icon-reload{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAI/SURBVDjLjZPbS9NhHMYH+zNidtCSQrqwQtY5y2QtT2QGrTZf13TkoYFlzsWa/tzcoR3cSc2xYUlGJfzAaIRltY0N12H5I+jaOxG8De+evhtdOP1hu3hv3sPzPO/z4SsBIPnfuvG8cbBlWiEVO5OUItA0VS8oxi9EdhXo+6yV3V3UGHRvVXHNfNv6zRfNuBZVoiFcB/3LdnQ8U+Gk+bhPVKB3qUOuf6/muaQR/qwDkZ9BRFdCmMr5EPz6BN7lMYylLGgNNaKqt3K0SKDnQ7us690t3rNsxeyvaUz+8OJpzo/QNzd8WTtcaQ7WlBmPvxhx1V2Pg7oDziIBimwwf3qAGWESkVwQ7owNujk1ztvk+cg4NnAUTT4FrrjqUKHdF9jxBfXr1rgjaSk4OlMcLrnOrJ7latxbL1V2lgvlbG9MtMTrMw1r1PImtfyn1n5q47TlBLf90n5NmalMtUdKZoyQMkLKlIGLjMyYhFpmlz3nGEVmFJlRZNaf7pIaEndM24XIjCOzjX9mm2S2JsqdkMYIqbB1j5C6yWzVk7YRFTsGFu7l+4nveExIA9aMCcOJh6DIoMigyOh+o4UryRWQOtIjaJtoziM1FD0mpE4uZcTc72gBaUyYKEI6khgqINXO3saR7kM8IZUVCRDS0Ucf+xFbCReQhr97MZ51wpWxYnhpCD3zOrT4lTisr+AJqVx0Fiiyr4/vhP4VyyMFIUWNqRrV96vWKXKckBoIqWzXYcoPDrUslDJoopuEVEpIB0sR+AuErIiZ6OqMKAAAAABJRU5ErkJggg==) no-repeat center}.w2ui-icon.icon-columns{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFwSURBVBgZpcG9apNhHMbh3/ORWiztpLSrQ86gmw6egkuXjE7i5CQ0OAZxUSj0DCxiB8/A07BDBXEoKEoGbaP45n/f9im+SwhCyXUl26wiPXjy9vG9+7svpjNv2ICEJUKBZWThCGTjCEJia627ODk5e/ru5d5h3b27ezBY38jb61zHxsUsDoDDOuucZ9NzrutX50yz//rUy4zffPT/PHz+3peotmjGR6f0JqMhven5b2JuYm7C4k+YOzubhIImY9PbvrXJoloqdZCpNzJra5Wbg0qjedDUUND7+v0ni0qGnAo1QSQTWTQK0VTLNJPRkGVKAiVwAnKiqNBIQVOloBkfndKbjIb0Us1UCRkyoMQVSTR53nX0dm5vsSgDKWdKyaScyIUr825OUx2i9+XbDxbllGgElJSwRGOJpkqimYyGLFNSoin8UwqNbJp69unz8aNX3Z4iUIiIQBLRdYyefUA2VuAwsrCERHPMpWSbVWRW9Bcyl/ydiZeC0gAAAABJRU5ErkJggg==) no-repeat center!important}.w2ui-icon.icon-search,.w2ui-icon.icon-search-down{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAgCAYAAAB+ZAqzAAACuElEQVRYw9WXSWhTQRjHR0UKLqhFaV0OUih68GAOWjyJKypCpAoV8aIiioIICiKiB1GMtE3MYmry2moXDz1UDx7sUXHBhQpSaRVxrYpWcMO9avx/8AJh/CbznHkxdeB3Cd/8589kvuUJkWcdjCTHghUgAi6DJ+AVeAqugSQIggniXywcNBJsB70g44EHYBcYXUhTM8EFj4ZkboKqQpiqAv2GprK8o7/f75t6pjn0M3gNPmri3vtycxAZA64qDvkJ2kENqAQTQQWoBg74qth3B4y3NbZDIX4fzNfsnQtuK/YfsjFVCh4pMq3Co0Y5uMVoUGkpy8aFT5xaeSzVEo45bXdBt4LeaLq1k0RXMYJfdDfFmAuAD4zWlty4UNyZEkm19MUb2zMw8Sfp1u+IWSrcIimLnTG8/SijdU6OO5poDESdtgHZVBzUHm/amhW7zoitMTS2mNHqASPk2FDCCcLMYK6p+obmulyxfiYLA4bGKFvfSnrUvkq5+Lpk8z4yRH8r3l/X4WiqJFfspSQ0CGYZGpsMnkt6L+h31Z76hpMdeOwPQ7H0NFnssST0C8wxNDaDKb6kP06150gsHahNNlVzYheZd7HJ0BiX4VRGhpmIhRixKyZilM2M1mnTArtIUbU3/qVO0H0GvmQ4CY4C3YopYYlHjXlggNG4R33Ypi2tVtwaPeTdNMkq9pVQZQdvFPs32zbx4aAjzxhDRfIAWAeWg7VgrzsY5ht/zoNJtubKwA3LITGjSKRyW3NTwaUCmKOSMd3WHH0ZJRQZZkOP1zFKZ3CB++4+aQ6kEeksWAb2a2L7qDv49S1Q6T72MOgEXa6RGFhP3wpS/B6NOWpRs0UxFg7eqTFHjX1hscxtAz/ymEuIYi0cvgF8Y0w5Ro3dZ3M1boJkTaXEUFlug6fsdsRQWzTj0cey+N/Xb2sj5lTh2M6OAAAAAElFTkSuQmCC) no-repeat center!important;background-size:14px 12px!important;opacity:.9}.w2ui-icon.icon-add{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJvSURBVDjLpZPrS5NhGIf9W7YvBYOkhlkoqCklWChv2WyKik7blnNris72bi6dus0DLZ0TDxW1odtopDs4D8MDZuLU0kXq61CijSIIasOvv94VTUfLiB74fXngup7nvrnvJABJ/5PfLnTTdcwOj4RsdYmo5glBWP6iOtzwvIKSWstI0Wgx80SBblpKtE9KQs/We7EaWoT/8wbWP61gMmCH0lMDvokT4j25TiQU/ITFkek9Ow6+7WH2gwsmahCPdwyw75uw9HEO2gUZSkfyI9zBPCJOoJ2SMmg46N61YO/rNoa39Xi41oFuXysMfh36/Fp0b7bAfWAH6RGi0HglWNCbzYgJaFjRv6zGuy+b9It96N3SQvNKiV9HvSaDfFEIxXItnPs23BzJQd6DDEVM0OKsoVwBG/1VMzpXVWhbkUM2K4oJBDYuGmbKIJ0qxsAbHfRLzbjcnUbFBIpx/qH3vQv9b3U03IQ/HfFkERTzfFj8w8jSpR7GBE123uFEYAzaDRIqX/2JAtJbDat/COkd7CNBva2cMvq0MGxp0PRSCPF8BXjWG3FgNHc9XPT71Ojy3sMFdfJRCeKxEsVtKwFHwALZfCUk3tIfNR8XiJwc1LmL4dg141JPKtj3WUdNFJqLGFVPC4OkR4BxajTWsChY64wmCnMxsWPCHcutKBxMVp5mxA1S+aMComToaqTRUQknLTH62kHOVEE+VQnjahscNCy0cMBWsSI0TCQcZc5ALkEYckL5A5noWSBhfm2AecMAjbcRWV0pUTh0HE64TNf0mczcnnQyu/MilaFJCae1nw2fbz1DnVOxyGTlKeZft/Ff8x1BRssfACjTwQAAAABJRU5ErkJggg==) no-repeat center!important}.w2ui-icon.icon-delete{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJdSURBVDjLpZP7S1NhGMf9W7YfogSJboSEUVCY8zJ31trcps6zTI9bLGJpjp1hmkGNxVz4Q6ildtXKXzJNbJRaRmrXoeWx8tJOTWptnrNryre5YCYuI3rh+8vL+/m8PA/PkwIg5X+y5mJWrxfOUBXm91QZM6UluUmthntHqplxUml2lciF6wrmdHriI0Wx3xw2hAediLwZRWRkCPzdDswaSvGqkGCfq8VEUsEyPF1O8Qu3O7A09RbRvjuIttsRbT6HHzebsDjcB4/JgFFlNv9MnkmsEszodIIY7Oaut2OJcSF68Qx8dgv8tmqEL1gQaaARtp5A+N4NzB0lMXxon/uxbI8gIYjB9HytGYuusfiPIQcN71kjgnW6VeFOkgh3XcHLvAwMSDPohOADdYQJdF1FtLMZPmslvhZJk2ahkgRvq4HHUoWHRDqTEDDl2mDkfheiDgt8pw340/EocuClCuFvboQzb0cwIZgki4KhzlaE6w0InipbVzBfqoK/qRH94i0rgokSFeO11iBkp8EdV8cfJo0yD75aE2ZNRvSJ0lZKcBXLaUYmQrCzDT6tDN5SyRqYlWeDLZAg0H4JQ+Jt6M3atNLE10VSwQsN4Z6r0CBwqzXesHmV+BeoyAUri8EyMfi2FowXS5dhd7doo2DVII0V5BAjigP89GEVAtda8b2ehodU4rNaAW+dGfzlFkyo89GTlcrHYCLpKD+V7yeeHNzLjkp24Uu1Ed6G8/F8qjqGRzlbl2H2dzjpMg1KdwsHxOlmJ7GTeZC/nesXbeZ6c9OYnuxUc3fmBuFft/Ff8xMd0s65SXIb/gAAAABJRU5ErkJggg==) no-repeat center!important}.w2ui-icon.icon-save{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKfSURBVDjLpZPrS1NhHMf9O3bOdmwDCWREIYKEUHsVJBI7mg3FvCxL09290jZj2EyLMnJexkgpLbPUanNOberU5taUMnHZUULMvelCtWF0sW/n7MVMEiN64AsPD8/n83uucQDi/id/DBT4Dolypw/qsz0pTMbj/WHpiDgsdSUyUmeiPt2+V7SrIM+bSss8ySGdR4abQQv6lrui6VxsRonrGCS9VEjSQ9E7CtiqdOZ4UuTqnBHO1X7YXl6Daa4yGq7vWO1D40wVDtj4kWQbn94myPGkCDPdSesczE2sCZShwl8CzcwZ6NiUs6n2nYX99T1cnKqA2EKui6+TwphA5k4yqMayopU5mANV3lNQTBdCMVUA9VQh3GuDMHiVcLCS3J4jSLhCGmKCjBEx0xlshjXYhApfMZRP5CyYD+UkG08+xt+4wLVQZA1tzxthm2tEfD3JxARH7QkbD1ZuozaggdZbxK5kAIsf5qGaKMTY2lAU/rH5HW3PLsEwUYy+YCcERmIjJpDcpzb6l7th9KtQ69fi09ePUej9l7cx2DJbD7UrG3r3afQHOyCo+V3QQzE35pvQvnAZukk5zL5qRL59jsKbPzdheXoBZc4saFhBS6AO7V4zqCpiawuptwQG+UAa7Ct3UT0hh9p9EnXT5Vh6t4C22QaUDh6HwnECOmcO7K+6kW49DKqS2DrEZCtfuI+9GrNHg4fMHVSO5kE7nAPVkAxKBxcOzsajpS4Yh4ohUPPWKTUh3PaQEptIOr6BiJjcZXCwktaAGfrRIpwblqOV3YKdhfXOIvBLeREWpnd8ynsaSJoyESFphwTtfjN6X1jRO2+FxWtCWksqBApeiFIR9K6fiTpPiigDoadqCEag5YUFKl6Yrciw0VOlhOivv/Ff8wtn0KzlebrUYwAAAABJRU5ErkJggg==) no-repeat center!important}.w2ui-icon.icon-edit{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFUSURBVDjLrZM/SAJxGIZdWwuDlnCplkAEm1zkaIiGFFpyMIwGK5KGoK2lphDKkMDg3LLUSIJsSKhIi+684CokOtTiMizCGuzEU5K3vOEgKvtBDe/2Pc8H3x8NAM1fQlx4H9M3pcOWp6TXWmM8A7j0629v1nraiAVC0IrrwATKIgs5xyG5QiE+Z4iQdoeU2oAsnqCSO1NSTu+D9VhqRLD8nIB8F0Q2MgmJDyipCzjvYJkIfpN2UBLG8MpP4dxvQ3ZzGuyyBQ2H+AnOOCBd9aL6soh81A5hyYSGWyCFvxUcerqI4S+CvYVOFPMHxLAq8I3qdHVY5LbBhJzEsCrwutpRFBlUHy6wO2tEYtWAzLELPN2P03kjfj3luqDycV2F8AgefWbEnVqEHa2IznSD6BdsVDNStB0lfh0FPoQjdx8RrAqGzC0YprSgxzsUMOY2bf37N/6Ud1Vc9yYcH50CAAAAAElFTkSuQmCC) no-repeat center!important}.w2ui-icon.icon-bullet-black{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABlSURBVCjPY/jPgB8yDC4FilKKDfJXZa6KNwhKYVfQkPW/63/b/+T/XA1YFchd7fqf/j/2f+N/5qtYFUhe7fif9D/sf91/BuwKhBoS/jcBpcP/M2C3gluKrYHhKhA2MEgN2pDEDgEb0f5zlvXgVgAAAABJRU5ErkJggg==) no-repeat center!important}.w2ui-icon.icon-folder{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGrSURBVDjLxZO7ihRBFIa/6u0ZW7GHBUV0UQQTZzd3QdhMQxOfwMRXEANBMNQX0MzAzFAwEzHwARbNFDdwEd31Mj3X7a6uOr9BtzNjYjKBJ6nicP7v3KqcJFaxhBVtZUAK8OHlld2st7Xl3DJPVONP+zEUV4HqL5UDYHr5xvuQAjgl/Qs7TzvOOVAjxjlC+ePSwe6DfbVegLVuT4r14eTr6zvA8xSAoBLzx6pvj4l+DZIezuVkG9fY2H7YRQIMZIBwycmzH1/s3F8AapfIPNF3kQk7+kw9PWBy+IZOdg5Ug3mkAATy/t0usovzGeCUWTjCz0B+Sj0ekfdvkZ3abBv+U4GaCtJ1iEm6ANQJ6fEzrG/engcKw/wXQvEKxSEKQxRGKE7Izt+DSiwBJMUSm71rguMYhQKrBygOIRStf4TiFFRBvbRGKiQLWP29yRSHKBTtfdBmHs0BUpgvtgF4yRFR+NUKi0XZcYjCeCG2smkzLAHkbRBmP0/Uk26O5YnUActBp1GsAI+S5nRJJJal5K1aAMrq0d6Tm9uI6zjyf75dAe6tx/SsWeD//o2/Ab6IH3/h25pOAAAAAElFTkSuQmCC) no-repeat center!important}.w2ui-icon.icon-page{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAINSURBVBgZBcG/r55zGAfg6/4+z3va01NHlYgzEfE7MdCIGISFgS4Gk8ViYyM2Mdlsko4GSf8Do0FLRCIkghhYJA3aVBtEz3nP89wf11VJvPDepdd390+8Nso5nESBQoq0pfvXm9fzWf19453LF85vASqJlz748vInb517dIw6EyYBIIG49u+xi9/c9MdvR//99MPPZ7+4cP4IZhhTPbwzT2d+vGoaVRRp1rRliVvHq+cfvM3TD82+7mun0o/ceO7NT+/4/KOXjwZU1ekk0840bAZzMQ2mooqh0A72d5x/6sB9D5zYnff3PoYBoWBgFKPKqDKqjCpjKr//dcu9p489dra88cydps30KswACfNEKanSaxhlntjJ8Mv12Paie+vZ+0+oeSwwQ0Iw1xAR1CiFNJkGO4wu3ZMY1AAzBI0qSgmCNJsJUEOtJSMaCTBDLyQ0CknAGOgyTyFFiLI2awMzdEcSQgSAAKVUmAeNkxvWJWCGtVlDmgYQ0GFtgg4pNtOwbBcwQy/Rife/2yrRRVI0qYCEBly8Z+P4qMEMy7JaVw72N568e+iwhrXoECQkfH91kY7jwwXMsBx1L93ZruqrK6uuiAIdSnTIKKPLPFcvay8ww/Hh+ufeznTXu49v95IMoQG3784gYXdTqvRmqn/Wpa/ADFX58MW3L71SVU9ETgEIQQQIOOzub+fhIvwPRDgeVjWDahIAAAAASUVORK5CYII=) no-repeat center!important}.w2ui-lock{opacity:.15;filter:alpha(opacity=15);background-color:#333;position:absolute;z-index:1400;display:none}.w2ui-lock-msg{position:absolute;z-index:1400;width:200px;height:80px;padding:30px 8px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:13px;font-family:Verdana,Arial;opacity:.8;filter:alpha(opacity=15);background-color:#555;color:#fff;text-align:center;border-radius:5px;border:2px solid #444;display:none}.w2ui-lock-msg .w2ui-spinner{display:inline-block;width:24px;height:24px;margin:-3px 8px -7px -10px}.w2ui-form{position:relative;color:#000;background-color:#f5f6f7;border:1px solid silver;border-radius:3px;padding:0;overflow:hidden!important}.w2ui-form>div{position:absolute;overflow:hidden}.w2ui-form .w2ui-form-header{position:absolute;left:0;right:0;border-bottom:1px solid #99bbe8!important;overflow:hidden;color:#444;font-size:13px;text-align:center;padding:8px;background-image:-webkit-linear-gradient(#dae6f3,#c2d5ed);background-image:-moz-linear-gradient(#dae6f3,#c2d5ed);background-image:-ms-linear-gradient(#dae6f3,#c2d5ed);background-image:-o-linear-gradient(#dae6f3,#c2d5ed);background-image:linear-gradient(#dae6f3,#c2d5ed);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffdae6f3', endColorstr='#ffc2d5ed', GradientType=0);border-top-left-radius:3px;border-top-right-radius:3px}.w2ui-form .w2ui-form-toolbar{position:absolute;left:0;right:0;margin:0;padding:6px 3px;border-bottom:1px solid #d5d8d8}.w2ui-form .w2ui-form-tabs{margin:0;padding:0}.w2ui-form .w2ui-tabs{position:absolute;left:0;right:0;border-top-left-radius:3px;border-top-right-radius:3px;padding-top:5px!important;background-color:#fafafa}.w2ui-form .w2ui-tabs .w2ui-tab.active{background-color:#f5f6f7}.w2ui-form .w2ui-page{position:absolute;left:0;right:0;overflow:auto;padding:10px;border-left:1px solid inherit;border-right:1px solid inherit;background-color:inherit;border-radius:3px}.w2ui-form .w2ui-buttons{position:absolute;left:0;right:0;bottom:0;text-align:center;border-top:1px solid #d5d8d8;border-bottom:0 solid #d5d8d8;background-color:#fafafa;padding:15px 0!important;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.w2ui-form .w2ui-buttons input[type=button],.w2ui-form .w2ui-buttons button{width:80px;margin-right:5px}.w2ui-form input[type=checkbox]{margin-top:4px;margin-bottom:4px}.w2ui-group{background-color:#ebecef;margin:5px 0 10px;padding:10px 5px;border-top:1px solid #cedcea;border-bottom:1px solid #cedcea}.w2ui-label{float:left;margin-top:6px;margin-bottom:3px;width:120px;padding:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right;min-height:20px}.w2ui-label.w2ui-span1{width:20px;float:left}.w2ui-label.w2ui-span2{width:40px;float:left}.w2ui-label.w2ui-span3{width:60px;float:left}.w2ui-label.w2ui-span4{width:80px;float:left}.w2ui-label.w2ui-span5{width:100px;float:left}.w2ui-label.w2ui-span6{width:120px;float:left}.w2ui-label.w2ui-span7{width:140px;float:left}.w2ui-label.w2ui-span8{width:160px;float:left}.w2ui-label.w2ui-span9{width:180px;float:left}.w2ui-label.w2ui-span10{width:200px;float:left}.w2ui-field{margin-bottom:3px;margin-left:128px;padding:3px;min-height:20px}.w2ui-field.w2ui-span1{margin-left:28px;float:none}.w2ui-field.w2ui-span2{margin-left:48px;float:none}.w2ui-field.w2ui-span3{margin-left:68px;float:none}.w2ui-field.w2ui-span4{margin-left:88px;float:none}.w2ui-field.w2ui-span5{margin-left:108px;float:none}.w2ui-field.w2ui-span6{margin-left:128px;float:none}.w2ui-field.w2ui-span7{margin-left:148px;float:none}.w2ui-field.w2ui-span8{margin-left:168px;float:none}.w2ui-field.w2ui-span9{margin-left:188px;float:none}.w2ui-field.w2ui-span10{margin-left:208px;float:none}.w2ui-required{position:relative}.w2ui-required::before{content:'*';position:absolute;margin-top:5px;margin-left:-9px;color:red}.w2ui-error{border:1px solid #ffa8a8!important;background-color:#fff4eb!important}.w2ui-field-helper{position:absolute;display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.w2ui-field-helper .w2ui-field-up{position:absolute;top:0;padding:2px 3px}.w2ui-field-helper .w2ui-field-down{position:absolute;bottom:0;padding:2px 3px}.w2ui-field-helper .arrow-up:hover{border-bottom-color:#81C6FF}.w2ui-field-helper .arrow-down:hover{border-top-color:#81C6FF}.w2ui-field-helper .arrow-up{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:5px solid #777;font-size:0;line-height:0}.w2ui-field-helper .arrow-down{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #777;font-size:0;line-height:0}.w2ui-field-helper .arrow-left{width:0;height:0;border-bottom:4px solid transparent;border-top:4px solid transparent;border-right:5px solid #777;font-size:0;line-height:0}.w2ui-field-helper .arrow-right{width:0;height:0;border-bottom:4px solid transparent;border-top:4px solid transparent;border-left:5px solid #777;font-size:0;line-height:0}.w2ui-color{padding:5px;background-color:#fff;border-radius:3px}.w2ui-color>table{table-layout:fixed;width:160px}.w2ui-color>table td{width:20px;height:20px}.w2ui-color>table td div{cursor:pointer;display:inline-block;width:16px;height:17px;padding:1px 4px;border:1px solid transparent;color:#fff;text-shadow:0 0 2px #000}.w2ui-color>table td div:hover{outline:1px solid #666;border:1px solid #fff}.w2ui-calendar{position:absolute;z-index:1600;display:none;margin:3px 0 0 -2px;padding:0;border:1px solid #aaa;border-radius:4px;box-shadow:2px 2px 8px #bbb;line-height:108%}.w2ui-calendar .w2ui-calendar-title{padding:5px 1px 6px;border-top-left-radius:4px;border-top-right-radius:4px;background-image:-webkit-linear-gradient(#e6e6e6,#c2c4c4);background-image:-moz-linear-gradient(#e6e6e6,#c2c4c4);background-image:-ms-linear-gradient(#e6e6e6,#c2c4c4);background-image:-o-linear-gradient(#e6e6e6,#c2c4c4);background-image:linear-gradient(#e6e6e6,#c2c4c4);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffc2c4c4', GradientType=0);border-bottom:1px solid #999;color:#000;text-align:center;font-weight:700}.w2ui-calendar .w2ui-calendar-previous,.w2ui-calendar .w2ui-calendar-next{width:24px;height:20px;color:#666;border:1px solid transparent;border-radius:3px;padding:2px 3px 1px 2px;margin:-4px 0 0 0;cursor:default}.w2ui-calendar .w2ui-calendar-previous:hover,.w2ui-calendar .w2ui-calendar-next:hover{border:1px solid silver;background-color:#efefef}.w2ui-calendar .w2ui-calendar-previous{float:left}.w2ui-calendar .w2ui-calendar-next{float:right}.w2ui-calendar table.w2ui-calendar-days{border-bottom-left-radius:4px;border-bottom-right-radius:4px;padding:0}.w2ui-calendar table.w2ui-calendar-days td{border:1px solid #e8e8e8;color:#000;background-color:#f4f4fe;padding:5px;cursor:default;text-align:right}.w2ui-calendar table.w2ui-calendar-days td.w2ui-saturday,.w2ui-calendar table.w2ui-calendar-days td.w2ui-sunday{border:1px solid #e8e8e8;color:#c8493b;background-color:#f4f4fe}.w2ui-calendar table.w2ui-calendar-days td.w2ui-saturday:hover,.w2ui-calendar table.w2ui-calendar-days td.w2ui-sunday:hover{border:1px solid #aaa;color:#000;background-color:#ff0}.w2ui-calendar table.w2ui-calendar-days td.w2ui-today{border:1px solid #8cb067;color:#000;background-color:#e2f7cd}.w2ui-calendar table.w2ui-calendar-days td:hover{border:1px solid #aaa;color:#000;background-color:#ff0}.w2ui-calendar table.w2ui-calendar-days td.w2ui-blocked-date{text-decoration:line-through;border:1px solid #e8e8e8;color:gray;background-color:#e8e8e8}.w2ui-calendar table.w2ui-calendar-days td.w2ui-day-empty{border:1px solid #e8e8e8;background-color:#f4f4fe}.w2ui-calendar table.w2ui-calendar-days tr.w2ui-day-title td{border:1px solid #e8e8e8;color:gray;background-color:#e8e8e8;text-align:center;padding:5px}.w2ui-list{color:inherit;position:absolute;padding:0;margin:0;min-height:25px;overflow:auto;border:1px solid silver;border-radius:3px;font-size:6px;line-height:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;background-color:#fff}.w2ui-list input[type=text]{-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none}.w2ui-list ul{list-style-type:none;background-color:#000;margin:0;padding:0}.w2ui-list ul li{float:left;margin:2px 1px 0 2px;border-radius:3px;width:auto;padding:1px 5px;border:1px solid #88b0d6;background-color:#eff3f5;white-space:nowrap;cursor:default;font-family:verdana;font-size:11px;line-height:normal}.w2ui-list ul li:hover{background-color:#d0dbe1}.w2ui-list ul li:last-child{border-radius:0;border:1px solid transparent;background-color:transparent}.w2ui-list ul li:last-child input{padding:0;margin:0;outline:0;border:0}.w2ui-list ul li div{float:right;width:15px;height:16px;margin:-1px -3px 0 4px;border-radius:15px}.w2ui-list ul li div:hover{background-color:#D77F7F;color:#fff}.w2ui-list ul li div:before{position:relative;top:1px;left:4px;color:inherit;opacity:.6;text-shadow:inherit;content:'x'}.w2ui-list ul li input{width:10px;background-color:transparent}.w2ui-items{position:absolute;margin-top:6px;display:none;z-index:1600;background-color:#fff;border:3px solid #777;box-shadow:0 3px 8px #999;border-radius:4px;text-align:left}.w2ui-items:before{content:"";position:absolute;z-index:1601;width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid transparent;border-bottom-color:inherit;margin:-8px 0 0 5px}.w2ui-items .w2ui-items-list{border-radius:4px;padding:3px}.w2ui-items .w2ui-empty-list{padding:5px 2px;text-align:center;color:gray}.w2ui-items ul li{display:block;-webkit-transition:all .2s;-moz-transition:all .2s;-ms-transition:all .2s;-o-transition:all .2s;transition:all .2s;padding:5px;cursor:pointer}.w2ui-items ul li.w2ui-item-even{color:inherit;background-color:#fff}.w2ui-items ul li.w2ui-item-odd{color:inherit;background-color:#f3f6fa}.w2ui-items ul li.w2ui-item-group{color:#444;font-weight:700;background-color:#ECEDF0;border-bottom:1px solid #D3D2D4}.w2ui-items ul li.selected{color:inherit;background-color:#b6d5ff}.w2ui-upload{position:absolute;background-color:#fff;border:1px solid silver!important;border-radius:3px;text-align:center;overflow:auto}.w2ui-upload>span:first-child{pointer-events:none;margin:0;padding:0;font-size:14px!important;color:#999}.w2ui-upload.dragover{background-color:#D9FFD5;border:1px solid #93E07D}.w2ui-upload .file-list{margin:0;padding:0;margin-bottom:6px}.w2ui-upload .file-list li{padding:2px 5px;font-family:verdana;font-size:11px;line-height:normal;float:left;display:inline-block;border:1px solid #88b0d6;background-color:#eff3f5;border-radius:3px;margin:2px 0 2px 2px;text-align:left;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;cursor:default;width:auto;max-width:400px}.w2ui-upload .file-list li:hover{background-color:#d0dbe1}.w2ui-upload .file-list li>span.file-size{pointer-events:none;color:#777}.w2ui-upload .file-list li>span.file-name{pointer-events:none}.w2ui-upload .file-list li>div.file-delete{float:right;z-index:1;width:16px;height:16px;margin:-1px -4px 0 4px;border-radius:15px}.w2ui-upload .file-list li>div.file-delete:hover{background-color:#D77F7F;color:#fff}.w2ui-upload .file-list li>div.file-delete:before{position:relative;top:1px;left:5px;opacity:.6;color:inherit;text-shadow:inherit;content:'x'}.w2ui-layout{overflow:hidden!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.w2ui-layout *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.w2ui-layout>div{position:absolute;overflow:hidden;border:0;margin:0;padding:0;outline:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.w2ui-layout>div .w2ui-panel{display:none;position:absolute;z-index:120}.w2ui-layout>div .w2ui-panel .w2ui-panel-tabs{position:absolute;left:0;top:0;right:0;z-index:2;display:none;overflow:hidden;background-color:#fafafa;padding:4px 0}.w2ui-layout>div .w2ui-panel .w2ui-panel-tabs>.w2ui-tab.active{background-color:#f5f6f7}.w2ui-layout>div .w2ui-panel .w2ui-panel-toolbar{position:absolute;left:0;top:0;right:0;z-index:2;display:none;overflow:hidden;background-color:#fafafa;border-bottom:1px solid silver;padding:4px}.w2ui-layout>div .w2ui-panel .w2ui-panel-content{position:absolute;left:0;top:0;right:0;bottom:0;z-index:1;color:inherit;background-color:#f5f6f7}.w2ui-layout>div .w2ui-resizer{display:none;position:absolute;z-index:121;background-color:transparent}.w2ui-layout>div .w2ui-resizer:hover,.w2ui-layout>div .w2ui-resizer.active{background-color:#d7e4f2}.w2ui-grid{position:relative;border:1px solid silver;border-radius:2px;overflow:hidden!important}.w2ui-grid>div{position:absolute;overflow:hidden}.w2ui-grid .w2ui-grid-header{position:absolute;border-bottom:1px solid #99bbe8!important;height:28px;overflow:hidden;color:#444;font-size:13px;text-align:center;padding:7px;background-image:-webkit-linear-gradient(#dae6f3,#c2d5ed);background-image:-moz-linear-gradient(#dae6f3,#c2d5ed);background-image:-ms-linear-gradient(#dae6f3,#c2d5ed);background-image:-o-linear-gradient(#dae6f3,#c2d5ed);background-image:linear-gradient(#dae6f3,#c2d5ed);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffdae6f3', endColorstr='#ffc2d5ed', GradientType=0);border-top-left-radius:2px;border-top-right-radius:2px}.w2ui-grid .w2ui-grid-toolbar{position:absolute;border-bottom:1px solid silver;background-color:#dee0e4;height:38px;padding:7px 3px 4px;margin:0;box-shadow:0 1px 2px #ddd}.w2ui-grid .w2ui-toolbar-search{width:160px}.w2ui-grid .w2ui-toolbar-search .w2ui-search-all{outline:0;width:160px;border-radius:10px;line-height:100%;height:22px;border:1px solid #999;color:#000;background-color:#fff;padding:3px 18px 3px 23px;margin:0}.w2ui-grid .w2ui-toolbar-search .w2ui-search-down{position:absolute;margin-top:-7px;margin-left:6px}.w2ui-grid .w2ui-toolbar-search .w2ui-search-clear{position:absolute;width:16px;height:16px;margin-top:-8px;margin-left:-20px;border-radius:15px}.w2ui-grid .w2ui-toolbar-search .w2ui-search-clear:hover{background-color:#D77F7F;color:#fff}.w2ui-grid .w2ui-toolbar-search .w2ui-search-clear:before{position:relative;top:1px;left:5px;opacity:.6;color:inherit;text-shadow:inherit;content:'x'}.w2ui-grid .w2ui-grid-body{position:absolute;overflow:hidden;padding:0;background-color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.w2ui-grid .w2ui-grid-body input,.w2ui-grid .w2ui-grid-body select,.w2ui-grid .w2ui-grid-body textarea{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;-o-user-select:text;user-select:text}.w2ui-grid .w2ui-grid-body .w2ui-grid-columns{overflow:hidden;position:absolute;left:0;top:0;right:0;box-shadow:0 1px 4px #ddd;height:auto}.w2ui-grid .w2ui-grid-body .w2ui-grid-columns table{height:auto}.w2ui-grid .w2ui-grid-body .w2ui-grid-columns .w2ui-resizer{position:absolute;display:block;background-image:none;background-color:rgba(0,0,0,0);padding:0;margin:0;width:6px;height:12px;cursor:col-resize}.w2ui-grid .w2ui-grid-body .w2ui-grid-records{position:absolute;left:0;right:0;top:0;bottom:0}.w2ui-grid .w2ui-grid-body .w2ui-grid-records table tr.w2ui-odd{color:inherit;background-color:#fff}.w2ui-grid .w2ui-grid-body .w2ui-grid-records table tr.w2ui-odd:hover{color:inherit;background-color:#e6f0ff}.w2ui-grid .w2ui-grid-body .w2ui-grid-records table tr.w2ui-odd.w2ui-empty-record:hover{background-color:#fff}.w2ui-grid .w2ui-grid-body .w2ui-grid-records table tr.w2ui-even{color:inherit;background-color:#f3f6fa}.w2ui-grid .w2ui-grid-body .w2ui-grid-records table tr.w2ui-even:hover{color:inherit;background-color:#e6f0ff}.w2ui-grid .w2ui-grid-body .w2ui-grid-records table tr.w2ui-even.w2ui-empty-record:hover{background-color:#f3f6fa}.w2ui-grid .w2ui-grid-body .w2ui-grid-records table tr.w2ui-selected,.w2ui-grid .w2ui-grid-body .w2ui-grid-records table tr td.w2ui-selected{color:#000!important;background-color:#b6d5ff!important}.w2ui-grid .w2ui-grid-body .w2ui-grid-records .w2ui-expanded{background-color:#CCDCF0!important}.w2ui-grid .w2ui-grid-body .w2ui-grid-records .w2ui-expanded1{height:0;border-bottom:1px solid #b2bac0;background-color:#CCDCF0}.w2ui-grid .w2ui-grid-body .w2ui-grid-records .w2ui-expanded1>div{height:100%;margin:0;padding:0}.w2ui-grid .w2ui-grid-body .w2ui-grid-records .w2ui-expanded2{height:0;border-radius:0;border-bottom:1px solid #b2bac0}.w2ui-grid .w2ui-grid-body .w2ui-grid-records .w2ui-expanded2>div{height:0;border:0;transition:height .3s,opacity .3s}.w2ui-grid .w2ui-grid-body .w2ui-grid-records .w2ui-load-more{border-top:1px solid #d6d5d7;cursor:pointer}.w2ui-grid .w2ui-grid-body .w2ui-grid-records .w2ui-load-more>div{text-align:center;color:#777;background-color:rgba(233,237,243,.5);padding:10px 0 15px;border-top:1px solid #fff}.w2ui-grid .w2ui-grid-body .w2ui-grid-records .w2ui-load-more>div:hover{color:inherit;background-color:#e6f0ff}.w2ui-grid .w2ui-grid-body table{border-spacing:0;border-collapse:collapse;table-layout:fixed;width:1px}.w2ui-grid .w2ui-grid-body table .w2ui-head{margin:0;padding:0;border-right:1px solid #c5c5c5;border-bottom:1px solid #c5c5c5;color:#000;background-image:-webkit-linear-gradient(#f9f9f9,#e4e4e4);background-image:-moz-linear-gradient(#f9f9f9,#e4e4e4);background-image:-ms-linear-gradient(#f9f9f9,#e4e4e4);background-image:-o-linear-gradient(#f9f9f9,#e4e4e4);background-image:linear-gradient(#f9f9f9,#e4e4e4);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#ffe4e4e4', GradientType=0)}.w2ui-grid .w2ui-grid-body table .w2ui-head>div{padding:7px 3px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.w2ui-grid .w2ui-grid-body table td{border-right:1px solid #d6d5d7;border-bottom:0 solid #d6d5d7;cursor:default;overflow:hidden}.w2ui-grid .w2ui-grid-body table td.w2ui-grid-data{margin:0;padding:0}.w2ui-grid .w2ui-grid-body table td.w2ui-grid-data>div{padding:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.w2ui-grid .w2ui-grid-body table td.w2ui-grid-data>div.flexible-record{height:auto;overflow:visible;white-space:normal}.w2ui-grid .w2ui-grid-body table td:last-child{border-right:0}.w2ui-grid .w2ui-grid-body table .w2ui-col-number{width:34px;color:#777;background-color:rgba(233,237,243,.5)}.w2ui-grid .w2ui-grid-body table .w2ui-col-number div{padding:0 7px 0 3px;text-align:right}.w2ui-grid .w2ui-grid-body table .w2ui-col-select{width:26px}.w2ui-grid .w2ui-grid-body table .w2ui-col-select div{padding:0;text-align:center;overflow:hidden}.w2ui-grid .w2ui-grid-body table .w2ui-col-select div input[type=checkbox]{margin-top:2px;position:relative}.w2ui-grid .w2ui-grid-body table .w2ui-col-expand{width:26px}.w2ui-grid .w2ui-grid-body table .w2ui-col-expand div{padding:0;text-align:center;font-weight:700}.w2ui-grid .w2ui-grid-body div.w2ui-sort-up{background:url(data:image/png;base64,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) no-repeat center right!important;height:auto!important;width:100%;overflow:hidden}.w2ui-grid .w2ui-grid-body div.w2ui-sort-down{background:url(data:image/png;base64,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) no-repeat center right!important;height:auto!important;width:100%;overflow:hidden}.w2ui-grid .w2ui-grid-body .w2ui-col-group{text-align:center}.w2ui-grid .w2ui-changed{background:url(data:image/gif;base64,R0lGODlhCgAKAJEAALAABf///wAAAAAAACH5BAEAAAIALAAAAAAKAAoAAAIPlI8Hy8mbxIsSUnup3rQAADs=) no-repeat top right}.w2ui-grid .w2ui-editable{overflow:hidden;height:100%!important;margin:0!important;padding:0!important}.w2ui-grid .w2ui-editable input{border:0;border-radius:0;margin:0;padding:4px 3px;width:100%;height:100%}.w2ui-grid .w2ui-grid-summary{position:absolute;box-shadow:0 -1px 4px #aaa}.w2ui-grid .w2ui-grid-summary table{color:inherit}.w2ui-grid .w2ui-grid-summary table .w2ui-odd{background-color:#eef5eb}.w2ui-grid .w2ui-grid-summary table .w2ui-even{background-color:#f8fff5}.w2ui-grid .w2ui-grid-footer{position:absolute;margin:0;padding:0;text-align:center;height:24px;overflow:hidden;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;-o-user-select:text;user-select:text;box-shadow:0 -1px 4px #eee;color:#444;background-color:#f8f8f8;border-top:1px solid #ddd;border-bottom-left-radius:2px;border-bottom-right-radius:2px}.w2ui-grid .w2ui-grid-footer .w2ui-footer-left{float:left;padding-top:5px;padding-left:5px}.w2ui-grid .w2ui-grid-footer .w2ui-footer-right{float:right;padding-top:5px;padding-right:5px}.w2ui-grid .w2ui-grid-footer .w2ui-footer-center{padding:2px;text-align:center}.w2ui-grid .w2ui-grid-footer .w2ui-footer-center .w2ui-footer-nav{width:110px;margin:0 auto;padding:0;text-align:center}.w2ui-grid .w2ui-grid-footer .w2ui-footer-center .w2ui-footer-nav input[type=text]{padding:1px 2px 2px;border-radius:3px;width:40px;text-align:center}.w2ui-grid .w2ui-grid-footer .w2ui-footer-center .w2ui-footer-nav a.w2ui-footer-btn{display:inline-block;border-radius:3px;cursor:pointer;font-size:11px;line-height:16px;padding:1px 5px;width:30px;height:18px;margin-top:-1px;color:#000;background-color:transparent}.w2ui-grid .w2ui-grid-footer .w2ui-footer-center .w2ui-footer-nav a.w2ui-footer-btn:hover{color:#000;background-color:#aec8ff}.w2ui-ss .w2ui-grid-body .w2ui-grid-records table tr.w2ui-odd,.w2ui-ss .w2ui-grid-body .w2ui-grid-records table tr.w2ui-even,.w2ui-ss .w2ui-grid-body .w2ui-grid-records table tr.w2ui-odd:hover,.w2ui-ss .w2ui-grid-body .w2ui-grid-records table tr.w2ui-even:hover{background-color:inherit}.w2ui-ss .w2ui-grid-records table td{border-right-width:1px;border-bottom:1px solid #efefef}.w2ui-ss .w2ui-grid-records table tr:first-child td{border-bottom:0}.w2ui-ss .w2ui-grid-body .w2ui-grid-records table tr.w2ui-selected,.w2ui-ss .w2ui-grid-body .w2ui-grid-records table tr td.w2ui-selected{background-color:#EEF4FE!important}.w2ui-ss .w2ui-changed{background:inherit}.w2ui-ss .w2ui-grid-body .w2ui-selection{position:absolute;border:2px solid #6299DA;pointer-events:none}.w2ui-ss .w2ui-grid-body .w2ui-selection .w2ui-selection-resizer{cursor:crosshair;position:absolute;bottom:0;right:0;width:6px;height:6px;margin-right:-3px;margin-bottom:-3px;background-color:#457FC2;border:.5px solid #fff;outline:1px solid #fff;pointer-events:auto}.w2ui-overlay .w2ui-select-field{padding:8px 5px;cursor:default}.w2ui-overlay .w2ui-select-field table{font-size:11px;font-family:Verdana,Arial;border-spacing:0;border-collapse:border-collapse}.w2ui-overlay .w2ui-select-field table tr:hover{background-color:#b6d5ff}.w2ui-overlay .w2ui-select-field table td:nth-child(1){padding:3px 3px 3px 6px}.w2ui-overlay .w2ui-select-field table td:nth-child(1) input{margin:3px 2px 2px}.w2ui-overlay .w2ui-select-field table td:nth-child(2){padding:3px 15px 3px 3px}.w2ui-overlay .w2ui-col-on-off{padding:4px 0}.w2ui-overlay .w2ui-col-on-off table{border-spacing:0;border-collapse:border-collapse}.w2ui-overlay .w2ui-col-on-off table tr:hover{background-color:#b6d5ff}.w2ui-overlay .w2ui-col-on-off table td input[type=checkbox]{margin:3px 2px 2px}.w2ui-overlay .w2ui-col-on-off table td label{display:block;padding:3px 0;padding-right:10px}.w2ui-overlay .w2ui-col-on-off table td:first-child{padding:4px 0 4px 6px}.w2ui-overlay .w2ui-col-on-off table td:last-child{padding:4px 6px 4px 0}.w2ui-overlay .w2ui-grid-searches{text-align:left;padding:0;border-top:0;background-color:#f3f1d9}.w2ui-overlay .w2ui-grid-searches table{padding:4px;padding-top:8px;border-collapse:border-collapse}.w2ui-overlay .w2ui-grid-searches table td{padding:4px}.w2ui-overlay .w2ui-grid-searches table td.close-btn{width:20px;padding-right:20px}.w2ui-overlay .w2ui-grid-searches table td.close-btn input{width:25px!important}.w2ui-overlay .w2ui-grid-searches table td.caption{text-align:right;padding-right:5px;border-right:1px solid silver}.w2ui-overlay .w2ui-grid-searches table td.operator{text-align:left;padding:0 10px;padding-right:5px;border-right:1px solid silver}.w2ui-overlay .w2ui-grid-searches table td.value{padding-right:5px;padding-left:5px;background-color:#f7f6f0}.w2ui-overlay .w2ui-grid-searches table td.value input[type=text]{border-radius:3px;padding:3px;margin-right:3px;height:23px}.w2ui-overlay .w2ui-grid-searches table td.value select{padding:3px;margin-right:3px;height:23px}.w2ui-overlay .w2ui-grid-searches table td.actions{border-right:0;padding:20px 0 10px;text-align:center}.w2ui-overlay .w2ui-grid-searches table td input[type=button]{width:70px;margin:0 2px}.w2ui-popup{position:fixed;z-index:1600;overflow:hidden;font-family:Verdana,Arial;border-radius:6px;padding:0;margin:0;border:1px solid #777;background-color:#eee;box-shadow:0 0 25px #555}.w2ui-popup,.w2ui-popup *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.w2ui-popup .w2ui-msg-title{padding:6px;border-radius:6px 6px 0 0;background-image:-webkit-linear-gradient(#ececec,#dfdfdf);background-image:-moz-linear-gradient(#ececec,#dfdfdf);background-image:-ms-linear-gradient(#ececec,#dfdfdf);background-image:-o-linear-gradient(#ececec,#dfdfdf);background-image:linear-gradient(#ececec,#dfdfdf);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffececec', endColorstr='#ffdfdfdf', GradientType=0);border-bottom:2px solid #bfbfbf;position:absolute;overflow:hidden;height:32px;left:0;right:0;top:0;text-overflow:ellipsis;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:move;font-size:15px;color:#555;z-index:300}.w2ui-popup .w2ui-msg-button{float:right;width:18px;height:18px;cursor:pointer;overflow:hidden;padding:0;margin:0 3px 0 0;background:url(data:image/png;base64,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) no-repeat center left;background-position:0 0;color:transparent!important;border-radius:3px;border:1px solid transparent}.w2ui-popup .w2ui-msg-close{margin-top:0;background-position:-32px 0}.w2ui-popup .w2ui-msg-close:hover{background-color:#ccc;border:1px solid #aaa}.w2ui-popup .w2ui-msg-max{background-position:-16px 0}.w2ui-popup .w2ui-msg-max:hover{background-color:#ccc;border:1px solid #aaa}.w2ui-popup .w2ui-box1,.w2ui-popup .w2ui-box2{position:absolute;left:0;right:0;top:32px;bottom:35px;z-index:100}.w2ui-popup .w2ui-msg-body{font-size:13px;line-height:130%;padding:0 7px 7px;color:#000;background-color:#eee;position:absolute;overflow:auto;width:100%;height:100%}.w2ui-popup .w2ui-popup-message{position:absolute;z-index:250;background-color:#f9f9f9;border:1px solid #999;box-shadow:0 0 15px #aaa;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;border-top:0;border-radius:0 0 6px 6px;overflow:auto}.w2ui-popup .w2ui-msg-buttons{padding:8px;border-radius:0 0 6px 6px;border-top:1px solid #d5d8d8;background-color:#f1f1f1;text-align:center;position:absolute;overflow:hidden;height:42px;left:0;right:0;bottom:0;z-index:200}.w2ui-popup .w2ui-popup-button{width:70px;margin:0 5px}.w2ui-popup .w2ui-msg-no-title{border-top-left-radius:6px;border-top-right-radius:6px;top:0!important}.w2ui-popup .w2ui-msg-no-buttons{border-bottom-left-radius:6px;border-bottom-right-radius:6px;bottom:0!important}.w2ui-sidebar{cursor:default;overflow:hidden!important;background-color:#edf1f6!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.w2ui-sidebar *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.w2ui-sidebar>div{position:relative;overflow:hidden}.w2ui-sidebar .w2ui-sidebar-top{position:absolute;z-index:2;top:0;left:0;right:0}.w2ui-sidebar .w2ui-sidebar-bottom{position:absolute;z-index:2;bottom:0;left:0;right:0}.w2ui-sidebar .w2ui-sidebar-div{position:absolute;z-index:1;overflow:auto;top:0;bottom:0;left:0;right:0;padding:2px 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.w2ui-sidebar .w2ui-sidebar-div table{width:100%}.w2ui-sidebar .w2ui-sidebar-div .w2ui-node{background-image:-webkit-linear-gradient(#edf1f6,#edf1f6);background-image:-moz-linear-gradient(#edf1f6,#edf1f6);background-image:-ms-linear-gradient(#edf1f6,#edf1f6);background-image:-o-linear-gradient(#edf1f6,#edf1f6);background-image:linear-gradient(#edf1f6,#edf1f6);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffedf1f6', endColorstr='#ffedf1f6', GradientType=0);border-top:1px solid transparent;border-bottom:1px solid transparent;margin:0;padding:1px 0}.w2ui-sidebar .w2ui-sidebar-div .w2ui-node table{pointer-events:none}.w2ui-sidebar .w2ui-sidebar-div .w2ui-node .w2ui-node-caption,.w2ui-sidebar .w2ui-sidebar-div .w2ui-node .w2ui-node-image,.w2ui-sidebar .w2ui-sidebar-div .w2ui-node .w2ui-node-image>span,.w2ui-sidebar .w2ui-sidebar-div .w2ui-node td.w2ui-node-dots{color:#000;text-shadow:0 0 0 #fff;pointer-events:none}.w2ui-sidebar .w2ui-sidebar-div .w2ui-node .w2ui-node-caption:hover,.w2ui-sidebar .w2ui-sidebar-div .w2ui-node .w2ui-node-image:hover,.w2ui-sidebar .w2ui-sidebar-div .w2ui-node .w2ui-node-image>span:hover,.w2ui-sidebar .w2ui-sidebar-div .w2ui-node td.w2ui-node-dots:hover{color:inherit}.w2ui-sidebar .w2ui-sidebar-div .w2ui-node:hover{border-top:1px solid #f9f9f9;border-bottom:1px solid #f9f9f9;background-image:-webkit-linear-gradient(#d7e1ef,#d7e1ef);background-image:-moz-linear-gradient(#d7e1ef,#d7e1ef);background-image:-ms-linear-gradient(#d7e1ef,#d7e1ef);background-image:-o-linear-gradient(#d7e1ef,#d7e1ef);background-image:linear-gradient(#d7e1ef,#d7e1ef);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffd7e1ef', endColorstr='#ffd7e1ef', GradientType=0)}.w2ui-sidebar .w2ui-sidebar-div .w2ui-node .w2ui-node-image{width:22px;text-align:center;pointer-events:none}.w2ui-sidebar .w2ui-sidebar-div .w2ui-node .w2ui-node-image>span{color:#516173!important}.w2ui-sidebar .w2ui-sidebar-div .w2ui-selected,.w2ui-sidebar .w2ui-sidebar-div .w2ui-selected:hover{background-image:-webkit-linear-gradient(#69b1e0,#4a96d3);background-image:-moz-linear-gradient(#69b1e0,#4a96d3);background-image:-ms-linear-gradient(#69b1e0,#4a96d3);background-image:-o-linear-gradient(#69b1e0,#4a96d3);background-image:linear-gradient(#69b1e0,#4a96d3);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff69b1e0', endColorstr='#ff4a96d3', GradientType=0);border-top:1px solid #5295cd;border-bottom:1px solid #2661a6}.w2ui-sidebar .w2ui-sidebar-div .w2ui-selected .w2ui-node-caption,.w2ui-sidebar .w2ui-sidebar-div .w2ui-selected:hover .w2ui-node-caption,.w2ui-sidebar .w2ui-sidebar-div .w2ui-selected .w2ui-node-image,.w2ui-sidebar .w2ui-sidebar-div .w2ui-selected:hover .w2ui-node-image,.w2ui-sidebar .w2ui-sidebar-div .w2ui-selected .w2ui-node-image>span,.w2ui-sidebar .w2ui-sidebar-div .w2ui-selected:hover .w2ui-node-image>span,.w2ui-sidebar .w2ui-sidebar-div .w2ui-selected td.w2ui-node-dots,.w2ui-sidebar .w2ui-sidebar-div .w2ui-selected:hover td.w2ui-node-dots{color:#fff!important;text-shadow:1px 1px 2px #666!important}.w2ui-sidebar .w2ui-sidebar-div .w2ui-disabled,.w2ui-sidebar .w2ui-sidebar-div .w2ui-disabled:hover{background-image:-webkit-linear-gradient(#edf1f6,#edf1f6);background-image:-moz-linear-gradient(#edf1f6,#edf1f6);background-image:-ms-linear-gradient(#edf1f6,#edf1f6);background-image:-o-linear-gradient(#edf1f6,#edf1f6);background-image:linear-gradient(#edf1f6,#edf1f6);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ffedf1f6', endColorstr='#ffedf1f6', GradientType=0);border-top:1px solid transparent;border-bottom:1px solid transparent}.w2ui-sidebar .w2ui-sidebar-div .w2ui-disabled .w2ui-node-caption,.w2ui-sidebar .w2ui-sidebar-div .w2ui-disabled:hover .w2ui-node-caption,.w2ui-sidebar .w2ui-sidebar-div .w2ui-disabled .w2ui-node-image,.w2ui-sidebar .w2ui-sidebar-div .w2ui-disabled:hover .w2ui-node-image,.w2ui-sidebar .w2ui-sidebar-div .w2ui-disabled .w2ui-node-image>span,.w2ui-sidebar .w2ui-sidebar-div .w2ui-disabled:hover .w2ui-node-image>span,.w2ui-sidebar .w2ui-sidebar-div .w2ui-disabled td.w2ui-node-dots,.w2ui-sidebar .w2ui-sidebar-div .w2ui-disabled:hover td.w2ui-node-dots{opacity:.4;filter:alpha(opacity=15);color:#000!important;text-shadow:0 0 0 #fff!important}.w2ui-sidebar .w2ui-sidebar-div .w2ui-node-caption{white-space:nowrap;padding:5px 0 5px 3px;margin:1px 0 1px 22px;position:relative;z-index:1;font-size:12px}.w2ui-sidebar .w2ui-sidebar-div .w2ui-node-group{white-space:nowrap;overflow:hidden;padding:10px 0 10px 10px;margin:0;cursor:default;color:#868b92;background-color:transparent}.w2ui-sidebar .w2ui-sidebar-div .w2ui-node-group :nth-child(1){margin-right:10px;float:right;color:transparent}.w2ui-sidebar .w2ui-sidebar-div .w2ui-node-group :nth-child(2){font-weight:400;text-transform:uppercase}.w2ui-sidebar .w2ui-sidebar-div .w2ui-node-sub{overflow:hidden}.w2ui-sidebar .w2ui-sidebar-div td.w2ui-node-dots{width:18px;padding:0 0 1px 7px;text-align:center}.w2ui-sidebar .w2ui-sidebar-div td.w2ui-node-dots .w2ui-expand{width:16px;margin-top:-3px;pointer-events:auto}.w2ui-sidebar .w2ui-sidebar-div td.w2ui-node-data{padding:1px 1px 3px}.w2ui-sidebar .w2ui-sidebar-div td.w2ui-node-data .w2ui-node-image{padding:3px 0 0;float:left}.w2ui-sidebar .w2ui-sidebar-div td.w2ui-node-data .w2ui-node-image>span{font-size:16px;color:#000;text-shadow:0 0 0 #fff}.w2ui-sidebar .w2ui-sidebar-div td.w2ui-node-data .w2ui-node-image.w2ui-icon{margin-top:3px}.w2ui-sidebar .w2ui-sidebar-div td.w2ui-node-data .w2ui-node-count{float:right;border:1px solid #9da4af;border-radius:20px;width:auto;height:18px;padding:2px 7px;margin:3px 4px -2px 0;background-color:#e7f0fc;color:#667274;box-shadow:0 0 2px #fff;text-shadow:1px 1px 1px #e6e6e6;position:relative;z-index:2}.w2ui-tabs{cursor:default;overflow:hidden!important;background-color:#fafafa;padding:3px 0;padding-bottom:0!important}.w2ui-tabs table{border-bottom:1px solid silver;padding:0 7px}.w2ui-tabs .w2ui-tab{padding:6px 20px;text-align:center;color:#000;background-color:transparent;border:1px solid silver;border-bottom:1px solid silver;white-space:nowrap;margin:1px 1px -1px 0;border-top-left-radius:4px;border-top-right-radius:4px;cursor:default}.w2ui-tabs .w2ui-tab.active{color:#000;background-color:#fff;border:1px solid silver;border-bottom:1px solid transparent}.w2ui-tabs .w2ui-tab.closable{padding:6px 28px 6px 20px}.w2ui-tabs .w2ui-tab-close{color:#555;text-shadow:1px 1px 1px #bbb;float:right;margin:6px 4px 0 0;padding:0 0 0 5px;width:16px;height:16px;opacity:.9;border:0;border-top:3px solid transparent;border-radius:9px}.w2ui-tabs .w2ui-tab-close:hover{background-color:#D77F7F;color:#fff}.w2ui-tabs .w2ui-tab-close:before{position:relative;top:-2px;left:0;opacity:.6;color:inherit;text-shadow:inherit;content:'x'}.w2ui-toolbar{margin:0;padding:2px;outline:0;background-color:#efefef;overflow:hidden!important;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.w2ui-toolbar .disabled{opacity:.3;filter:alpha(opacity=15)}.w2ui-toolbar table{table-layout:auto!important}.w2ui-toolbar table td{border:0!important}.w2ui-toolbar table.w2ui-button{margin:0 1px;border-radius:4px;height:24px;border:1px solid transparent;background-color:transparent}.w2ui-toolbar table.w2ui-button .w2ui-tb-image{width:16px;height:16px;padding:0;margin:3px!important;border:0!important;text-align:center}.w2ui-toolbar table.w2ui-button .w2ui-tb-image>span{font-size:16px;color:#516173}.w2ui-toolbar table.w2ui-button .w2ui-tb-caption{color:#000;padding:0 4px 0 2px}.w2ui-toolbar table.w2ui-button .w2ui-tb-down{width:12px;height:24px;display:block;background:url(data:image/png;base64,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) no-repeat center right}.w2ui-toolbar table.w2ui-button.over{border:1px solid #ccc;background-color:#eee}.w2ui-toolbar table.w2ui-button.over .w2ui-tb-caption{color:#000}.w2ui-toolbar table.w2ui-button.down{border:1px solid #aaa;background-color:#ddd}.w2ui-toolbar table.w2ui-button.down .w2ui-tb-caption{color:#666}.w2ui-toolbar table.w2ui-button.checked{border:1px solid #aaa;background-color:#fff}.w2ui-toolbar table.w2ui-button.checked .w2ui-tb-caption{color:#000}.w2ui-toolbar table.w2ui-button table{height:17px;border-radius:4px;cursor:default}.w2ui-toolbar .w2ui-break{background-image:-webkit-linear-gradient(top,rgba(153,153,153,.09999999999999998) 0,#999 40%,#999 60%,rgba(153,153,153,.09999999999999998) 100%);background-image:-moz-linear-gradient(top,rgba(153,153,153,.09999999999999998) 0,#999 40%,#999 60%,rgba(153,153,153,.09999999999999998) 100%);background-image:-ms-linear-gradient(top,rgba(153,153,153,.09999999999999998) 0,#999 40%,#999 60%,rgba(153,153,153,.09999999999999998) 100%);background-image:-o-linear-gradient(top,rgba(153,153,153,.09999999999999998) 0,#999 40%,#999 60%,rgba(153,153,153,.09999999999999998) 100%);background-image:linear-gradient(top,rgba(153,153,153,.09999999999999998) 0,#999 40%,#999 60%,rgba(153,153,153,.09999999999999998) 100%);filter:progid:dximagetransform.microsoft.gradient(startColorstr='#ff999999', endColorstr='#ff999999', GradientType=0);width:1px!important;height:22px;padding:0;margin:0 6px}.w2ui-overlay table.w2ui-drop-menu{width:100%;color:#000;background-color:#fff;padding:5px 0;cursor:default}.w2ui-overlay table.w2ui-drop-menu td:first-child{padding:4px 0 4px 6px}.w2ui-overlay table.w2ui-drop-menu td:last-child{padding:10px 15px 10px 5px}.w2ui-overlay table.w2ui-drop-menu tr.w2ui-selected{background-color:#d7e4f2}.w2ui-overlay table.w2ui-drop-menu tr.w2ui-selected td{color:inherit}.w2ui-overlay table.w2ui-drop-menu .w2ui-tb-image>span{font-size:16px;color:#516173;display:inline-block;padding-top:4px}
diff --git a/editor.admin.class.php b/editor.admin.class.php
index d1b838d..302b4f8 100644
--- a/editor.admin.class.php
+++ b/editor.admin.class.php
@@ -1092,7 +1092,7 @@ public function page() {
'/>
@@ -1136,7 +1136,7 @@ public function page() {
@@ -1161,7 +1161,7 @@ public function page() {
@@ -1176,7 +1176,7 @@ public function page() {
@@ -1196,13 +1196,27 @@ public function page() {
+
+ >
+
+
+
+
+
+
+
>
@@ -1211,7 +1225,7 @@ public function page() {
@@ -1231,7 +1245,7 @@ public function page() {
@@ -1246,7 +1260,7 @@ public function page() {
@@ -1266,7 +1280,7 @@ public function page() {
@@ -1281,7 +1295,7 @@ public function page() {
@@ -1301,7 +1315,7 @@ public function page() {
diff --git a/js/sam-admin-edit.js b/js/sam-admin-edit.js
index 0ac1a8d..be69637 100644
--- a/js/sam-admin-edit.js
+++ b/js/sam-admin-edit.js
@@ -3,8 +3,6 @@
* @copyright 2010
*/
(function ($) {
-
-
$(document).ready(function () {
$("#title").tooltip({
track: true
@@ -73,11 +71,6 @@
showButtonPanel:true
});
- /*var availableCats = options.cats;
- var availableAuthors = options.authors;
- var availableTags = options.tags;
- var availableCustoms = options.customs;*/
-
// Advertiser ComboGrid
$('#adv_nick').combogrid({
url: ajaxurl+'?action=get_combo_data',
@@ -93,419 +86,126 @@
}
});
- // Posts Grid
- var
- postsGrid,
- pgData = options.posts.posts,
- pgOptions = {
- editable:true,
- enableCellNavigation:true,
- asyncEditorLoading:false,
- autoEdit:false
- },
- pgColumns = [],
- pgCheckboxSelector = new Slick.CheckboxSelectColumn({cssClass:"slick-cell-checkboxsel"});
-
- pgColumns.push(pgCheckboxSelector.getColumnDefinition());
- for (var i = 0; i < options.posts.columns.length; i++) {
- options.posts.columns[i].editor = Slick.Editors.Text;
- pgColumns.push(options.posts.columns[i]);
- }
-
- postsGrid = new Slick.Grid("#posts-grid", pgData, pgColumns, pgOptions);
- postsGrid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow:false}));
- postsGrid.registerPlugin(pgCheckboxSelector);
+ function buildGrid(name, grig, vn, vi, field, gc, gr) {
+ //grig = $('#' + name);
+ //vi = $('#' + vn);
+ var iVal = vi.val();
+ grig.w2grid({
+ name: name,
+ show: {selectColumn: true},
+ multiSelect: true,
+ columns: gc,
+ records: gr,
+ onSelect: function(event) {
+ event.onComplete = function() {
+ var out = '', recs = this.getSelection(), data;
+ for(var i = 0; i < recs.length; i++) {
+ var rec = this.get(recs[i]);
+ data = (field == 'id') ? rec.id : rec.slug;
+ out += (i == recs.length - 1) ? data : (data + ',');
+ }
+ vi.val(out);
+ }
+ },
+ onUnselect: function(event) {
+ event.onComplete = function() {
+ var out = '', recs = this.getSelection(), data;
+ for(var i = 0; i < recs.length; i++) {
+ var rec = this.get(recs[i]);
+ data = (field == 'id') ? rec.id : rec.slug;
+ out += (i == recs.length - 1) ? data : (data + ',');
+ }
+ vi.val(out);
+ }
+ }
+ });
- var postsSelectedItems = $('#view_id').val();
- if (postsSelectedItems != '') {
- var psi = postsSelectedItems.split(','), pgSI = [];
- $.each(pgData, function (i, pd) {
- $.each(psi, function (j, ed) {
- if (ed == pd.id) pgSI.push(i);
+ if(null != iVal && '' != iVal) {
+ var arr = iVal.split(',');
+
+ $.each(arr, function(i, val) {
+ $.each(gr, function(index, value) {
+ var iData = (field == 'id') ? value.id : value.slug;
+ if(iData == val) {
+ w2ui[name].select(value.recid);
+ return false;
+ }
+ else return true;
+ });
});
- });
- postsGrid.setSelectedRows(pgSI);
+ }
}
- postsGrid.onSelectedRowsChanged.subscribe(function (e) {
- var items = [], sr = postsGrid.getSelectedRows();
- $.each(sr, function (i, row) {
- items.push(pgData[row].id);
- });
- $('#view_id').val(items.join(','));
- });
+ // Custom Taxonomies Terms Grid
+ var cttGrid = $('#ctt-grid'), cttIn = $('#view-custom-tax-terms');
+ buildGrid('ctt-grid', cttGrid, 'view-custom-tax-terms', cttIn, 'slug', options.custom_taxes.columns, options.custom_taxes.taxes);
- // Users Grid
- var
- usersGrid,
- ugData = options.users.users,
- ugOptions = {
- editable:true,
- enableCellNavigation:true,
- asyncEditorLoading:false,
- autoEdit:false
- },
- ugColumns = [],
- ugCheckboxSelector = new Slick.CheckboxSelectColumn({cssClass:"slick-cell-checkboxsel"});
-
- ugColumns.push(ugCheckboxSelector.getColumnDefinition());
- for(i = 0; i < options.users.columns.length; i++) ugColumns.push(options.users.columns[i]);
-
- usersGrid = new Slick.Grid('#users-grid', ugData, ugColumns, ugOptions);
- usersGrid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow:false}));
- usersGrid.registerPlugin(ugCheckboxSelector);
-
- var usersSelectedItems = $('#x_view_users').val();
- if(usersSelectedItems != '') {
- var usi = usersSelectedItems.split(','), ugSI = [];
- $.each(ugData, function(i, ud) {
- $.each(usi, function(j, ed) {
- if(ed == ud.slug) ugSI.push(i);
- });
- });
- usersGrid.setSelectedRows(ugSI);
- }
+ // Posts Grid
+ var postsGrid = $('#posts-grid'), postsIn = $('#view_id');
+ buildGrid('posts-grid', postsGrid, 'view_id', postsIn, 'id', options.posts.columns, options.posts.posts);
- usersGrid.onSelectedRowsChanged.subscribe(function (e) {
- var items = [], sr = usersGrid.getSelectedRows();
- $.each(sr, function(i, row) {
- items.push(ugData[row].slug);
- });
- $('#x_view_users').val(items.join(','));
- return false;
- });
+ // Users Grid
+ var usersGrid = $('#users-grid'), usersIn = $('#x_view_users');
+ buildGrid('users-grid', usersGrid, 'x_view_users', usersIn, 'slug', options.users.columns, options.users.users);
// xPosts Grid
- var
- xpostsGrid,
- xpgColumns = [],
- xpgCheckboxSelector = new Slick.CheckboxSelectColumn({cssClass:"slick-cell-checkboxsel"});
-
- xpgColumns.push(xpgCheckboxSelector.getColumnDefinition());
- for (i = 0; i < options.posts.columns.length; i++) xpgColumns.push(options.posts.columns[i]);
-
- xpostsGrid = new Slick.Grid("#x-posts-grid", pgData, xpgColumns, pgOptions);
- xpostsGrid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow:false}));
- xpostsGrid.registerPlugin(xpgCheckboxSelector);
-
- var xpostsSelectedItems = $('#x_view_id').val();
- if (xpostsSelectedItems != '') {
- var xpsi = xpostsSelectedItems.split(','), xpgSI = [];
- $.each(pgData, function (i, pd) {
- $.each(xpsi, function (j, ed) {
- if (ed == pd.id) xpgSI.push(i);
- });
- });
- xpostsGrid.setSelectedRows(xpgSI);
- }
-
- xpostsGrid.onSelectedRowsChanged.subscribe(function (e) {
- var items = [], sr = xpostsGrid.getSelectedRows();
- $.each(sr, function (i, row) {
- items.push(pgData[row].id);
- });
- $('#x_view_id').val(items.join(','));
- });
+ var xpostsGrid = $('#x-posts-grid'), xpostsIn = $('#x_view_id');
+ buildGrid('x-posts-grid', xpostsGrid, 'x_view_id', xpostsIn, 'id', options.posts.columns, options.posts.posts);
// Categories Grid
- var
- catsGrid,
- cgData = options.cats.cats,
- cgOptions = {
- editable:true,
- enableCellNavigation:true,
- asyncEditorLoading:false,
- autoEdit:false
- },
- cgColumns = [],
- cgCheckboxSelector = new Slick.CheckboxSelectColumn({cssClass:"slick-cell-checkboxsel"});
-
- cgColumns.push(cgCheckboxSelector.getColumnDefinition());
- for (i = 0; i < options.cats.columns.length; i++) {
- options.cats.columns[i].editor = Slick.Editors.Text;
- cgColumns.push(options.cats.columns[i]);
- }
-
- catsGrid = new Slick.Grid("#cats-grid", cgData, cgColumns, cgOptions);
- catsGrid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow:false}));
- catsGrid.registerPlugin(cgCheckboxSelector);
-
- var catsSelectedItems = $('#view_cats').val();
- if (catsSelectedItems != '') {
- var csi = catsSelectedItems.split(','), cgSI = [];
- $.each(cgData, function (i, cd) {
- $.each(csi, function (j, ed) {
- if (ed == cd.slug) cgSI.push(i);
- });
- });
- catsGrid.setSelectedRows(cgSI);
- }
-
- catsGrid.onSelectedRowsChanged.subscribe(function (e) {
- var items = [], sr = catsGrid.getSelectedRows();
- $.each(sr, function (i, row) {
- items.push(cgData[row].slug);
- });
- $('#view_cats').val(items.join(','));
- });
+ var catsGrid = $('#cats-grid'), catsIn = $('#view_cats');
+ buildGrid('cats-grid', catsGrid, 'view_cats', catsIn, 'slug', options.cats.columns, options.cats.cats);
// xCats Grid
- var
- xcatsGrid,
- xcgColumns = [],
- xcgCheckboxSelector = new Slick.CheckboxSelectColumn({cssClass:"slick-cell-checkboxsel"});
-
- xcgColumns.push(xcgCheckboxSelector.getColumnDefinition());
- for (i = 0; i < options.cats.columns.length; i++) xcgColumns.push(options.cats.columns[i]);
-
- xcatsGrid = new Slick.Grid("#x-cats-grid", cgData, xcgColumns, cgOptions);
- xcatsGrid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow:false}));
- xcatsGrid.registerPlugin(xcgCheckboxSelector);
-
- var xcatsSelectedItems = $('#x_view_cats').val();
- if (xcatsSelectedItems != '') {
- var xcsi = xcatsSelectedItems.split(','), xcgSI = [];
- $.each(cgData, function (i, cd) {
- $.each(xcsi, function (j, ed) {
- if (ed == cd.slug) xcgSI.push(i);
- });
- });
- xcatsGrid.setSelectedRows(xcgSI);
- }
-
- xcatsGrid.onSelectedRowsChanged.subscribe(function (e) {
- var items = [], sr = xcatsGrid.getSelectedRows();
- $.each(sr, function (i, row) {
- items.push(cgData[row].slug);
- });
- $('#x_view_cats').val(items.join(','));
- });
+ var xcatsGrid = $('#x-cats-grid'), xcatsIn = $('#x_view_cats');
+ buildGrid('x-cats-grid', xcatsGrid, 'x_view_cats', xcatsIn, 'slug', options.cats.columns, options.cats.cats);
// Auth Grid
- var
- authGrid,
- agData = options.authors.authors,
- agOptions = {
- editable:true,
- enableCellNavigation:true,
- asyncEditorLoading:false,
- autoEdit:false
- },
- agColumns = [],
- agCheckboxSelector = new Slick.CheckboxSelectColumn({cssClass:"slick-cell-checkboxsel"});
-
- agColumns.push(agCheckboxSelector.getColumnDefinition());
- for (i = 0; i < options.authors.columns.length; i++) {
- options.authors.columns[i].editor = Slick.Editors.Text;
- agColumns.push(options.authors.columns[i]);
- }
-
- authGrid = new Slick.Grid("#auth-grid", agData, agColumns, agOptions);
- authGrid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow:false}));
- authGrid.registerPlugin(agCheckboxSelector);
-
- var authSelectedItems = $('#view_authors').val();
- if (authSelectedItems != '') {
- var asi = authSelectedItems.split(','), agSI = [];
- $.each(agData, function (i, cd) {
- $.each(asi, function (j, ed) {
- if (ed == cd.slug) agSI.push(i);
- });
- });
- authGrid.setSelectedRows(agSI);
- }
-
- authGrid.onSelectedRowsChanged.subscribe(function (e) {
- var items = [], sr = authGrid.getSelectedRows();
- $.each(sr, function (i, row) {
- items.push(agData[row].slug);
- });
- $('#view_authors').val(items.join(','));
- });
+ var authGrid = $('#auth-grid'), authIn = $('#view_authors');
+ buildGrid('auth-grid', authGrid, 'view_authors', authIn, 'slug', options.authors.columns, options.authors.authors);
// xauth Grid
- var
- xauthGrid,
- xagColumns = [],
- xagCheckboxSelector = new Slick.CheckboxSelectColumn({cssClass:"slick-cell-checkboxsel"});
-
- xagColumns.push(xagCheckboxSelector.getColumnDefinition());
- for (i = 0; i < options.authors.columns.length; i++) xagColumns.push(options.authors.columns[i]);
-
- xauthGrid = new Slick.Grid("#x-auth-grid", agData, xagColumns, agOptions);
- xauthGrid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow:false}));
- xauthGrid.registerPlugin(xagCheckboxSelector);
-
- var xauthSelectedItems = $('#x_view_authors').val();
- if (xauthSelectedItems != '') {
- var xasi = xauthSelectedItems.split(','), xagSI = [];
- $.each(agData, function (i, cd) {
- $.each(xasi, function (j, ed) {
- if (ed == cd.slug) xagSI.push(i);
- });
- });
- xauthGrid.setSelectedRows(xagSI);
- }
-
- xauthGrid.onSelectedRowsChanged.subscribe(function (e) {
- var items = [], sr = xauthGrid.getSelectedRows();
- $.each(sr, function (i, row) {
- items.push(agData[row].slug);
- });
- $('#x_view_authors').val(items.join(','));
- });
+ var xauthGrid = $('#x-auth-grid'), xauthIn = $('#x_view_authors');
+ buildGrid('x-auth-grid', xauthGrid, 'x_view_authors', xauthIn, 'slug', options.authors.columns, options.authors.authors);
// Tags Grid
- var
- tagsGrid,
- tgData = options.tags.tags,
- tgOptions = {
- editable:true,
- enableCellNavigation:true,
- asyncEditorLoading:false,
- autoEdit:false
- },
- tgColumns = [],
- tgCheckboxSelector = new Slick.CheckboxSelectColumn({cssClass:"slick-cell-checkboxsel"});
-
- tgColumns.push(tgCheckboxSelector.getColumnDefinition());
- for (i = 0; i < options.tags.columns.length; i++) {
- options.tags.columns[i].editor = Slick.Editors.Text;
- tgColumns.push(options.tags.columns[i]);
- }
-
- tagsGrid = new Slick.Grid("#tags-grid", tgData, tgColumns, tgOptions);
- tagsGrid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow:false}));
- tagsGrid.registerPlugin(tgCheckboxSelector);
-
- var tagsSelectedItems = $('#view_tags').val();
- if (tagsSelectedItems != '') {
- var tsi = tagsSelectedItems.split(','), tgSI = [];
- $.each(tgData, function (i, cd) {
- $.each(tsi, function (j, ed) {
- if (ed == cd.slug) tgSI.push(i);
- });
- });
- tagsGrid.setSelectedRows(tgSI);
- }
-
- tagsGrid.onSelectedRowsChanged.subscribe(function (e) {
- var items = [], sr = tagsGrid.getSelectedRows();
- $.each(sr, function (i, row) {
- items.push(tgData[row].slug);
- });
- $('#view_tags').val(items.join(','));
- });
+ var tagsGrid = $('#tags-grid'), tagsIn = $('#view_tags');
+ buildGrid('tags-grid', tagsGrid, 'view_tags', tagsIn, 'slug', options.tags.columns, options.tags.tags);
// xTags Grid
- var
- xtagsGrid,
- xtgColumns = [],
- xtgCheckboxSelector = new Slick.CheckboxSelectColumn({cssClass:"slick-cell-checkboxsel"});
-
- xtgColumns.push(xtgCheckboxSelector.getColumnDefinition());
- for (i = 0; i < options.tags.columns.length; i++) xtgColumns.push(options.tags.columns[i]);
-
- xtagsGrid = new Slick.Grid("#x-tags-grid", tgData, xtgColumns, tgOptions);
- xtagsGrid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow:false}));
- xtagsGrid.registerPlugin(xtgCheckboxSelector);
-
- var xtagsSelectedItems = $('#x_view_tags').val();
- if (xtagsSelectedItems != '') {
- var xtsi = xtagsSelectedItems.split(','), xtgSI = [];
- $.each(tgData, function (i, cd) {
- $.each(xtsi, function (j, ed) {
- if (ed == cd.slug) xtgSI.push(i);
- });
- });
- xtagsGrid.setSelectedRows(xtgSI);
- }
-
- xtagsGrid.onSelectedRowsChanged.subscribe(function (e) {
- var items = [], sr = xtagsGrid.getSelectedRows();
- $.each(sr, function (i, row) {
- items.push(tgData[row].slug);
- });
- $('#x_view_tags').val(items.join(','));
- });
+ var xtagsGrid = $('#x-tags-grid'), xtagsIn = $('#x_view_tags');
+ buildGrid('x-tags-grid', xtagsGrid, 'x_view_tags', xtagsIn, 'slug', options.tags.columns, options.tags.tags);
// Customs Grid
- var
- custGrid,
- cugData = options.customs.customs,
- cugOptions = {
- editable:true,
- enableCellNavigation:true,
- asyncEditorLoading:false,
- autoEdit:false
- },
- cugColumns = [],
- cugCheckboxSelector = new Slick.CheckboxSelectColumn({cssClass:"slick-cell-checkboxsel"});
-
- cugColumns.push(cugCheckboxSelector.getColumnDefinition());
- for (i = 0; i < options.customs.columns.length; i++) {
- options.customs.columns[i].editor = Slick.Editors.Text;
- cugColumns.push(options.customs.columns[i]);
- }
-
- custGrid = new Slick.Grid("#cust-grid", cugData, cugColumns, cugOptions);
- custGrid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow:false}));
- custGrid.registerPlugin(cugCheckboxSelector);
-
- var custSelectedItems = $('#view_custom').val();
- if (custSelectedItems != '') {
- var cusi = custSelectedItems.split(','), cugSI = [];
- $.each(cugData, function (i, cd) {
- $.each(cusi, function (j, ed) {
- if (ed == cd.slug) cugSI.push(i);
- });
- });
- custGrid.setSelectedRows(cugSI);
- }
-
- custGrid.onSelectedRowsChanged.subscribe(function (e) {
- var items = [], sr = custGrid.getSelectedRows();
- $.each(sr, function (i, row) {
- items.push(cugData[row].slug);
- });
- $('#view_custom').val(items.join(','));
- });
+ var custGrid = $('#cust-grid'), custIn = $('#view_custom');
+ buildGrid('cust-grid', custGrid, 'view_custom', custIn, 'slug', options.customs.columns, options.customs.customs);
// xCustoms Grid
- var
- xcustGrid,
- xcugColumns = [],
- xcugCheckboxSelector = new Slick.CheckboxSelectColumn({cssClass:"slick-cell-checkboxsel"});
-
- xcugColumns.push(xcugCheckboxSelector.getColumnDefinition());
- for (i = 0; i < options.customs.columns.length; i++) xcugColumns.push(options.customs.columns[i]);
-
- xcustGrid = new Slick.Grid("#x-cust-grid", cugData, xcugColumns, cugOptions);
- xcustGrid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow:false}));
- xcustGrid.registerPlugin(xcugCheckboxSelector);
-
- var xcustSelectedItems = $('#x_view_custom').val();
- if (xcustSelectedItems != '') {
- var xcusi = xcustSelectedItems.split(','), xcugSI = [];
- $.each(cugData, function (i, cd) {
- $.each(xcusi, function (j, ed) {
- if (ed == cd.slug) xcugSI.push(i);
- });
- });
- xcustGrid.setSelectedRows(xcugSI);
- }
-
- xcustGrid.onSelectedRowsChanged.subscribe(function (e) {
- var items = [], sr = xcustGrid.getSelectedRows();
- $.each(sr, function (i, row) {
- items.push(cugData[row].slug);
- });
- $('#x_view_custom').val(items.join(','));
+ var xcustGrid = $('#x-cust-grid'), xcustIn = $('#x_view_custom');
+ buildGrid('x-cust-grid', xcustGrid, 'x_view_custom', xcustIn, 'slug', options.customs.columns, options.customs.customs);
+
+ $('#tabs').tabs({
+ activate: function( event, ui ) {
+ var el = ui.newPanel[0].id;
+ if(el == 'tabs-1') {
+ postsGrid.w2render('posts-grid');
+ }
+ if(el == 'tabs-2') {
+ if($('#rc-ctt').is(':visible')) cttGrid.w2render('ctt-grid');
+ if($('#rc-xid').is(':visible')) xpostsGrid.w2render('x-posts-grid');
+ if($('#x-view-users').is(':visible')) usersGrid.w2render('users-grid');
+ if($('#rc-ac').is(':visible')) catsGrid.w2render('cats-grid');
+ if($('#rc-xc').is(':visible')) xcatsGrid.w2render('x-cats-grid');
+ if($('#rc-au').is(':visible')) authGrid.w2render('auth-grid');
+ if($('#rc-xa').is(':visible')) xauthGrid.w2render('x-auth-grid');
+ if($('#rc-at').is(':visible')) tagsGrid.w2render('tags-grid');
+ if($('#rc-xt').is(':visible')) xtagsGrid.w2render('x-tags-grid');
+ if($('#rc-cu').is(':visible')) custGrid.w2render('cust-grid');
+ if($('#rc-xu').is(':visible')) xcustGrid.w2render('x-cust-grid');
+ }
+ }
});
-
- $('#tabs').tabs();
-
$("#add-file-button").click(function () {
var curFile = options.url + $("select#files_list option:selected").val();
$("#ad_img").val(curFile);
@@ -536,8 +236,9 @@
case '2':
if ($('#rc-vt0').is(':visible')) $("#rc-vt0").hide('blind', {direction:'vertical'}, 500);
if ($('#rc-vt2').is(':hidden')) {
- $("#rc-vt2").show('blind', {direction:'vertical'}, 500);
- postsGrid.invalidate();
+ $("#rc-vt2").show('blind', {direction:'vertical'}, 500, function() {
+ postsGrid.w2render('posts-grid');
+ });
}
}
});
@@ -548,17 +249,26 @@
if($('#custom-users').is(':visible')) $('#custom-users').hide('blind', {direction:'vertical'}, 500);
}
else {
- if($('#custom-users').is(':hidden')) $('#custom-users').show('blind', {direction:'vertical'}, 500);
+ if($('#custom-users').is(':hidden'))
+ $('#custom-users').show('blind', {direction:'vertical'}, 500, function() {
+ if($('#x-view-users').is(':visible')) usersGrid.w2render('users-grid');
+ });
}
});
$("#ad_users_reg").click(function() {
- if($('#ad_users_reg').is(':checked')) $('#x-reg-users').show('blind', {direction:'vertical'}, 500);
+ if($('#ad_users_reg').is(':checked'))
+ $('#x-reg-users').show('blind', {direction:'vertical'}, 500, function() {
+ if($('#x-view-users').is(':visible')) usersGrid.w2render('users-grid');
+ });
else $('#x-reg-users').hide('blind', {direction:'vertical'}, 500);
});
$('#x_ad_users').click(function() {
- if($('#x_ad_users').is(':checked')) $('#x-view-users').show('blind', {direction:'vertical'}, 500);
+ if($('#x_ad_users').is(':checked'))
+ $('#x-view-users').show('blind', {direction:'vertical'}, 500, function() {
+ usersGrid.w2render('users-grid');
+ });
else $('#x-view-users').hide('blind', {direction:'vertical'}, 500);
});
@@ -569,15 +279,18 @@
$('#x_id').click(function () {
if ($('#x_id').is(':checked')) {
- $('#rc-xid').show('blind', {direction:'vertical'}, 500);
- xpostsGrid.invalidate();
+ $('#rc-xid').show('blind', {direction:'vertical'}, 500, function() {
+ xpostsGrid.w2render('x-posts-grid');
+ });
}
else $('#rc-xid').hide('blind', {direction:'vertical'}, 500);
});
$('#ad_cats').click(function () {
if ($('#ad_cats').is(':checked')) {
- $('#rc-ac').show('blind', {direction:'vertical'}, 500);
+ $('#rc-ac').show('blind', {direction:'vertical'}, 500, function() {
+ catsGrid.w2render('cats-grid');
+ });
$('#acw').show('blind', {direction:'vertical'}, 500);
}
else {
@@ -587,13 +300,26 @@
});
$('#x_cats').click(function () {
- if ($('#x_cats').is(':checked')) $('#rc-xc').show('blind', {direction:'vertical'}, 500);
+ if ($('#x_cats').is(':checked'))
+ $('#rc-xc').show('blind', {direction:'vertical'}, 500, function() {
+ xcatsGrid.w2render('x-cats-grid');
+ });
else $('#rc-xc').hide('blind', {direction:'vertical'}, 500);
});
+ $('#ad_custom_tax_terms').click(function() {
+ if($('#ad_custom_tax_terms').is(':checked'))
+ $('#rc-ctt').show('blind', {direction: 'vertical'}, 500, function() {
+ cttGrid.w2render('ctt-grid');
+ });
+ else $('#rc-ctt').hide('blind', {direction:'vertical'}, 500);
+ });
+
$('#ad_authors').click(function () {
if ($('#ad_authors').is(':checked')) {
- $('#rc-au').show('blind', {direction:'vertical'}, 500);
+ $('#rc-au').show('blind', {direction:'vertical'}, 500, function() {
+ authGrid.w2render('auth-grid');
+ });
$('#aaw').show('blind', {direction:'vertical'}, 500);
}
else {
@@ -603,13 +329,18 @@
});
$('#x_authors').click(function () {
- if ($('#x_authors').is(':checked')) $('#rc-xa').show('blind', {direction:'vertical'}, 500);
+ if ($('#x_authors').is(':checked'))
+ $('#rc-xa').show('blind', {direction:'vertical'}, 500, function() {
+ xauthGrid.w2render('x-auth-grid');
+ });
else $('#rc-xa').hide('blind', {direction:'vertical'}, 500);
});
$('#ad_tags').click(function () {
if ($('#ad_tags').is(':checked')) {
- $('#rc-at').show('blind', {direction:'vertical'}, 500);
+ $('#rc-at').show('blind', {direction:'vertical'}, 500, function() {
+ tagsGrid.w2render('tags-grid');
+ });
$('#atw').show('blind', {direction:'vertical'}, 500);
}
else {
@@ -619,13 +350,18 @@
});
$('#x_tags').click(function () {
- if ($('#x_tags').is(':checked')) $('#rc-xt').show('blind', {direction:'vertical'}, 500);
+ if ($('#x_tags').is(':checked'))
+ $('#rc-xt').show('blind', {direction:'vertical'}, 500, function() {
+ xtagsGrid.w2render('x-tags-grid');
+ });
else $('#rc-xt').hide('blind', {direction:'vertical'}, 500);
});
$('#ad_custom').click(function () {
if ($('#ad_custom').is(':checked')) {
- $('#rc-cu').show('blind', {direction:'vertical'}, 500);
+ $('#rc-cu').show('blind', {direction:'vertical'}, 500, function() {
+ custGrid.w2render('cust-grid');
+ });
$('#cuw').show('blind', {direction:'vertical'}, 500);
}
else {
@@ -635,7 +371,10 @@
});
$('#x_custom').click(function () {
- if ($('#x_custom').is(':checked')) $('#rc-xu').show('blind', {direction:'vertical'}, 500);
+ if ($('#x_custom').is(':checked'))
+ $('#rc-xu').show('blind', {direction:'vertical'}, 500, function() {
+ xcustGrid.w2render('x-cust-grid');
+ });
else $('#rc-xu').hide('blind', {direction:'vertical'}, 500);
});
diff --git a/js/sam-admin-edit.min.js b/js/sam-admin-edit.min.js
index 8107b88..1827d2e 100644
--- a/js/sam-admin-edit.min.js
+++ b/js/sam-admin-edit.min.js
@@ -1,5 +1,5 @@
/**
* @author minimus
- * @copyright 2010 - 2012
+ * @copyright 2010 - 2013
*/
-(function($){$(document).ready(function(){var options=$.parseJSON($.ajax({url:ajaxurl,data:{action:'get_strings'},async:false,dataType:'jsonp'}).responseText);var btnUpload=$("#upload-file-button");var status=$("#uploading");var srcHelp=$("#uploading-help");var loadImg=$('#load_img');var fileExt='';var fu=new AjaxUpload(btnUpload,{action:ajaxurl,name:'uploadfile',data:{action:'upload_ad_image'},onSubmit:function(file,ext){if(!(ext&&/^(jpg|png|jpeg|gif|swf)$/.test(ext))){status.text(options.status);return false}loadImg.show();status.text(options.uploading)},onComplete:function(file,response){status.text('');loadImg.hide();$('
').appendTo(srcHelp);if(response=="success"){$("#files").text(options.file+' '+file+' '+options.uploaded).addClass('updated').delay(3000).fadeOut(1000,function(){$(this).remove()});if($('#editor_mode').val()=='item')$("#ad_img").val(options.url+file);if($('#editor_mode').val()=='place')$("#patch_img").val(options.url+file)}else{$('#files').text(file+' '+response).addClass('error').delay(3000).fadeOut(1000,function(){$(this).remove()})}}});if($('#editor_mode').val()=='item'){$("#ad_start_date, #ad_end_date").datepicker({dateFormat:'yy-mm-dd',showButtonPanel:true});$('#adv_nick').combogrid({url:ajaxurl+'?action=get_combo_data',datatype:"json",munit:'px',alternate:true,colModel:options.users.colModel,select:function(event,ui){$('#adv_nick').val(ui.item.slug);$('#adv_name').val(ui.item.title);$('#adv_mail').val(ui.item.email);return false}});var postsGrid,pgData=options.posts.posts,pgOptions={editable:true,enableCellNavigation:true,asyncEditorLoading:false,autoEdit:false},pgColumns=[],pgCheckboxSelector=new Slick.CheckboxSelectColumn({cssClass:"slick-cell-checkboxsel"});pgColumns.push(pgCheckboxSelector.getColumnDefinition());for(var i=0;i').appendTo(ht),r=="success"?(n("#files").text(t.file+" "+i+" "+t.uploaded).addClass("updated").delay(3e3).fadeOut(1e3,function(){n(this).remove()}),n("#editor_mode").val()=="item"&&n("#ad_img").val(t.url+i),n("#editor_mode").val()=="place"&&n("#patch_img").val(t.url+i)):n("#files").text(i+" "+r).addClass("error").delay(3e3).fadeOut(1e3,function(){n(this).remove()})}});if(n("#editor_mode").val()=="item"){r=samPointer.ads,r.pointer="ads",n("#ad_start_date, #ad_end_date").datepicker({dateFormat:"yy-mm-dd",showButtonPanel:!0}),n("#adv_nick").combogrid({url:ajaxurl+"?action=get_combo_data",datatype:"json",munit:"px",alternate:!0,colModel:t.users.colModel,select:function(t,i){return n("#adv_nick").val(i.item.slug),n("#adv_name").val(i.item.title),n("#adv_mail").val(i.item.email),!1}});function i(t,i,r,u,f,e,o){var s=u.val(),h;i.w2grid({name:t,show:{selectColumn:!0},multiSelect:!0,columns:e,records:o,onSelect:function(n){n.onComplete=function(){for(var e="",r=this.getSelection(),i,t,n=0;n"+r.title+""+r.content+"
",position:"top",close:function(){n.ajax({url:ajaxurl,data:{action:"close_pointer",pointer:r.pointer},async:!0})}}).pointer("open"),n("#is_singular").click(function(){n("#is_singular").is(":checked")&&n("#is_single, #is_page, #is_attachment, #is_posttype").attr("checked",!0)}),n("#is_single, #is_page, #is_attachment, #is_posttype").click(function(){!n("#is_singular").is(":checked")||n("#is_single").is(":checked")&&n("#is_page").is(":checked")&&n("#is_attachment").is(":checked")&&n("#is_posttype").is(":checked")?!n("#is_singular").is(":checked")&&n("#is_single").is(":checked")&&n("#is_posttype").is(":checked")&&n("#is_page").is(":checked")&&n("#is_attachment").is(":checked")&&n("#is_singular").attr("checked",!0):n("#is_singular").attr("checked",!1)}),n("#is_archive").click(function(){n("#is_archive").is(":checked")&&n("#is_tax, #is_category, #is_tag, #is_author, #is_date, #is_posttype_archive").attr("checked",!0)}),n("#is_tax, #is_category, #is_tag, #is_author, #is_date, #is_posttype_archive").click(function(){!n("#is_archive").is(":checked")||n("#is_tax").is(":checked")&&n("#is_category").is(":checked")&&n("#is_posttype_archive").is(":checked")&&n("#is_tag").is(":checked")&&n("#is_author").is(":checked")&&n("#is_date").is(":checked")?!n("#is_archive").is(":checked")&&n("#is_tax").is(":checked")&&n("#is_category").is(":checked")&&n("#is_posttype_archive").is(":checked")&&n("#is_tag").is(":checked")&&n("#is_author").is(":checked")&&n("#is_date").is(":checked")&&n("#is_archive").attr("checked",!0):n("#is_archive").attr("checked",!1)}),!1})})(jQuery);
\ No newline at end of file
diff --git a/js/slick/jquery.event.drag-2.0.min.js b/js/slick/jquery.event.drag-2.0.min.js
deleted file mode 100644
index 2cb7fee..0000000
--- a/js/slick/jquery.event.drag-2.0.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * jquery.event.drag - v 2.0.0
- * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com
- * Open Source MIT License - http://threedubmedia.com/code/license
- */
-;(function(f){f.fn.drag=function(b,a,d){var e=typeof b=="string"?b:"",k=f.isFunction(b)?b:f.isFunction(a)?a:null;if(e.indexOf("drag")!==0)e="drag"+e;d=(b==k?a:d)||{};return k?this.bind(e,d,k):this.trigger(e)};var i=f.event,h=i.special,c=h.drag={defaults:{which:1,distance:0,not:":input",handle:null,relative:false,drop:true,click:false},datakey:"dragdata",livekey:"livedrag",add:function(b){var a=f.data(this,c.datakey),d=b.data||{};a.related+=1;if(!a.live&&b.selector){a.live=true;i.add(this,"draginit."+ c.livekey,c.delegate)}f.each(c.defaults,function(e){if(d[e]!==undefined)a[e]=d[e]})},remove:function(){f.data(this,c.datakey).related-=1},setup:function(){if(!f.data(this,c.datakey)){var b=f.extend({related:0},c.defaults);f.data(this,c.datakey,b);i.add(this,"mousedown",c.init,b);this.attachEvent&&this.attachEvent("ondragstart",c.dontstart)}},teardown:function(){if(!f.data(this,c.datakey).related){f.removeData(this,c.datakey);i.remove(this,"mousedown",c.init);i.remove(this,"draginit",c.delegate);c.textselect(true); this.detachEvent&&this.detachEvent("ondragstart",c.dontstart)}},init:function(b){var a=b.data,d;if(!(a.which>0&&b.which!=a.which))if(!f(b.target).is(a.not))if(!(a.handle&&!f(b.target).closest(a.handle,b.currentTarget).length)){a.propagates=1;a.interactions=[c.interaction(this,a)];a.target=b.target;a.pageX=b.pageX;a.pageY=b.pageY;a.dragging=null;d=c.hijack(b,"draginit",a);if(a.propagates){if((d=c.flatten(d))&&d.length){a.interactions=[];f.each(d,function(){a.interactions.push(c.interaction(this,a))})}a.propagates= a.interactions.length;a.drop!==false&&h.drop&&h.drop.handler(b,a);c.textselect(false);i.add(document,"mousemove mouseup",c.handler,a);return false}}},interaction:function(b,a){return{drag:b,callback:new c.callback,droppable:[],offset:f(b)[a.relative?"position":"offset"]()||{top:0,left:0}}},handler:function(b){var a=b.data;switch(b.type){case !a.dragging&&"mousemove":if(Math.pow(b.pageX-a.pageX,2)+Math.pow(b.pageY-a.pageY,2) options.maxToolTipLength) {
- text = text.substr(0, options.maxToolTipLength - 3) + "...";
- }
- $(node).attr("title", text);
- } else {
- $(node).attr("title", "");
- }
- }
- }
-
- $.extend(this, {
- "init": init,
- "destroy": destroy
- });
- }
-})(jQuery);
\ No newline at end of file
diff --git a/js/slick/slick.autotooltips.min.js b/js/slick/slick.autotooltips.min.js
deleted file mode 100644
index 4734869..0000000
--- a/js/slick/slick.autotooltips.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function($){$.extend(true,window,{"Slick":{"AutoTooltips":AutoTooltips}});function AutoTooltips(options){var _grid;var _self=this;var _defaults={maxToolTipLength:null};function init(grid){options=$.extend(true,{},_defaults,options);_grid=grid;_grid.onMouseEnter.subscribe(handleMouseEnter)}function destroy(){_grid.onMouseEnter.unsubscribe(handleMouseEnter)}function handleMouseEnter(e,args){var cell=_grid.getCellFromEvent(e);if(cell){var node=_grid.getCellNode(cell.row,cell.cell);if($(node).innerWidth()options.maxToolTipLength){text=text.substr(0,options.maxToolTipLength-3)+"..."}$(node).attr("title",text)}else{$(node).attr("title","")}}}$.extend(this,{"init":init,"destroy":destroy})}})(jQuery);
\ No newline at end of file
diff --git a/js/slick/slick.cellcopymanager.js b/js/slick/slick.cellcopymanager.js
deleted file mode 100644
index c74018d..0000000
--- a/js/slick/slick.cellcopymanager.js
+++ /dev/null
@@ -1,86 +0,0 @@
-(function ($) {
- // register namespace
- $.extend(true, window, {
- "Slick": {
- "CellCopyManager": CellCopyManager
- }
- });
-
-
- function CellCopyManager() {
- var _grid;
- var _self = this;
- var _copiedRanges;
-
- function init(grid) {
- _grid = grid;
- _grid.onKeyDown.subscribe(handleKeyDown);
- }
-
- function destroy() {
- _grid.onKeyDown.unsubscribe(handleKeyDown);
- }
-
- function handleKeyDown(e, args) {
- var ranges;
- if (!_grid.getEditorLock().isActive()) {
- if (e.which == $.ui.keyCode.ESCAPE) {
- if (_copiedRanges) {
- e.preventDefault();
- clearCopySelection();
- _self.onCopyCancelled.notify({ranges: _copiedRanges});
- _copiedRanges = null;
- }
- }
-
- if (e.which == 67 && (e.ctrlKey || e.metaKey)) {
- ranges = _grid.getSelectionModel().getSelectedRanges();
- if (ranges.length != 0) {
- e.preventDefault();
- _copiedRanges = ranges;
- markCopySelection(ranges);
- _self.onCopyCells.notify({ranges: ranges});
- }
- }
-
- if (e.which == 86 && (e.ctrlKey || e.metaKey)) {
- if (_copiedRanges) {
- e.preventDefault();
- clearCopySelection();
- ranges = _grid.getSelectionModel().getSelectedRanges();
- _self.onPasteCells.notify({from: _copiedRanges, to: ranges});
- _copiedRanges = null;
- }
- }
- }
- }
-
- function markCopySelection(ranges) {
- var columns = _grid.getColumns();
- var hash = {};
- for (var i = 0; i < ranges.length; i++) {
- for (var j = ranges[i].fromRow; j <= ranges[i].toRow; j++) {
- hash[j] = {};
- for (var k = ranges[i].fromCell; k <= ranges[i].toCell; k++) {
- hash[j][columns[k].id] = "copied";
- }
- }
- }
- _grid.setCellCssStyles("copy-manager", hash);
- }
-
- function clearCopySelection() {
- _grid.removeCellCssStyles("copy-manager");
- }
-
- $.extend(this, {
- "init": init,
- "destroy": destroy,
- "clearCopySelection": clearCopySelection,
-
- "onCopyCells": new Slick.Event(),
- "onCopyCancelled": new Slick.Event(),
- "onPasteCells": new Slick.Event()
- });
- }
-})(jQuery);
\ No newline at end of file
diff --git a/js/slick/slick.cellcopymanager.min.js b/js/slick/slick.cellcopymanager.min.js
deleted file mode 100644
index b3fa3f9..0000000
--- a/js/slick/slick.cellcopymanager.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function($){$.extend(true,window,{"Slick":{"CellCopyManager":CellCopyManager}});function CellCopyManager(){var _grid;var _self=this;var _copiedRanges;function init(grid){_grid=grid;_grid.onKeyDown.subscribe(handleKeyDown)}function destroy(){_grid.onKeyDown.unsubscribe(handleKeyDown)}function handleKeyDown(e,args){var ranges;if(!_grid.getEditorLock().isActive()){if(e.which==$.ui.keyCode.ESCAPE){if(_copiedRanges){e.preventDefault();clearCopySelection();_self.onCopyCancelled.notify({ranges:_copiedRanges});_copiedRanges=null}}if(e.which==67&&(e.ctrlKey||e.metaKey)){ranges=_grid.getSelectionModel().getSelectedRanges();if(ranges.length!=0){e.preventDefault();_copiedRanges=ranges;markCopySelection(ranges);_self.onCopyCells.notify({ranges:ranges})}}if(e.which==86&&(e.ctrlKey||e.metaKey)){if(_copiedRanges){e.preventDefault();clearCopySelection();ranges=_grid.getSelectionModel().getSelectedRanges();_self.onPasteCells.notify({from:_copiedRanges,to:ranges});_copiedRanges=null}}}}function markCopySelection(ranges){var columns=_grid.getColumns();var hash={};for(var i=0;i", {css: options.selectionCss})
- .css("position", "absolute")
- .appendTo(grid.getCanvasNode());
- }
-
- var from = grid.getCellNodeBox(range.fromRow, range.fromCell);
- var to = grid.getCellNodeBox(range.toRow, range.toCell);
-
- _elem.css({
- top: from.top - 1,
- left: from.left - 1,
- height: to.bottom - from.top - 2,
- width: to.right - from.left - 2
- });
-
- return _elem;
- }
-
- function hide() {
- if (_elem) {
- _elem.remove();
- _elem = null;
- }
- }
-
- $.extend(this, {
- "show": show,
- "hide": hide
- });
- }
-})(jQuery);
\ No newline at end of file
diff --git a/js/slick/slick.cellrangeselector.js b/js/slick/slick.cellrangeselector.js
deleted file mode 100644
index c2dee9a..0000000
--- a/js/slick/slick.cellrangeselector.js
+++ /dev/null
@@ -1,112 +0,0 @@
-(function ($) {
- // register namespace
- $.extend(true, window, {
- "Slick": {
- "CellRangeSelector": CellRangeSelector
- }
- });
-
-
- function CellRangeSelector(options) {
- var _grid;
- var _canvas;
- var _dragging;
- var _decorator;
- var _self = this;
- var _defaults = {
- selectionCss: {
- "border": "2px dashed blue"
- }
- };
-
-
- function init(grid) {
- options = $.extend(true, {}, _defaults, options);
- _decorator = new Slick.CellRangeDecorator(grid, options);
- _grid = grid;
- _canvas = _grid.getCanvasNode();
- _grid.onDragInit.subscribe(handleDragInit);
- _grid.onDragStart.subscribe(handleDragStart);
- _grid.onDrag.subscribe(handleDrag);
- _grid.onDragEnd.subscribe(handleDragEnd);
- }
-
- function destroy() {
- _grid.onDragInit.unsubscribe(handleDragInit);
- _grid.onDragStart.unsubscribe(handleDragStart);
- _grid.onDrag.unsubscribe(handleDrag);
- _grid.onDragEnd.unsubscribe(handleDragEnd);
- }
-
- function handleDragInit(e, dd) {
- // prevent the grid from cancelling drag'n'drop by default
- e.stopImmediatePropagation();
- }
-
- function handleDragStart(e, dd) {
- var cell = _grid.getCellFromEvent(e);
- if (_self.onBeforeCellRangeSelected.notify(cell) !== false) {
- if (_grid.canCellBeSelected(cell.row, cell.cell)) {
- _dragging = true;
- e.stopImmediatePropagation();
- }
- }
- if (!_dragging) {
- return;
- }
-
- var start = _grid.getCellFromPoint(
- dd.startX - $(_canvas).offset().left,
- dd.startY - $(_canvas).offset().top);
-
- dd.range = {start: start, end: {}};
-
- return _decorator.show(new Slick.Range(start.row, start.cell));
- }
-
- function handleDrag(e, dd) {
- if (!_dragging) {
- return;
- }
- e.stopImmediatePropagation();
-
- var end = _grid.getCellFromPoint(
- e.pageX - $(_canvas).offset().left,
- e.pageY - $(_canvas).offset().top);
-
- if (!_grid.canCellBeSelected(end.row, end.cell)) {
- return;
- }
-
- dd.range.end = end;
- _decorator.show(new Slick.Range(dd.range.start.row, dd.range.start.cell, end.row, end.cell));
- }
-
- function handleDragEnd(e, dd) {
- if (!_dragging) {
- return;
- }
-
- _dragging = false;
- e.stopImmediatePropagation();
-
- _decorator.hide();
- _self.onCellRangeSelected.notify({
- range: new Slick.Range(
- dd.range.start.row,
- dd.range.start.cell,
- dd.range.end.row,
- dd.range.end.cell
- )
- });
- }
-
- $.extend(this, {
- "init": init,
- "destroy": destroy,
-
- "onBeforeCellRangeSelected": new Slick.Event(),
- "onCellRangeSelected": new Slick.Event()
- });
- }
-})(jQuery);
\ No newline at end of file
diff --git a/js/slick/slick.cellselectionmodel.js b/js/slick/slick.cellselectionmodel.js
deleted file mode 100644
index fa91d3c..0000000
--- a/js/slick/slick.cellselectionmodel.js
+++ /dev/null
@@ -1,92 +0,0 @@
-(function ($) {
- // register namespace
- $.extend(true, window, {
- "Slick": {
- "CellSelectionModel": CellSelectionModel
- }
- });
-
-
- function CellSelectionModel(options) {
- var _grid;
- var _canvas;
- var _ranges = [];
- var _self = this;
- var _selector = new Slick.CellRangeSelector({
- "selectionCss": {
- "border": "2px solid black"
- }
- });
- var _options;
- var _defaults = {
- selectActiveCell: true
- };
-
-
- function init(grid) {
- _options = $.extend(true, {}, _defaults, options);
- _grid = grid;
- _canvas = _grid.getCanvasNode();
- _grid.onActiveCellChanged.subscribe(handleActiveCellChange);
- grid.registerPlugin(_selector);
- _selector.onCellRangeSelected.subscribe(handleCellRangeSelected);
- _selector.onBeforeCellRangeSelected.subscribe(handleBeforeCellRangeSelected);
- }
-
- function destroy() {
- _grid.onActiveCellChanged.unsubscribe(handleActiveCellChange);
- _selector.onCellRangeSelected.unsubscribe(handleCellRangeSelected);
- _selector.onBeforeCellRangeSelected.unsubscribe(handleBeforeCellRangeSelected);
- _grid.unregisterPlugin(_selector);
- }
-
- function removeInvalidRanges(ranges) {
- var result = [];
-
- for (var i = 0; i < ranges.length; i++) {
- var r = ranges[i];
- if (_grid.canCellBeSelected(r.fromRow, r.fromCell) && _grid.canCellBeSelected(r.toRow, r.toCell)) {
- result.push(r);
- }
- }
-
- return result;
- }
-
- function setSelectedRanges(ranges) {
- _ranges = removeInvalidRanges(ranges);
- _self.onSelectedRangesChanged.notify(_ranges);
- }
-
- function getSelectedRanges() {
- return _ranges;
- }
-
- function handleBeforeCellRangeSelected(e, args) {
- if (_grid.getEditorLock().isActive()) {
- e.stopPropagation();
- return false;
- }
- }
-
- function handleCellRangeSelected(e, args) {
- setSelectedRanges([args.range]);
- }
-
- function handleActiveCellChange(e, args) {
- if (_options.selectActiveCell) {
- setSelectedRanges([new Slick.Range(args.row, args.cell)]);
- }
- }
-
- $.extend(this, {
- "getSelectedRanges": getSelectedRanges,
- "setSelectedRanges": setSelectedRanges,
-
- "init": init,
- "destroy": destroy,
-
- "onSelectedRangesChanged": new Slick.Event()
- });
- }
-})(jQuery);
\ No newline at end of file
diff --git a/js/slick/slick.checkboxselectcolumn.js b/js/slick/slick.checkboxselectcolumn.js
deleted file mode 100644
index 4dd918f..0000000
--- a/js/slick/slick.checkboxselectcolumn.js
+++ /dev/null
@@ -1,154 +0,0 @@
-(function ($) {
- // register namespace
- $.extend(true, window, {
- "Slick": {
- "CheckboxSelectColumn": CheckboxSelectColumn
- }
- });
-
-
- function CheckboxSelectColumn(options) {
- var _grid;
- var _self = this;
- var _selectedRowsLookup = {};
- var _defaults = {
- columnId: "_checkbox_selector",
- cssClass: null,
- toolTip: "Select/Deselect All",
- width: 30
- };
-
- var _options = $.extend(true, {}, _defaults, options);
-
- function init(grid) {
- _grid = grid;
- _grid.onSelectedRowsChanged.subscribe(handleSelectedRowsChanged);
- _grid.onClick.subscribe(handleClick);
- _grid.onHeaderClick.subscribe(handleHeaderClick);
- _grid.onKeyDown.subscribe(handleKeyDown);
- }
-
- function destroy() {
- _grid.onSelectedRowsChanged.unsubscribe(handleSelectedRowsChanged);
- _grid.onClick.unsubscribe(handleClick);
- _grid.onHeaderClick.unsubscribe(handleHeaderClick);
- _grid.onKeyDown.unsubscribe(handleKeyDown);
- }
-
- function handleSelectedRowsChanged(e, args) {
- var selectedRows = _grid.getSelectedRows();
- var lookup = {}, row, i;
- for (i = 0; i < selectedRows.length; i++) {
- row = selectedRows[i];
- lookup[row] = true;
- if (lookup[row] !== _selectedRowsLookup[row]) {
- _grid.invalidateRow(row);
- delete _selectedRowsLookup[row];
- }
- }
- for (i in _selectedRowsLookup) {
- _grid.invalidateRow(i);
- }
- _selectedRowsLookup = lookup;
- _grid.render();
-
- if (selectedRows.length == _grid.getDataLength()) {
- _grid.updateColumnHeader(_options.columnId, "", _options.toolTip);
- } else {
- _grid.updateColumnHeader(_options.columnId, "", _options.toolTip);
- }
- }
-
- function handleKeyDown(e, args) {
- if (e.which == 32) {
- if (_grid.getColumns()[args.cell].id === _options.columnId) {
- // if editing, try to commit
- if (!_grid.getEditorLock().isActive() || _grid.getEditorLock().commitCurrentEdit()) {
- toggleRowSelection(args.row);
- }
- e.preventDefault();
- e.stopImmediatePropagation();
- }
- }
- }
-
- function handleClick(e, args) {
- // clicking on a row select checkbox
- if (_grid.getColumns()[args.cell].id === _options.columnId && $(e.target).is(":checkbox")) {
- // if editing, try to commit
- if (_grid.getEditorLock().isActive() && !_grid.getEditorLock().commitCurrentEdit()) {
- e.preventDefault();
- e.stopImmediatePropagation();
- return;
- }
-
- toggleRowSelection(args.row);
- e.stopPropagation();
- e.stopImmediatePropagation();
- }
- }
-
- function toggleRowSelection(row) {
- if (_selectedRowsLookup[row]) {
- _grid.setSelectedRows($.grep(_grid.getSelectedRows(), function (n) {
- return n != row
- }));
- } else {
- _grid.setSelectedRows(_grid.getSelectedRows().concat(row));
- }
- }
-
- function handleHeaderClick(e, args) {
- if (args.column.id == _options.columnId && $(e.target).is(":checkbox")) {
- // if editing, try to commit
- if (_grid.getEditorLock().isActive() && !_grid.getEditorLock().commitCurrentEdit()) {
- e.preventDefault();
- e.stopImmediatePropagation();
- return;
- }
-
- if ($(e.target).is(":checked")) {
- var rows = [];
- for (var i = 0; i < _grid.getDataLength(); i++) {
- rows.push(i);
- }
- _grid.setSelectedRows(rows);
- } else {
- _grid.setSelectedRows([]);
- }
- e.stopPropagation();
- e.stopImmediatePropagation();
- }
- }
-
- function getColumnDefinition() {
- return {
- id: _options.columnId,
- name: "",
- toolTip: _options.toolTip,
- field: "sel",
- width: _options.width,
- resizable: false,
- sortable: false,
- cssClass: _options.cssClass,
- formatter: checkboxSelectionFormatter
- };
- }
-
- function checkboxSelectionFormatter(row, cell, value, columnDef, dataContext) {
- if (dataContext) {
- return _selectedRowsLookup[row]
- ? ""
- : "";
- }
- return null;
- }
-
- $.extend(this, {
- "init": init,
- "destroy": destroy,
-
- "getColumnDefinition": getColumnDefinition
- });
- }
-})(jQuery);
\ No newline at end of file
diff --git a/js/slick/slick.core.js b/js/slick/slick.core.js
deleted file mode 100644
index efb6a97..0000000
--- a/js/slick/slick.core.js
+++ /dev/null
@@ -1,424 +0,0 @@
-/***
- * Contains core SlickGrid classes.
- * @module Core
- * @namespace Slick
- */
-
-(function ($) {
- // register namespace
- $.extend(true, window, {
- "Slick": {
- "Event": Event,
- "EventData": EventData,
- "EventHandler": EventHandler,
- "Range": Range,
- "NonDataRow": NonDataItem,
- "Group": Group,
- "GroupTotals": GroupTotals,
- "EditorLock": EditorLock,
-
- /***
- * A global singleton editor lock.
- * @class GlobalEditorLock
- * @static
- * @constructor
- */
- "GlobalEditorLock": new EditorLock()
- }
- });
-
- /***
- * An event object for passing data to event handlers and letting them control propagation.
- * This is pretty much identical to how W3C and jQuery implement events.
- * @class EventData
- * @constructor
- */
- function EventData() {
- var isPropagationStopped = false;
- var isImmediatePropagationStopped = false;
-
- /***
- * Stops event from propagating up the DOM tree.
- * @method stopPropagation
- */
- this.stopPropagation = function () {
- isPropagationStopped = true;
- };
-
- /***
- * Returns whether stopPropagation was called on this event object.
- * @method isPropagationStopped
- * @return {Boolean}
- */
- this.isPropagationStopped = function () {
- return isPropagationStopped;
- };
-
- /***
- * Prevents the rest of the handlers from being executed.
- * @method stopImmediatePropagation
- */
- this.stopImmediatePropagation = function () {
- isImmediatePropagationStopped = true;
- };
-
- /***
- * Returns whether stopImmediatePropagation was called on this event object.\
- * @method isImmediatePropagationStopped
- * @return {Boolean}
- */
- this.isImmediatePropagationStopped = function () {
- return isImmediatePropagationStopped;
- }
- }
-
- /***
- * A simple publisher-subscriber implementation.
- * @class Event
- * @constructor
- */
- function Event() {
- var handlers = [];
-
- /***
- * Adds an event handler to be called when the event is fired.
- * Event handler will receive two arguments - an EventData
and the data
- * object the event was fired with.
- * @method subscribe
- * @param fn {Function} Event handler.
- */
- this.subscribe = function (fn) {
- handlers.push(fn);
- };
-
- /***
- * Removes an event handler added with subscribe(fn)
.
- * @method unsubscribe
- * @param fn {Function} Event handler to be removed.
- */
- this.unsubscribe = function (fn) {
- for (var i = handlers.length - 1; i >= 0; i--) {
- if (handlers[i] === fn) {
- handlers.splice(i, 1);
- }
- }
- };
-
- /***
- * Fires an event notifying all subscribers.
- * @method notify
- * @param args {Object} Additional data object to be passed to all handlers.
- * @param e {EventData}
- * Optional.
- * An EventData
object to be passed to all handlers.
- * For DOM events, an existing W3C/jQuery event object can be passed in.
- * @param scope {Object}
- * Optional.
- * The scope ("this") within which the handler will be executed.
- * If not specified, the scope will be set to the Event
instance.
- */
- this.notify = function (args, e, scope) {
- e = e || new EventData();
- scope = scope || this;
-
- var returnValue;
- for (var i = 0; i < handlers.length && !(e.isPropagationStopped() || e.isImmediatePropagationStopped()); i++) {
- returnValue = handlers[i].call(scope, e, args);
- }
-
- return returnValue;
- };
- }
-
- function EventHandler() {
- var handlers = [];
-
- this.subscribe = function (event, handler) {
- handlers.push({
- event: event,
- handler: handler
- });
- event.subscribe(handler);
- };
-
- this.unsubscribe = function (event, handler) {
- var i = handlers.length;
- while (i--) {
- if (handlers[i].event === event &&
- handlers[i].handler === handler) {
- handlers.splice(i, 1);
- event.unsubscribe(handler);
- return;
- }
- }
- };
-
- this.unsubscribeAll = function () {
- var i = handlers.length;
- while (i--) {
- handlers[i].event.unsubscribe(handlers[i].handler);
- }
- handlers = [];
- }
- }
-
- /***
- * A structure containing a range of cells.
- * @class Range
- * @constructor
- * @param fromRow {Integer} Starting row.
- * @param fromCell {Integer} Starting cell.
- * @param toRow {Integer} Optional. Ending row. Defaults to fromRow
.
- * @param toCell {Integer} Optional. Ending cell. Defaults to fromCell
.
- */
- function Range(fromRow, fromCell, toRow, toCell) {
- if (toRow === undefined && toCell === undefined) {
- toRow = fromRow;
- toCell = fromCell;
- }
-
- /***
- * @property fromRow
- * @type {Integer}
- */
- this.fromRow = Math.min(fromRow, toRow);
-
- /***
- * @property fromCell
- * @type {Integer}
- */
- this.fromCell = Math.min(fromCell, toCell);
-
- /***
- * @property toRow
- * @type {Integer}
- */
- this.toRow = Math.max(fromRow, toRow);
-
- /***
- * @property toCell
- * @type {Integer}
- */
- this.toCell = Math.max(fromCell, toCell);
-
- /***
- * Returns whether a range represents a single row.
- * @method isSingleRow
- * @return {Boolean}
- */
- this.isSingleRow = function () {
- return this.fromRow == this.toRow;
- };
-
- /***
- * Returns whether a range represents a single cell.
- * @method isSingleCell
- * @return {Boolean}
- */
- this.isSingleCell = function () {
- return this.fromRow == this.toRow && this.fromCell == this.toCell;
- };
-
- /***
- * Returns whether a range contains a given cell.
- * @method contains
- * @param row {Integer}
- * @param cell {Integer}
- * @return {Boolean}
- */
- this.contains = function (row, cell) {
- return row >= this.fromRow && row <= this.toRow &&
- cell >= this.fromCell && cell <= this.toCell;
- };
-
- /***
- * Returns a readable representation of a range.
- * @method toString
- * @return {String}
- */
- this.toString = function () {
- if (this.isSingleCell()) {
- return "(" + this.fromRow + ":" + this.fromCell + ")";
- }
- else {
- return "(" + this.fromRow + ":" + this.fromCell + " - " + this.toRow + ":" + this.toCell + ")";
- }
- }
- }
-
-
- /***
- * A base class that all special / non-data rows (like Group and GroupTotals) derive from.
- * @class NonDataItem
- * @constructor
- */
- function NonDataItem() {
- this.__nonDataRow = true;
- }
-
-
- /***
- * Information about a group of rows.
- * @class Group
- * @extends Slick.NonDataItem
- * @constructor
- */
- function Group() {
- this.__group = true;
- this.__updated = false;
-
- /***
- * Number of rows in the group.
- * @property count
- * @type {Integer}
- */
- this.count = 0;
-
- /***
- * Grouping value.
- * @property value
- * @type {Object}
- */
- this.value = null;
-
- /***
- * Formatted display value of the group.
- * @property title
- * @type {String}
- */
- this.title = null;
-
- /***
- * Whether a group is collapsed.
- * @property collapsed
- * @type {Boolean}
- */
- this.collapsed = false;
-
- /***
- * GroupTotals, if any.
- * @property totals
- * @type {GroupTotals}
- */
- this.totals = null;
- }
-
- Group.prototype = new NonDataItem();
-
- /***
- * Compares two Group instances.
- * @method equals
- * @return {Boolean}
- * @param group {Group} Group instance to compare to.
- */
- Group.prototype.equals = function (group) {
- return this.value === group.value &&
- this.count === group.count &&
- this.collapsed === group.collapsed;
- };
-
- /***
- * Information about group totals.
- * An instance of GroupTotals will be created for each totals row and passed to the aggregators
- * so that they can store arbitrary data in it. That data can later be accessed by group totals
- * formatters during the display.
- * @class GroupTotals
- * @extends Slick.NonDataItem
- * @constructor
- */
- function GroupTotals() {
- this.__groupTotals = true;
-
- /***
- * Parent Group.
- * @param group
- * @type {Group}
- */
- this.group = null;
- }
-
- GroupTotals.prototype = new NonDataItem();
-
- /***
- * A locking helper to track the active edit controller and ensure that only a single controller
- * can be active at a time. This prevents a whole class of state and validation synchronization
- * issues. An edit controller (such as SlickGrid) can query if an active edit is in progress
- * and attempt a commit or cancel before proceeding.
- * @class EditorLock
- * @constructor
- */
- function EditorLock() {
- var activeEditController = null;
-
- /***
- * Returns true if a specified edit controller is active (has the edit lock).
- * If the parameter is not specified, returns true if any edit controller is active.
- * @method isActive
- * @param editController {EditController}
- * @return {Boolean}
- */
- this.isActive = function (editController) {
- return (editController ? activeEditController === editController : activeEditController !== null);
- };
-
- /***
- * Sets the specified edit controller as the active edit controller (acquire edit lock).
- * If another edit controller is already active, and exception will be thrown.
- * @method activate
- * @param editController {EditController} edit controller acquiring the lock
- */
- this.activate = function (editController) {
- if (editController === activeEditController) { // already activated?
- return;
- }
- if (activeEditController !== null) {
- throw "SlickGrid.EditorLock.activate: an editController is still active, can't activate another editController";
- }
- if (!editController.commitCurrentEdit) {
- throw "SlickGrid.EditorLock.activate: editController must implement .commitCurrentEdit()";
- }
- if (!editController.cancelCurrentEdit) {
- throw "SlickGrid.EditorLock.activate: editController must implement .cancelCurrentEdit()";
- }
- activeEditController = editController;
- };
-
- /***
- * Unsets the specified edit controller as the active edit controller (release edit lock).
- * If the specified edit controller is not the active one, an exception will be thrown.
- * @method deactivate
- * @param editController {EditController} edit controller releasing the lock
- */
- this.deactivate = function (editController) {
- if (activeEditController !== editController) {
- throw "SlickGrid.EditorLock.deactivate: specified editController is not the currently active one";
- }
- activeEditController = null;
- };
-
- /***
- * Attempts to commit the current edit by calling "commitCurrentEdit" method on the active edit
- * controller and returns whether the commit attempt was successful (commit may fail due to validation
- * errors, etc.). Edit controller's "commitCurrentEdit" must return true if the commit has succeeded
- * and false otherwise. If no edit controller is active, returns true.
- * @method commitCurrentEdit
- * @return {Boolean}
- */
- this.commitCurrentEdit = function () {
- return (activeEditController ? activeEditController.commitCurrentEdit() : true);
- };
-
- /***
- * Attempts to cancel the current edit by calling "cancelCurrentEdit" method on the active edit
- * controller and returns whether the edit was successfully cancelled. If no edit controller is
- * active, returns true.
- * @method cancelCurrentEdit
- * @return {Boolean}
- */
- this.cancelCurrentEdit = function cancelCurrentEdit() {
- return (activeEditController ? activeEditController.cancelCurrentEdit() : true);
- };
- }
-})(jQuery);
-
-
diff --git a/js/slick/slick.editors.js b/js/slick/slick.editors.js
deleted file mode 100644
index a3666c2..0000000
--- a/js/slick/slick.editors.js
+++ /dev/null
@@ -1,512 +0,0 @@
-/***
- * Contains basic SlickGrid editors.
- * @module Editors
- * @namespace Slick
- */
-
-(function ($) {
- // register namespace
- $.extend(true, window, {
- "Slick": {
- "Editors": {
- "Text": TextEditor,
- "Integer": IntegerEditor,
- "Date": DateEditor,
- "YesNoSelect": YesNoSelectEditor,
- "Checkbox": CheckboxEditor,
- "PercentComplete": PercentCompleteEditor,
- "LongText": LongTextEditor
- }
- }
- });
-
- function TextEditor(args) {
- var $input;
- var defaultValue;
- var scope = this;
-
- this.init = function () {
- $input = $("")
- .appendTo(args.container)
- .bind("keydown.nav", function (e) {
- if (e.keyCode === $.ui.keyCode.LEFT || e.keyCode === $.ui.keyCode.RIGHT) {
- e.stopImmediatePropagation();
- }
- })
- .focus()
- .select();
- };
-
- this.destroy = function () {
- $input.remove();
- };
-
- this.focus = function () {
- $input.focus();
- };
-
- this.getValue = function () {
- return $input.val();
- };
-
- this.setValue = function (val) {
- $input.val(val);
- };
-
- this.loadValue = function (item) {
- defaultValue = item[args.column.field] || "";
- $input.val(defaultValue);
- $input[0].defaultValue = defaultValue;
- $input.select();
- };
-
- this.serializeValue = function () {
- return $input.val();
- };
-
- this.applyValue = function (item, state) {
- item[args.column.field] = state;
- };
-
- this.isValueChanged = function () {
- return (!($input.val() == "" && defaultValue == null)) && ($input.val() != defaultValue);
- };
-
- this.validate = function () {
- if (args.column.validator) {
- var validationResults = args.column.validator($input.val());
- if (!validationResults.valid) {
- return validationResults;
- }
- }
-
- return {
- valid: true,
- msg: null
- };
- };
-
- this.init();
- }
-
- function IntegerEditor(args) {
- var $input;
- var defaultValue;
- var scope = this;
-
- this.init = function () {
- $input = $("");
-
- $input.bind("keydown.nav", function (e) {
- if (e.keyCode === $.ui.keyCode.LEFT || e.keyCode === $.ui.keyCode.RIGHT) {
- e.stopImmediatePropagation();
- }
- });
-
- $input.appendTo(args.container);
- $input.focus().select();
- };
-
- this.destroy = function () {
- $input.remove();
- };
-
- this.focus = function () {
- $input.focus();
- };
-
- this.loadValue = function (item) {
- defaultValue = item[args.column.field];
- $input.val(defaultValue);
- $input[0].defaultValue = defaultValue;
- $input.select();
- };
-
- this.serializeValue = function () {
- return parseInt($input.val(), 10) || 0;
- };
-
- this.applyValue = function (item, state) {
- item[args.column.field] = state;
- };
-
- this.isValueChanged = function () {
- return (!($input.val() == "" && defaultValue == null)) && ($input.val() != defaultValue);
- };
-
- this.validate = function () {
- if (isNaN($input.val())) {
- return {
- valid: false,
- msg: "Please enter a valid integer"
- };
- }
-
- return {
- valid: true,
- msg: null
- };
- };
-
- this.init();
- }
-
- function DateEditor(args) {
- var $input;
- var defaultValue;
- var scope = this;
- var calendarOpen = false;
-
- this.init = function () {
- $input = $("");
- $input.appendTo(args.container);
- $input.focus().select();
- $input.datepicker({
- showOn: "button",
- buttonImageOnly: true,
- buttonImage: "../images/calendar.gif",
- beforeShow: function () {
- calendarOpen = true
- },
- onClose: function () {
- calendarOpen = false
- }
- });
- $input.width($input.width() - 18);
- };
-
- this.destroy = function () {
- $.datepicker.dpDiv.stop(true, true);
- $input.datepicker("hide");
- $input.datepicker("destroy");
- $input.remove();
- };
-
- this.show = function () {
- if (calendarOpen) {
- $.datepicker.dpDiv.stop(true, true).show();
- }
- };
-
- this.hide = function () {
- if (calendarOpen) {
- $.datepicker.dpDiv.stop(true, true).hide();
- }
- };
-
- this.position = function (position) {
- if (!calendarOpen) {
- return;
- }
- $.datepicker.dpDiv
- .css("top", position.top + 30)
- .css("left", position.left);
- };
-
- this.focus = function () {
- $input.focus();
- };
-
- this.loadValue = function (item) {
- defaultValue = item[args.column.field];
- $input.val(defaultValue);
- $input[0].defaultValue = defaultValue;
- $input.select();
- };
-
- this.serializeValue = function () {
- return $input.val();
- };
-
- this.applyValue = function (item, state) {
- item[args.column.field] = state;
- };
-
- this.isValueChanged = function () {
- return (!($input.val() == "" && defaultValue == null)) && ($input.val() != defaultValue);
- };
-
- this.validate = function () {
- return {
- valid: true,
- msg: null
- };
- };
-
- this.init();
- }
-
- function YesNoSelectEditor(args) {
- var $select;
- var defaultValue;
- var scope = this;
-
- this.init = function () {
- $select = $("");
- $select.appendTo(args.container);
- $select.focus();
- };
-
- this.destroy = function () {
- $select.remove();
- };
-
- this.focus = function () {
- $select.focus();
- };
-
- this.loadValue = function (item) {
- $select.val((defaultValue = item[args.column.field]) ? "yes" : "no");
- $select.select();
- };
-
- this.serializeValue = function () {
- return ($select.val() == "yes");
- };
-
- this.applyValue = function (item, state) {
- item[args.column.field] = state;
- };
-
- this.isValueChanged = function () {
- return ($select.val() != defaultValue);
- };
-
- this.validate = function () {
- return {
- valid: true,
- msg: null
- };
- };
-
- this.init();
- }
-
- function CheckboxEditor(args) {
- var $select;
- var defaultValue;
- var scope = this;
-
- this.init = function () {
- $select = $("");
- $select.appendTo(args.container);
- $select.focus();
- };
-
- this.destroy = function () {
- $select.remove();
- };
-
- this.focus = function () {
- $select.focus();
- };
-
- this.loadValue = function (item) {
- defaultValue = item[args.column.field];
- if (defaultValue) {
- $select.attr("checked", "checked");
- } else {
- $select.removeAttr("checked");
- }
- };
-
- this.serializeValue = function () {
- return $select.attr("checked");
- };
-
- this.applyValue = function (item, state) {
- item[args.column.field] = state;
- };
-
- this.isValueChanged = function () {
- return ($select.attr("checked") != defaultValue);
- };
-
- this.validate = function () {
- return {
- valid: true,
- msg: null
- };
- };
-
- this.init();
- }
-
- function PercentCompleteEditor(args) {
- var $input, $picker;
- var defaultValue;
- var scope = this;
-
- this.init = function () {
- $input = $("");
- $input.width($(args.container).innerWidth() - 25);
- $input.appendTo(args.container);
-
- $picker = $("
").appendTo(args.container);
- $picker.append("");
-
- $picker.find(".editor-percentcomplete-buttons").append("
");
-
- $input.focus().select();
-
- $picker.find(".editor-percentcomplete-slider").slider({
- orientation: "vertical",
- range: "min",
- value: defaultValue,
- slide: function (event, ui) {
- $input.val(ui.value)
- }
- });
-
- $picker.find(".editor-percentcomplete-buttons button").bind("click", function (e) {
- $input.val($(this).attr("val"));
- $picker.find(".editor-percentcomplete-slider").slider("value", $(this).attr("val"));
- })
- };
-
- this.destroy = function () {
- $input.remove();
- $picker.remove();
- };
-
- this.focus = function () {
- $input.focus();
- };
-
- this.loadValue = function (item) {
- $input.val(defaultValue = item[args.column.field]);
- $input.select();
- };
-
- this.serializeValue = function () {
- return parseInt($input.val(), 10) || 0;
- };
-
- this.applyValue = function (item, state) {
- item[args.column.field] = state;
- };
-
- this.isValueChanged = function () {
- return (!($input.val() == "" && defaultValue == null)) && ((parseInt($input.val(), 10) || 0) != defaultValue);
- };
-
- this.validate = function () {
- if (isNaN(parseInt($input.val(), 10))) {
- return {
- valid: false,
- msg: "Please enter a valid positive number"
- };
- }
-
- return {
- valid: true,
- msg: null
- };
- };
-
- this.init();
- }
-
- /*
- * An example of a "detached" editor.
- * The UI is added onto document BODY and .position(), .show() and .hide() are implemented.
- * KeyDown events are also handled to provide handling for Tab, Shift-Tab, Esc and Ctrl-Enter.
- */
- function LongTextEditor(args) {
- var $input, $wrapper;
- var defaultValue;
- var scope = this;
-
- this.init = function () {
- var $container = $("body");
-
- $wrapper = $("")
- .appendTo($container);
-
- $input = $("