Version Description
Download this release
Release Info
Developer | supsystic.com |
Plugin | Data Tables Generator by Supsystic |
Version | 1.10.11 |
Comparing to | |
See all releases |
Code changes from version 1.10.9 to 1.10.11
- app/SupsysticTables.php +205 -205
- index.php +1 -1
- readme.txt +4 -1
- src/SupsysticTables/Core/assets/js/core.js +2 -1
- src/SupsysticTables/Core/assets/js/lib/intl.js +86 -0
- src/SupsysticTables/Tables/Model/Tables.php +5 -0
- src/SupsysticTables/Tables/Module.php +9 -0
- vendor/Twig/Node/Embed.php +1 -1
- vendor/Twig/Node/Include.php +1 -1
app/SupsysticTables.php
CHANGED
@@ -1,205 +1,205 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Class SupsysticTables
|
5 |
-
*/
|
6 |
-
class SupsysticTables
|
7 |
-
{
|
8 |
-
private $environment;
|
9 |
-
|
10 |
-
public function __construct()
|
11 |
-
{
|
12 |
-
if (!class_exists('Rsc_Autoloader', false)) {
|
13 |
-
require dirname(dirname(__FILE__)) . '/vendor/Rsc/Autoloader.php';
|
14 |
-
Rsc_Autoloader::register();
|
15 |
-
}
|
16 |
-
|
17 |
-
add_action('init', array($this, 'addShortcodeButton'));
|
18 |
-
|
19 |
-
$menuSlug = 'supsystic-tables';
|
20 |
-
$pluginPath = dirname(dirname(__FILE__));
|
21 |
-
$environment = new Rsc_Environment('st', '1.10.
|
22 |
-
|
23 |
-
/* Configure */
|
24 |
-
$environment->configure(
|
25 |
-
array(
|
26 |
-
'optimizations' => 1,
|
27 |
-
'environment' => $this->getPluginEnvironment(),
|
28 |
-
'default_module' => 'tables',
|
29 |
-
'lang_domain' => 'supsystic_tables',
|
30 |
-
'lang_path' => plugin_basename(dirname(__FILE__)) . '/langs',
|
31 |
-
'plugin_prefix' => 'SupsysticTables',
|
32 |
-
'plugin_source' => $pluginPath . '/src',
|
33 |
-
'plugin_title_name' => 'Data Tables',
|
34 |
-
'plugin_menu' => array(
|
35 |
-
'page_title' => __('Tables by Supsystic', $menuSlug),
|
36 |
-
'menu_title' => __('Tables by Supsystic', $menuSlug),
|
37 |
-
'capability' => 'manage_options',
|
38 |
-
'menu_slug' => $menuSlug,
|
39 |
-
'icon_url' => 'dashicons-editor-table',
|
40 |
-
'position' => '102.2',
|
41 |
-
),
|
42 |
-
'shortcode_prefix' => $menuSlug,
|
43 |
-
'shortcode_name' => defined('SUPSYSTIC_TABLES_SHORTCODE_NAME') ? SUPSYSTIC_TABLES_SHORTCODE_NAME : $menuSlug,
|
44 |
-
'shortcode_part_name' => defined('SUPSYSTIC_TABLES_PART_SHORTCODE_NAME') ? SUPSYSTIC_TABLES_PART_SHORTCODE_NAME : $menuSlug . '-part',
|
45 |
-
'shortcode_cell_name' => defined('SUPSYSTIC_TABLES_CELL_SHORTCODE_NAME') ? SUPSYSTIC_TABLES_CELL_SHORTCODE_NAME : $menuSlug . '-cell-full',
|
46 |
-
'shortcode_value_name' => defined('SUPSYSTIC_TABLES_VALUE_SHORTCODE_NAME') ? SUPSYSTIC_TABLES_VALUE_SHORTCODE_NAME : $menuSlug . '-cell',
|
47 |
-
'db_prefix' => 'supsystic_tbl_',
|
48 |
-
'hooks_prefix' => 'supsystic_tbl_',
|
49 |
-
'ajax_url' => admin_url('admin-ajax.php'),
|
50 |
-
'admin_url' => admin_url(),
|
51 |
-
'plugin_db_update' => true,
|
52 |
-
'revision_key' => '_supsystic_tables_rev',
|
53 |
-
'revision' => 61,
|
54 |
-
'welcome_page_was_showed' => get_option('supsystic_tbl_welcome_page_was_showed'),
|
55 |
-
'promo_controller' => 'SupsysticTables_Promo_Controller'
|
56 |
-
)
|
57 |
-
);
|
58 |
-
|
59 |
-
$this->environment = $environment;
|
60 |
-
$this->initFilesystem();
|
61 |
-
}
|
62 |
-
|
63 |
-
public function run()
|
64 |
-
{
|
65 |
-
$this->environment->run();
|
66 |
-
}
|
67 |
-
|
68 |
-
public function createSchema()
|
69 |
-
{
|
70 |
-
global $wpdb;
|
71 |
-
|
72 |
-
if (is_file($schema = dirname(__FILE__) . '/configs/dbschema.sql')) {
|
73 |
-
$prefix = $wpdb->prefix . $this->environment
|
74 |
-
->getConfig()
|
75 |
-
->get('db_prefix');
|
76 |
-
|
77 |
-
$sql = str_replace('%prefix%', $prefix, file_get_contents($schema));
|
78 |
-
|
79 |
-
if (!function_exists('dbDelta')) {
|
80 |
-
require_once(ABSPATH.'wp-admin/includes/upgrade.php');
|
81 |
-
}
|
82 |
-
$wpdb->query('SET FOREIGN_KEY_CHECKS=0');
|
83 |
-
dbDelta($sql);
|
84 |
-
$wpdb->query('SET FOREIGN_KEY_CHECKS=1');
|
85 |
-
update_option($this->environment->getPluginName().'_installed', 1);
|
86 |
-
}
|
87 |
-
}
|
88 |
-
|
89 |
-
public function dropSchema()
|
90 |
-
{
|
91 |
-
global $wpdb;
|
92 |
-
|
93 |
-
$prefix = $wpdb->prefix . $this->environment
|
94 |
-
->getConfig()
|
95 |
-
->get('db_prefix');
|
96 |
-
|
97 |
-
$tables = $wpdb->get_results('SHOW TABLES LIKE \''.$prefix.'%\'', ARRAY_N);
|
98 |
-
|
99 |
-
if (count($tables) < 1) {
|
100 |
-
return;
|
101 |
-
}
|
102 |
-
|
103 |
-
$wpdb->query('SET FOREIGN_KEY_CHECKS=0');
|
104 |
-
foreach ($tables as $inded => $table) {
|
105 |
-
$wpdb->query('DROP TABLE IF EXISTS '.array_pop($table).' CASCADE;');
|
106 |
-
}
|
107 |
-
|
108 |
-
$wpdb->query('SET FOREIGN_KEY_CHECKS=1');
|
109 |
-
}
|
110 |
-
|
111 |
-
public function getEnvironment()
|
112 |
-
{
|
113 |
-
return $this->environment;
|
114 |
-
}
|
115 |
-
|
116 |
-
protected function getPluginEnvironment()
|
117 |
-
{
|
118 |
-
$environment = Rsc_Environment::ENV_PRODUCTION;
|
119 |
-
|
120 |
-
if (defined('WP_DEBUG') && WP_DEBUG) {
|
121 |
-
if (defined('SUPSYSTIC_STB_DEBUG') && SUPSYSTIC_STB_DEBUG) {
|
122 |
-
$environment = Rsc_Environment::ENV_DEVELOPMENT;
|
123 |
-
}
|
124 |
-
}
|
125 |
-
|
126 |
-
return $environment;
|
127 |
-
}
|
128 |
-
|
129 |
-
protected function checkCacheHtacess()
|
130 |
-
{
|
131 |
-
$fullPath = wp_upload_dir();
|
132 |
-
$fullPath = $fullPath['basedir'];
|
133 |
-
$fullPath = $fullPath.'/supsystic-tables/cache/tables/.htaccess';
|
134 |
-
if(!file_exists($fullPath)){
|
135 |
-
$content = '<Files ~ "^.*">' . "\n";
|
136 |
-
$content .= 'Deny from all' . "\n";
|
137 |
-
$content .= '</Files>' . "\n";
|
138 |
-
file_put_contents($fullPath, $content);
|
139 |
-
}
|
140 |
-
}
|
141 |
-
|
142 |
-
protected function initFilesystem()
|
143 |
-
{
|
144 |
-
$directories = array(
|
145 |
-
'tmp' => '/supsystic-tables',
|
146 |
-
'log' => '/supsystic-tables/log',
|
147 |
-
'cache' => '/supsystic-tables/cache',
|
148 |
-
'cache_tables' => '/supsystic-tables/cache/tables',
|
149 |
-
);
|
150 |
-
|
151 |
-
foreach ($directories as $key => $dir) {
|
152 |
-
if (false !== $fullPath = $this->makeDirectory($dir)) {
|
153 |
-
$this->environment->getConfig()->add('plugin_' . $key, $fullPath);
|
154 |
-
}
|
155 |
-
}
|
156 |
-
|
157 |
-
$this->checkCacheHtacess();
|
158 |
-
}
|
159 |
-
|
160 |
-
/**
|
161 |
-
* Make directory in uploads directory.
|
162 |
-
* @param string $directory Relative to the WP_UPLOADS dir
|
163 |
-
* @return bool|string FALSE on failure, full path to the directory on success
|
164 |
-
*/
|
165 |
-
protected function makeDirectory($directory)
|
166 |
-
{
|
167 |
-
$uploads = wp_upload_dir();
|
168 |
-
|
169 |
-
$basedir = $uploads['basedir'];
|
170 |
-
$dir = $basedir . $directory;
|
171 |
-
if (!is_dir($dir)) {
|
172 |
-
if (false === @mkdir($dir, 0775, true)) {
|
173 |
-
return false;
|
174 |
-
}
|
175 |
-
} else {
|
176 |
-
if (! is_writable($dir)) {
|
177 |
-
return false;
|
178 |
-
}
|
179 |
-
}
|
180 |
-
|
181 |
-
return $dir;
|
182 |
-
}
|
183 |
-
|
184 |
-
public function addShortcodeButton() {
|
185 |
-
add_filter('mce_external_plugins', array($this, 'addButton'));
|
186 |
-
add_filter('mce_buttons', array($this, 'registerButton'));
|
187 |
-
wp_enqueue_script('jquery');
|
188 |
-
if(is_admin()) {
|
189 |
-
wp_enqueue_script('stb-bpopup-js', $this->environment->getConfig()->get('plugin_url') . '/app/assets/js/plugins/jquery.bpopup.min.js', array('jquery'), false, true);
|
190 |
-
wp_enqueue_style('stb-bpopup', $this->environment->getConfig()->get('plugin_url') . '/app/assets/css/editor-dialog.css');
|
191 |
-
}
|
192 |
-
}
|
193 |
-
|
194 |
-
public function addButton( $plugin_array ) {
|
195 |
-
$plugin_array['addShortcodeDataTable'] = $this->environment->getConfig()->get('plugin_url') . '/app/assets/js/buttons.js';
|
196 |
-
|
197 |
-
return $plugin_array;
|
198 |
-
}
|
199 |
-
|
200 |
-
public function registerButton( $buttons ) {
|
201 |
-
array_push( $buttons, 'addShortcodeDataTable', 'selectShortcode' );
|
202 |
-
|
203 |
-
return $buttons;
|
204 |
-
}
|
205 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class SupsysticTables
|
5 |
+
*/
|
6 |
+
class SupsysticTables
|
7 |
+
{
|
8 |
+
private $environment;
|
9 |
+
|
10 |
+
public function __construct()
|
11 |
+
{
|
12 |
+
if (!class_exists('Rsc_Autoloader', false)) {
|
13 |
+
require dirname(dirname(__FILE__)) . '/vendor/Rsc/Autoloader.php';
|
14 |
+
Rsc_Autoloader::register();
|
15 |
+
}
|
16 |
+
|
17 |
+
add_action('init', array($this, 'addShortcodeButton'));
|
18 |
+
|
19 |
+
$menuSlug = 'supsystic-tables';
|
20 |
+
$pluginPath = dirname(dirname(__FILE__));
|
21 |
+
$environment = new Rsc_Environment('st', '1.10.11', $pluginPath);
|
22 |
+
|
23 |
+
/* Configure */
|
24 |
+
$environment->configure(
|
25 |
+
array(
|
26 |
+
'optimizations' => 1,
|
27 |
+
'environment' => $this->getPluginEnvironment(),
|
28 |
+
'default_module' => 'tables',
|
29 |
+
'lang_domain' => 'supsystic_tables',
|
30 |
+
'lang_path' => plugin_basename(dirname(__FILE__)) . '/langs',
|
31 |
+
'plugin_prefix' => 'SupsysticTables',
|
32 |
+
'plugin_source' => $pluginPath . '/src',
|
33 |
+
'plugin_title_name' => 'Data Tables',
|
34 |
+
'plugin_menu' => array(
|
35 |
+
'page_title' => __('Tables by Supsystic', $menuSlug),
|
36 |
+
'menu_title' => __('Tables by Supsystic', $menuSlug),
|
37 |
+
'capability' => 'manage_options',
|
38 |
+
'menu_slug' => $menuSlug,
|
39 |
+
'icon_url' => 'dashicons-editor-table',
|
40 |
+
'position' => '102.2',
|
41 |
+
),
|
42 |
+
'shortcode_prefix' => $menuSlug,
|
43 |
+
'shortcode_name' => defined('SUPSYSTIC_TABLES_SHORTCODE_NAME') ? SUPSYSTIC_TABLES_SHORTCODE_NAME : $menuSlug,
|
44 |
+
'shortcode_part_name' => defined('SUPSYSTIC_TABLES_PART_SHORTCODE_NAME') ? SUPSYSTIC_TABLES_PART_SHORTCODE_NAME : $menuSlug . '-part',
|
45 |
+
'shortcode_cell_name' => defined('SUPSYSTIC_TABLES_CELL_SHORTCODE_NAME') ? SUPSYSTIC_TABLES_CELL_SHORTCODE_NAME : $menuSlug . '-cell-full',
|
46 |
+
'shortcode_value_name' => defined('SUPSYSTIC_TABLES_VALUE_SHORTCODE_NAME') ? SUPSYSTIC_TABLES_VALUE_SHORTCODE_NAME : $menuSlug . '-cell',
|
47 |
+
'db_prefix' => 'supsystic_tbl_',
|
48 |
+
'hooks_prefix' => 'supsystic_tbl_',
|
49 |
+
'ajax_url' => admin_url('admin-ajax.php'),
|
50 |
+
'admin_url' => admin_url(),
|
51 |
+
'plugin_db_update' => true,
|
52 |
+
'revision_key' => '_supsystic_tables_rev',
|
53 |
+
'revision' => 61,
|
54 |
+
'welcome_page_was_showed' => get_option('supsystic_tbl_welcome_page_was_showed'),
|
55 |
+
'promo_controller' => 'SupsysticTables_Promo_Controller'
|
56 |
+
)
|
57 |
+
);
|
58 |
+
|
59 |
+
$this->environment = $environment;
|
60 |
+
$this->initFilesystem();
|
61 |
+
}
|
62 |
+
|
63 |
+
public function run()
|
64 |
+
{
|
65 |
+
$this->environment->run();
|
66 |
+
}
|
67 |
+
|
68 |
+
public function createSchema()
|
69 |
+
{
|
70 |
+
global $wpdb;
|
71 |
+
|
72 |
+
if (is_file($schema = dirname(__FILE__) . '/configs/dbschema.sql')) {
|
73 |
+
$prefix = $wpdb->prefix . $this->environment
|
74 |
+
->getConfig()
|
75 |
+
->get('db_prefix');
|
76 |
+
|
77 |
+
$sql = str_replace('%prefix%', $prefix, file_get_contents($schema));
|
78 |
+
|
79 |
+
if (!function_exists('dbDelta')) {
|
80 |
+
require_once(ABSPATH.'wp-admin/includes/upgrade.php');
|
81 |
+
}
|
82 |
+
$wpdb->query('SET FOREIGN_KEY_CHECKS=0');
|
83 |
+
dbDelta($sql);
|
84 |
+
$wpdb->query('SET FOREIGN_KEY_CHECKS=1');
|
85 |
+
update_option($this->environment->getPluginName().'_installed', 1);
|
86 |
+
}
|
87 |
+
}
|
88 |
+
|
89 |
+
public function dropSchema()
|
90 |
+
{
|
91 |
+
global $wpdb;
|
92 |
+
|
93 |
+
$prefix = $wpdb->prefix . $this->environment
|
94 |
+
->getConfig()
|
95 |
+
->get('db_prefix');
|
96 |
+
|
97 |
+
$tables = $wpdb->get_results('SHOW TABLES LIKE \''.$prefix.'%\'', ARRAY_N);
|
98 |
+
|
99 |
+
if (count($tables) < 1) {
|
100 |
+
return;
|
101 |
+
}
|
102 |
+
|
103 |
+
$wpdb->query('SET FOREIGN_KEY_CHECKS=0');
|
104 |
+
foreach ($tables as $inded => $table) {
|
105 |
+
$wpdb->query('DROP TABLE IF EXISTS '.array_pop($table).' CASCADE;');
|
106 |
+
}
|
107 |
+
|
108 |
+
$wpdb->query('SET FOREIGN_KEY_CHECKS=1');
|
109 |
+
}
|
110 |
+
|
111 |
+
public function getEnvironment()
|
112 |
+
{
|
113 |
+
return $this->environment;
|
114 |
+
}
|
115 |
+
|
116 |
+
protected function getPluginEnvironment()
|
117 |
+
{
|
118 |
+
$environment = Rsc_Environment::ENV_PRODUCTION;
|
119 |
+
|
120 |
+
if (defined('WP_DEBUG') && WP_DEBUG) {
|
121 |
+
if (defined('SUPSYSTIC_STB_DEBUG') && SUPSYSTIC_STB_DEBUG) {
|
122 |
+
$environment = Rsc_Environment::ENV_DEVELOPMENT;
|
123 |
+
}
|
124 |
+
}
|
125 |
+
|
126 |
+
return $environment;
|
127 |
+
}
|
128 |
+
|
129 |
+
protected function checkCacheHtacess()
|
130 |
+
{
|
131 |
+
$fullPath = wp_upload_dir();
|
132 |
+
$fullPath = $fullPath['basedir'];
|
133 |
+
$fullPath = $fullPath.'/supsystic-tables/cache/tables/.htaccess';
|
134 |
+
if(!file_exists($fullPath)){
|
135 |
+
$content = '<Files ~ "^.*">' . "\n";
|
136 |
+
$content .= 'Deny from all' . "\n";
|
137 |
+
$content .= '</Files>' . "\n";
|
138 |
+
file_put_contents($fullPath, $content);
|
139 |
+
}
|
140 |
+
}
|
141 |
+
|
142 |
+
protected function initFilesystem()
|
143 |
+
{
|
144 |
+
$directories = array(
|
145 |
+
'tmp' => '/supsystic-tables',
|
146 |
+
'log' => '/supsystic-tables/log',
|
147 |
+
'cache' => '/supsystic-tables/cache',
|
148 |
+
'cache_tables' => '/supsystic-tables/cache/tables',
|
149 |
+
);
|
150 |
+
|
151 |
+
foreach ($directories as $key => $dir) {
|
152 |
+
if (false !== $fullPath = $this->makeDirectory($dir)) {
|
153 |
+
$this->environment->getConfig()->add('plugin_' . $key, $fullPath);
|
154 |
+
}
|
155 |
+
}
|
156 |
+
|
157 |
+
$this->checkCacheHtacess();
|
158 |
+
}
|
159 |
+
|
160 |
+
/**
|
161 |
+
* Make directory in uploads directory.
|
162 |
+
* @param string $directory Relative to the WP_UPLOADS dir
|
163 |
+
* @return bool|string FALSE on failure, full path to the directory on success
|
164 |
+
*/
|
165 |
+
protected function makeDirectory($directory)
|
166 |
+
{
|
167 |
+
$uploads = wp_upload_dir();
|
168 |
+
|
169 |
+
$basedir = $uploads['basedir'];
|
170 |
+
$dir = $basedir . $directory;
|
171 |
+
if (!is_dir($dir)) {
|
172 |
+
if (false === @mkdir($dir, 0775, true)) {
|
173 |
+
return false;
|
174 |
+
}
|
175 |
+
} else {
|
176 |
+
if (! is_writable($dir)) {
|
177 |
+
return false;
|
178 |
+
}
|
179 |
+
}
|
180 |
+
|
181 |
+
return $dir;
|
182 |
+
}
|
183 |
+
|
184 |
+
public function addShortcodeButton() {
|
185 |
+
add_filter('mce_external_plugins', array($this, 'addButton'));
|
186 |
+
add_filter('mce_buttons', array($this, 'registerButton'));
|
187 |
+
wp_enqueue_script('jquery');
|
188 |
+
if(is_admin()) {
|
189 |
+
wp_enqueue_script('stb-bpopup-js', $this->environment->getConfig()->get('plugin_url') . '/app/assets/js/plugins/jquery.bpopup.min.js', array('jquery'), false, true);
|
190 |
+
wp_enqueue_style('stb-bpopup', $this->environment->getConfig()->get('plugin_url') . '/app/assets/css/editor-dialog.css');
|
191 |
+
}
|
192 |
+
}
|
193 |
+
|
194 |
+
public function addButton( $plugin_array ) {
|
195 |
+
$plugin_array['addShortcodeDataTable'] = $this->environment->getConfig()->get('plugin_url') . '/app/assets/js/buttons.js';
|
196 |
+
|
197 |
+
return $plugin_array;
|
198 |
+
}
|
199 |
+
|
200 |
+
public function registerButton( $buttons ) {
|
201 |
+
array_push( $buttons, 'addShortcodeDataTable', 'selectShortcode' );
|
202 |
+
|
203 |
+
return $buttons;
|
204 |
+
}
|
205 |
+
}
|
index.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Plugin Name: Data Tables Generator by Supsystic
|
5 |
* Plugin URI: http://supsystic.com
|
6 |
* Description: Create and manage beautiful data tables with custom design. No HTML knowledge is required
|
7 |
-
* Version: 1.10.
|
8 |
* Author: supsystic.com
|
9 |
* Author URI: http://supsystic.com
|
10 |
* Text Domain: supsystic_tables
|
4 |
* Plugin Name: Data Tables Generator by Supsystic
|
5 |
* Plugin URI: http://supsystic.com
|
6 |
* Description: Create and manage beautiful data tables with custom design. No HTML knowledge is required
|
7 |
+
* Version: 1.10.11
|
8 |
* Author: supsystic.com
|
9 |
* Author URI: http://supsystic.com
|
10 |
* Text Domain: supsystic_tables
|
readme.txt
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
Contributors: supsystic.com
|
3 |
Tags: data table, spreadsheet, table builder, charts, graphs, wordpress table plugin, excel, line chart, pie chart, visualise data
|
4 |
Tested up to: 5.7
|
5 |
-
Stable tag: 1.10.
|
6 |
|
7 |
Create data tables with charts and graphs. Custom design, navigation, searching and ordering functions. Export to PDF, CSV, Print. Excel spreadsheet. WooCommerce Integration.
|
8 |
|
@@ -214,6 +214,9 @@ It's perfect for product [Price List](http://woo.supsystic.com/price-list "Price
|
|
214 |
Create custom order forms which increase your conversion rate!
|
215 |
|
216 |
== Changelog ==
|
|
|
|
|
|
|
217 |
1.10.9 / 26.03.2021 =
|
218 |
* Fixes for recent update issue
|
219 |
|
2 |
Contributors: supsystic.com
|
3 |
Tags: data table, spreadsheet, table builder, charts, graphs, wordpress table plugin, excel, line chart, pie chart, visualise data
|
4 |
Tested up to: 5.7
|
5 |
+
Stable tag: 1.10.11
|
6 |
|
7 |
Create data tables with charts and graphs. Custom design, navigation, searching and ordering functions. Export to PDF, CSV, Print. Excel spreadsheet. WooCommerce Integration.
|
8 |
|
214 |
Create custom order forms which increase your conversion rate!
|
215 |
|
216 |
== Changelog ==
|
217 |
+
1.10.11 / 24.05.2021 =
|
218 |
+
* Add support PHP 8
|
219 |
+
|
220 |
1.10.9 / 26.03.2021 =
|
221 |
* Fixes for recent update issue
|
222 |
|
src/SupsysticTables/Core/assets/js/core.js
CHANGED
@@ -963,7 +963,8 @@ var g_stbServerSideProcessingIsActive = false;
|
|
963 |
$table.trigger('beforeInitializeTable', $table);
|
964 |
var dateFormat = $table.data('date-format');
|
965 |
$table.dataTable.moment(dateFormat);
|
966 |
-
|
|
|
967 |
tableInstance.table_id = $table.data('id');
|
968 |
tableInstance.table_view_id = $table.data('view-id');
|
969 |
tableInstance.fnFakeRowspan();
|
963 |
$table.trigger('beforeInitializeTable', $table);
|
964 |
var dateFormat = $table.data('date-format');
|
965 |
$table.dataTable.moment(dateFormat);
|
966 |
+
jQuery.fn.dataTable.ext.order.intl();
|
967 |
+
tableInstance = $table.dataTable($.extend({}, defaultFeatures, config, extraConfig, ajaxSource, reinit));;
|
968 |
tableInstance.table_id = $table.data('id');
|
969 |
tableInstance.table_view_id = $table.data('view-id');
|
970 |
tableInstance.fnFakeRowspan();
|
src/SupsysticTables/Core/assets/js/lib/intl.js
ADDED
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* This sorting type will replace DataTables' default string sort with one that
|
3 |
+
* will use a locale aware collator. This is supported by IE11, Edge, Chrome,
|
4 |
+
* Firefox and Safari 10+. Any browser that does not support the Intl will
|
5 |
+
* simply fall back to UTF8 string sorting.
|
6 |
+
*
|
7 |
+
* This method simply needs to be called prior to the DataTables' initialisation
|
8 |
+
* to replace the default string sort with locale aware sorting. The method
|
9 |
+
* optionally takes two arguments:
|
10 |
+
*
|
11 |
+
* 1. [Optional] Locale or array of locales
|
12 |
+
* 2. [Optional] Collator options
|
13 |
+
*
|
14 |
+
* For the supported options please see the
|
15 |
+
* [MDN Intl documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator).
|
16 |
+
*
|
17 |
+
* @name intl
|
18 |
+
* @summary Sort string data using the Intl Javascript API
|
19 |
+
* @author [Allan Jardine](//datatables.net)
|
20 |
+
* @depends DataTables 1.10+
|
21 |
+
*
|
22 |
+
* @example
|
23 |
+
* // Host's current locale
|
24 |
+
* $.fn.dataTable.ext.order.intl();
|
25 |
+
*
|
26 |
+
* @example
|
27 |
+
* // Explicit locale
|
28 |
+
* $.fn.dataTable.ext.order.intl('de-u-co-phonebk');
|
29 |
+
*
|
30 |
+
* @example
|
31 |
+
* // Locale with configuration options
|
32 |
+
* $.fn.dataTable.ext.order.intl('fr', {
|
33 |
+
* sensitivity: 'base'
|
34 |
+
* } );
|
35 |
+
*/
|
36 |
+
|
37 |
+
|
38 |
+
// UMD
|
39 |
+
(function( factory ) {
|
40 |
+
"use strict";
|
41 |
+
|
42 |
+
if ( typeof define === 'function' && define.amd ) {
|
43 |
+
// AMD
|
44 |
+
define( ['jquery'], function ( $ ) {
|
45 |
+
return factory( $, window, document );
|
46 |
+
} );
|
47 |
+
}
|
48 |
+
else if ( typeof exports === 'object' ) {
|
49 |
+
// CommonJS
|
50 |
+
module.exports = function (root, $) {
|
51 |
+
if ( ! root ) {
|
52 |
+
root = window;
|
53 |
+
}
|
54 |
+
|
55 |
+
if ( ! $ ) {
|
56 |
+
$ = typeof window !== 'undefined' ?
|
57 |
+
require('jquery') :
|
58 |
+
require('jquery')( root );
|
59 |
+
}
|
60 |
+
|
61 |
+
return factory( $, root, root.document );
|
62 |
+
};
|
63 |
+
}
|
64 |
+
else {
|
65 |
+
// Browser
|
66 |
+
factory( jQuery, window, document );
|
67 |
+
}
|
68 |
+
}
|
69 |
+
(function( $, window, document ) {
|
70 |
+
|
71 |
+
|
72 |
+
$.fn.dataTable.ext.order.intl = function ( locales, options ) {
|
73 |
+
if ( window.Intl ) {
|
74 |
+
var collator = new Intl.Collator( locales, options );
|
75 |
+
var types = $.fn.dataTable.ext.type;
|
76 |
+
|
77 |
+
delete types.order['string-pre'];
|
78 |
+
types.order['string-asc'] = collator.compare;
|
79 |
+
types.order['string-desc'] = function ( a, b ) {
|
80 |
+
return collator.compare( a, b ) * -1;
|
81 |
+
};
|
82 |
+
}
|
83 |
+
};
|
84 |
+
|
85 |
+
|
86 |
+
}));
|
src/SupsysticTables/Tables/Model/Tables.php
CHANGED
@@ -381,6 +381,10 @@ class SupsysticTables_Tables_Model_Tables extends SupsysticTables_Core_BaseModel
|
|
381 |
'type' => 1,
|
382 |
'link' => 1,
|
383 |
'style' => 1,
|
|
|
|
|
|
|
|
|
384 |
),
|
385 |
'hr' => array(
|
386 |
'align' => 1,
|
@@ -413,6 +417,7 @@ class SupsysticTables_Tables_Model_Tables extends SupsysticTables_Core_BaseModel
|
|
413 |
'formtarget' => 1,
|
414 |
'type' => 1,
|
415 |
'value' => 1,
|
|
|
416 |
),
|
417 |
);
|
418 |
$allowedDiv = array(
|
381 |
'type' => 1,
|
382 |
'link' => 1,
|
383 |
'style' => 1,
|
384 |
+
'class' => 1,
|
385 |
+
'data-quantity' => 1,
|
386 |
+
'data-product_id' => 1,
|
387 |
+
|
388 |
),
|
389 |
'hr' => array(
|
390 |
'align' => 1,
|
417 |
'formtarget' => 1,
|
418 |
'type' => 1,
|
419 |
'value' => 1,
|
420 |
+
'onclick' =>1,
|
421 |
),
|
422 |
);
|
423 |
$allowedDiv = array(
|
src/SupsysticTables/Tables/Module.php
CHANGED
@@ -1156,6 +1156,15 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
|
|
1156 |
->addDependency('jquery')
|
1157 |
);
|
1158 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1159 |
$ui->add(
|
1160 |
$ui->createScript('supsystic-tables-datatables-responsive-js')
|
1161 |
->setHookName($dynamicHookName)
|
1156 |
->addDependency('jquery')
|
1157 |
);
|
1158 |
|
1159 |
+
$ui->add(
|
1160 |
+
$ui->createScript('intl.js')
|
1161 |
+
->setHookName($dynamicHookName)
|
1162 |
+
->setSource($coreModulePath . '/assets/js/lib/intl.js')
|
1163 |
+
->setVersion('1.10.23')
|
1164 |
+
->setCachingAllowed(true)
|
1165 |
+
->addDependency('jquery')
|
1166 |
+
);
|
1167 |
+
|
1168 |
$ui->add(
|
1169 |
$ui->createScript('supsystic-tables-datatables-responsive-js')
|
1170 |
->setHookName($dynamicHookName)
|
vendor/Twig/Node/Embed.php
CHANGED
@@ -17,7 +17,7 @@
|
|
17 |
class Twig_SupTwg_Node_Embed extends Twig_SupTwg_Node_Include
|
18 |
{
|
19 |
// we don't inject the module to avoid node visitors to traverse it twice (as it will be already visited in the main module)
|
20 |
-
public function __construct($name, $index, Twig_SupTwg_Node_Expression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null)
|
21 |
{
|
22 |
parent::__construct(new Twig_SupTwg_Node_Expression_Constant('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag);
|
23 |
|
17 |
class Twig_SupTwg_Node_Embed extends Twig_SupTwg_Node_Include
|
18 |
{
|
19 |
// we don't inject the module to avoid node visitors to traverse it twice (as it will be already visited in the main module)
|
20 |
+
public function __construct($name, $index, Twig_SupTwg_Node_Expression $variables = null, $only = false, $ignoreMissing = false, $lineno = null, $tag = null)
|
21 |
{
|
22 |
parent::__construct(new Twig_SupTwg_Node_Expression_Constant('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag);
|
23 |
|
vendor/Twig/Node/Include.php
CHANGED
@@ -17,7 +17,7 @@
|
|
17 |
*/
|
18 |
class Twig_SupTwg_Node_Include extends Twig_SupTwg_Node implements Twig_SupTwg_NodeOutputInterface
|
19 |
{
|
20 |
-
public function __construct(Twig_SupTwg_Node_Expression $expr, Twig_SupTwg_Node_Expression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null)
|
21 |
{
|
22 |
$nodes = array('expr' => $expr);
|
23 |
if (null !== $variables) {
|
17 |
*/
|
18 |
class Twig_SupTwg_Node_Include extends Twig_SupTwg_Node implements Twig_SupTwg_NodeOutputInterface
|
19 |
{
|
20 |
+
public function __construct(Twig_SupTwg_Node_Expression $expr, Twig_SupTwg_Node_Expression $variables = null, $only = false, $ignoreMissing = false, $lineno = null, $tag = null)
|
21 |
{
|
22 |
$nodes = array('expr' => $expr);
|
23 |
if (null !== $variables) {
|