Data Tables Generator by Supsystic - Version 1.9.71

Version Description

/ 25.02.2019 = * Fix of formulas: SUMIF. Fix of applying of current date to datepicker for empty edited cells of Date type * Exclude images it tables from lazy loading by Jetpack

Download this release

Release Info

Developer supsystic.com
Plugin Icon 128x128 Data Tables Generator by Supsystic
Version 1.9.71
Comparing to
See all releases

Code changes from version 1.9.6 to 1.9.71

Files changed (40) hide show
  1. app/SupsysticTables.php +1 -1
  2. app/assets/css/supsystic-ui.css +23 -0
  3. app/assets/img/kinsta_banner.png +0 -0
  4. index.php +1 -1
  5. readme.txt +314 -265
  6. screenshot-1.jpg +0 -0
  7. screenshot-2.png +0 -0
  8. screenshot-3.png +0 -0
  9. screenshot-4.png +0 -0
  10. src/SupsysticTables/Core/Module.php +8 -0
  11. src/SupsysticTables/Core/assets/js/core.js +159 -29
  12. src/SupsysticTables/Core/assets/js/create-table.js +1 -1
  13. src/SupsysticTables/Diagram/assets/img/diagrams-min.png +0 -0
  14. src/SupsysticTables/Diagram/views/partials/tabContent.twig +8 -2
  15. src/SupsysticTables/Featuredplugins/Controller.php +4 -1
  16. src/SupsysticTables/Featuredplugins/assets/css/admin.featured-plugins.css +4 -0
  17. src/SupsysticTables/Featuredplugins/views/index.twig +5 -3
  18. src/SupsysticTables/Overview/Controller.php +2 -2
  19. src/SupsysticTables/Overview/assets/css/overview.css +13 -17
  20. src/SupsysticTables/Overview/views/index.twig +21 -24
  21. src/SupsysticTables/Tables/Controller.php +5 -2
  22. src/SupsysticTables/Tables/Model/Tables.php +13 -12
  23. src/SupsysticTables/Tables/Module.php +49 -11
  24. src/SupsysticTables/Tables/assets/css/tables.shortcode.css +22 -9
  25. src/SupsysticTables/Tables/assets/css/tables.view.css +40 -7
  26. src/SupsysticTables/Tables/assets/img/database.gif +0 -0
  27. src/SupsysticTables/Tables/assets/img/history_table.gif +0 -0
  28. src/SupsysticTables/Tables/assets/js/editor/tables.editor.js +13 -18
  29. src/SupsysticTables/Tables/assets/js/editor/tables.editor.toolbar.js +7 -2
  30. src/SupsysticTables/Tables/assets/js/tables.model.js +76 -57
  31. src/SupsysticTables/Tables/assets/js/tables.shortcode.js +1 -110
  32. src/SupsysticTables/Tables/assets/js/tables.view.js +97 -24
  33. src/SupsysticTables/Tables/assets/libraries/ruleJS/ruleJS.js +2 -2
  34. src/SupsysticTables/Tables/assets/libraries/ruleJS/ruleJS.lib.full.js +37 -1
  35. src/SupsysticTables/Tables/assets/libraries/slimscroll.min.js +16 -0
  36. src/SupsysticTables/Tables/views/partials/historyTabContent.twig +9 -3
  37. src/SupsysticTables/Tables/views/shortcode.twig +14 -7
  38. src/SupsysticTables/Tables/views/styles.twig +1 -1
  39. src/SupsysticTables/Tables/views/view.twig +488 -480
  40. src/SupsysticTables/Woocommerce/views/partials/tabContent.twig +4 -4
app/SupsysticTables.php CHANGED
@@ -18,7 +18,7 @@ class SupsysticTables
18
 
19
  $menuSlug = 'supsystic-tables';
20
  $pluginPath = dirname(dirname(__FILE__));
21
- $environment = new Rsc_Environment('st', '1.9.6', $pluginPath);
22
 
23
  /* Configure */
24
  $environment->configure(
18
 
19
  $menuSlug = 'supsystic-tables';
20
  $pluginPath = dirname(dirname(__FILE__));
21
+ $environment = new Rsc_Environment('st', '1.9.71', $pluginPath);
22
 
23
  /* Configure */
24
  $environment->configure(
app/assets/css/supsystic-ui.css CHANGED
@@ -33,6 +33,29 @@
33
  font-size: 15px;
34
  }
35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  .supsystic-plugin a {
37
  color: #4ae8ea;
38
  }
33
  font-size: 15px;
34
  }
35
 
36
+ /* Helps avoid to conflict with some user themes */
37
+ .supsystic-plugin .supsystic-content .row {
38
+ display: block;
39
+ width: auto;
40
+ table-layout: unset;
41
+ }
42
+
43
+ .supsystic-plugin .supsystic-content .row > div {
44
+ display: block;
45
+ min-height: 1px;
46
+ padding-left: initial;
47
+ padding-right: initial;
48
+ }
49
+
50
+ .supsystic-plugin .supsystic-content .row > [class*="col-lg-"],
51
+ .supsystic-plugin .supsystic-content .row > [class*="col-md-"],
52
+ .supsystic-plugin .supsystic-content .row > [class*="col-sm-"],
53
+ .supsystic-plugin .supsystic-content .row > [class*="col-xs-"] {
54
+ padding-left: 15px;
55
+ padding-right: 15px;
56
+ }
57
+ /* Helps avoid to conflict with some user themes */
58
+
59
  .supsystic-plugin a {
60
  color: #4ae8ea;
61
  }
app/assets/img/kinsta_banner.png ADDED
Binary file
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.9.6
8
  * Author: supsystic.com
9
  * Author URI: http://supsystic.com
10
  */
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.9.71
8
  * Author: supsystic.com
9
  * Author URI: http://supsystic.com
10
  */
readme.txt CHANGED
@@ -1,51 +1,55 @@
1
  === Data Tables Generator by Supsystic ===
2
  Contributors: supsystic.com
3
  Tags: csv, excel, table, tablesorter,data table, table, database, table generator, builder, generator, cells, chart, charting, charts, column chart, gauge chart, graph, graphs, html5, line chart, pie chart, scatter chart, spreadsheet, visualise data, Woo, Woo Commerce, WooCommerce, product table, woocommerce product, product tables, catalog, product catalog, price list, pricing list, order forms, woocommerce tables, wholesale
4
- Tested up to: 5.0.2
5
- Stable tag: 1.9.6
6
 
7
- Create data tables with charts and graphs. WooCommerce Integration. List the products with responsive Product Table. Custom design, navigation, searching and ordering functions. Export to PDF, CSV, Print. Excel spreadsheet.
8
 
9
  == Description ==
10
 
11
- Create and manage tables from the admin panel quickly, easily and effectively. List the products with responsive [WooCommerce Product Table](https://supsystic.com/plugins/woocommerce-product-table "WooCommerce Product Table"). Perfect for product list views, order forms, wholesale, product catalogs. Make data tables responsive with interactive charts and graphs, sorting, pagination, filtering and more. [Data Tables by Supsystic](http://supsystic.com/plugins/data-tables-generator-plugin?utm_source=wordpress&utm_medium=description&utm_campaign=datatables "Data Tables WordPress plugin") plugin features:
12
-
13
- * No coding required, responsive tables
14
- * [FrontEnd Table Editing](http://supsystic.com/product/data-tables-generator-plugin/#examples "FrontEnd Data Table Editing Example")
15
- * [FrontEnd Table export - CSV, Excel, PDF](https://supsystic.com/example/export-import-of-tables "Export & Import of Tables")
16
- * [Diagrams, Charts and Graphs](https://supsystic.com/example/table-with-diagram-example "Data Table With Google Charts")
17
- * [Formulas support, HTML tables support for data cells](https://supsystic.com/example/table-with-calculations-example "Table with Calculations")
18
- * [WooCommerce Integration](https://supsystic.com/plugins/woocommerce-product-table "WooCommerce Product Table")
19
- * WooCommerce Attribute & Category Support
20
- * Quantities and Multiple add to cart
21
- * [Product Table online builder](https://supsystic.com/feature/product-table-online-builder/ "Product Table online builder")
22
- * Enable table Caption, Header, Footer
 
 
 
 
23
  * "Bold" and "Italic" font style support for the data table cells
24
- * Change cell and font color
25
- * [Navigation with Searching, Sorting, Pagination functions](http://supsystic.com/product/data-tables-generator-plugin/#examples "Data Table navigation with Searching and Ordering functions")
26
- * Various style setting appropriated for any sites type
 
27
  * SEO friendly, content of DataTable picked up by search engines
28
- * Build diagrams from the data table
29
- * [Google Charts integration](https://supsystic.com/example/table-and-diagrams-interaction/ "Google Charts WordPress plugin example")
30
- * [Automatic import from Google Sheetss](https://supsystic.com/documentation/synchronization-table-google-sheet/ "Autoupdates from Google Sheets")
31
- * [Data Table Examples](http://supsystic.com/data-tables-examples?utm_source=wordpress&utm_medium=examples&utm_campaign=datatables "Data Table Examples")
32
 
33
- Data Tables Generator is a new plugin created by Supsystic. It allows you to process and manage SEO friendly data tables quickly and easily. This plugin can structure information and can be adjusted to fit every need. Many ways of functional and visual customization of the tables improve site design and let you modify it to cater to a particular individual or a specific task. Searching, ordering and pagination are the functions that help everyone find the required information in a matter of seconds. The intuitive Settings panel and the responsive Editor save lots of time that you would much rather allocate for other useful things or relaxation.
34
-
35
- HTML tables responsive and awesome on all devices
36
 
37
  [youtube https://www.youtube.com/watch?v=RZ2I-aCiLZE]
38
 
39
  = Data Tables Plugin Support =
40
 
41
- If you have any any problem or a tailored request for the Data Tables Generator by Supsystic, please [let us know](http://supsystic.com/contact-us/ "Contact Us")!
42
 
43
  This [guide](https://supsystic.com/make-requests-support-service/ "How to Make Requests to Support Service") helps you provide the right information on your issue.
44
 
45
  = Translate Data Table Generator by Supsystic to Your Language =
46
 
47
- You have an incredible opportunity to get PRO version of the photo gallery for free. Just make translation of the Data Table Generator by Supsystic plugin!
48
  [Contact Us](http://supsystic.com/plugins/data-tables-generator-plugin#contact?utm_source=wordpress&utm_medium=contactus&utm_campaign=datatables "Contact Us") if you are willing to translate the plugin.
 
49
  Available data table plugin translations:
50
 
51
  * English
@@ -66,104 +70,49 @@ Available data table plugin translations:
66
 
67
  == Frequently Asked Questions ==
68
 
69
- = How to edit data in the Table? =
70
- Different tutorials about data editing you can find [here](https://supsystic.com/docs/data-editor/ "Data editor")
71
-
72
- = How to configure the Table? =
73
- Main Table settings is [here](https://supsystic.com/docs/table-settings/ "Table settings")
74
-
75
- = How to use HTML elements in tables? =
76
- You can paste HTML elements into our tables. Read [here](https://supsystic.com/documentation/use-html-elements-tables/ "How to use HTML elements in tables?") how to do that
77
-
78
- = How to install PRO version of plugin? =
79
-
80
- To install Data Tables Generator by Supsystic PRO follow this [instruction](https://supsystic.com/documentation/data-tables-installation-pro-version/ "Installation of PRO version")
81
- = How to create WooCommerce Product Table? =
82
- Different tutorials about creating and customizing the Produst Table you can find [here](https://supsystic.com/docs/woocommerce-product-table/ "Product Table Documentation")
83
-
84
- = Which properties and columns can I display in the Product table? =
85
- Your WooCommerce product table can include any of the following columns: Product attributes, Categories, SKU, Add to cart button, Summary, Date, Price, Product Thumbnail, Reviews and you can display each type as a separate column in the product table.
86
-
87
- == Screenshots ==
88
 
89
- 1. [Data Table Plugin Admin Area](http://supsystic.com/plugins/data-tables-generator-plugin?utm_source=wordpress&utm_medium=screenshotsfirst&utm_campaign=datatables "Data Tables WordPress plugin")
90
- 2. Data Table with Images and Links. [More Examples](http://supsystic.com/data-tables-examples?utm_source=wordpress&utm_medium=screenshotssecond&utm_campaign=datatables "Data Table WordPress Plugin Examples") include tables with charts, graphs and diagrams
91
- 3. [Data Table with Google Charts](http://supsystic.com/table-with-diagram-example/ "Data Table with Google Charts")
92
- 4. [WooCommerce Product Table](https://supsystic.com/plugins/woocommerce-product-table/ "WooCommerce Product Table")
93
 
94
-
95
- == Installation ==
96
-
97
- = To install a plugin via FTP, you must =
98
-
99
- 1. Download the Data Tables Generator by Supsystic plugin
100
- 2. Unarchive the plugin data-tables-generator-by-supsystic.zip
101
- 3. Copy the folder with plugin
102
- 4. Open ftp \wp-content\plugins\
103
- 5. Paste the plug-ins folder in the folder
104
- 6. Go to admin panel => open item "Plugins" => activate the Data Tables Generator plugin
105
-
106
- == Other Notes ==
107
-
108
- How to Create Data Tables in WordPress -
109
-
110
- = Step 1: [Creating Responsive Data Table](https://supsystic.com/documentation/data-tables-getting-started/ "Data Tables Getting Started") =
111
-
112
- 1. On the left navigation menu click “Add new table (or spreadsheet)”.
113
- 2. Enter the title of table, set the number of Rows and Columns.
114
  3. Click “OK”.
115
 
116
- = Step 2: Adding data to the Tables by Supsystic =
117
 
118
  1. Click “Editor” spreadsheet button.
119
  2. Fill the table.
120
- 3. [Customize the data](https://supsystic.com/docs/data-editor/ "Data Editor") – here you can:
121
-
122
- * Add a spreadsheet row and column to the table
123
- * set the font of text – bold and italic
124
- * choose spreadsheet text and background color
125
- * specify spreadsheet horizontal and vertical alignment
126
 
127
- The following options are available by clicking the right mouse button (choose the certain cell, column or row and click the right button of mouse) –
128
- * cancel or restore your actions
129
- * insert spreadsheet row or column where you want
130
- * remove spreadsheet row or column
131
- * enable “Read only” mode for any cells, rows and columns and even for the whole table
132
- * set the alignment of text
133
 
134
- You can also change the spreadsheet column / row width – use your mouse, move the mouse pointer to right side of the column boundary / (bottom side of the row boundary) until a resize pointer appears, and then drag the boundary.
135
- = Step 3: Customizing of Data Tables by Supsystic =
 
136
 
137
- In order to return to configuration of tables – click the “Settings” button.
138
- Here you can set all the options of [Data Tables Generator plugin](https://supsystic.com/plugins/data-tables-generator-plugin/ "Data Tables Generator plugin"). Simply navigate the corresponding section of properties Table Elements, Features, Styling.
139
 
140
- Important! After changing the plugin settings don’t forget to click “Save”.
141
 
142
- = Table Elements =
 
 
143
 
144
- * Caption display the title of the table
145
- * Header display the first row as a header of a table
146
- * Footer – display the first row as a footer of a table
147
 
148
- = Features =
 
149
 
150
- * Auto width
151
- * Ordering – sort the table by the desired characteristics
152
- * Pagination – enable page control, divide content of the table into discrete pages to let users tap through a series of related pages.
153
- * Searching – enable table search.
154
- * State saving – restore table state on page reload.
155
- * Responsive Modes
156
- * CSS Editor
157
- * Frontend Export - CSV, Excel, PDF
158
- * Save Editable Fields
159
- * Export Tables - CSV, Excel, PDF
160
- * Import Tables - CSV, Excel, Google Sheets
161
- * Auto update from Google Sheets
162
- * Diagrams
163
- * Table History
164
 
165
- = Styling =
166
 
 
 
 
 
167
  * Borders – you can select “Cell” border – inserts a border around all four sides of each cell or “Row” border – inserts a border only above and under each row.
168
  * Compact – reduce the amount of white space.
169
  * Highlighting – enable row highlighting as the mouse pointer hovers over an object.
@@ -171,16 +120,72 @@ Important! After changing the plugin settings don’t forget to click “Save”
171
  * Highlight the order column – highlight the column that the table data is currently ordered by.
172
  * Row striping – for example – you use a table, but the table’s rows are difficult to separate visually, especially when there are many columns (or multiple lines to a row) – add row striping to a table, it will display rows background in two similar shades of color.
173
 
174
- = Step 4: Preview settings (include charts and graphs preview) =
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
175
 
176
- After you change some settings with responsive data tables plugin, you can immediately see the result – click the “Preview” button and check the table. Note that the table may look a little different depending on your theme style.
 
177
 
178
- = Step 5: Displaying the Tables on website =
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
 
180
- 1. On the left navigation menu click “Tables”.
181
- 2. Find the table which you need and copy the shortcode.
182
- 3. Paste the shortcode into your post or page and Data Tables Generator by Supsystic will automatically create table on your page.
183
- Important! Shortcode must be inserted in a text editor page, and not in the visual environment.
184
 
185
  = Our plugins =
186
 
@@ -200,60 +205,104 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
200
  * [Translate by Supsystic](https://wordpress.org/plugins/translate-by-supsystic/ "Translate by Supsystic")
201
 
202
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
203
  == Changelog ==
204
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  = 1.9.6 / 20.12.2018 =
206
  * Added option on-off legend labels along with parts of the chart
207
  * Small Fix Zing Charts
208
  * Fix of exporting of tables with collapsible cells
209
  * Fix of formula COUNTIF
210
- * Fix of applying of format to cell value
211
  * Styles fix for Add New Table popup
212
- * Encode cell data before saving in db
213
- * Removed slashes from cell after import from Spreadheets
214
 
215
 
216
  = 1.9.5 / 12.12.2018 =
217
  * Removed urldecode to prevent replace '+' to ' '
218
- * Added compability with tables-generator-pro
219
  * Fix of SUBSTITUTE formula
220
  * Fix of TEXT formula
221
  * Work with woo plugin addon
222
- * Improved vendor file to compability with other possible addons
223
- * Removed unused css
224
  * Add of ability to search tables in admin area by id
225
  * Add "Mark Last Edited Cell" option
226
  * Fixed Google Charts tooltip flickering
227
  * Add Global Page Search Form for multiple searching by all tables on page
228
  * Fix of integration with Contact Form by Supsystiс
229
- * Fix of displaying error if ZipArchive extension is not enabled
230
  * Fix of localization of tables' list in admin area
231
- * Fix of exporting table to PDF
232
  * Fixed fatal error (controller name creation)
233
  * Fix of displaying of inserted images in table cells
234
  * Fix of dates formatting after automatic import from Google Sheet if Server Side Processing is enabled
235
  * Add of shortcode param "search" to preset the search value for table
236
  * Fix of exporting of tables with hidden cells to PDF
237
- * Fix of displaying of message if export from Google Spreadsheets is denied
238
  * Add ability to show full images in lightbox for table images
239
  * add new screenshot
240
  * Fix of applying of table events for tables with pagination and search features, if Server-side Processing is enabled
241
- * Fixed compability free plugin with woo pro addon.
242
  * minify numeral.min.js
243
- * Added multy products functional
244
  * Fix of searching by columns
245
  * Fixed cloned table with woo addon data
246
  * Fix of exporting of tables with hidden cells to PDF
247
  * Fix of using of frontend fields in tables with fixed header / footer / columns
248
- * Added server side processing for woo addon
249
  * Fix of exporting tables with hidden cells to MS Excel
250
  * Fixed woo addon bugs
251
  * Fixed javascript error for tables with merged cells
252
- * Fixed pagination with 'all' parametr. Fixed draw() table after search event
253
  * Fixed add to cart with ssp
254
  * Fix of applying of condition formatting
255
- * Fixed preview and css
256
- * Fix of exporting table to PDF and Excel
257
  * Fixed column search
258
  * Add advertise for Woo Addon
259
 
@@ -264,18 +313,18 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
264
 
265
  = 1.9.3 / 01.11.2018 =
266
  * Add integration with Contact Form by Supsystic
267
- * Fix of merging cells for fixed rows / columns. Small code fix and improvement
268
- * Fix of displaying autoindex. Fix of displaying of collapsible cells
269
  * Removed deprecated functions
270
- * Added option to display col with merge cells in responcive mode
271
  * Added export only visible data
272
 
273
  = 1.9.2 / 17.10.2018 =
274
  * Fix displaying of lightbox popup for tables with fixed rows/columns
275
  * Update of displaying of cell comments on mobile
276
  * Fix displaying of editable fields
277
- * Fix of exporting to pdf for tables in standard responsive mode with column for auto index in new created column
278
- * Fix position of caption for tables with fixed rows / columns
279
 
280
  = 1.9.1 / 09.10.2018 =
281
  * Make correct sort order in History table mode
@@ -283,10 +332,10 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
283
  * Fix minor issue with compatibility for PHP 7.2 or greater
284
  * Fix percents in Header/Footer
285
  * Add diagram option: Axe Х Mode
286
- * Fix of applying of conditions data to cloned table
287
  * Fix of multi-exporting of tables
288
- * Fix of applying of font families to table
289
- * Add ability to set style for chart points
290
  * Fix of import data from CSS
291
 
292
  = 1.9.0 / 30.08.2018 =
@@ -298,7 +347,7 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
298
  * Fix creating multiple tables
299
  * Changed CRUD for tables list
300
  * Fix border-bottom for Fixed Columns
301
- * Fixed default css text in editor
302
  * Fixed crud bugs
303
  * Fix editable fields after export
304
  * Fix export to PDF with multiple rows in a cell
@@ -313,18 +362,18 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
313
  * For Source Option added the ability to Export data from an External DB and use SQL Query
314
  * Fixed row headers in Editor Tab
315
  * Added the ability to build a chart based on data from database tables
316
- * Added posibility to place reduction like 1-4, A-D in part shortcode
317
 
318
  = 1.8.7 / 24.07.2018 =
319
  * Fix Multisite Installation process
320
  * Fixed the problem: Clicking on the cell raises the table up
321
- * Fixes for optioon Source - Database
322
  * Added the ability to edit database table data through the frontend fields
323
  * Added the ability to create diagrams for cells with shortcodes
324
  * Fix underline position by exporting to pdf
325
  * Fix of dynamically applying of diagram's options to diagram preview
326
  * Add support Strict Matching Option for SSP
327
- * Fix of displaying merged cells in table footer
328
  * Fix for GlobalSearch
329
 
330
  = 1.8.6 / 03.07.2018 =
@@ -342,12 +391,12 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
342
  * Added Turkish translation
343
  * Add a special parameter Fixed Table Width for mobile devices
344
  * Add option "Export Fonts to PDF"
345
- * Fix of creating history for new table and new table user
346
  * Change "Insert picture" toolbar button to "Insert media"
347
  * Minor issues fix
348
 
349
  = 1.8.4 / 30.05.2018 =
350
- * Add of option to plugin settings: Disable WP Footer Fix
351
  * Implemented automatic updating of diagrams when changing data in a table
352
  * Added import/export Selectable Fields to/from Excel
353
  * Fixed the width of text rows in mobile mode
@@ -355,20 +404,20 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
355
  * Added search by table columns
356
  * Fix header in Elementor tab
357
  * Fix of conflict of dataTables script and http://downloads.mailchimp.com/js/signup-forms/popup/embed.js
358
- * Fixed problems with first activation
359
  * Fix of table sorting for empty cells
360
- * Add ability to use letters as a column indexes in table's special shortcodes. Fix of using common features for the Table Part Shortcode
361
- * Fix of displaying column of Auto Index in mode "Create new column"
362
- * Fix for displaying of caption for tables with fixed columns
363
  * Fix of using of Frontend Fields this Fixed Columns option. Fix of "Use for Logged In Users Only" option for Frontend Fields
364
  * Fix of Global Table Data Search
365
- * Fix of displaying column of Auto Index in mode "Create new column"
366
  * Add Pagination in Editor
367
  * Fix saving ReadOnly for cells
368
- * Fix for export table to PDF from admin area
369
  * Fix data params for cells which use formulas, which depended on cells with shortcodes inside
370
- * Fix of removing of table rows after remove the table
371
- * Fix issue with cyrillic symbols on export to PDF
372
  * Added ability to change the data range in the diagrams without re-creating
373
  * Fix for conditions bug
374
 
@@ -390,15 +439,15 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
390
 
391
  = 1.8.0 / 12.04.2018 =
392
  * Add of ability to remove the escaping of HTML for the formulas results
393
- * Update of way of parsing table formulas on frontend
394
  * Fix of applying text wrapping for cells during table export
395
  * Fix of applying underline text style for cells during table export
396
- * Fixed auto width + scroll in frontend
397
  * Fixed the grid offset of the table for Fixed Header
398
  * Fixed the grid offset of the table for Fixed Footer
399
  * Fix of applying underline text style for cells during table import
400
  * Fix of applying text wrapping for cells during table import
401
- * Fixed parameter "Save Frontend Fields", when save empty values
402
  * Fixed bug with "Save Frontend Fields" param and exporting changed data
403
  * Fixed Export to XSL and XSLX for invisible cells
404
  * Added hidden rows and hidden columns for Excel import
@@ -408,22 +457,22 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
408
  * Fixed javascript error for fnAdjustColumnSizing
409
  * Fixed timing for header resizing
410
  * Add Conditional Formatting feature
411
- * Add of shortcode for output only selected rows and / or columns of table
412
  * Fix of using of lower case in indexes of cells and in formulas in the table editor
413
  * Add of ability to move columns and rows in the table editor manually
414
- * Add ability to make the rows collapsible on frontend
415
- * Add ability to convert content of cells to the icons with tooltips
416
- * Update of icons of editor toolbar
417
  * Fix PopUp integration
418
- * Add ability to import / export the rules of conditional formatting from / to MS Excel
419
- * Add of check for required extension ZipArchive for import from MS Excel
420
  * Add ability to set period for creating of new table instance in history
421
- * Fix of switch the cell from selectable to editable type
422
- * Update of using of features "removed cells" and "hidden cells" on frontend for tables without headers
423
  * Fix styles for using auto table width with horizontal scroll
424
  * Fix of displaying of diagrams
425
- * Fix of displaying of pagination selectlist for table
426
- * Update the tooltips for plugin settings page
427
 
428
  = 1.7.9 / 09.03.2018 =
429
  * Fix issue for base formulas and empty cells (they should be counted as Zero)
@@ -432,13 +481,13 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
432
 
433
  = 1.7.8 / 07.03.2018 =
434
  * Add ability to use simple calculation actions with dates
435
- * Update of way to connect of table's translation
436
- * Update of tooltips for the "Language and Text" tab in table admin area
437
  * Fix for detecting browser language in Safari
438
  * Fix for Norwegian-Nynorsk translation data
439
  * Fix of formulas updating after rows / columns adding / removing
440
  * Fix of formulas updating after pasting data from another cell
441
- * Fix of correction of cells values during cells autofilling
442
  * Fix of calculation of DATE formulas: DATE, DAY, DAYS, DAYS360, EDATE, EOMONTH, MONTH, HOUR, MINUTE, ISOWEEKNUM, TODAY, NOW, SUBTOTAL
443
  * Fix of using empty cells in calculations
444
 
@@ -451,8 +500,8 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
451
  * Small code fix
452
 
453
  = 1.7.5 / 06.02.2018 =
454
- * Hotfix of applying cell styles to table
455
- * Fix of exporting table to PDF in admin area
456
  * Minor issues fix
457
 
458
  = 1.7.4 / 05.02.2018 =
@@ -460,23 +509,23 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
460
 
461
  = 1.7.3 / 03.02.2018 =
462
  * Hotfix for import formulas with links to another excel book's sheets
463
- * Hotfix for datatables with translation
464
- * Fix of displaying of sorting icons for tables with multiple header
465
  * Minor issues fix
466
 
467
  = 1.7.2 / 29.01.2018 =
468
- * Add ability to change / hide label for table's export buttons
469
  * Add ability to set paper size for PDF export
470
  * Add new table formula: INDEX
471
  * Fix of table header position if Auto Width option is enabled
472
- * Fix of formula calculating for empty cell
473
  * Fix of using auto table width with horizontal scroll
474
- * Fix for displaying of caption for tables with fixed columns
475
- * Fix for displaying of error message for table import
476
  * Fix for displaying of merged cells
477
  * Fix of formulas' parsing during table import from MS Excel
478
- * Fix of determination of cell index for tables with large count of columns during exporting table to Excell
479
- * Fix for insert link to table via toolbar
480
  * Update the way of table export to PDF
481
  * Update usability for table options in admin area
482
 
@@ -492,20 +541,20 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
492
  * Add ability to make cell invisible
493
  * Add option: Use Comma as Delimiter
494
  * Add toolbar buttons: Font Family, Font Size
495
- * Add ability to export formatted cell values without html on frontend and in admin area
496
- * Add ability to applying font family and font size for cell during import and export from MS Excel
497
  * Fix of displaying editable fields in the Automatic Columns Hiding response mode
498
  * Fix of using pagination buttons on table preview
499
- * Fix of applying background color to table cells in admin area
500
- * Fix for update of rows height in table editor
501
  * Fix of saving selected value of selects in the table cells for printing and exporting table
502
- * Fix of determination of cell index on the frontend for tables with large count of columns
503
- * Fix of using tab button for switch between editable fields on frontend
504
- * Fix of calculating formulas on frontend
505
  * Fix of styles for Diagram dialog window
506
- * Fix for export table to PDF
507
  * Fix of import from Google Spreadsheet
508
- * Move table styles to page header
509
  * Update tooltips information
510
 
511
  = 1.6.9 / 08.11.2017 =
@@ -514,14 +563,14 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
514
  * Added ability to disable or change table loader
515
  * Added ability to disable table sorting by default
516
  * Added ability to disable sorting for some columns
517
- * Added ability to sort table by multiple columns
518
- * Fixed table displaying through rss feed
519
  * Added Custom Footer option
520
  * Fixed table loading from cache
521
  * Added SUPSYSTIC_STB_DEBUG constant
522
  * Added ability to select all table rows and columns by clicking on left table corner
523
  * Fixed displaying header styles to fixed header
524
- * Fixed displaying header styles to fixed footer
525
  * Fixed Table Actions History
526
  * Small tooltips fix
527
 
@@ -530,7 +579,7 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
530
  * Fixed small issue with our internal messaging system
531
  * Added the table shortcode button to WP editor
532
  * Fixed of displaying the table editor and table options in admin area
533
- * Fixed of insert link to table cell
534
  * Added Table History functionality
535
  * Small styles fix
536
  * Fixed of table rename
@@ -540,9 +589,9 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
540
 
541
  = 1.6.7 / 05.10.2017 =
542
  * Added new option for searching table contents through standard WordPress search
543
- * Fixed bug with table when enabled Automatic column hiding option
544
  * Added new "Table rows saved per request" option
545
- * Fixed view of Settings tab
546
  * Minor issues fix
547
 
548
  = 1.6.6 / 20.09.2017 =
@@ -551,7 +600,7 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
551
  * Added Persian and Greek language
552
  * Added Spanish (Spain) language
553
  * Fixed styles for Right-To-Left languages
554
- * Fixed saving table if current saving process is in action
555
  * Added ability to use browser language to translate table
556
  * Updated of table initializing and translating
557
  * Minor issues fix
@@ -574,7 +623,7 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
574
  * Fixed incorrect insert column position
575
 
576
  = 1.6.1 / 22.06.2017 =
577
- * Added Catalan language
578
  * Prevent the applying of third-party styles to the color picker
579
  * Fixed Free and Pro plugin install Error message for Clean WP
580
  * Fixed incorrect insert column position
@@ -594,14 +643,14 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
594
  = 1.5.9 / 11.05.2017 =
595
  * Add the History Table feature
596
  * Add ability to choose rows and columns for diagrams' creating
597
- * Fix for sorting: case insensitive, sorting of formatted data, sorting data with html
598
  * Fix of creating the table for diagrams in database
599
  * Fix and optimize of saving of editable fields
600
  * Updated Hungarian language
601
 
602
  = 1.5.8 / 13.04.2017 =
603
  * Added auto import from Google Spreadsheets
604
- * Updated the Settings tab in admin area
605
  * Split the table export to Excel on the formats: .xls and .xlsx
606
  * Fix for table's import from MS Excel and Google Spreadsheets
607
  * Fix of detect hyperlinks during import from Google Spreadsheets
@@ -611,10 +660,10 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
611
  * Fix of tables creating in the database
612
 
613
  = 1.5.7 / 14.03.2017 =
614
- * Add ability to make the link from part of cell data
615
  * Add option for tables import: Append to existing table data
616
  * Update memory limits for PDF export
617
- * Optimize displaying of large tables in admin area
618
  * Compress table data keys for saving into database
619
  * Fix of import table from Google Spreadsheets
620
  * Fix of formulas: MID()
@@ -627,25 +676,25 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
627
  * Fix for displaying table caption
628
 
629
  = 1.5.6 / 22.02.2017 =
630
- * Hot fix for comparability between new FREE and old PRO version
631
  * Fix for shortcode for output table with single selected cell
632
  * Fix for "Execute JS Script After Table Is Loaded" option
633
- * Minor isues fix
634
 
635
  = 1.5.5 / 21.02.2017 =
636
- * Optimization of table's saving process and displaying the table's preview
637
- * Add ability to output single cell of table by shortcode
638
  * Add ability to output the cell value by shortcode for cells with formulas
639
- * Add ability to execute js scripts after table was initialized
640
  * Add ability to copy the cell styles during creating of rows and columns
641
  * Add support of formulas: POISSON, LOOKUP, MID
642
- * Add the highlighting of row and column for current cell in table editor
643
- * Add auto save for newly created tables
644
- * Add error message for Import dialog if file was not chosen
645
- * Add font with support of Cyrillic and Latin Extended characters for PDF export
646
- * Fix for auto fill table by dragging the cell
647
  * Fix of save the large tables
648
- * Fix the displaying the diagrams on frontend
649
  * Fix of table sorting after changing data on frontend
650
  * Fix of using the cells' coordinates in lowercase in formulas
651
  * Fix of ability to use editable fields when there are many tables on the page
@@ -664,10 +713,10 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
664
 
665
  = 1.5.2 / 12.01.2017 =
666
  * Improved Searching functionality: added new settings (min characters to search, empty table by default, strict search)
667
- * Fixed of applying format to table cells
668
  * Framework updates
669
- * Added Hungarian language
670
- * Minor isues fix
671
 
672
  = 1.5.1 / 22.12.2016 =
673
  * Add ability to set format for cells with formulas
@@ -675,14 +724,14 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
675
  * Fix ability to set formats to empty cells
676
  * Fix of wp_footer call for the broken themes
677
  * Fix of the data formatting at the table on backend and frontend
678
- * Update English language
679
- * Minor isues fix
680
 
681
  = 1.5.0 / 15.12.2016 =
682
  * Add ability to set table description
683
  * Add ability to get cell value by shortcode
684
  * Add ability to disable table borders
685
- * Add the Pagination Size option to set size of paginate buttons
686
  * Add wp_footer call for the broken themes
687
  * Add ability to enter formulas in editable fields
688
  * Add ability to parse the email links during import from xls/xlsx files
@@ -699,45 +748,45 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
699
  * Added Clear Data button to clear data in the table
700
  * Added ability to create table's header with multiple rows
701
  * Added ability to make the table's cells hidden
702
- * Added possibility to dismiss the extend notice of the license
703
  * Fix the displaying of diagrams after the removing of table rows or columns
704
  * Fix of automatic creating the columns during paste the content from another table
705
  * Fix styles of table cloning dialog
706
- * Update English language
707
 
708
  = 1.4.8 / 18.10.2016 =
709
- * Add the natural sorting for table in admin area (preview)
710
  * Add ability to use shortcodes in formulas
711
  * Update the styles of Import / Export dialog windows
712
  * Update the detect of background color and font color of the cell during import from xls / xlsx files
713
- * Optimize the position of options in the Settings tab of table admin area
714
- * Fix of import from xls and xlsx files if the cells from another sheets uses in the formulas
715
  * Fix of export of the large tables to PDF
716
- * Fix the displaying of table in the PDF file
717
- * Fix of displaying of colorpickers in the Diagram dialog window
718
  * Fix of work of Disable wrapping option
719
  * Fix for displaying the diagrams if the number of rows or columns of the table was changed
720
 
721
  = 1.4.7 / 04.10.2016 =
722
- * Add ability to freeze table elements: header, footer, columns to the right and left side of table
723
  * Add Export Page Orientation option for the Export to PDF feature
724
  * Set default measure (px) for width and height of diagram
725
  * Fix of hiding the table until it will be loaded completely
726
- * Fix of displaying the admin area of table on mobile devices
727
- * Fix of import the styles from old / new format of Excell files
728
  * Fix of table's id in the CSS styles of cloned table
729
- * Fix of save data in editable fields
730
  * Correct PRO updater URL
731
 
732
  = 1.4.6 / 27.09.2016 =
733
- * Add "Underline" button on toolbar
734
- * Fix of import data from current sheet of Google Spreadsheets
735
  * Fix for styles of Standart Responsive Mode
736
  * Fix for styles of Standart Responsive Mode
737
  * Minor issues fix
738
 
739
  = 1.4.5 / 22.09.2016 =
740
- * Added Featured plugins page for admin area
741
  * Added the update of charts data after the table's data was changed
742
  * Added ability to set diagram parameters: width, height, titles of axes, colors of charts
743
  * Added tutorial how to create diagrams in the Diagram tab if it is empty
@@ -750,9 +799,9 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
750
  = 1.4.3 / 10.08.2016 =
751
  * Add Brazilian Portuguese language
752
  * Add Save data in editable fields option
753
- * Add table styles for export table in the .xls file
754
  * Fix of displaying the table styles after import from xlsx / xls files
755
- * Fix of displaying the cell background color and cell text color in the colorpickers.
756
  * Fix of displaying the value for Sorting column field
757
 
758
  = 1.4.2 / 02.08.2016 =
@@ -762,28 +811,28 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
762
 
763
  = 1.4.1 / 13.07.2016 =
764
  * Fix of horizontal table scroll for iPhone and Android
765
- * Fix jquery-ui theme conflict
766
- * Fix of data table styles for admin area to prevent overriding them by third party styles
767
 
768
  = 1.4.0 / 22.06.2016 =
769
  * Add Welcome page and Step-by-Step tutorial
770
- * Add notice to the Add new table dialog
771
  * Show license activation errors - if there are some
772
  * Avoid disabling PRO modules even if license - expired
773
- * Move the Settings item under the License item in admin menu
774
  * Hide data table until it will be loaded completely
775
- * Add the displaying of spinner loader before the displaying of table on frontend
776
- * Add using of the table name as the name of export file
777
  * Update the generating of URL to the module location
778
- * Fix of displaying html if Paragraph mode is enabled
779
  * Fix of sorting the table's columns
780
  * Fix of displaying the table pagination buttons and some other styles of table
781
 
782
  = 1.3.9 / 17.05.2016 =
783
  * Add Paragraph mode
784
- * Add replacing "`=" to "=" on frontend to display formulas as text
785
- * Add natural sorting to data tables columns if Sorting options is enabled
786
- * Fix of displaying the db version on Overview tab
787
  * Fix of standard responsive mode on iOS
788
  * Fix of colors issue for frontend export
789
  * Minor issues fix
@@ -803,26 +852,26 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
803
  = 1.3.6 / 30.03.2016 =
804
  * Fix correct export to pdf format in all browser
805
  * Fixed currency and percent format and as a result pagination
806
- * Add place logo in pdf file and for print mode
807
  * Correct insert row in right or left position
808
- * Fix bug after adding row
809
- * Fix thead padding issue
810
  * Fix print file in ie
811
 
812
  = 1.3.5 / 15.03.2016 =
813
  * Spreadsheet Search and pagination position fix
814
  * Add support for spreadsheet excel functions (IFERROR, LARGE)
815
- * Fix issue with importing data table when lib cant calculate formula
816
- * Fix bug with import from google spreadheets generated files
817
 
818
  = 1.3.4 / 04.03.2016 =
819
- * Fix bug with dynamic content in cell when tables in collapsed state
820
  * Fix bug with cell height in standard responsive mode
821
- * Fix bug with merging cells after last update
822
 
823
  = 1.3.3 / 24.02.2016 =
824
  * Added possibility to have more than one table with formulas and editable data.
825
- * Fix bug with formated cell when table in collapsed state.
826
  * Added MONTH and YEAR formulas
827
  * Added 2 new responsive modes, and ability to switch between modes
828
  * Fix insert row/column bug
@@ -830,9 +879,9 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
830
  = 1.3.2 / 09.02.2016 =
831
  * Allow table have editable cells without formulas
832
  * Add new features: send table on printer and switch between editable fields by tab
833
- * Rework import table feature, added support cell colors, alignment and sizes
834
- * Add autoselect cell content when clicking on editable cell
835
- * Added styles for table when send to print or save as pdf
836
  * Fixed FireFox bug when images not displaying if the table is hidden
837
  * Fix conflict with lodash and underscore libs
838
 
@@ -840,16 +889,16 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
840
  * Added support for PMT formula
841
  * Added cell format type select feature
842
  * Added cell formats currency, percent, date
843
- * Add German language
844
  * Added handling for shortcodes in table content
845
- * Fix bug with non clickable links in some themes on mobile devices
846
 
847
  = 1.3.0 / 29.12.2015 =
848
  * Fix broken contact form
849
  * Fix table editor issues
850
  * Improved add link dialog
851
- * Added pro feature to make editable fields with formula on frontend
852
- * Add feature to recalculate width in hiden tables when they become visible
853
 
854
  = 1.2.9 / 14.12.2015 =
855
  * Fix for FF and IE bug not supporting max-width:100% in table cells
@@ -874,10 +923,10 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
874
  * Added Google charts, graphs and diagrams integration
875
 
876
  = 1.2.4 / 13.11.2015 =
877
- * Added Italian Language
878
  * Added disable bots indexing feature
879
  * Get back old inserting image method when control is pressed
880
- * Image now fit in cell
881
  * Reduced scripts sizes
882
  * Minor bug fixes
883
 
@@ -927,14 +976,14 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
927
  * Added table multi-language support (translation from the official DataTables repository)
928
  * Added full responsive support for the tables
929
  * Fixed ordering error
930
- * Fixed error when user can't create new table
931
 
932
  = 1.1.3 / 19.08.2015 =
933
  * Data Table position fixed
934
  * New tooltips and FAQs
935
 
936
  = 1.1.2 / 04.08.2015 =
937
- * Fixed cells metadata loading when cell has comment
938
  * Fixed Bold and Italic toolbar buttons
939
  * Fixed formulas rendering in the editor
940
  * Added charts support
@@ -968,9 +1017,9 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
968
 
969
  = 1.0.4 / 13.05.2015 =
970
  * Fixed not working formulas on the first page of the "Preview" tab
971
- * Added colorpicker
972
- * Added ability to change font color
973
- * Added ability to change cell background color
974
  * Added "Insert row" and "Insert column" buttons to the toolbar
975
  * Minor bugs fix
976
 
@@ -979,7 +1028,7 @@ Important! Shortcode must be inserted in a text editor page, and not in the visu
979
  * Implemented HTML table metadata collecting and state saving
980
  * Added "Bold" and "Italic" font style support for the cells
981
  * Added alignment options for the data cells
982
- * Added ability to change width and height of the rows and columns
983
  * Added ability to sort DataTable without table header
984
 
985
 
1
  === Data Tables Generator by Supsystic ===
2
  Contributors: supsystic.com
3
  Tags: csv, excel, table, tablesorter,data table, table, database, table generator, builder, generator, cells, chart, charting, charts, column chart, gauge chart, graph, graphs, html5, line chart, pie chart, scatter chart, spreadsheet, visualise data, Woo, Woo Commerce, WooCommerce, product table, woocommerce product, product tables, catalog, product catalog, price list, pricing list, order forms, woocommerce tables, wholesale
4
+ Tested up to: 5.1.0
5
+ Stable tag: 1.9.71
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
 
9
  == Description ==
10
 
11
+ Create and manage tables from the admin panel quickly, easily and effectively. Each Data Table can be used as a data source for creating DIAGRAMS & CHART. Create responsive, interactive data tables using sorting, searching, pagination, filtering and more.
12
+ List the products with responsive [WooCommerce Product Table](https://supsystic.com/plugins/woocommerce-product-table?utm_source=wordpress&utm_medium=description&utm_campaign=woocommercedatatable "WooCommerce Product Table"). Perfect for product list views, order forms, wholesale, product catalogs.
13
+ Tables do not require HTML/CSS knowledge, this plugin is really easy for beginners. Definitively the powerful and easy to use Data Tables.
14
+
15
+ [Data Tables by Supsystic](http://supsystic.com/plugins/data-tables-generator-plugin?utm_source=wordpress&utm_medium=description&utm_campaign=datatables "Data Tables WordPress plugin") plugin features:
16
+
17
+ * No coding required, [Responsive Modes](https://supsystic.com/feature/responsive-modes-feature/?utm_source=wordpress&utm_medium=responsivemodes&utm_campaign=datatables "Responsive Modes")
18
+ * [FrontEnd Table Editing](https://supsystic.com/example/drop-down-bar/?utm_source=wordpress&utm_medium=frontendediting&utm_campaign=datatables "FrontEnd Data Table Editing Example")
19
+ * [FrontEnd Table export - CSV, Excel, PDF](https://supsystic.com/example/export-import-of-tables?utm_source=wordpress&utm_medium=export&utm_campaign=datatables "Export & Import of Tables")
20
+ * [Diagrams, Charts and Graphs](https://supsystic.com/example/table-with-diagram-examplehttps://supsystic.com/example/table-with-diagram-example/?utm_source=wordpress&utm_medium=screenshotscharts&utm_campaign=datatables "Data Table With Google Charts")
21
+ * [Formulas support, HTML tables support for data cells](https://supsystic.com/example/table-with-calculations-example?utm_source=wordpress&utm_medium=calculations&utm_campaign=datatables "Table with Calculations")
22
+ * [Images, Links & Video support](https://supsystic.com/example/table-with-pictures-and-links-example?utm_source=wordpress&utm_medium=vedeo&utm_campaign=datatables "Images, Links & Video support")
23
+ * [WooCommerce Integration](https://supsystic.com/plugins/woocommerce-product-table?utm_source=wordpress&utm_medium=description&utm_campaign=woocommercedatatable "WooCommerce Product Table")
24
+ * [Table Properties Variations](https://woo.supsystic.com/table-properties-variations?utm_source=wordpress&utm_medium=propertiesvariations&utm_campaign=woocommercedatatable "WooCommerce Product Table Properties Variations")
25
+ * [Quantities and Multiple add to cart](https://supsystic.com/feature/quantities-multiple-add-to-cart?utm_source=wordpress&utm_medium=multipleaddtocart&utm_campaign=woocommercedatatable "Quantities and Multiple add to cart")
26
+ * [Product Table online builder](https://supsystic.com/feature/product-table-online-builder?utm_source=wordpress&utm_medium=builder&utm_campaign=datatables "Product Table online builder")
27
  * "Bold" and "Italic" font style support for the data table cells
28
+ * [Navigation with Searching, Sorting, Pagination functions](https://supsystic.com/example/table-with-sorting-and-search-example?utm_source=wordpress&utm_medium=tablenavigation&utm_campaign=datatables "Data Table navigation with Searching and Ordering functions")
29
+ * [Various style setting appropriated for any sites type](https://supsystic.com/documentation/table-styling?utm_source=wordpress&utm_medium=tabledesign&utm_campaign=datatables "Table Design")
30
+ * [Collapsible rows on front-end](https://supsystic.com/example/collapsible-rows-on-front-end/?utm_source=wordpress&utm_medium=collapsiblerows&utm_campaign=datatables "Collapsible rows")
31
+ * [Server-side processing technology](https://supsystic.com/example/tables-with-server-side-processing-example?utm_source=wordpress&utm_medium=serversideprocessing&utm_campaign=datatables "Server-side processing")
32
  * SEO friendly, content of DataTable picked up by search engines
33
+ * [Table data and Diagrams interaction](https://supsystic.com/example/table-and-diagrams-interaction?utm_source=wordpress&utm_medium=serversideprocessing&utm_campaign=datatables "Table data and Diagrams interaction")
34
+ * [Automatic import from Google Sheets](https://supsystic.com/documentation/synchronization-table-google-sheet?utm_source=wordpress&utm_medium=featuresgoogle&utm_campaign=datatables "Autoupdates from Google Sheets")
35
+ * [Database Source](https://supsystic.com/feature/database-source?utm_source=wordpress&utm_medium=featuresgoogle&utm_campaign=datatables "Database Source")
36
+ * [All Data Table Examples](http://supsystic.com/data-tables-examples?utm_source=wordpress&utm_medium=databasesource&utm_campaign=datatables "Data Table Examples")
37
 
38
+ Data Tables Generator allows you to process and manage SEO friendly data tables quickly and easily. This plugin can structure information and can be adjusted to fit every need. Many ways of functional and visual customization of the tables improve site design and let you modify it to cater to a particular individual or a specific task. The intuitive Settings panel and the responsive Editor save lots of time that you would much rather allocate for other useful things or relaxation. Tables are responsive and awesome on all devices.
 
 
39
 
40
  [youtube https://www.youtube.com/watch?v=RZ2I-aCiLZE]
41
 
42
  = Data Tables Plugin Support =
43
 
44
+ If you have any problem or a tailored request for the Data Tables Generator by Supsystic, please [let us know](http://supsystic.com/contact-us/ "Contact Us")!
45
 
46
  This [guide](https://supsystic.com/make-requests-support-service/ "How to Make Requests to Support Service") helps you provide the right information on your issue.
47
 
48
  = Translate Data Table Generator by Supsystic to Your Language =
49
 
50
+ You have an incredible opportunity to get PRO version of the photo gallery for free. Just make the translation of the Data Table Generator by Supsystic plugin!
51
  [Contact Us](http://supsystic.com/plugins/data-tables-generator-plugin#contact?utm_source=wordpress&utm_medium=contactus&utm_campaign=datatables "Contact Us") if you are willing to translate the plugin.
52
+
53
  Available data table plugin translations:
54
 
55
  * English
70
 
71
  == Frequently Asked Questions ==
72
 
73
+ = How to Create Data Tables =
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
 
75
+ Step 1: [Creating Responsive Data Table](https://supsystic.com/documentation/data-tables-getting-started?utm_source=wordpress&utm_medium=create&utm_campaign=datatables "Data Tables Getting Started") =
 
 
 
76
 
77
+ 1. On the left navigation menu click “Add a new table (or spreadsheet)”.
78
+ 2. Enter the title of a table, set the number of Rows and Columns.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  3. Click “OK”.
80
 
81
+ Step 2: Adding data to the Tables by Supsystic
82
 
83
  1. Click “Editor” spreadsheet button.
84
  2. Fill the table.
85
+ 3. [Customize the data](https://supsystic.com/docs/data-editor?utm_source=wordpress&utm_medium=editdata&utm_campaign=datatables "Data Editor") – here you can:
 
 
 
 
 
86
 
87
+ Step 3: Customizing of Data Tables by Supsystic
 
 
 
 
 
88
 
89
+ 1. In order to return to a configuration of tables click the “Settings” button.
90
+ 2. Here you can manage [all the settings](https://supsystic.com/docs/table-settings?utm_source=wordpress&utm_medium=configure&utm_campaign=datatables "Data Tables Generator plugin") of Data Tables Generator plugin.
91
+ 3. Simply navigate the corresponding section of properties – Table Elements, Features, Styling.
92
 
93
+ Step 4: Preview
94
+ After you change some settings – with responsive data tables plugin, you can immediately see the result click the “Preview” button and check the table. Note that the table may look a little different depending on your theme style.
95
 
96
+ Step 5: Add a table into a page/post
97
 
98
+ 1. On the left navigation menu click “Tables”.
99
+ 2. Find the table which you need and copy the shortcode.
100
+ 3. Paste the shortcode into your post or page and Data Tables Generator by Supsystic will automatically create a table on your page.
101
 
102
+ = How to edit data in the Table? =
103
+ Different tutorials about data editing you can find [here](https://supsystic.com/docs/data-editor?utm_source=wordpress&utm_medium=editdata&utm_campaign=datatables "Data Editor")
 
104
 
105
+ = How to configure the Table? =
106
+ Main Table settings is [here](https://supsystic.com/docs/table-settings?utm_source=wordpress&utm_medium=configure&utm_campaign=datatables "Table settings")
107
 
108
+ = How to set a Style for a table? =
 
 
 
 
 
 
 
 
 
 
 
 
 
109
 
110
+ If you need to change a visual style of the table, go to Settings of Data Tables Generator by Supsystic and find Appearance Tab.
111
 
112
+ Customize the Table view of the table using the next options:
113
+ * Auto & Fixed Table Width
114
+ * Fixed Table Width for mobile.
115
+ * Light-box
116
  * Borders – you can select “Cell” border – inserts a border around all four sides of each cell or “Row” border – inserts a border only above and under each row.
117
  * Compact – reduce the amount of white space.
118
  * Highlighting – enable row highlighting as the mouse pointer hovers over an object.
120
  * Highlight the order column – highlight the column that the table data is currently ordered by.
121
  * Row striping – for example – you use a table, but the table’s rows are difficult to separate visually, especially when there are many columns (or multiple lines to a row) – add row striping to a table, it will display rows background in two similar shades of color.
122
 
123
+ Read more about [all the design options](https://supsystic.com/documentation/table-styling?utm_source=wordpress&utm_medium=styling&utm_campaign=datatables "Table Styling")in our tutorial.
124
+
125
+ = How to export and import the tables? =
126
+ With Data Tables Generator plugin you have an opportunity to [export and import](https://supsystic.com/documentation/export-import?utm_source=wordpress&utm_medium=exportimport&utm_campaign=datatables "Export and Import") your tables.
127
+
128
+ You can export files of four types:
129
+ * CSV
130
+ * PDF
131
+ * XLS
132
+ * XLSX
133
+
134
+ If you already have the table and you need to use it on your site use Import option. You can import files of such formats:
135
+ * CSV,
136
+ * XLS,
137
+ * Google Spreadsheets.
138
+
139
+ = How to add a table into a page/post? =
140
+ There are the different ways to [add table to your website](https://supsystic.com/documentation/add-table-site-content?utm_source=wordpress&utm_medium=addtable&utm_campaign=datatables "Add a table into a site"), using:
141
+ * Table shortcode
142
+ * Table Part shortcode
143
+ * Value shortcode
144
+ * Cell shortcode
145
+ * History shortcode
146
+ * PHP code
147
+ * Front-end Import Form
148
+ * Table shortcode and PHP code can be found on the left navigation menu if you click “Tables”. For each table, its own shortcode and PHP code are written here.
149
 
150
+ = How to use HTML elements in tables? =
151
+ You can paste HTML elements into our tables. Read [here](https://supsystic.com/documentation/use-html-elements-tables?utm_source=wordpress&utm_medium=html&utm_campaign=datatables "How to use HTML elements in tables?") how to do that.
152
 
153
+ = How to use formulas in tables? =
154
+
155
+ Go to Editor of Data Table.
156
+ Select a cell and start typing. In a cell, type an equal sign “=” to start the formula.
157
+ Fill in the rest of a formula.
158
+ Save the changes of a table.
159
+ Check the result of a formula in the table on your site.
160
+ Learn more about how to use [formulas in tables](https://supsystic.com/documentation/formulas-in-table?utm_source=wordpress&utm_medium=formulas_campaign=datatables "Formulas in tables") here.
161
+
162
+ = How to create WooCommerce Product Table? =
163
+ [This tutorial](https://supsystic.com/docs/woocommerce-product-table?utm_source=wordpress&utm_medium=documentation&utm_campaign=woocommercedatatable "Product Table Documentation") can help you easily get started to use WooCommerce Product Table and create searchable, filterable, responsive product table for your store.
164
+
165
+
166
+ = Which properties and columns can I display in the WooCommerce Product table? =
167
+ Your [WooCommerce Product table](https://supsystic.com/plugins/woocommerce-product-table "WooCommerce product table") can include any of the following columns: Product attributes, Categories, SKU, Add to cart button, Summary, Date, Price, Product Thumbnail, Reviews.
168
+ You can display each type as a separate column in the product table. To take full advantage of the WooCommerce Product Table have a look at the [examples with different features](http://woo.supsystic.com "Product Table plugin demo site" and get more information in our tutorial [How to Start using WooCommerce Product Table](https://supsystic.com/documentation/getting-started-woocommerce-product "Getting Started").
169
+
170
+ = Where to find additional information? =
171
+ Plugin has comprehensive [documentation](https://supsystic.com/docs/data-tables?utm_source=wordpress&utm_medium=documentation&utm_campaign=datatables "Data Tables documentation")
172
+ Also, you can find more answers at [forum](https://supsystic.com/forum/datatable-plugin?utm_source=wordpress&utm_medium=forum&utm_campaign=datatables "Forum") page.
173
+
174
+ == Screenshots ==
175
+
176
+ 1. Data Tables Generator demo.
177
+ 2. Data Tables example on a website. Export/Import
178
+ 3. Data Tables with Sorting, Searchin, Pagination; Images, Video & Links; Collapsible rows on front-end (pro); Front-end Editing (pro) and more.
179
+ 4. Data Tables with Google Charts (pro)
180
+ 5. WooCommerce Product Table example (pro)
181
+ 6. Data Tables Plugin admin panel. Main Settings
182
+ 7. Data Tables Plugin admin panel. Features
183
+ 8. Data Tables Plugin admin panel. Appearance
184
+ 9. Data Tables Plugin admin panel. Database Source (pro)
185
+ 10. Data Tables Plugin admin panel. Editor
186
+ 11. Data Tables Plugin admin panel. Diagrams (pro)
187
+ 12. Data Tables Plugin admin panel. WooCommerce (pro)
188
 
 
 
 
 
189
 
190
  = Our plugins =
191
 
205
  * [Translate by Supsystic](https://wordpress.org/plugins/translate-by-supsystic/ "Translate by Supsystic")
206
 
207
 
208
+ == Other Notes ==
209
+ = Tables by Supsystic for WooCommerce =
210
+ Now you can use Tables by Supsystic for WooCommerce.
211
+ With [WooCommerce Product Table](https://supsystic.com/plugins/woocommerce-product-table?utm_source=wordpress&utm_medium=description&utm_campaign=woocommercedatatable "WooCommerce Product Table" ) you can create a product tables for your WooCommerce store and list the products with searchable, filterable, responsive table.
212
+
213
+ It's perfect for product [Price List](http://woo.supsystic.com/price-list "Price list"), [Order forms](http://woo.supsystic.com/woocommerce-order-form/ "Order Form"), wholesale, [Product catalogs](http://woo.supsystic.com/product-catalog/ "Product catalog") & more:
214
+
215
+ * WooCommerce Product Table Plugin has the most flexible and friendly **[Table Online Builder](https://supsystic.com/feature/product-table-online-builder?utm_source=wordpress&utm_medium=builder&utm_campaign=woocommercedatatable "Product table builder")** It’s easy to create responsive, sortable and searchable Product table by 1 click with no coding.
216
+ * **[Responsive Modes Feature](https://supsystic.com/documentation/responsive-modes?utm_source=wordpress&utm_medium=responsive&utm_campaign=woocommercedatatable "Responsive modes")** resolves all problems by optimizing the table’s layout for different screen sizes through the dynamic insertion and rebuild of columns in the table.
217
+ * **[Pagination feature](https://supsystic.com/feature/pagination-feature-product-table?utm_source=wordpress&utm_medium=pagination&utm_campaign=woocommercedatatable "Pagination")** provides customers a convenient and fast navigation on website.
218
+ * **[Sorting option](https://supsystic.com/feature/sorting-option-of-product-table?utm_source=wordpress&utm_medium=sorting&utm_campaign=woocommercedatatable "Sorting")** allows to sort table columns and display data in an exact order you need.
219
+ * Plugin comes with **[Global Search and Search by columns](https://supsystic.com/feature/searching-product-table?utm_source=wordpress&utm_medium=searching&utm_campaign=woocommercedatatable "Searching")** options. These options make a product table twice more accessible for the users, more understandable and convenient to use.
220
+ * Includes **[Quantity selector and Multiple add to cart](https://supsystic.com/feature/quantities-multiple-add-to-cart?utm_source=wordpress&utm_medium=Multipleaddtocart&utm_campaign=woocommercedatatable "Multiple add to cart")** options.
221
+ * Plugin fully supports Product Attributes, Categories, and you can add any column to the table – SKU, Buy, Summary, Date, Price, Thumbnail, Reviews.
222
+ * All necessary settings to set the table appearance. Customize the **[Table design](https://supsystic.com/documentation/product-table-design?utm_source=wordpress&utm_medium=design&utm_campaign=woocommercedatatable "Table Design")** and make it more attractive for customers.
223
+ * Works perfectly with hundreds of products and a huge amount of rows by virtue of using **[server-side processing technology](https://supsystic.com/example/tables-with-server-side-processing-example?utm_source=wordpress&utm_medium=serversideprocessing&utm_campaign=datatables "server-side processing").**
224
+
225
+ Create custom order forms which increase your conversion rate!
226
+
227
  == Changelog ==
228
 
229
+ = 1.9.71 / 25.02.2019 =
230
+ * Fix of formulas: SUMIF. Fix of applying of current date to datepicker for empty edited cells of Date type
231
+ * Exclude images it tables from lazy loading by Jetpack
232
+
233
+ = 1.9.7 / 20.02.2019 =
234
+ * Screenshots update
235
+ * Fixed not loading media scripts in the admin area
236
+ * Added excel import option (import as string)
237
+ * Fix of exporting the table to PDF in admin area if SSP is enabled
238
+ * Fix of connecting of media JS APIs in table admin area if it does not
239
+ * Fix of displaying diagrams and connecting of other assets for tables with SSP
240
+ * Fixed clean button work with the woo pro addon
241
+ * Fix Thumbnail width
242
+ * Fix of displaying of tables with SSP and without header
243
+ * Fix of using of some crashed logo links during importing table to PDF
244
+ * Added Pro Adverts for
245
+ * Fix of displaying tables with collapsible cells and responsive mode: Automatic Column Hiding
246
+ * Fix of saving table after adding new empty cells
247
+ * Fix for showing/hiding sun options in admin area
248
+ * Add new formula: HYPERLINK
249
+ * Fix of displaying of search fields in columns. Fix of updating of cell indexes in formulas after paste data from another table cells
250
+ * Fix of conflict with styles of some themes
251
+ * Add ability to initialize tables on page via third-party scripts
252
+ * Added variables for sql-query
253
+
254
  = 1.9.6 / 20.12.2018 =
255
  * Added option on-off legend labels along with parts of the chart
256
  * Small Fix Zing Charts
257
  * Fix of exporting of tables with collapsible cells
258
  * Fix of formula COUNTIF
259
+ * Fix of applying of format to the cell value
260
  * Styles fix for Add New Table popup
261
+ * Encode cell data before saving in DB
262
+ * Removed slashes from the cell after import from Spreadsheets
263
 
264
 
265
  = 1.9.5 / 12.12.2018 =
266
  * Removed urldecode to prevent replace '+' to ' '
267
+ * Added compatibility with tables-generator-pro
268
  * Fix of SUBSTITUTE formula
269
  * Fix of TEXT formula
270
  * Work with woo plugin addon
271
+ * Improved vendor file to compatibility with other possible add-ons
272
+ * Removed unused CSS
273
  * Add of ability to search tables in admin area by id
274
  * Add "Mark Last Edited Cell" option
275
  * Fixed Google Charts tooltip flickering
276
  * Add Global Page Search Form for multiple searching by all tables on page
277
  * Fix of integration with Contact Form by Supsystiс
278
+ * Fix of displaying an error if ZipArchive extension is not enabled
279
  * Fix of localization of tables' list in admin area
280
+ * Fix of exporting the table to PDF
281
  * Fixed fatal error (controller name creation)
282
  * Fix of displaying of inserted images in table cells
283
  * Fix of dates formatting after automatic import from Google Sheet if Server Side Processing is enabled
284
  * Add of shortcode param "search" to preset the search value for table
285
  * Fix of exporting of tables with hidden cells to PDF
286
+ * Fix of displaying of the message if export from Google Spreadsheets is denied
287
  * Add ability to show full images in lightbox for table images
288
  * add new screenshot
289
  * Fix of applying of table events for tables with pagination and search features, if Server-side Processing is enabled
290
+ * Fixed compatibility free plugin with the woo pro addon.
291
  * minify numeral.min.js
292
+ * Added multi products functional
293
  * Fix of searching by columns
294
  * Fixed cloned table with woo addon data
295
  * Fix of exporting of tables with hidden cells to PDF
296
  * Fix of using of frontend fields in tables with fixed header / footer / columns
297
+ * Added server-side processing for woo addon
298
  * Fix of exporting tables with hidden cells to MS Excel
299
  * Fixed woo addon bugs
300
  * Fixed javascript error for tables with merged cells
301
+ * Fixed pagination with 'all' parameter. Fixed draw() table after search event
302
  * Fixed add to cart with ssp
303
  * Fix of applying of condition formatting
304
+ * Fixed preview and CSS
305
+ * Fix of exporting the table to PDF and Excel
306
  * Fixed column search
307
  * Add advertise for Woo Addon
308
 
313
 
314
  = 1.9.3 / 01.11.2018 =
315
  * Add integration with Contact Form by Supsystic
316
+ * Fix of merging cells for fixed rows/columns. Small code fix and improvement
317
+ * Fix of displaying auto index. Fix of displaying of collapsible cells
318
  * Removed deprecated functions
319
+ * Added option to display col with merge cells in a responsive mode
320
  * Added export only visible data
321
 
322
  = 1.9.2 / 17.10.2018 =
323
  * Fix displaying of lightbox popup for tables with fixed rows/columns
324
  * Update of displaying of cell comments on mobile
325
  * Fix displaying of editable fields
326
+ * Fix of exporting to pdf for tables in a standard responsive mode with a column for the auto index in newly created column
327
+ * Fix position of a caption for tables with fixed rows/columns
328
 
329
  = 1.9.1 / 09.10.2018 =
330
  * Make correct sort order in History table mode
332
  * Fix minor issue with compatibility for PHP 7.2 or greater
333
  * Fix percents in Header/Footer
334
  * Add diagram option: Axe Х Mode
335
+ * Fix of applying of conditions data to the cloned table
336
  * Fix of multi-exporting of tables
337
+ * Fix of applying of font families to the table
338
+ * Add ability to set the style for chart points
339
  * Fix of import data from CSS
340
 
341
  = 1.9.0 / 30.08.2018 =
347
  * Fix creating multiple tables
348
  * Changed CRUD for tables list
349
  * Fix border-bottom for Fixed Columns
350
+ * Fixed default CSS text in the editor
351
  * Fixed crud bugs
352
  * Fix editable fields after export
353
  * Fix export to PDF with multiple rows in a cell
362
  * For Source Option added the ability to Export data from an External DB and use SQL Query
363
  * Fixed row headers in Editor Tab
364
  * Added the ability to build a chart based on data from database tables
365
+ * Added possibility to place reduction like 1-4, A-D in part shortcode
366
 
367
  = 1.8.7 / 24.07.2018 =
368
  * Fix Multisite Installation process
369
  * Fixed the problem: Clicking on the cell raises the table up
370
+ * Fixes for option Source - Database
371
  * Added the ability to edit database table data through the frontend fields
372
  * Added the ability to create diagrams for cells with shortcodes
373
  * Fix underline position by exporting to pdf
374
  * Fix of dynamically applying of diagram's options to diagram preview
375
  * Add support Strict Matching Option for SSP
376
+ * Fix of displaying merged cells in the table footer
377
  * Fix for GlobalSearch
378
 
379
  = 1.8.6 / 03.07.2018 =
391
  * Added Turkish translation
392
  * Add a special parameter Fixed Table Width for mobile devices
393
  * Add option "Export Fonts to PDF"
394
+ * Fix of creating history for a new table and new table user
395
  * Change "Insert picture" toolbar button to "Insert media"
396
  * Minor issues fix
397
 
398
  = 1.8.4 / 30.05.2018 =
399
+ * Add of the option to plugin settings: Disable WP Footer Fix
400
  * Implemented automatic updating of diagrams when changing data in a table
401
  * Added import/export Selectable Fields to/from Excel
402
  * Fixed the width of text rows in mobile mode
404
  * Added search by table columns
405
  * Fix header in Elementor tab
406
  * Fix of conflict of dataTables script and http://downloads.mailchimp.com/js/signup-forms/popup/embed.js
407
+ * Fixed problems with the first activation
408
  * Fix of table sorting for empty cells
409
+ * Add ability to use letters as a column index in table's special shortcodes. Fix of using common features for the Table Part Shortcode
410
+ * Fix of displaying column of Auto Index in mode "Create a new column"
411
+ * Fix for displaying of a caption for tables with fixed columns
412
  * Fix of using of Frontend Fields this Fixed Columns option. Fix of "Use for Logged In Users Only" option for Frontend Fields
413
  * Fix of Global Table Data Search
414
+ * Fix of displaying column of Auto Index in mode "Create a new column"
415
  * Add Pagination in Editor
416
  * Fix saving ReadOnly for cells
417
+ * Fix for an export table to PDF from the admin area
418
  * Fix data params for cells which use formulas, which depended on cells with shortcodes inside
419
+ * Fix of removing of table rows after removing the table
420
+ * Fix issue with Cyrillic symbols on export to PDF
421
  * Added ability to change the data range in the diagrams without re-creating
422
  * Fix for conditions bug
423
 
439
 
440
  = 1.8.0 / 12.04.2018 =
441
  * Add of ability to remove the escaping of HTML for the formulas results
442
+ * Update of the way of parsing table formulas on the frontend
443
  * Fix of applying text wrapping for cells during table export
444
  * Fix of applying underline text style for cells during table export
445
+ * Fixed auto width + scroll in the frontend
446
  * Fixed the grid offset of the table for Fixed Header
447
  * Fixed the grid offset of the table for Fixed Footer
448
  * Fix of applying underline text style for cells during table import
449
  * Fix of applying text wrapping for cells during table import
450
+ * Fixed parameter "Save Frontend Fields", when saving empty values
451
  * Fixed bug with "Save Frontend Fields" param and exporting changed data
452
  * Fixed Export to XSL and XSLX for invisible cells
453
  * Added hidden rows and hidden columns for Excel import
457
  * Fixed javascript error for fnAdjustColumnSizing
458
  * Fixed timing for header resizing
459
  * Add Conditional Formatting feature
460
+ * Add of shortcode for output only selected rows and/or columns of the table
461
  * Fix of using of lower case in indexes of cells and in formulas in the table editor
462
  * Add of ability to move columns and rows in the table editor manually
463
+ * Add ability to make the rows collapsible on the frontend
464
+ * Add ability to convert the content of cells to the icons with tooltips
465
+ * Update of icons of the editor toolbar
466
  * Fix PopUp integration
467
+ * Add ability to import/export the rules of conditional formatting from/to MS Excel
468
+ * Add of a check for required extension ZipArchive for import from MS Excel
469
  * Add ability to set period for creating of new table instance in history
470
+ * Fix of switching the cell from selectable to editable type
471
+ * Update of using of features "removed cells" and "hidden cells" on the frontend for tables without headers
472
  * Fix styles for using auto table width with horizontal scroll
473
  * Fix of displaying of diagrams
474
+ * Fix of displaying of pagination select list for a table
475
+ * Update the tooltips for the plugin settings page
476
 
477
  = 1.7.9 / 09.03.2018 =
478
  * Fix issue for base formulas and empty cells (they should be counted as Zero)
481
 
482
  = 1.7.8 / 07.03.2018 =
483
  * Add ability to use simple calculation actions with dates
484
+ * Update of the way to connect of table's translation
485
+ * Update of tooltips for the "Language and Text" tab in the table admin area
486
  * Fix for detecting browser language in Safari
487
  * Fix for Norwegian-Nynorsk translation data
488
  * Fix of formulas updating after rows / columns adding / removing
489
  * Fix of formulas updating after pasting data from another cell
490
+ * Fix of correction of cells values during cells autofill
491
  * Fix of calculation of DATE formulas: DATE, DAY, DAYS, DAYS360, EDATE, EOMONTH, MONTH, HOUR, MINUTE, ISOWEEKNUM, TODAY, NOW, SUBTOTAL
492
  * Fix of using empty cells in calculations
493
 
500
  * Small code fix
501
 
502
  = 1.7.5 / 06.02.2018 =
503
+ * Hotfix of applying cell styles to the table
504
+ * Fix of exporting the table to PDF in the admin area
505
  * Minor issues fix
506
 
507
  = 1.7.4 / 05.02.2018 =
509
 
510
  = 1.7.3 / 03.02.2018 =
511
  * Hotfix for import formulas with links to another excel book's sheets
512
+ * Hotfix for data tables with translation
513
+ * Fix of displaying of sorting icons for tables with multiple headers
514
  * Minor issues fix
515
 
516
  = 1.7.2 / 29.01.2018 =
517
+ * Add ability to change/hide label for table's export buttons
518
  * Add ability to set paper size for PDF export
519
  * Add new table formula: INDEX
520
  * Fix of table header position if Auto Width option is enabled
521
+ * Fix of formula calculating for an empty cell
522
  * Fix of using auto table width with horizontal scroll
523
+ * Fix for displaying of a caption for tables with fixed columns
524
+ * Fix for displaying of the error message for table import
525
  * Fix for displaying of merged cells
526
  * Fix of formulas' parsing during table import from MS Excel
527
+ * Fix of determination of cell index for tables with a large count of columns during exporting table to Excell
528
+ * Fix for insert link to the table via the toolbar
529
  * Update the way of table export to PDF
530
  * Update usability for table options in admin area
531
 
541
  * Add ability to make cell invisible
542
  * Add option: Use Comma as Delimiter
543
  * Add toolbar buttons: Font Family, Font Size
544
+ * Add ability to export formatted cell values without HTML on the frontend and in the admin area
545
+ * Add ability to applying font family and font size for the cell during import and export from MS Excel
546
  * Fix of displaying editable fields in the Automatic Columns Hiding response mode
547
  * Fix of using pagination buttons on table preview
548
+ * Fix of applying a background color to table cells in the admin area
549
+ * Fix for an update of rows height in the table editor
550
  * Fix of saving selected value of selects in the table cells for printing and exporting table
551
+ * Fix of determination of cell index on the frontend for tables with a large count of columns
552
+ * Fix of using tab button for switch between editable fields on the frontend
553
+ * Fix of calculating formulas on the frontend
554
  * Fix of styles for Diagram dialog window
555
+ * Fix for an export table to PDF
556
  * Fix of import from Google Spreadsheet
557
+ * Move table styles to the page header
558
  * Update tooltips information
559
 
560
  = 1.6.9 / 08.11.2017 =
563
  * Added ability to disable or change table loader
564
  * Added ability to disable table sorting by default
565
  * Added ability to disable sorting for some columns
566
+ * Added ability to sort the table by multiple columns
567
+ * Fixed table displaying through RSS feed
568
  * Added Custom Footer option
569
  * Fixed table loading from cache
570
  * Added SUPSYSTIC_STB_DEBUG constant
571
  * Added ability to select all table rows and columns by clicking on left table corner
572
  * Fixed displaying header styles to fixed header
573
+ * Fixed displaying header styles to the fixed footer
574
  * Fixed Table Actions History
575
  * Small tooltips fix
576
 
579
  * Fixed small issue with our internal messaging system
580
  * Added the table shortcode button to WP editor
581
  * Fixed of displaying the table editor and table options in admin area
582
+ * Fixed of insert link to the table cell
583
  * Added Table History functionality
584
  * Small styles fix
585
  * Fixed of table rename
589
 
590
  = 1.6.7 / 05.10.2017 =
591
  * Added new option for searching table contents through standard WordPress search
592
+ * Fixed bug with the table when enabled Automatic column hiding option
593
  * Added new "Table rows saved per request" option
594
+ * Fixed view of the Settings tab
595
  * Minor issues fix
596
 
597
  = 1.6.6 / 20.09.2017 =
600
  * Added Persian and Greek language
601
  * Added Spanish (Spain) language
602
  * Fixed styles for Right-To-Left languages
603
+ * Fixed saving table if the current saving process is in action
604
  * Added ability to use browser language to translate table
605
  * Updated of table initializing and translating
606
  * Minor issues fix
623
  * Fixed incorrect insert column position
624
 
625
  = 1.6.1 / 22.06.2017 =
626
+ * Added the Catalan language
627
  * Prevent the applying of third-party styles to the color picker
628
  * Fixed Free and Pro plugin install Error message for Clean WP
629
  * Fixed incorrect insert column position
643
  = 1.5.9 / 11.05.2017 =
644
  * Add the History Table feature
645
  * Add ability to choose rows and columns for diagrams' creating
646
+ * Fix for sorting: case insensitive, sorting of formatted data, sorting data with HTML
647
  * Fix of creating the table for diagrams in database
648
  * Fix and optimize of saving of editable fields
649
  * Updated Hungarian language
650
 
651
  = 1.5.8 / 13.04.2017 =
652
  * Added auto import from Google Spreadsheets
653
+ * Updated the Settings tab in the admin area
654
  * Split the table export to Excel on the formats: .xls and .xlsx
655
  * Fix for table's import from MS Excel and Google Spreadsheets
656
  * Fix of detect hyperlinks during import from Google Spreadsheets
660
  * Fix of tables creating in the database
661
 
662
  = 1.5.7 / 14.03.2017 =
663
+ * Add ability to make the link from the part of cell data
664
  * Add option for tables import: Append to existing table data
665
  * Update memory limits for PDF export
666
+ * Optimize displaying of large tables in the admin area
667
  * Compress table data keys for saving into database
668
  * Fix of import table from Google Spreadsheets
669
  * Fix of formulas: MID()
676
  * Fix for displaying table caption
677
 
678
  = 1.5.6 / 22.02.2017 =
679
+ * Hotfix for comparability between new FREE and old PRO version
680
  * Fix for shortcode for output table with single selected cell
681
  * Fix for "Execute JS Script After Table Is Loaded" option
682
+ * Minor issues fix
683
 
684
  = 1.5.5 / 21.02.2017 =
685
+ * Optimization of the table's saving process and displaying the table's preview
686
+ * Add ability to output single cell of the table by shortcode
687
  * Add ability to output the cell value by shortcode for cells with formulas
688
+ * Add ability to execute js scripts after the table was initialized
689
  * Add ability to copy the cell styles during creating of rows and columns
690
  * Add support of formulas: POISSON, LOOKUP, MID
691
+ * Add the highlighting of row and column for current cell in the table editor
692
+ * Add autosave for newly created tables
693
+ * Add error message for Import dialog if the file was not chosen
694
+ * Add font with the support of Cyrillic and Latin Extended characters for PDF export
695
+ * Fix for autofill table by dragging the cell
696
  * Fix of save the large tables
697
+ * Fix the displaying the diagrams on the frontend
698
  * Fix of table sorting after changing data on frontend
699
  * Fix of using the cells' coordinates in lowercase in formulas
700
  * Fix of ability to use editable fields when there are many tables on the page
713
 
714
  = 1.5.2 / 12.01.2017 =
715
  * Improved Searching functionality: added new settings (min characters to search, empty table by default, strict search)
716
+ * Fixed of applying the format to table cells
717
  * Framework updates
718
+ * Added the Hungarian language
719
+ * Minor issues fix
720
 
721
  = 1.5.1 / 22.12.2016 =
722
  * Add ability to set format for cells with formulas
724
  * Fix ability to set formats to empty cells
725
  * Fix of wp_footer call for the broken themes
726
  * Fix of the data formatting at the table on backend and frontend
727
+ * Update the English language
728
+ * Minor issues fix
729
 
730
  = 1.5.0 / 15.12.2016 =
731
  * Add ability to set table description
732
  * Add ability to get cell value by shortcode
733
  * Add ability to disable table borders
734
+ * Add the Pagination Size option to set the size of paginate buttons
735
  * Add wp_footer call for the broken themes
736
  * Add ability to enter formulas in editable fields
737
  * Add ability to parse the email links during import from xls/xlsx files
748
  * Added Clear Data button to clear data in the table
749
  * Added ability to create table's header with multiple rows
750
  * Added ability to make the table's cells hidden
751
+ * Added possibility to dismiss the extent notice of the license
752
  * Fix the displaying of diagrams after the removing of table rows or columns
753
  * Fix of automatic creating the columns during paste the content from another table
754
  * Fix styles of table cloning dialog
755
+ * Update the English language
756
 
757
  = 1.4.8 / 18.10.2016 =
758
+ * Add the natural sorting for a table in the admin area (preview)
759
  * Add ability to use shortcodes in formulas
760
  * Update the styles of Import / Export dialog windows
761
  * Update the detect of background color and font color of the cell during import from xls / xlsx files
762
+ * Optimize the position of options in the Settings tab of the table admin area
763
+ * Fix of import from xls and xlsx files if the cells from other sheets use in the formulas
764
  * Fix of export of the large tables to PDF
765
+ * Fix the displaying of the table in the PDF file
766
+ * Fix of displaying of color pickers in the Diagram dialog window
767
  * Fix of work of Disable wrapping option
768
  * Fix for displaying the diagrams if the number of rows or columns of the table was changed
769
 
770
  = 1.4.7 / 04.10.2016 =
771
+ * Add ability to freeze table elements: header, footer, columns to the right and left side of the table
772
  * Add Export Page Orientation option for the Export to PDF feature
773
  * Set default measure (px) for width and height of diagram
774
  * Fix of hiding the table until it will be loaded completely
775
+ * Fix of displaying the admin area of the table on mobile devices
776
+ * Fix of import the styles from old/new format of Excell files
777
  * Fix of table's id in the CSS styles of cloned table
778
+ * Fix of saving data in editable fields
779
  * Correct PRO updater URL
780
 
781
  = 1.4.6 / 27.09.2016 =
782
+ * Add "Underline" button on the toolbar
783
+ * Fix of import data from a current sheet of Google Spreadsheets
784
  * Fix for styles of Standart Responsive Mode
785
  * Fix for styles of Standart Responsive Mode
786
  * Minor issues fix
787
 
788
  = 1.4.5 / 22.09.2016 =
789
+ * Added Featured plugins page for the admin area
790
  * Added the update of charts data after the table's data was changed
791
  * Added ability to set diagram parameters: width, height, titles of axes, colors of charts
792
  * Added tutorial how to create diagrams in the Diagram tab if it is empty
799
  = 1.4.3 / 10.08.2016 =
800
  * Add Brazilian Portuguese language
801
  * Add Save data in editable fields option
802
+ * Add table styles for an export table in the .xls file
803
  * Fix of displaying the table styles after import from xlsx / xls files
804
+ * Fix of displaying the cell background color and cell text color in the color pickers.
805
  * Fix of displaying the value for Sorting column field
806
 
807
  = 1.4.2 / 02.08.2016 =
811
 
812
  = 1.4.1 / 13.07.2016 =
813
  * Fix of horizontal table scroll for iPhone and Android
814
+ * Fix jquery-UI theme conflict
815
+ * Fix of data table styles for admin area to prevent overriding them by third-party styles
816
 
817
  = 1.4.0 / 22.06.2016 =
818
  * Add Welcome page and Step-by-Step tutorial
819
+ * Add a notice to the Add new table dialog
820
  * Show license activation errors - if there are some
821
  * Avoid disabling PRO modules even if license - expired
822
+ * Move the Settings item under the License item in the admin menu
823
  * Hide data table until it will be loaded completely
824
+ * Add the displaying of spinner loader before the displaying of the table on the frontend
825
+ * Add using of the table name as the name of the export file
826
  * Update the generating of URL to the module location
827
+ * Fix of displaying HTML if Paragraph mode is enabled
828
  * Fix of sorting the table's columns
829
  * Fix of displaying the table pagination buttons and some other styles of table
830
 
831
  = 1.3.9 / 17.05.2016 =
832
  * Add Paragraph mode
833
+ * Add replacing "`=" to "=" on the frontend to display formulas as text
834
+ * Add natural sorting to data tables columns if Sorting options are enabled
835
+ * Fix of displaying the DB version on the Overview tab
836
  * Fix of standard responsive mode on iOS
837
  * Fix of colors issue for frontend export
838
  * Minor issues fix
852
  = 1.3.6 / 30.03.2016 =
853
  * Fix correct export to pdf format in all browser
854
  * Fixed currency and percent format and as a result pagination
855
+ * Add place logo in a pdf file and for print mode
856
  * Correct insert row in right or left position
857
+ * Fix bug after adding a row
858
+ * Fix thread padding issue
859
  * Fix print file in ie
860
 
861
  = 1.3.5 / 15.03.2016 =
862
  * Spreadsheet Search and pagination position fix
863
  * Add support for spreadsheet excel functions (IFERROR, LARGE)
864
+ * Fix issue with importing data table when lib cant calculate the formula
865
+ * Fix bug with import from google spreadsheets generated files
866
 
867
  = 1.3.4 / 04.03.2016 =
868
+ * Fix bug with dynamic content in the cell when tables in the collapsed state
869
  * Fix bug with cell height in standard responsive mode
870
+ * Fix bug with merging cells after the last update
871
 
872
  = 1.3.3 / 24.02.2016 =
873
  * Added possibility to have more than one table with formulas and editable data.
874
+ * Fix bug with the formatted cell when the table in a collapsed state.
875
  * Added MONTH and YEAR formulas
876
  * Added 2 new responsive modes, and ability to switch between modes
877
  * Fix insert row/column bug
879
  = 1.3.2 / 09.02.2016 =
880
  * Allow table have editable cells without formulas
881
  * Add new features: send table on printer and switch between editable fields by tab
882
+ * Rework import table feature, added support cell colors, alignment, and sizes
883
+ * Add autoselect cell content when clicking on the editable cell
884
+ * Added styles for a table when sending to print or save as pdf
885
  * Fixed FireFox bug when images not displaying if the table is hidden
886
  * Fix conflict with lodash and underscore libs
887
 
889
  * Added support for PMT formula
890
  * Added cell format type select feature
891
  * Added cell formats currency, percent, date
892
+ * Add the German language
893
  * Added handling for shortcodes in table content
894
+ * Fix bug with nonclickable links in some themes on mobile devices
895
 
896
  = 1.3.0 / 29.12.2015 =
897
  * Fix broken contact form
898
  * Fix table editor issues
899
  * Improved add link dialog
900
+ * Added pro feature to make editable fields with the formula on the frontend
901
+ * Add feature to recalculate width in hidden tables when they become visible
902
 
903
  = 1.2.9 / 14.12.2015 =
904
  * Fix for FF and IE bug not supporting max-width:100% in table cells
923
  * Added Google charts, graphs and diagrams integration
924
 
925
  = 1.2.4 / 13.11.2015 =
926
+ * Added the Italian Language
927
  * Added disable bots indexing feature
928
  * Get back old inserting image method when control is pressed
929
+ * Image now fit in the cell
930
  * Reduced scripts sizes
931
  * Minor bug fixes
932
 
976
  * Added table multi-language support (translation from the official DataTables repository)
977
  * Added full responsive support for the tables
978
  * Fixed ordering error
979
+ * Fixed error when the user can't create a new table
980
 
981
  = 1.1.3 / 19.08.2015 =
982
  * Data Table position fixed
983
  * New tooltips and FAQs
984
 
985
  = 1.1.2 / 04.08.2015 =
986
+ * Fixed cells metadata loading when the cell has a comment
987
  * Fixed Bold and Italic toolbar buttons
988
  * Fixed formulas rendering in the editor
989
  * Added charts support
1017
 
1018
  = 1.0.4 / 13.05.2015 =
1019
  * Fixed not working formulas on the first page of the "Preview" tab
1020
+ * Added color picker
1021
+ * Added ability to change the font color
1022
+ * Added ability to change the cell background color
1023
  * Added "Insert row" and "Insert column" buttons to the toolbar
1024
  * Minor bugs fix
1025
 
1028
  * Implemented HTML table metadata collecting and state saving
1029
  * Added "Bold" and "Italic" font style support for the cells
1030
  * Added alignment options for the data cells
1031
+ * Added ability to change the width and height of the rows and columns
1032
  * Added ability to sort DataTable without table header
1033
 
1034
 
screenshot-1.jpg DELETED
Binary file
screenshot-2.png DELETED
Binary file
screenshot-3.png DELETED
Binary file
screenshot-4.png DELETED
Binary file
src/SupsysticTables/Core/Module.php CHANGED
@@ -572,10 +572,18 @@ class SupsysticTables_Core_Module extends SupsysticTables_Core_BaseModule
572
  update_option($config->get('revision_key'), $revision['current']);
573
  }
574
 
 
 
 
 
 
575
  private function registerTwigFunctions()
576
  {
577
  $twig = $this->getEnvironment()->getTwig();
578
 
 
 
 
579
  $twig->addFunction(
580
  new Twig_SimpleFunction('build_pro_url', array($this, 'buildProUrl'))
581
  );
572
  update_option($config->get('revision_key'), $revision['current']);
573
  }
574
 
575
+ public function getPluginDirectoryUrl($path)
576
+ {
577
+ return plugin_dir_url($this->getEnvironment()->getPluginPath() . '/index.php') . '/' . $path;
578
+ }
579
+
580
  private function registerTwigFunctions()
581
  {
582
  $twig = $this->getEnvironment()->getTwig();
583
 
584
+ $twig->addFunction(
585
+ new Twig_SimpleFunction('plugin_directory_url', array($this, 'getPluginDirectoryUrl'))
586
+ );
587
  $twig->addFunction(
588
  new Twig_SimpleFunction('build_pro_url', array($this, 'buildProUrl'))
589
  );
src/SupsysticTables/Core/assets/js/core.js CHANGED
@@ -170,6 +170,124 @@ var g_stbServerSideProcessingIsActive = false;
170
  return deferred.promise();
171
  });
172
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  vendor[appName].createSpinner = (function(elem) {
174
  elem = typeof(elem) != 'undefined' ? elem : false;
175
 
@@ -227,28 +345,8 @@ var g_stbServerSideProcessingIsActive = false;
227
  });
228
  }
229
  };
230
- if($table.data('server-side-processing') && $table.data('server-side-processing') == 'on') {
231
- g_stbServerSideProcessing = true;
232
- }
233
-
234
- // Fix of correct displaying of tables with hidden rows / columns for tables without headers.
235
- if (!$table.data('head')) {
236
- $table.find('thead th').each(function(iter, item) {
237
- var th = $(this),
238
- itemIndex = iter + 1,
239
- hidden = true;
240
-
241
- $table.find('tbody td:nth-child(' + itemIndex + ')').each(function() {
242
- if(!$(this).hasClass('invisibleCell')) {
243
- hidden = false;
244
- return false; // stop current .each() iteration
245
- }
246
- });
247
- if(hidden) {
248
- th.addClass('invisibleCell');
249
- }
250
- });
251
- }
252
 
253
  // Fix for searching by merged cells
254
  $table.find('tbody td[data-colspan], tbody td[data-rowspan]').each(function(index, item) {
@@ -370,13 +468,17 @@ var g_stbServerSideProcessingIsActive = false;
370
  if(headerRow.length) {
371
  var searchRow = '<tr class="stbColumnsSearchWrapper">',
372
  func = inputTop ? 'prepend' : 'append';
373
-
374
  for (var i = 0; i < headerRow.length; i++) {
375
- var style = '';
 
 
376
  if(!g_stbServerSideProcessing){
377
- var style = $(headerRow[i]).is(':visible') ? '' : 'style="display: none;"';
 
 
 
378
  }
379
- searchRow += '<th ' + style + '><input class="search-column" type="text" /></th>';
380
  }
381
  searchRow += '</tr>';
382
  if($table.find(tPosition).length == 0) {
@@ -749,6 +851,7 @@ var g_stbServerSideProcessingIsActive = false;
749
  var self = vendor[appName], // it is callback so "this" does not equal vendor[appName] object
750
  $table = this instanceof $ ? this : settings, // for compatibility with old pro versions
751
  $tableWrap = $table.closest('.supsystic-tables-wrap'),
 
752
  afterTableLoadedScriptString = $table.attr('data-after-table-loaded-script'),
753
  _ruleJS = self.setRuleJSInstance($table),
754
  responsiveMode = $table.data('responsive-mode'),
@@ -838,6 +941,8 @@ var g_stbServerSideProcessingIsActive = false;
838
  });
839
  }
840
 
 
 
841
  $table.trigger('beforeShowTable', $table);
842
 
843
  // Show table
@@ -978,7 +1083,8 @@ var g_stbServerSideProcessingIsActive = false;
978
  }
979
  });
980
 
981
- vendor[appName].applyTableEventClb = (function(clb, timeout, tableSelector) {
 
982
  timeout = timeout ? timeout : 0;
983
  var self = this,
984
  args = Array.from(arguments);
@@ -1003,13 +1109,37 @@ var g_stbServerSideProcessingIsActive = false;
1003
 
1004
  this.getRuleJSInstance(table).init();
1005
  this.formatDataAtTable(table, true);
 
1006
  if ('ontouchstart' in window || navigator.msMaxTouchPoints) {
1007
  tableWrapper.find('td, th').on('click', this.applyMobileTableComments);
1008
  }
1009
  tableWrapper.find('td, th').each(this._contactFormBtnCellClb);
1010
  });
1011
 
1012
- vendor[appName].applyMobileTableComments = function(e) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1013
  var $elem = $(this),
1014
  title = $elem.attr('title');
1015
 
@@ -1036,7 +1166,7 @@ var g_stbServerSideProcessingIsActive = false;
1036
  comment.fadeOut('slow');
1037
  }, 2500);
1038
  }
1039
- };
1040
 
1041
  vendor[appName]._contactFormBtnCellClb = (function(e) {
1042
  var cell = $(this),
170
  return deferred.promise();
171
  });
172
 
173
+ vendor[appName].initTablesOnPage = (function() {
174
+ this._initTablesOnPage();
175
+ });
176
+
177
+ vendor[appName]._initTablesOnPage = (function() {
178
+ var self = this,
179
+ firstTableId = '',
180
+ firstTableViewId = '',
181
+ firstTable = '',
182
+ firstTableWrapper = '',
183
+ firstTableFirstRow = '';
184
+
185
+ if($(window).width() <= 991) {
186
+ $('div .supsystic-tables-wrap').each(function () {
187
+ var ssDiv = $(this),
188
+ widthMobile = ssDiv.data('table-width-mobile');
189
+ if(typeof(widthMobile) != 'undefined') {
190
+ ssDiv.css('display', (widthMobile == 'auto' ? 'inline-block' : '')).css('width', widthMobile);
191
+ }
192
+ });
193
+ }
194
+ $('.supsystic-table').each(function () {
195
+ self.initializeTable(this, self.showTable, function(table) {
196
+ // This is used when table is hidden in tabs and can't calculate itself width to adjust on small screens
197
+ if (table.is(':visible')) {
198
+ // Fix bug in FF and IE which not supporting max-width 100% for images in td
199
+ self._calculateImages(table);
200
+ } else {
201
+ table.data('isVisible', setInterval(function(){
202
+ if (table.is(':visible')) {
203
+ clearInterval(table.data('isVisible'));
204
+ self._calculateImages(table);
205
+ }
206
+ }, 250));
207
+ }
208
+ // Align all tables on page by the columns width depending on the columns width of first table on page
209
+ if(table.data('align-by-first-table')) {
210
+ firstTableId = firstTableId || $('.supsystic-table:first').data('id');
211
+ firstTable = firstTable || $('#supsystic-table-' + firstTableId);
212
+ firstTableViewId = firstTable.data('view-id');
213
+ firstTableWrapper = firstTableWrapper || firstTable.parents('#supsystic-table-' + firstTableViewId);
214
+ firstTableFirstRow = firstTable.data('head') ? firstTable.find('thead tr:first-child th') : firstTable.find('tbody tr:first-child td');
215
+
216
+ if(firstTableViewId != table.data('view-id')) {
217
+ var currentTableWrapper = table.parents('#supsystic-table-' + table.data('view-id'));
218
+
219
+ currentTableWrapper.css({
220
+ width: firstTableWrapper.get(0).style.width
221
+ });
222
+ table.css({
223
+ width: firstTable.get(0).style.width
224
+ });
225
+ currentTableWrapper.find('.supsystic-table').each(function() {
226
+ var curTable = $(this),
227
+ curTableFirstRow = curTable.data('head') ? curTable.find('thead tr:first-child th') : curTable.find('tbody tr:first-child td');
228
+
229
+ $.each(curTableFirstRow, function (index, element) {
230
+ if(firstTableFirstRow[index]) {
231
+ $(this).width($(firstTableFirstRow[index]).get(0).style.width);
232
+ }
233
+ });
234
+ });
235
+ }
236
+ }
237
+ //if row has merged cells no need place header there
238
+ if(table.data('merged') && table.hasClass('ColWithMergeCellsAlign')) {
239
+ var mergedData = table.data('merged');
240
+ $.each(mergedData, function( index, value ) {
241
+ var rowNumWithMergeCell = value.row;
242
+ var numForEq = Number(rowNumWithMergeCell)-1;
243
+ table.find('tbody tr:eq('+numForEq+')').closest('tr').addClass('haveMergedCell');
244
+ });
245
+ self.setCellAttributes(table.parents('.supsystic-tables-wrap:first').find('.DTFC_LeftWrapper, DTFC_RightWrapper, .dataTables_scrollHead, .dataTables_scrollFoot').find('th, td'));
246
+ }
247
+ if(typeof self.getTableInstanceById(table.data('id')).fnAdjustColumnSizing == 'function' ) {
248
+ setTimeout(function(){
249
+ self.getTableInstanceById(table.data('id')).fnAdjustColumnSizing(false);
250
+ }, 350);
251
+ }
252
+ });
253
+ });
254
+ });
255
+
256
+ vendor[appName]._getOriginalImageSizes = (function(img) {
257
+ var tempImage = new Image(),
258
+ width,
259
+ height;
260
+ if ('naturalWidth' in tempImage && 'naturalHeight' in tempImage) {
261
+ width = img.naturalWidth;
262
+ height = img.naturalHeight;
263
+ } else {
264
+ tempImage.src= img.src;
265
+ width = tempImage.width;
266
+ height = tempImage.height;
267
+ }
268
+ return {
269
+ width: width,
270
+ height: height
271
+ };
272
+ });
273
+
274
+ vendor[appName]._calculateImages = (function($table) {
275
+ var self = this,
276
+ $images = $table.find('img');
277
+ if ($images.length > 0 && /firefox|trident|msie/i.test(navigator.userAgent)) {
278
+ $images.hide();
279
+ $.each($images, function(index, el) {
280
+ var $img = $(this),
281
+ originalSizes = self._getOriginalImageSizes(this);
282
+ if ($img.closest('td, th').width() < originalSizes.width) {
283
+ $img.css('width', '100%');
284
+ }
285
+ });
286
+ $images.show();
287
+
288
+ }
289
+ });
290
+
291
  vendor[appName].createSpinner = (function(elem) {
292
  elem = typeof(elem) != 'undefined' ? elem : false;
293
 
345
  });
346
  }
347
  };
348
+
349
+ g_stbServerSideProcessing = $table.data('server-side-processing') && $table.data('server-side-processing') == 'on';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
350
 
351
  // Fix for searching by merged cells
352
  $table.find('tbody td[data-colspan], tbody td[data-rowspan]').each(function(index, item) {
468
  if(headerRow.length) {
469
  var searchRow = '<tr class="stbColumnsSearchWrapper">',
470
  func = inputTop ? 'prepend' : 'append';
 
471
  for (var i = 0; i < headerRow.length; i++) {
472
+ var cellItem = $(headerRow[i]),
473
+ cellClass = '',
474
+ cellStyle = '';
475
  if(!g_stbServerSideProcessing){
476
+ cellStyle = cellItem.is(':visible') ? '' : 'style="display: none;"';
477
+ }
478
+ if(cellItem.hasClass('invisibleCell')){
479
+ cellClass = ' class="invisibleCell"'
480
  }
481
+ searchRow += '<th ' + cellClass + cellStyle + '><input class="search-column" type="text" /></th>';
482
  }
483
  searchRow += '</tr>';
484
  if($table.find(tPosition).length == 0) {
851
  var self = vendor[appName], // it is callback so "this" does not equal vendor[appName] object
852
  $table = this instanceof $ ? this : settings, // for compatibility with old pro versions
853
  $tableWrap = $table.closest('.supsystic-tables-wrap'),
854
+ tableSelector = '#supsystic-table-' + $table.data('view-id') + ' #supsystic-table-' + $table.data('id'),
855
  afterTableLoadedScriptString = $table.attr('data-after-table-loaded-script'),
856
  _ruleJS = self.setRuleJSInstance($table),
857
  responsiveMode = $table.data('responsive-mode'),
941
  });
942
  }
943
 
944
+ self.applyTableEventClb(self.fixHeaderOfHiddenColumns, 50, tableSelector);
945
+
946
  $table.trigger('beforeShowTable', $table);
947
 
948
  // Show table
1083
  }
1084
  });
1085
 
1086
+ vendor[appName].applyTableEventClb = (function(clb, timeout) {
1087
+ // Callback for applying events' actions and other functions to tables with server side processing (SSP)
1088
  timeout = timeout ? timeout : 0;
1089
  var self = this,
1090
  args = Array.from(arguments);
1109
 
1110
  this.getRuleJSInstance(table).init();
1111
  this.formatDataAtTable(table, true);
1112
+ this.fixHeaderOfHiddenColumns(table);
1113
  if ('ontouchstart' in window || navigator.msMaxTouchPoints) {
1114
  tableWrapper.find('td, th').on('click', this.applyMobileTableComments);
1115
  }
1116
  tableWrapper.find('td, th').each(this._contactFormBtnCellClb);
1117
  });
1118
 
1119
+ vendor[appName].fixHeaderOfHiddenColumns = (function($table) {
1120
+ $table = $table instanceof $ ? $table : $($table);
1121
+
1122
+ var tableWrapper = $table.parents('.supsystic-tables-wrap:first');
1123
+
1124
+ if(!$table.data('head')) {
1125
+ tableWrapper.find('thead').each(function() {
1126
+ var thead = $(this);
1127
+ thead.find('th').each(function(iter, item) {
1128
+ var th = $(this),
1129
+ itemIndex = iter + 1,
1130
+ columnAllTd = thead.parents('table:first').find('tbody td:nth-child(' + itemIndex + ')'),
1131
+ columnInvTd = columnAllTd.filter('.invisibleCell'),
1132
+ hidden = columnAllTd.length > 0 && columnAllTd.length == columnInvTd.length;
1133
+ if(hidden) {
1134
+ // Fix of correct displaying of tables with hidden rows / columns for tables without headers
1135
+ th.addClass('invisibleCell');
1136
+ }
1137
+ });
1138
+ });
1139
+ }
1140
+ });
1141
+
1142
+ vendor[appName].applyMobileTableComments = (function(e) {
1143
  var $elem = $(this),
1144
  title = $elem.attr('title');
1145
 
1166
  comment.fadeOut('slow');
1167
  }, 2500);
1168
  }
1169
+ });
1170
 
1171
  vendor[appName]._contactFormBtnCellClb = (function(e) {
1172
  var cell = $(this),
src/SupsysticTables/Core/assets/js/create-table.js CHANGED
@@ -57,7 +57,7 @@
57
 
58
  app.request({ module: 'tables', action: 'create'}, { title: $input.val(), rows: $rows.val(), cols: $cols.val() })
59
  .done(function (response) {
60
- window.location.href = response.url + '&cols=' + $cols.val() + '&rows=' + $rows.val();
61
  }).fail(function (message) {
62
  $error.find('p').text(message);
63
  $error.fadeIn();
57
 
58
  app.request({ module: 'tables', action: 'create'}, { title: $input.val(), rows: $rows.val(), cols: $cols.val() })
59
  .done(function (response) {
60
+ window.location.href = response.url + '&new=1&cols=' + $cols.val() + '&rows=' + $rows.val();
61
  }).fail(function (message) {
62
  $error.find('p').text(message);
63
  $error.fadeIn();
src/SupsysticTables/Diagram/assets/img/diagrams-min.png ADDED
Binary file
src/SupsysticTables/Diagram/views/partials/tabContent.twig CHANGED
@@ -2,15 +2,21 @@
2
  {% set url = build_pro_url({ 'utm_medium': 'diagrams' }) %}
3
 
4
  {% block content %}
 
5
  <div class="col-xs-12">
 
 
 
 
 
6
  <a href="{{ url }}" class="button button-hero" target="_blank">
7
  {{ environment.translate('Get PRO') }}
8
  </a>
9
  </div>
10
  <div class="col-xs-12">
11
  <a href="{{ url }}" target="_blank">
12
- <img src="{{ environment.getModule('diagram').getLocationUrl() }}/assets/img/diagrams.png" alt="Diagrams" title="Available in PRO version" style="width: 100%; height: auto;">
13
  </a>
14
  </div>
15
  {% endblock %}
16
- </div>
2
  {% set url = build_pro_url({ 'utm_medium': 'diagrams' }) %}
3
 
4
  {% block content %}
5
+ {% import '@ui/tooltip.twig' as tooltip %}
6
  <div class="col-xs-12">
7
+ <h3 style="display:inline-block;">
8
+ {{ environment.translate('Diagrams') }}&nbsp;
9
+ {{ tooltip.icon('The Data Table Generator contains all the types of diagrams you need. Сreate, manage and embed interactive charts into your WordPress posts and pages. You can preview the diagram right from a tab on the plugin screen. <a target="_blank" href="https://supsystic.com/example/table-with-diagram-example/"></br>Read more</a>' | raw, 'top', true)}}
10
+ </h3>
11
+ </br>
12
  <a href="{{ url }}" class="button button-hero" target="_blank">
13
  {{ environment.translate('Get PRO') }}
14
  </a>
15
  </div>
16
  <div class="col-xs-12">
17
  <a href="{{ url }}" target="_blank">
18
+ <img src="{{ environment.getModule('diagram').getLocationUrl() }}/assets/img/diagrams-min.png" alt="Diagrams" title="Available in PRO version" style="width: 100%; height: auto;">
19
  </a>
20
  </div>
21
  {% endblock %}
22
+ </div>
src/SupsysticTables/Featuredplugins/Controller.php CHANGED
@@ -39,9 +39,12 @@ class SupsysticTables_Featuredplugins_Controller extends SupsysticTables_Core_Ba
39
  array('label' => $environment->translate('Contact Form Plugin'), 'url' => $pluginsUrl. 'contact-form-plugin/', 'img' => $uploadsUrl. '2016/07/Contact_Form_256.png', 'desc' => $environment->translate('One of the best plugin for creating Contact Forms on your WordPress site. Changeable fonts, backgrounds, an option for adding fields etc.'), 'download' => $downloadsUrl. 'contact-form-by-supsystic.zip'),
40
  array('label' => $environment->translate('Newsletter Plugin'), 'url' => $pluginsUrl. 'newsletter-plugin/', 'img' => $uploadsUrl. '2016/08/icon-256x256.png', 'desc' => $environment->translate('Supsystic Newsletter plugin for automatic mailing of your letters. You will have no need to control it or send them manually. No coding, hard skills or long hours of customizing are required.'), 'download' => $downloadsUrl. 'newsletter-by-supsystic.zip'),
41
  array('label' => $environment->translate('Membership by Supsystic'), 'url' => $pluginsUrl. 'membership-plugin/', 'img' => $uploadsUrl. '2016/09/256.png', 'desc' => $environment->translate('Create online membership community with custom user profiles, roles, FrontEnd registration and login. Members Directory, activity, groups, messages.'), 'download' => $downloadsUrl. 'membership-by-supsystic.zip'),
 
42
  );
43
  foreach($pluginsList as $i => $p) {
44
- $pluginsList[ $i ]['url'] = $pluginsList[ $i ]['url']. '?utm_source=plugin&utm_medium=featured_plugins&utm_campaign='. $promoCampaign;
 
 
45
  }
46
 
47
  return $this->response(
39
  array('label' => $environment->translate('Contact Form Plugin'), 'url' => $pluginsUrl. 'contact-form-plugin/', 'img' => $uploadsUrl. '2016/07/Contact_Form_256.png', 'desc' => $environment->translate('One of the best plugin for creating Contact Forms on your WordPress site. Changeable fonts, backgrounds, an option for adding fields etc.'), 'download' => $downloadsUrl. 'contact-form-by-supsystic.zip'),
40
  array('label' => $environment->translate('Newsletter Plugin'), 'url' => $pluginsUrl. 'newsletter-plugin/', 'img' => $uploadsUrl. '2016/08/icon-256x256.png', 'desc' => $environment->translate('Supsystic Newsletter plugin for automatic mailing of your letters. You will have no need to control it or send them manually. No coding, hard skills or long hours of customizing are required.'), 'download' => $downloadsUrl. 'newsletter-by-supsystic.zip'),
41
  array('label' => $environment->translate('Membership by Supsystic'), 'url' => $pluginsUrl. 'membership-plugin/', 'img' => $uploadsUrl. '2016/09/256.png', 'desc' => $environment->translate('Create online membership community with custom user profiles, roles, FrontEnd registration and login. Members Directory, activity, groups, messages.'), 'download' => $downloadsUrl. 'membership-by-supsystic.zip'),
42
+ array('label' => $environment->translate('Kinsta Hosting'), 'url' => 'https://kinsta.com?kaid=MNRQQASUYJRT', 'external' => true, 'img' => $this->getEnvironment()->getModule('core')->getPluginDirectoryUrl('app/assets/img/kinsta_banner.png'), 'desc' => $environment->translate('If you want to host a business site or a blog, Kinsta managed WordPress hosting is the best place to stop on. Without any hesitation, we can say Kinsta is incredible when it comes to uptime and speed.')),
43
  );
44
  foreach($pluginsList as $i => $p) {
45
+ if(empty($p['external'])) {
46
+ $pluginsList[ $i ]['url'] = $pluginsList[ $i ]['url']. '?utm_source=plugin&utm_medium=featured_plugins&utm_campaign='. $promoCampaign;
47
+ }
48
  }
49
 
50
  return $this->response(
src/SupsysticTables/Featuredplugins/assets/css/admin.featured-plugins.css CHANGED
@@ -75,6 +75,10 @@
75
  font-size: 18px !important;
76
  padding: 12px 0 !important;
77
  }
 
 
 
 
78
  .catitem .download-product-item .dp-buttons a.dp-full {
79
  border-color: #e8eded!important;
80
  }
75
  font-size: 18px !important;
76
  padding: 12px 0 !important;
77
  }
78
+ .catitem .download-product-item .dp-buttons a.btn-center {
79
+ display: block;
80
+ margin: 0 auto;
81
+ }
82
  .catitem .download-product-item .dp-buttons a.dp-full {
83
  border-color: #e8eded!important;
84
  }
src/SupsysticTables/Featuredplugins/views/index.twig CHANGED
@@ -30,12 +30,14 @@
30
  </div>
31
  </div>
32
  <div class="dp-buttons">
33
- <a href="{{ p.url }}" target="_blank" class="btn btn-full hvr-shutter-out-horizontal">
34
- {{ translate('More info', PPS_LANG_CODE) }}
35
  </a>
 
36
  <a href="{{ p.download }}" target="_blank" class="btn btn-full btn-info hvr-shutter-out-horizontal">
37
- {{ translate('Download', PPS_LANG_CODE) }}
38
  </a>
 
39
  </div>
40
  </div>
41
  </div>
30
  </div>
31
  </div>
32
  <div class="dp-buttons">
33
+ <a href="{{ p.url }}" target="_blank" class="btn btn-full hvr-shutter-out-horizontal {% if p.download is empty %}btn-center{% endif %}">
34
+ {{ translate('More info') }}
35
  </a>
36
+ {% if p.download is not empty %}
37
  <a href="{{ p.download }}" target="_blank" class="btn btn-full btn-info hvr-shutter-out-horizontal">
38
+ {{ translate('Download') }}
39
  </a>
40
+ {% endif %}
41
  </div>
42
  </div>
43
  </div>
src/SupsysticTables/Overview/Controller.php CHANGED
@@ -18,8 +18,8 @@ class SupsysticTables_Overview_Controller extends SupsysticTables_Core_BaseContr
18
  'contactForm' => array(
19
  'name' => $current_user->user_firstname,
20
  'email' => $current_user->user_email,
21
- 'website' => get_bloginfo('url')
22
- )
23
  )
24
  );
25
  }
18
  'contactForm' => array(
19
  'name' => $current_user->user_firstname,
20
  'email' => $current_user->user_email,
21
+ 'website' => get_bloginfo('url'),
22
+ ),
23
  )
24
  );
25
  }
src/SupsysticTables/Overview/assets/css/overview.css CHANGED
@@ -18,11 +18,6 @@
18
  width: 40%;
19
  }
20
 
21
- .supsystic-overview .description {
22
- padding-bottom: 20px;
23
- border-bottom: 1px solid rgba(164, 170, 172, 0.28);
24
- }
25
-
26
  .supsystic-overview .faq-title {
27
  cursor: pointer;
28
  }
@@ -32,12 +27,6 @@
32
  border: none !important;
33
  }
34
 
35
- .supsystic-overview .faq-list {
36
- padding-bottom: 20px;
37
- margin-bottom: 10px;
38
- border-bottom: 1px solid rgba(164, 170, 172, 0.28);
39
- }
40
-
41
  .supsystic-overview .faq-title,
42
  .supsystic-overview-news h3 {
43
  padding: 10px 20px;
@@ -55,12 +44,6 @@
55
  display: block;
56
  }
57
 
58
- .supsystic-overview .video {
59
- padding: 10px 20px;
60
- margin-bottom: 10px;
61
- border-bottom: 1px solid rgba(164, 170, 172, 0.28);
62
- }
63
-
64
  .supsystic-overview .settings-title {
65
  font-size: 14px;
66
  font-weight: 600;
@@ -124,6 +107,19 @@
124
  white-space: nowrap;
125
  }
126
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  #contact-form-dialog p {
128
  font-size: 15px;
129
  }
18
  width: 40%;
19
  }
20
 
 
 
 
 
 
21
  .supsystic-overview .faq-title {
22
  cursor: pointer;
23
  }
27
  border: none !important;
28
  }
29
 
 
 
 
 
 
 
30
  .supsystic-overview .faq-title,
31
  .supsystic-overview-news h3 {
32
  padding: 10px 20px;
44
  display: block;
45
  }
46
 
 
 
 
 
 
 
47
  .supsystic-overview .settings-title {
48
  font-size: 14px;
49
  font-weight: 600;
107
  white-space: nowrap;
108
  }
109
 
110
+ .supsystic-overview .half-page > div {
111
+ border-bottom: 1px solid rgba(164, 170, 172, 0.28);
112
+ padding-bottom: 20px;
113
+ }
114
+
115
+ .supsystic-overview .half-page > div:last-child {
116
+ border-bottom: none;
117
+ }
118
+
119
+ .supsystic-overview .text-block {
120
+ margin: 10px 0;
121
+ }
122
+
123
  #contact-form-dialog p {
124
  font-size: 15px;
125
  }
src/SupsysticTables/Overview/views/index.twig CHANGED
@@ -2,18 +2,17 @@
2
 
3
  {% block content %}
4
  <div class="supsystic-overview">
5
- <div class="half-page-left">
6
- <h3>{{ translate('Step-by-step Tutorial') }}</h3>
7
- <div>
8
  <a href="{{ environment.generateUrl('promo', 'showTutorial') }}" class="button button-primary button-hero">
9
  <i class="fa fa-info-circle"></i>
10
  {{ translate('Begin Step-by-step Tutorial') }}
11
  </a>
 
12
  </div>
13
- <div class="clear"></div>
14
-
15
- <h3>FAQ and Documentation</h3>
16
  <div class="faq-list">
 
17
  <div class="faq-title">
18
  <i class="fa fa-info-circle"></i>
19
  Data Tables Plugin Installation
@@ -119,7 +118,6 @@
119
  </a>
120
  <div style="clear: both;"></div>
121
  </div>
122
-
123
  <div class="video">
124
  <h3>Video tutorial</h3>
125
  <iframe type="text/html"
@@ -129,7 +127,6 @@
129
  frameborder="0">
130
  </iframe>
131
  </div>
132
-
133
  <div class="server-settings">
134
  <h3>Server Settings</h3>
135
  <ul class="settings-list">
@@ -142,18 +139,17 @@
142
  </ul>
143
  </div>
144
  </div>
145
- <div class="half-page-right">
146
- <h3>News</h3>
147
- <div class="supsystic-overview-news">
148
- {{ news|raw }}
149
- </div>
150
- <p style="padding-bottom: 70px; border-bottom: 1px solid rgba(164, 170, 172, 0.28);">
151
  <a href="http://supsystic.com/plugins/data-tables-generator-plugin/" class="button button-primary button-hero">
152
- <i class="fa fa-info-circle"></i>
153
- All news
154
  </a>
155
- </p>
156
-
157
  <div class="overview-contact-form">
158
  <h3>Contact form</h3>
159
  {#<div class="description">Translate plugin in your language and get a Premium license for FREE</div>#}
@@ -163,7 +159,6 @@
163
 
164
  <table class="contact-form-table" style="width: 100%;">
165
  <thead>
166
-
167
  {{ form.row(translate('Name') ~ ' *',
168
  form.text('name', contactForm.name, { 'required': '' })) }}
169
 
@@ -175,7 +170,6 @@
175
 
176
  {{ form.row(translate('Subject') ~ ' *',
177
  form.text('subject', '', { 'required': '' })) }}
178
-
179
  <tr>
180
  <th scope="row">
181
  <label for="select-question">{{ translate('Topic') }}</label>
@@ -197,7 +191,6 @@
197
  </select>
198
  </td>
199
  </tr>
200
-
201
  <tr>
202
  <th scope="row" style="vertical-align: top;">
203
  <label for="mail-text">{{ translate('Message') ~ ' *' }}</label>
@@ -206,17 +199,21 @@
206
  <textarea id="mail-text" name="message" cols="50" rows="3" placeholder="{{ translate('Hello Supsystic Team!') }}" required=""></textarea>
207
  </td>
208
  </tr>
209
-
210
  </thead>
211
  </table>
212
-
213
  <button id="send-mail" type="submit" class="button button-primary button-hero">
214
  <i class="fa fa-upload"></i>
215
  Send email
216
  </button>
217
-
218
  <div class="required-notification" style="color: red; float: left;" hidden>Fields with * are required to fill</div>
219
  {{ form.close() }}
 
 
 
 
 
 
 
220
  </div>
221
  </div>
222
  <div id="contact-form-dialog" hidden>
2
 
3
  {% block content %}
4
  <div class="supsystic-overview">
5
+ <div class="half-page half-page-left">
6
+ <div class="tutorial">
7
+ <h3>{{ translate('Step-by-step Tutorial') }}</h3>
8
  <a href="{{ environment.generateUrl('promo', 'showTutorial') }}" class="button button-primary button-hero">
9
  <i class="fa fa-info-circle"></i>
10
  {{ translate('Begin Step-by-step Tutorial') }}
11
  </a>
12
+ <div class="clear"></div>
13
  </div>
 
 
 
14
  <div class="faq-list">
15
+ <h3>FAQ and Documentation</h3>
16
  <div class="faq-title">
17
  <i class="fa fa-info-circle"></i>
18
  Data Tables Plugin Installation
118
  </a>
119
  <div style="clear: both;"></div>
120
  </div>
 
121
  <div class="video">
122
  <h3>Video tutorial</h3>
123
  <iframe type="text/html"
127
  frameborder="0">
128
  </iframe>
129
  </div>
 
130
  <div class="server-settings">
131
  <h3>Server Settings</h3>
132
  <ul class="settings-list">
139
  </ul>
140
  </div>
141
  </div>
142
+ <div class="half-page half-page-right">
143
+ <div class="supsystic-overview-news-container">
144
+ <h3>News</h3>
145
+ <div class="supsystic-overview-news">
146
+ {{ news|raw }}
147
+ </div>
148
  <a href="http://supsystic.com/plugins/data-tables-generator-plugin/" class="button button-primary button-hero">
149
+ <i class="fa fa-info-circle"></i>All news
 
150
  </a>
151
+ <div class="clear"></div>
152
+ </div>
153
  <div class="overview-contact-form">
154
  <h3>Contact form</h3>
155
  {#<div class="description">Translate plugin in your language and get a Premium license for FREE</div>#}
159
 
160
  <table class="contact-form-table" style="width: 100%;">
161
  <thead>
 
162
  {{ form.row(translate('Name') ~ ' *',
163
  form.text('name', contactForm.name, { 'required': '' })) }}
164
 
170
 
171
  {{ form.row(translate('Subject') ~ ' *',
172
  form.text('subject', '', { 'required': '' })) }}
 
173
  <tr>
174
  <th scope="row">
175
  <label for="select-question">{{ translate('Topic') }}</label>
191
  </select>
192
  </td>
193
  </tr>
 
194
  <tr>
195
  <th scope="row" style="vertical-align: top;">
196
  <label for="mail-text">{{ translate('Message') ~ ' *' }}</label>
199
  <textarea id="mail-text" name="message" cols="50" rows="3" placeholder="{{ translate('Hello Supsystic Team!') }}" required=""></textarea>
200
  </td>
201
  </tr>
 
202
  </thead>
203
  </table>
 
204
  <button id="send-mail" type="submit" class="button button-primary button-hero">
205
  <i class="fa fa-upload"></i>
206
  Send email
207
  </button>
 
208
  <div class="required-notification" style="color: red; float: left;" hidden>Fields with * are required to fill</div>
209
  {{ form.close() }}
210
+ <div class="clear"></div>
211
+ </div>
212
+ <div class="banner">
213
+ <div class="text-block">{{ translate('If you want to host a business site or a blog, Kinsta managed WordPress hosting is the best place to stop on. Without any hesitation, we can say Kinsta is incredible when it comes to uptime and speed.') }}</div>
214
+ <a href="https://kinsta.com?kaid=MNRQQASUYJRT">
215
+ <img src="{{ plugin_directory_url('app/assets/img/kinsta_banner.png') }}" style="width: 300px;height: 250px;" />
216
+ </a>
217
  </div>
218
  </div>
219
  <div id="contact-form-dialog" hidden>
src/SupsysticTables/Tables/Controller.php CHANGED
@@ -108,7 +108,9 @@ class SupsysticTables_Tables_Controller extends SupsysticTables_Core_BaseControl
108
  $languages = $this->getModel('languages', 'tables');
109
 
110
  try {
111
- wp_enqueue_media();
 
 
112
  $id = $request->query->get('id');
113
  $table = $this->getModel('tables')->getById($id);
114
  } catch (Exception $e) {
@@ -128,7 +130,8 @@ class SupsysticTables_Tables_Controller extends SupsysticTables_Core_BaseControl
128
  'table' => $table,
129
  'attributes' => array(
130
  'cols' => $request->query->get('cols', 5),
131
- 'rows' => $request->query->get('rows', 5)
 
132
  ),
133
  'translations' => $languages->getTranslations(),
134
  'settings' => $settings,
108
  $languages = $this->getModel('languages', 'tables');
109
 
110
  try {
111
+ add_action('admin_enqueue_scripts', function(){
112
+ wp_enqueue_media();
113
+ });
114
  $id = $request->query->get('id');
115
  $table = $this->getModel('tables')->getById($id);
116
  } catch (Exception $e) {
130
  'table' => $table,
131
  'attributes' => array(
132
  'cols' => $request->query->get('cols', 5),
133
+ 'rows' => $request->query->get('rows', 5),
134
+ 'new' => $request->query->get('new', 0)
135
  ),
136
  'translations' => $languages->getTranslations(),
137
  'settings' => $settings,
src/SupsysticTables/Tables/Model/Tables.php CHANGED
@@ -408,31 +408,32 @@ class SupsysticTables_Tables_Model_Tables extends SupsysticTables_Core_BaseModel
408
  * Returns needed table rows
409
  * @return array
410
  */
411
- public function getNeededRows($id, &$settings, $isSSP, $all = false)
412
  {
413
  $source = ($this->environment->isPro() && isset($settings['source']) ? $settings['source'] : '');
414
  if (isset($source['database']) && $source['database'] == 'on' && isset($source['dbTable'])){
415
  $core = $this->environment->getModule('core');
416
  $dbTableModel = $core->getModelsFactory()->get('DBTables', 'tables');
417
- return $dbTableModel->getRowsData($settings);
418
  }
419
  if($this->environment->isWooPro()){
420
  $table = $this->getWooSettings($id);
421
  $tableSettings = unserialize($table);
422
  if(!empty($tableSettings['woocommerce']['enable']) && $tableSettings['woocommerce']['enable'] === 'on'){
423
- if($this->environment->getModule('woocommerce')->getController()->getRows($id, $settings)){
424
- return $this->environment->getModule('woocommerce')->getController()->getRows($id, $settings) ;
425
  }
426
  }
427
  }
428
- if (!$all && $isSSP) {
429
  $cntHead = 1;
430
  $footers = array();
431
- if (isset($settings['elements']['head']) && $settings['elements']['head'] == 'on' &&
432
- isset($settings['headerRowsCount']) && $settings['headerRowsCount'] > 0) {
433
- $cntHead = $this->getRows($id, $settings['headerRowsCount']);
434
- }
435
- $headers = $this->getRows($id, $cntHead);
 
436
  if (isset($settings['elements']['foot']) && $settings['elements']['foot'] == 'on' &&
437
  isset($settings['customFooter']) && $settings['customFooter'] == 'on' &&
438
  isset($settings['footerRowsCount']) && $settings['footerRowsCount'] > 0) {
@@ -448,14 +449,14 @@ class SupsysticTables_Tables_Model_Tables extends SupsysticTables_Core_BaseModel
448
  * Returns needed table rows
449
  * @return array
450
  */
451
- public function getRowsByIds($id, &$settings, $ids)
452
  {
453
  $source = ($this->environment->isPro() && isset($settings['source']) ? $settings['source'] : '');
454
 
455
  if (isset($source['database']) && $source['database'] == 'on' && isset($source['dbTable'])){
456
  $core = $this->environment->getModule('core');
457
  $dbTableModel = $core->getModelsFactory()->get('DBTables', 'tables');
458
- return $dbTableModel->getRowsData($settings, $ids);
459
  }
460
 
461
  $bodyStop = $this->getCountRows($id);
408
  * Returns needed table rows
409
  * @return array
410
  */
411
+ public function getNeededRows($id, &$settings, $isSSP, $attributes = false, $export = false)
412
  {
413
  $source = ($this->environment->isPro() && isset($settings['source']) ? $settings['source'] : '');
414
  if (isset($source['database']) && $source['database'] == 'on' && isset($source['dbTable'])){
415
  $core = $this->environment->getModule('core');
416
  $dbTableModel = $core->getModelsFactory()->get('DBTables', 'tables');
417
+ return $dbTableModel->getRowsData($settings, false, $attributes);
418
  }
419
  if($this->environment->isWooPro()){
420
  $table = $this->getWooSettings($id);
421
  $tableSettings = unserialize($table);
422
  if(!empty($tableSettings['woocommerce']['enable']) && $tableSettings['woocommerce']['enable'] === 'on'){
423
+ if($this->environment->getModule('woocommerce')->getController()){
424
+ return $this->environment->getModule('woocommerce')->getController()->getRows($id, $settings, false, false, false, $export) ;
425
  }
426
  }
427
  }
428
+ if ($isSSP) {
429
  $cntHead = 1;
430
  $footers = array();
431
+ if (isset($settings['elements']['head']) && $settings['elements']['head'] == 'on' &&
432
+ isset($settings['headerRowsCount']) && $settings['headerRowsCount'] > 0) {
433
+ $headers = $this->getRows($id, $settings['headerRowsCount']);
434
+ } else {
435
+ $headers = $this->getRows($id, $cntHead);
436
+ }
437
  if (isset($settings['elements']['foot']) && $settings['elements']['foot'] == 'on' &&
438
  isset($settings['customFooter']) && $settings['customFooter'] == 'on' &&
439
  isset($settings['footerRowsCount']) && $settings['footerRowsCount'] > 0) {
449
  * Returns needed table rows
450
  * @return array
451
  */
452
+ public function getRowsByIds($id, &$settings, $ids, $attributes = false)
453
  {
454
  $source = ($this->environment->isPro() && isset($settings['source']) ? $settings['source'] : '');
455
 
456
  if (isset($source['database']) && $source['database'] == 'on' && isset($source['dbTable'])){
457
  $core = $this->environment->getModule('core');
458
  $dbTableModel = $core->getModelsFactory()->get('DBTables', 'tables');
459
+ return $dbTableModel->getRowsData($settings, $ids, $attributes);
460
  }
461
 
462
  $bodyStop = $this->getCountRows($id);
src/SupsysticTables/Tables/Module.php CHANGED
@@ -20,6 +20,7 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
20
  * Contains the value of "search" shortcode param for applying it to table
21
  */
22
  private $tableSearch = '';
 
23
  /**
24
  * Variables for appending of table styles to site header
25
  */
@@ -57,6 +58,7 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
57
  $dispatcher->on('after_tables_loaded', array($this, 'onAfterLoaded'));
58
  $this->renderTableHistorySection();
59
 
 
60
  }
61
 
62
  public function getDataTablesInPosts() {
@@ -216,6 +218,7 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
216
  $cachePath = $this->cacheDirectory . DIRECTORY_SEPARATOR . $id;
217
 
218
  $environment = $this->getEnvironment();
 
219
  $twig = $environment->getTwig();
220
  $core = $environment->getModule('core'); // @var SupsysticTables_Core_Module $core
221
  $tables = $core->getModelsFactory()->get('tables'); // @var SupsysticTables_Tables_Model_Tables $tables
@@ -235,14 +238,18 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
235
  if (!$table) {
236
  return sprintf($environment->translate('The table with ID %d not exists.'), $id);
237
  }
238
-
239
- $table->isSSP = (!$this->isSingleCell && !$this->isTablePart && isset($table->settings['serverSideProcessing']) && $table->settings['serverSideProcessing'] == 'on');
 
 
 
 
 
240
  $table->isDB = ($environment->isPro() && !$this->isSingleCell && !$this->isTablePart && isset($table->settings['source']) && isset($table->settings['source']['database']) && $table->settings['source']['database'] == 'on');
241
 
242
  if(!isset($table->isPageRows)) {
243
  $table->isPageRows = false;
244
  }
245
-
246
  $this->checkSpreadsheet = $this->checkSpreadsheet && !$table->isPageRows
247
  && $environment->isPro()
248
  && isset($table->settings['features']['import']['google']['automatically_update'])
@@ -258,9 +265,7 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
258
  && file_exists($cachePath)
259
  && $this->getEnvironment()->isProd()
260
  ) {
261
- $table->rows = $tables->getNeededRows($id, $table->settings, $table->isSSP);
262
  // Connect scripts and styles depending on table settings and table's cells settings for table cache
263
- $dispatcher = $this->getEnvironment()->getDispatcher();
264
  $dispatcher->apply('before_table_render', array($table));
265
  $dispatcher->apply('before_table_render_from_cache', array($table));
266
  return file_get_contents($cachePath);
@@ -275,7 +280,8 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
275
  $table->meta = $tables->getMeta($id);
276
  }
277
  if(!$table->isPageRows) {
278
- $table->rows = $tables->getNeededRows($id, $table->settings, $table->isSSP);
 
279
 
280
  if (isset($table->meta['columnsWidth'])) {
281
  $columnsTotalWidth = array_sum($table->meta['columnsWidth']);
@@ -300,8 +306,7 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
300
  unset($table->settings['features']['paging']);
301
  unset($table->settings['features']['searching']);
302
  unset($table->settings['features']['after_table_loaded_script']);
303
- }
304
- if($this->isSingleCell) {
305
  $table->meta['css'] = $table->meta['css'] .
306
  '#supsystic-table-' . $table->view_id . ' #supsystic-table-' . $id . ' { margin-left: 0; }' .
307
  '#supsystic-table-' . $table->view_id . ' #supsystic-table-' . $id . ',
@@ -371,10 +376,18 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
371
  $table->history_data = $this->historyData;
372
  $table->encoded_title = htmlspecialchars($table->title, ENT_QUOTES);
373
 
 
 
 
 
 
 
 
374
  // Connect scripts and styles depending on table settings and table's cells settings
375
- $dispatcher = $this->getEnvironment()->getDispatcher();
376
  $dispatcher->apply('before_table_render', array($table));
377
-
 
 
378
  $searchValue = '';
379
 
380
  if(!empty($this->tableSearch)) {
@@ -507,6 +520,7 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
507
  add_action('wp_footer', array($asset, 'load'));
508
  }
509
  }
 
510
  return $this->render((int)$attributes['id']);
511
  }
512
 
@@ -783,6 +797,9 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
783
  }
784
 
785
  if ($environment->isAction('view')) {
 
 
 
786
  // Styles
787
  $ui->add(
788
  $ui->createStyle('supsystic-tables-tables-editor-css')
@@ -808,6 +825,13 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
808
  ->setCachingAllowed(true)
809
  ->setVersion('1.3.0')
810
  );
 
 
 
 
 
 
 
811
 
812
  $ui->add(
813
  $ui->createScript('supsystic-tables-tables-model')
@@ -854,6 +878,10 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
854
  }
855
  }
856
 
 
 
 
 
857
  private function loadDataTables(SupsysticTables_Ui_Module $ui)
858
  {
859
  $hookName = 'admin_enqueue_scripts';
@@ -1371,6 +1399,11 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
1371
  'label' => $environment->translate('History Shortcode'),
1372
  'attrs' => 'use_history=1',
1373
  );
 
 
 
 
 
1374
  }
1375
 
1376
  return $dispatcher->apply('table-shortcodes-list', array($shortcodes));
@@ -1378,7 +1411,12 @@ class SupsysticTables_Tables_Module extends SupsysticTables_Core_BaseModule
1378
 
1379
  public function additionalCloningActions($clonedTable, $newTableId) {
1380
  return $clonedTable;
1381
- }
 
 
 
 
 
1382
  }
1383
 
1384
  require_once('Model/widget.php');
20
  * Contains the value of "search" shortcode param for applying it to table
21
  */
22
  private $tableSearch = '';
23
+ private $shortAttributes = array();
24
  /**
25
  * Variables for appending of table styles to site header
26
  */
58
  $dispatcher->on('after_tables_loaded', array($this, 'onAfterLoaded'));
59
  $this->renderTableHistorySection();
60
 
61
+ add_filter('jetpack_lazy_images_blacklisted_classes', array($this, 'excludeFromLazyLoad'), 999, 1);
62
  }
63
 
64
  public function getDataTablesInPosts() {
218
  $cachePath = $this->cacheDirectory . DIRECTORY_SEPARATOR . $id;
219
 
220
  $environment = $this->getEnvironment();
221
+ $dispatcher = $environment->getDispatcher();
222
  $twig = $environment->getTwig();
223
  $core = $environment->getModule('core'); // @var SupsysticTables_Core_Module $core
224
  $tables = $core->getModelsFactory()->get('tables'); // @var SupsysticTables_Tables_Model_Tables $tables
238
  if (!$table) {
239
  return sprintf($environment->translate('The table with ID %d not exists.'), $id);
240
  }
241
+ $table->isSSP = (!$this->isSingleCell
242
+ && !$this->isTablePart
243
+ && isset($table->settings['features']['paging'])
244
+ && $table->settings['features']['paging'] == 'on'
245
+ && isset($table->settings['serverSideProcessing'])
246
+ && $table->settings['serverSideProcessing'] == 'on'
247
+ );
248
  $table->isDB = ($environment->isPro() && !$this->isSingleCell && !$this->isTablePart && isset($table->settings['source']) && isset($table->settings['source']['database']) && $table->settings['source']['database'] == 'on');
249
 
250
  if(!isset($table->isPageRows)) {
251
  $table->isPageRows = false;
252
  }
 
253
  $this->checkSpreadsheet = $this->checkSpreadsheet && !$table->isPageRows
254
  && $environment->isPro()
255
  && isset($table->settings['features']['import']['google']['automatically_update'])
265
  && file_exists($cachePath)
266
  && $this->getEnvironment()->isProd()
267
  ) {
 
268
  // Connect scripts and styles depending on table settings and table's cells settings for table cache
 
269
  $dispatcher->apply('before_table_render', array($table));
270
  $dispatcher->apply('before_table_render_from_cache', array($table));
271
  return file_get_contents($cachePath);
280
  $table->meta = $tables->getMeta($id);
281
  }
282
  if(!$table->isPageRows) {
283
+ $table->rows = $tables->getNeededRows($id, $table->settings, $table->isSSP, $this->shortAttributes);
284
+ $this->shortAttributes = array();
285
 
286
  if (isset($table->meta['columnsWidth'])) {
287
  $columnsTotalWidth = array_sum($table->meta['columnsWidth']);
306
  unset($table->settings['features']['paging']);
307
  unset($table->settings['features']['searching']);
308
  unset($table->settings['features']['after_table_loaded_script']);
309
+
 
310
  $table->meta['css'] = $table->meta['css'] .
311
  '#supsystic-table-' . $table->view_id . ' #supsystic-table-' . $id . ' { margin-left: 0; }' .
312
  '#supsystic-table-' . $table->view_id . ' #supsystic-table-' . $id . ',
376
  $table->history_data = $this->historyData;
377
  $table->encoded_title = htmlspecialchars($table->title, ENT_QUOTES);
378
 
379
+ // Fix for some crashed logo links
380
+ if(!empty($table->settings['exportLogo']['src']) && strpos($table->settings['exportLogo']['src'], 'http') === false) {
381
+ // Try to fix link
382
+ if(strpos($table->settings['exportLogo']['src'], '/wp-content') === 0) {
383
+ $table->settings['exportLogo']['src'] = home_url($table->settings['exportLogo']['src']);
384
+ }
385
+ }
386
  // Connect scripts and styles depending on table settings and table's cells settings
 
387
  $dispatcher->apply('before_table_render', array($table));
388
+ if($table->isSSP) {
389
+ $dispatcher->apply('before_table_render_ssp', array($table));
390
+ }
391
  $searchValue = '';
392
 
393
  if(!empty($this->tableSearch)) {
520
  add_action('wp_footer', array($asset, 'load'));
521
  }
522
  }
523
+ $this->shortAttributes = $attributes;
524
  return $this->render((int)$attributes['id']);
525
  }
526
 
797
  }
798
 
799
  if ($environment->isAction('view')) {
800
+ // WordPress Media Library JavaScript APIs
801
+ add_action($hookName, array($this, 'loadMediaScripts'));
802
+
803
  // Styles
804
  $ui->add(
805
  $ui->createStyle('supsystic-tables-tables-editor-css')
825
  ->setCachingAllowed(true)
826
  ->setVersion('1.3.0')
827
  );
828
+ $ui->add(
829
+ $ui->createScript('supsystic-tables-slimscroll-js')
830
+ ->setHookName($hookName)
831
+ ->setModuleSource($this, 'libraries/slimscroll.min.js')
832
+ ->setCachingAllowed(true)
833
+ ->setVersion('1.3.8')
834
+ );
835
 
836
  $ui->add(
837
  $ui->createScript('supsystic-tables-tables-model')
878
  }
879
  }
880
 
881
+ public function loadMediaScripts() {
882
+ wp_enqueue_media();
883
+ }
884
+
885
  private function loadDataTables(SupsysticTables_Ui_Module $ui)
886
  {
887
  $hookName = 'admin_enqueue_scripts';
1399
  'label' => $environment->translate('History Shortcode'),
1400
  'attrs' => 'use_history=1',
1401
  );
1402
+ $shortcodes['sql_shortcode'] = array(
1403
+ 'name' => $config->get('shortcode_name'),
1404
+ 'label' => $environment->translate('SQL Shortcode'),
1405
+ 'attrs' => 'sql1=1 sql2="yes"',
1406
+ );
1407
  }
1408
 
1409
  return $dispatcher->apply('table-shortcodes-list', array($shortcodes));
1411
 
1412
  public function additionalCloningActions($clonedTable, $newTableId) {
1413
  return $clonedTable;
1414
+ }
1415
+
1416
+ public function excludeFromLazyLoad($classes) {
1417
+ array_push($classes, 'stbSkipLazy');
1418
+ return $classes;
1419
+ }
1420
  }
1421
 
1422
  require_once('Model/widget.php');
src/SupsysticTables/Tables/assets/css/tables.shortcode.css CHANGED
@@ -65,6 +65,9 @@ table.supsystic-table th, table.supsystic-table td {
65
  table.supsystic-table.nowrap th, table.supsystic-table.nowrap td {
66
  white-space: nowrap !important;
67
  }
 
 
 
68
  table.supsystic-table img {
69
  max-width:100%;
70
  height:auto;
@@ -122,19 +125,25 @@ table.supsystic-table .ww-v {
122
  margin-bottom: 10px;
123
  }
124
 
125
- table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child:before,
126
- table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child:before {
 
 
 
 
 
127
  background-color: #2B2B2B;
128
- text-indent: .5px;
129
- line-height: 14.5px;
130
- font-size: 14px;
 
 
 
131
  }
132
 
133
- table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before,
134
- table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before {
135
  background-color: #888;
136
- line-height: 16px;
137
- font-size: 14px;
138
  }
139
  /* Reset border styles for data tables, because border and border-left, border-right etc. styles are applied on table at the same time */
140
  table.dataTable tbody th, table.dataTable tbody td {
@@ -211,6 +220,10 @@ table.oneColumnWithLabels tr:not(.haveMergedCell) td:after {
211
  font-weight: 500;
212
  color: #a4aaac;
213
  }
 
 
 
 
214
 
215
  /* For search by hidden cells and for invisible cells */
216
  .supsystic-tables-wrap table.supsystic-table tr .hiddenCell, .supsystic-tables-wrap table.supsystic-table tr .invisibleCell {
65
  table.supsystic-table.nowrap th, table.supsystic-table.nowrap td {
66
  white-space: nowrap !important;
67
  }
68
+ table.supsystic-table img.wp-post-image {
69
+ max-width:none;
70
+ }
71
  table.supsystic-table img {
72
  max-width:100%;
73
  height:auto;
125
  margin-bottom: 10px;
126
  }
127
 
128
+ .supsystic-tables-features.after_table div {
129
+ margin-top: 10px;
130
+ margin-bottom: 0;
131
+ }
132
+
133
+ table.supsystic-table.collapsed > tbody > tr > td:first-child:before,
134
+ table.supsystic-table.collapsed > tbody > tr > th:first-child:before {
135
  background-color: #2B2B2B;
136
+ font-size: 16px;
137
+ line-height: 16px;
138
+ font-weight: normal;
139
+ font-style: normal;
140
+ text-align: center !important;
141
+ text-indent: 1px !important;
142
  }
143
 
144
+ table.supsystic-table.collapsed > tbody > tr.parent > td:first-child:before,
145
+ table.supsystic-table.collapsed > tbody > tr.parent > th:first-child:before {
146
  background-color: #888;
 
 
147
  }
148
  /* Reset border styles for data tables, because border and border-left, border-right etc. styles are applied on table at the same time */
149
  table.dataTable tbody th, table.dataTable tbody td {
220
  font-weight: 500;
221
  color: #a4aaac;
222
  }
223
+ .supsystic-tables-wrap .supsystic-table.compact .stbColumnsSearchWrapper th,
224
+ .supsystic-tables-wrap .supsystic-table.compact .stbColumnsSearchWrapper td {
225
+ padding: 4px;
226
+ }
227
 
228
  /* For search by hidden cells and for invisible cells */
229
  .supsystic-tables-wrap table.supsystic-table tr .hiddenCell, .supsystic-tables-wrap table.supsystic-table tr .invisibleCell {
src/SupsysticTables/Tables/assets/css/tables.view.css CHANGED
@@ -193,12 +193,6 @@
193
  -moz-box-shadow: none;
194
  box-shadow: none;
195
  }
196
- .tables-view .row-settings-tab {
197
- display: none;
198
- }
199
- .tables-view .row-settings-tab.active {
200
- display: block;
201
- }
202
  .tables-view #settings input, .tables-view #settings select, .history-settings input, .history-settings select {
203
  width: 100% !important;
204
  }
@@ -218,10 +212,23 @@
218
  display: block;
219
  padding: 10px;
220
  }
221
- .tables-view .title-place {
 
 
 
222
  line-height: 40px;
 
 
 
 
223
  padding: 0 15px;
224
  }
 
 
 
 
 
 
225
  .setting-wrapper {
226
  min-height: 30px;
227
  margin: 0 0 10px 0
@@ -440,3 +447,29 @@
440
  height:0;
441
  overflow:hidden;
442
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  -moz-box-shadow: none;
194
  box-shadow: none;
195
  }
 
 
 
 
 
 
196
  .tables-view #settings input, .tables-view #settings select, .history-settings input, .history-settings select {
197
  width: 100% !important;
198
  }
212
  display: block;
213
  padding: 10px;
214
  }
215
+ .tables-view .row-settings-tab {
216
+ padding-bottom: 20px;
217
+ }
218
+ .tables-view .title-block {
219
  line-height: 40px;
220
+ padding: 0 10px !important;
221
+ }
222
+ .tables-view .title-place {
223
+ line-height: 20px;
224
  padding: 0 15px;
225
  }
226
+ .tables-view .title-place h3 {
227
+ font-size: 16px;
228
+ }
229
+ .tables-view .title-block h3 {
230
+ margin: 0;
231
+ }
232
  .setting-wrapper {
233
  min-height: 30px;
234
  margin: 0 0 10px 0
447
  height:0;
448
  overflow:hidden;
449
  }
450
+
451
+ .stb-wraper-anchor-nav-links {
452
+ position: relative;
453
+ margin-bottom: 10px;
454
+ text-align: left;
455
+ z-index: 0;
456
+ }
457
+ .stb-wraper-anchor-nav-links .stb-anchor-nav-links {
458
+ text-decoration: none;
459
+ color: #777;
460
+ display: inline-block;
461
+ font-size: 14px;
462
+ padding: 0 5px 3px;
463
+ font-weight: 500;
464
+ }
465
+ .stb-wraper-anchor-nav-links .stb-anchor-nav-links:not(:last-child) {
466
+ border-right: 1px solid #aaa;
467
+ }
468
+ .stb-wraper-anchor-nav-links .stb-anchor-nav-links.active,
469
+ .stb-wraper-anchor-nav-links .stb-anchor-nav-links:hover,
470
+ .stb-wraper-option-links .stb-option-links.active,
471
+ .stb-wraper-option-links .stb-option-links:hover,
472
+ .stb-rename-category:hover {
473
+ color: #000;
474
+ text-decoration: underline;
475
+ }
src/SupsysticTables/Tables/assets/img/database.gif ADDED
Binary file
src/SupsysticTables/Tables/assets/img/history_table.gif ADDED
Binary file
src/SupsysticTables/Tables/assets/js/editor/tables.editor.js CHANGED
@@ -504,26 +504,21 @@ var g_stbRowsPerPage = 1;
504
  j = 0;
505
  }
506
  if(g_stbCopyPasteCellsMetaData[j]) {
507
- var value = editor.getDataAtCell(row, col),
508
- deltaRow = row - g_stbCopyPasteCellsMetaData[j].row,
509
- deltaCol = col - g_stbCopyPasteCellsMetaData[j].col,
510
- direction = '';
511
-
512
- if(deltaRow) {
513
- if(deltaRow > 0) {
514
- direction = 'down';
515
- } else {
516
- direction = 'up';
517
  }
518
- value = editor.plugin.utils.updateFormula(value, direction, Math.abs(deltaRow));
519
- }
520
- if(deltaCol) {
521
- if(deltaCol > 0) {
522
- direction = 'right';
523
- } else {
524
- direction = 'left';
525
  }
526
- value = editor.plugin.utils.updateFormula(value, direction, Math.abs(deltaCol));
527
  }
528
  editor.setDataAtCell(row, col, value);
529
  editor.setCellMetaObject(row, col, g_stbCopyPasteCellsMetaData[j]);
504
  j = 0;
505
  }
506
  if(g_stbCopyPasteCellsMetaData[j]) {
507
+ var value = editor.getDataAtCell(row, col);
508
+
509
+ if(value && value[0] == '=') {
510
+ var deltaRow = row - g_stbCopyPasteCellsMetaData[j].row,
511
+ deltaCol = col - g_stbCopyPasteCellsMetaData[j].col,
512
+ direction;
513
+
514
+ if(deltaRow) {
515
+ direction = deltaRow > 0 ? 'down' : 'up';
516
+ value = editor.plugin.utils.updateFormula(value, direction, Math.abs(deltaRow));
517
  }
518
+ if(deltaCol) {
519
+ direction = deltaCol > 0 ? 'right' : 'left';
520
+ value = editor.plugin.utils.updateFormula(value, direction, Math.abs(deltaCol));
 
 
 
 
521
  }
 
522
  }
523
  editor.setDataAtCell(row, col, value);
524
  editor.setCellMetaObject(row, col, g_stbCopyPasteCellsMetaData[j]);
src/SupsysticTables/Tables/assets/js/editor/tables.editor.toolbar.js CHANGED
@@ -278,6 +278,11 @@ var g_stbCellBgColorTimeoutSet = false,
278
  comments.removeCommentAtCell(selection.from.row, selection.from.col);
279
  }
280
  },
 
 
 
 
 
281
  'word-wrap-default': function() {
282
  this.replaceClass('', ['ww-v', 'ww-h']);
283
  this.getEditor().render();
@@ -581,7 +586,7 @@ var g_stbCellBgColorTimeoutSet = false,
581
  type = data.type,
582
  link = '',
583
  linkHtml = '',
584
- classes = '',
585
  attrs = 'style="max-width: 100%; height: auto;"',
586
  isEmbed = false;
587
 
@@ -589,7 +594,7 @@ var g_stbCellBgColorTimeoutSet = false,
589
  if (attachment.sizes) {
590
  if (attachment.sizes[props.size]) {
591
  url = attachment.sizes[props.size].url;
592
- classes += 'align' + props.align + ' size-' + props.size;
593
  }
594
  if (attachment.sizes['full']) {
595
  fullUrl = attachment.sizes['full'].url;
278
  comments.removeCommentAtCell(selection.from.row, selection.from.col);
279
  }
280
  },
281
+ merge: function () {
282
+ var e = this.getEditor();
283
+ e.mergeCells.mergeOrUnmergeSelection(e.getSelectedRange());
284
+ e.render();
285
+ },
286
  'word-wrap-default': function() {
287
  this.replaceClass('', ['ww-v', 'ww-h']);
288
  this.getEditor().render();
586
  type = data.type,
587
  link = '',
588
  linkHtml = '',
589
+ classes = 'stbSkipLazy', // our custom class to skip lazy loading of images by Jetpack
590
  attrs = 'style="max-width: 100%; height: auto;"',
591
  isEmbed = false;
592
 
594
  if (attachment.sizes) {
595
  if (attachment.sizes[props.size]) {
596
  url = attachment.sizes[props.size].url;
597
+ classes += ' align' + props.align + ' size-' + props.size;
598
  }
599
  if (attachment.sizes['full']) {
600
  fullUrl = attachment.sizes['full'].url;
src/SupsysticTables/Tables/assets/js/tables.model.js CHANGED
@@ -458,7 +458,8 @@ var g_stbPreviewTimeoutSet = false;
458
  mergeData = [],
459
  rowsData = [],
460
  columnsWidth = [],
461
- rowCounter = 0;
 
462
 
463
  // Put textareas data into the hidden fields before the saving of table settings
464
  formData.find('input[name="elements[descriptionText]"]').val( formData.find('#descriptionText').val() );
@@ -579,6 +580,9 @@ var g_stbPreviewTimeoutSet = false;
579
  if (metaClasses !== undefined) {
580
  $.each(metaClasses.split(' '), function (index, element) {
581
  if (element.length) {
 
 
 
582
  classes.push($.trim(element));
583
  }
584
  });
@@ -594,7 +598,18 @@ var g_stbPreviewTimeoutSet = false;
594
  if (x == 0) {
595
  columnsWidth.push(editor.getColWidth(y));
596
  }
 
 
 
 
 
597
 
 
 
 
 
 
 
598
  currentRow.cells.push(cellData);
599
  });
600
 
@@ -613,6 +628,7 @@ var g_stbPreviewTimeoutSet = false;
613
  }
614
  }
615
  metaData = {
 
616
  mergedCells: mergeData,
617
  columnsWidth: columnsWidth,
618
  columnsFixedWidth: g_stbFixedColumnsWidth,
@@ -876,66 +892,69 @@ var g_stbPreviewTimeoutSet = false;
876
  delimiters,
877
  preparedFormat;
878
 
 
 
879
  switch(formatType) {
880
- case 'number':
881
- delimiters = (format.match(/[^\d]/g) || [',', '.']).reverse();
882
- languageData.delimiters = {
883
- decimal: delimiters[0],
884
- thousands: delimiters[1] || ''
885
- };
886
-
887
- // We need to use dafault delimiters for format string
888
- preparedFormat = format
889
- .replace(format, format
890
- .replace(delimiters[0], '.')
891
- .replace(delimiters[1], ',')
892
- );
893
- break;
894
- case 'percent':
895
- var clearFormat = format.indexOf('%') > -1 ? format.replace('%', '') : format;
896
-
897
- delimiters = (clearFormat.match(/[^\d]/g) || [',', '.']).reverse();
898
- languageData.delimiters = {
899
- decimal: delimiters[0],
900
- thousands: delimiters[1] || ''
901
- };
902
-
903
- // We need to use dafault delimiters for format string
904
- preparedFormat = format.replace(
905
- clearFormat, clearFormat
906
- .replace(delimiters[0], '.')
907
- .replace(delimiters[1], ',')
908
- );
909
- break;
910
- case 'currency':
911
- var formatWithoutCurrency = format.match(/\d.?\d*.?\d*/)[0],
912
- currencySymbol = format.replace(formatWithoutCurrency, '') || '$';
913
-
914
- delimiters = (formatWithoutCurrency.match(/[^\d]/g) || [',', '.']).reverse();
915
- languageData.delimiters = {
916
- decimal: delimiters[0],
917
- thousands: delimiters[1] || ''
918
- };
919
- languageData.currency.symbol = currencySymbol;
920
-
921
- // We need to use dafault delimiters for format string
922
- preparedFormat = format
923
- .replace(formatWithoutCurrency, formatWithoutCurrency
924
- .replace(delimiters[0], '.')
925
- .replace(delimiters[1], ','))
926
- .replace(currencySymbol, '$');
927
-
928
- app.Editor.Hot.currencySymbol = currencySymbol;
929
- app.Editor.Hot.currencyFormat = preparedFormat;
930
- break;
931
- default:
932
- break;
 
933
  }
934
-
935
  numeral.language('en', languageData);
936
- value = numeral(value).format(preparedFormat);
 
 
937
  }
938
-
939
  return value;
940
  };
941
 
458
  mergeData = [],
459
  rowsData = [],
460
  columnsWidth = [],
461
+ rowCounter = 0,
462
+ requiredAssets = {};
463
 
464
  // Put textareas data into the hidden fields before the saving of table settings
465
  formData.find('input[name="elements[descriptionText]"]').val( formData.find('#descriptionText').val() );
580
  if (metaClasses !== undefined) {
581
  $.each(metaClasses.split(' '), function (index, element) {
582
  if (element.length) {
583
+ if(toeInArray(element, ['datefield', 'tooltipCell', 'collapsibleCell']) != -1 && !requiredAssets[element]) {
584
+ requiredAssets[element] = true;
585
+ }
586
  classes.push($.trim(element));
587
  }
588
  });
598
  if (x == 0) {
599
  columnsWidth.push(editor.getColWidth(y));
600
  }
601
+ var diagramsExists = cell && cell.toString().match(/(\[\s*supsystic-table-diagram[^\]]*\])+?/gi);
602
+
603
+ if(diagramsExists) {
604
+ for(var i = 0; i < diagramsExists.length; i++) {
605
+ var diagramId = /id=[\'|\"](\d+)[\'|\"]/gi.exec(diagramsExists[i]);
606
 
607
+ if(diagramId && diagramId[1]) {
608
+ requiredAssets.diagrams = requiredAssets.diagrams ? requiredAssets.diagrams : [];
609
+ requiredAssets.diagrams.push(diagramId[1]);
610
+ }
611
+ }
612
+ }
613
  currentRow.cells.push(cellData);
614
  });
615
 
628
  }
629
  }
630
  metaData = {
631
+ requiredAssets: requiredAssets,
632
  mergedCells: mergeData,
633
  columnsWidth: columnsWidth,
634
  columnsFixedWidth: g_stbFixedColumnsWidth,
892
  delimiters,
893
  preparedFormat;
894
 
895
+ if(!format && typeof format !== 'string' && !format.match(/\d+/)) return value;
896
+
897
  switch(formatType) {
898
+ case 'number':
899
+ delimiters = (format.match(/[^\d]/g) || [',', '.']).reverse();
900
+ languageData.delimiters = {
901
+ decimal: delimiters[0],
902
+ thousands: delimiters[1] || ''
903
+ };
904
+
905
+ // We need to use dafault delimiters for format string
906
+ preparedFormat = format
907
+ .replace(format, format
908
+ .replace(delimiters[0], '.')
909
+ .replace(delimiters[1], ',')
910
+ );
911
+ break;
912
+ case 'percent':
913
+ var clearFormat = format.indexOf('%') > -1 ? format.replace('%', '') : format;
914
+
915
+ delimiters = (clearFormat.match(/[^\d]/g) || [',', '.']).reverse();
916
+ languageData.delimiters = {
917
+ decimal: delimiters[0],
918
+ thousands: delimiters[1] || ''
919
+ };
920
+
921
+ // We need to use dafault delimiters for format string
922
+ preparedFormat = format.replace(
923
+ clearFormat, clearFormat
924
+ .replace(delimiters[0], '.')
925
+ .replace(delimiters[1], ',')
926
+ );
927
+ break;
928
+ case 'currency':
929
+ var currencySymbolMatch = format.match(/^[^\d]?|[^\d]?$/),
930
+ currencySymbol = currencySymbolMatch[0] || '$',
931
+ formatWithoutCurrency = format.replace(currencySymbol, '');
932
+
933
+ delimiters = (formatWithoutCurrency.match(/[^\d]/g) || [',', '.']).reverse();
934
+ languageData.delimiters = {
935
+ decimal: delimiters[0],
936
+ thousands: delimiters[1] || ''
937
+ };
938
+ languageData.currency.symbol = currencySymbol;
939
+
940
+ // We need to use dafault delimiters for format string
941
+ preparedFormat = format
942
+ .replace(formatWithoutCurrency, formatWithoutCurrency
943
+ .replace(delimiters[0], '.')
944
+ .replace(delimiters[1], ','))
945
+ .replace(currencySymbol, '$');
946
+
947
+ app.Editor.Hot.currencySymbol = currencySymbol;
948
+ app.Editor.Hot.currencyFormat = preparedFormat;
949
+ break;
950
+ default:
951
+ break;
952
  }
 
953
  numeral.language('en', languageData);
954
+ if(preparedFormat) {
955
+ value = numeral(value).format(preparedFormat);
956
+ }
957
  }
 
958
  return value;
959
  };
960
 
src/SupsysticTables/Tables/assets/js/tables.shortcode.js CHANGED
@@ -1,114 +1,5 @@
1
  (function ($, app) {
2
  $(document).ready(function () {
3
- var firstTableId = '',
4
- firstTableViewId = '',
5
- firstTable = '',
6
- firstTableWrapper = '',
7
- firstTableFirstRow = '';
8
-
9
- if($(window).width() <= 991) {
10
- $('div .supsystic-tables-wrap').each(function () {
11
- ssDiv = $(this);
12
- var widthMobile = ssDiv.data('table-width-mobile');
13
- if(typeof(widthMobile) != 'undefined') {
14
- ssDiv.css('display', (widthMobile == 'auto' ? 'inline-block' : '')).css('width', widthMobile);
15
- }
16
- });
17
- }
18
-
19
- $('.supsystic-table').each(function () {
20
- app.initializeTable(this, app.showTable, function(table) {
21
- // This is used when table is hidden in tabs and can't calculate itself width to adjust on small screens
22
- if (table.is(':visible')) {
23
- // Fix bug in FF and IE which not supporting max-width 100% for images in td
24
- calculateImages(table);
25
- } else {
26
- table.data('isVisible', setInterval(function(){
27
- if (table.is(':visible')) {
28
- clearInterval(table.data('isVisible'));
29
- calculateImages(table);
30
- }
31
- }, 250));
32
- }
33
- // Align all tables on page by the columns width depending on the columns width of first table on page
34
- if(table.data('align-by-first-table')) {
35
- firstTableId = firstTableId || $('.supsystic-table:first').data('id');
36
- firstTable = firstTable || $('#supsystic-table-' + firstTableId);
37
- firstTableViewId = firstTable.data('view-id');
38
- firstTableWrapper = firstTableWrapper || firstTable.parents('#supsystic-table-' + firstTableViewId);
39
- firstTableFirstRow = firstTable.data('head') ? firstTable.find('thead tr:first-child th') : firstTable.find('tbody tr:first-child td');
40
-
41
- if(firstTableViewId != table.data('view-id')) {
42
- var currentTableWrapper = table.parents('#supsystic-table-' + table.data('view-id'));
43
-
44
- currentTableWrapper.css({
45
- width: firstTableWrapper.get(0).style.width
46
- });
47
- table.css({
48
- width: firstTable.get(0).style.width
49
- });
50
- currentTableWrapper.find('.supsystic-table').each(function() {
51
- var curTable = $(this),
52
- curTableFirstRow = curTable.data('head') ? curTable.find('thead tr:first-child th') : curTable.find('tbody tr:first-child td');
53
-
54
- $.each(curTableFirstRow, function (index, element) {
55
- if(firstTableFirstRow[index]) {
56
- $(this).width($(firstTableFirstRow[index]).get(0).style.width);
57
- }
58
- });
59
- });
60
- }
61
- }
62
- //if row has merged cells no need place header there
63
- if(table.data('merged') && table.hasClass('ColWithMergeCellsAlign')) {
64
- var mergedData = table.data('merged');
65
- jQuery.each(mergedData, function( index, value ) {
66
- var rowNumWithMergeCell = value.row;
67
- var numForEq = Number(rowNumWithMergeCell)-1;
68
- table.find('tbody tr:eq('+numForEq+')').closest('tr').addClass('haveMergedCell');
69
- });
70
- app.setCellAttributes(table.parents('.supsystic-tables-wrap:first').find('.DTFC_LeftWrapper, DTFC_RightWrapper, .dataTables_scrollHead, .dataTables_scrollFoot').find('th, td'));
71
- }
72
- if(typeof app.getTableInstanceById(table.data('id')).fnAdjustColumnSizing == 'function' ) {
73
- setTimeout(function(){
74
- app.getTableInstanceById(table.data('id')).fnAdjustColumnSizing(false);
75
- }, 350);
76
- }
77
- });
78
- });
79
  });
80
-
81
- function getOriginalImageSizes(img) {
82
- var tempImage = new Image(),
83
- width,
84
- height;
85
- if ('naturalWidth' in tempImage && 'naturalHeight' in tempImage) {
86
- width = img.naturalWidth;
87
- height = img.naturalHeight;
88
- } else {
89
- tempImage.src= img.src;
90
- width = tempImage.width;
91
- height = tempImage.height;
92
- }
93
- return {
94
- width: width,
95
- height: height
96
- };
97
- }
98
-
99
- function calculateImages($table) {
100
- var $images = $table.find('img');
101
- if ($images.length > 0 && /firefox|trident|msie/i.test(navigator.userAgent)) {
102
- $images.hide();
103
- $.each($images, function(index, el) {
104
- var $img = $(this),
105
- originalSizes = getOriginalImageSizes(this);
106
- if ($img.closest('td, th').width() < originalSizes.width) {
107
- $img.css('width', '100%');
108
- }
109
- });
110
- $images.show();
111
-
112
- }
113
- }
114
  }(window.jQuery, window.supsystic.Tables));
1
  (function ($, app) {
2
  $(document).ready(function () {
3
+ app.initTablesOnPage();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  }(window.jQuery, window.supsystic.Tables));
src/SupsysticTables/Tables/assets/js/tables.view.js CHANGED
@@ -48,30 +48,94 @@ var g_stbCopyPasteColsCount = [];
48
  case '#row-tab-preview':
49
  tablesModel.saveTable('#table-preview');
50
  break;
 
 
 
51
  default:
52
  break;
53
  }
54
  });
55
 
56
  // Initialize Sub Tabs
57
- var $settingsSubTabsContent = $('.row-settings-tab'),
58
- $settingsSubTabs = $('.subsubsub.tabs-settings-wrapper .button'),
59
- $settingsCurrentTab = $settingsSubTabs.filter('.current').attr('href');
60
-
61
- $settingsSubTabsContent.filter($settingsCurrentTab).addClass('active');
62
-
63
- $settingsSubTabs.on('click', function (e) {
64
- e.preventDefault();
65
-
66
- var $this = $(this),
67
- $curTab = $this.attr('href');
68
-
69
- $settingsSubTabsContent.removeClass('active');
70
- $settingsSubTabs.filter('.current').removeClass('current');
71
- $this.addClass('current');
72
- $settingsSubTabsContent.filter($curTab).addClass('active');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  });
74
 
 
 
 
 
 
 
75
  // Fix of conflict with handsontable library - it triggers error if user makes click on link without href attribute
76
  $('select[multiple="multiple"]').on('change', function() {
77
  $('.chosen-container-multi .search-choice-close').each(function() {
@@ -438,12 +502,18 @@ var g_stbCopyPasteColsCount = [];
438
  }
439
  }
440
  }
441
- if($('#woocommerce-settings').length){
442
  //remove html with options
443
  $('input[name="woocommerce[order]"]').val('');
444
  $('input[name="woocommerce[productids]"]').val('');
445
  $('input[name="woocommerce[enable]"]').prop('checked', false).iCheck('update');
446
- tablesModel.saveTable();
 
 
 
 
 
 
447
  setTimeout(function() {
448
  location.reload();
449
  }, 500);
@@ -559,8 +629,9 @@ var g_stbCopyPasteColsCount = [];
559
  });
560
 
561
  // Search by Columns - Position
562
- $('input[name="searching[columnSearch]"]').on('change ifChanged', function() {
563
- if($(this).is(':checked')) {
 
564
  $('select[name="searching[columnSearchPosition]"]').parents('.setting-wrapper:first').fadeIn(300);
565
  } else {
566
  $('select[name="searching[columnSearchPosition]"]').parents('.setting-wrapper:first').fadeOut(300);
@@ -568,16 +639,18 @@ var g_stbCopyPasteColsCount = [];
568
  });
569
 
570
  // Show results only - Show empty table
571
- $('input[name="searching[resultOnly]"]').on('change ifChanged', function() {
572
- if($(this).is(':checked')) {
 
573
  $('input[name="searching[showTable]"]').parents('.setting-wrapper:first').fadeIn(300);
574
  } else {
575
  $('input[name="searching[showTable]"]').parents('.setting-wrapper:first').fadeOut(300);
576
  }
577
  });
578
  $('input[name="features[searching]"]').on('change ifChanged', function() {
579
- $('input[name="searching[resultOnly]"]').trigger('change');
580
- $('input[name="searching[columnSearch]"]').trigger('change');
 
581
  });
582
 
583
  // Table Loader
48
  case '#row-tab-preview':
49
  tablesModel.saveTable('#table-preview');
50
  break;
51
+ case '#row-tab-css':
52
+ cssEditor.resize();
53
+ break;
54
  default:
55
  break;
56
  }
57
  });
58
 
59
  // Initialize Sub Tabs
60
+ var linksOyPositions = [],
61
+ offsetTop2 = Math.floor($("#stb-anl-main").offset().top);
62
+ linksOyPositions.push({
63
+ 'id': '#stb-anl-main',
64
+ 'offset': 0,
65
+ });
66
+ linksOyPositions.push({
67
+ 'id': '#stb-anl-features',
68
+ 'offset': Math.abs(Math.floor($("#stb-anl-features").offset().top) - offsetTop2 - 40),
69
+ });
70
+ linksOyPositions.push({
71
+ 'id': '#stb-anl-appearance',
72
+ 'offset': Math.abs(Math.floor($("#stb-anl-appearance").offset().top) - offsetTop2 - 40),
73
+ });
74
+ linksOyPositions.push({
75
+ 'id': '#stb-anl-language',
76
+ 'offset': Math.abs(Math.floor($("#stb-anl-language").offset().top) - offsetTop2 - 40),
77
+ });
78
+ linksOyPositions.push({
79
+ 'id': '#stb-anl-source',
80
+ 'offset': Math.abs(Math.floor($("#stb-anl-source").offset().top) - offsetTop2 - 40),
81
+ });
82
+
83
+
84
+ $('.settings-wrap').slimScroll({'height': g_stbWindowHeight+'px'}).off('slimscrolling')
85
+ .on('slimscrolling', null, { 'oy': linksOyPositions }, function(e, pos){
86
+ if(e && e.data && e.data.oy) {
87
+ var ind1 = 0,
88
+ $activeItem = $('.stb-anchor-nav-links.active'),
89
+ isFind = false;
90
+ while(ind1 < (e.data.oy.length - 1) && !isFind) {
91
+ if(e.data.oy[ind1].offset <= pos && e.data.oy[ind1+1].offset > pos) {
92
+ isFind = ind1;
93
+ ind1 = e.data.oy.length;
94
+ }
95
+ ind1++;
96
+ }
97
+ // if current position at last anchor
98
+ if(isFind == false && ind1 == 4) {
99
+ isFind = ind1;
100
+ }
101
+ //check curr active item
102
+ var activeId = $activeItem.attr('href');
103
+ if(e.data.oy[isFind] && activeId != e.data.oy[isFind].id) {
104
+ if($activeItem.length) {
105
+ // remove active class
106
+ $activeItem.removeClass('active');
107
+ }
108
+ // add active class
109
+ $('.stb-anchor-nav-links[href="' + e.data.oy[isFind].id + '"]').addClass('active');
110
+ }
111
+ }
112
+ });
113
+ $('.stb-anchor-nav-links').on('click', function(e1, funcParams) {
114
+ e1.preventDefault();
115
+ var $settingsWrap = $('.settings-wrap')
116
+ , urlLink = $(this).attr('href')
117
+ , $linkItem = $(urlLink)
118
+ , $topItem = $("#stb-anl-main");
119
+ if($linkItem.length) {
120
+ var offsetLink = $linkItem.offset().top
121
+ , offsetTop = $topItem.offset().top
122
+ , offsetAbs = Math.abs(offsetLink -offsetTop);
123
+ // if need to set start position
124
+ if(funcParams && funcParams.offsetScTop) {
125
+ offsetAbs = funcParams.offsetScTop;
126
+ }
127
+ if(!isNaN(offsetAbs)) {
128
+ $settingsWrap.slimScroll({ scrollTo: offsetAbs + 'px' });
129
+ }
130
+ }
131
  });
132
 
133
+ // init anchor link
134
+ setTimeout(function() {
135
+ var slScrollTopPos = parseInt($('#slimScrollStartPos').val());
136
+ $('.stb-anchor-nav-links[href="#stb-anl-main"]').trigger('click', {'offsetScTop':slScrollTopPos});
137
+ }, 200);
138
+
139
  // Fix of conflict with handsontable library - it triggers error if user makes click on link without href attribute
140
  $('select[multiple="multiple"]').on('change', function() {
141
  $('.chosen-container-multi .search-choice-close').each(function() {
502
  }
503
  }
504
  }
505
+ if($('#woocommerce-settings').length > 0){
506
  //remove html with options
507
  $('input[name="woocommerce[order]"]').val('');
508
  $('input[name="woocommerce[productids]"]').val('');
509
  $('input[name="woocommerce[enable]"]').prop('checked', false).iCheck('update');
510
+
511
+ app.request({
512
+ module: 'woocommerce',
513
+ action: 'saveWoocommerceSettings'
514
+ }, { id: app.getParameterByName('id'), settings: '' });
515
+
516
+
517
  setTimeout(function() {
518
  location.reload();
519
  }, 500);
629
  });
630
 
631
  // Search by Columns - Position
632
+ $('input[name="searching[columnSearch]"]').on('change ifChanged', function(e, isParentEnabled) {
633
+ isParentEnabled = typeof isParentEnabled != 'undefined' ? isParentEnabled : true;
634
+ if($(this).is(':checked') && isParentEnabled) {
635
  $('select[name="searching[columnSearchPosition]"]').parents('.setting-wrapper:first').fadeIn(300);
636
  } else {
637
  $('select[name="searching[columnSearchPosition]"]').parents('.setting-wrapper:first').fadeOut(300);
639
  });
640
 
641
  // Show results only - Show empty table
642
+ $('input[name="searching[resultOnly]"]').on('change ifChanged', function(e, isParentEnabled) {
643
+ isParentEnabled = typeof isParentEnabled != 'undefined' ? isParentEnabled : true;
644
+ if($(this).is(':checked') && isParentEnabled) {
645
  $('input[name="searching[showTable]"]').parents('.setting-wrapper:first').fadeIn(300);
646
  } else {
647
  $('input[name="searching[showTable]"]').parents('.setting-wrapper:first').fadeOut(300);
648
  }
649
  });
650
  $('input[name="features[searching]"]').on('change ifChanged', function() {
651
+ var isChecked = $(this).is(':checked');
652
+ $('input[name="searching[resultOnly]"]').trigger('change', isChecked);
653
+ $('input[name="searching[columnSearch]"]').trigger('change', isChecked);
654
  });
655
 
656
  // Table Loader
src/SupsysticTables/Tables/assets/libraries/ruleJS/ruleJS.js CHANGED
@@ -1031,7 +1031,7 @@ var ruleJS = (function (root) {
1031
  "DOLLAR",
1032
  "EXACT",
1033
  "FIND", "FIXED",
1034
- "HTML2TEXT", "HUMANIZE",
1035
  "JOIN",
1036
  "LEFT", "LEN", "LOWER",
1037
  "MID",
@@ -1494,7 +1494,7 @@ var ruleJS = (function (root) {
1494
  }
1495
 
1496
  } catch (ex) {
1497
- // Formulas errors!!!
1498
  //console.log(ex);
1499
  var message = Exception.get(ex.message);
1500
 
1031
  "DOLLAR",
1032
  "EXACT",
1033
  "FIND", "FIXED",
1034
+ "HTML2TEXT", "HUMANIZE", "HYPERLINK",
1035
  "JOIN",
1036
  "LEFT", "LEN", "LOWER",
1037
  "MID",
1494
  }
1495
 
1496
  } catch (ex) {
1497
+ // Errors debugging
1498
  //console.log(ex);
1499
  var message = Exception.get(ex.message);
1500
 
src/SupsysticTables/Tables/assets/libraries/ruleJS/ruleJS.lib.full.js CHANGED
@@ -19318,10 +19318,27 @@ this.j$ = this.jStat = (function(Math, undefined) {
19318
  sum_range = sum_range || range;
19319
  range = Formula.FLATTEN(range);
19320
  sum_range = Formula.FLATTEN(sum_range);
 
 
19321
  var result = 0;
19322
 
19323
- if(range.length == sum_range.length) {
 
 
 
 
 
 
 
 
 
 
 
 
 
19324
  for (var i = 0; i < range.length; i++) {
 
 
19325
  result += (eval(range[i] + criteria)) ? sum_range[i] : 0;
19326
  }
19327
  } else {
@@ -20817,6 +20834,25 @@ this.j$ = this.jStat = (function(Math, undefined) {
20817
  };
20818
 
20819
  // Custom supsystic formulas
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20820
  Formula.INDEX = function(arrayValues, rowNum, colNum) {
20821
  if ((rowNum < 0) || (colNum < 0)) {
20822
  return '#VALUE!';
19318
  sum_range = sum_range || range;
19319
  range = Formula.FLATTEN(range);
19320
  sum_range = Formula.FLATTEN(sum_range);
19321
+ criteria = criteria === null ? '' : criteria;
19322
+
19323
  var result = 0;
19324
 
19325
+ if(range && sum_range && range.length === sum_range.length && (criteria || criteria === '' || criteria === 0)) {
19326
+ if(typeof criteria == 'string') {
19327
+ // string
19328
+ if(!criteria.match(/^[<>=]/g)) {
19329
+ criteria = '==="'+ criteria.replace(/\'/g,"\\'").replace(/\"/g,'\\"')+ '"';
19330
+ } else {
19331
+ if(criteria[0] == '=' && criteria[1] != '=') {
19332
+ criteria = criteria.replace(/^=/, '===');
19333
+ }
19334
+ }
19335
+ } else {
19336
+ // number
19337
+ criteria = '==='+criteria;
19338
+ }
19339
  for (var i = 0; i < range.length; i++) {
19340
+ range[i] = range[i] === null ? '' : range[i];
19341
+ range[i] = typeof range[i] == 'string' ? '"'+ range[i].replace(/\'/g,"\\'").replace(/\"/g,'\\"')+ '"' : range[i];
19342
  result += (eval(range[i] + criteria)) ? sum_range[i] : 0;
19343
  }
19344
  } else {
20834
  };
20835
 
20836
  // Custom supsystic formulas
20837
+ Formula.HYPERLINK = function(url, linkLabel) {
20838
+ linkLabel = linkLabel ? linkLabel : url;
20839
+
20840
+ var res = linkLabel,
20841
+ protocols = ['http', 'https', 'mailto', 'aim:', 'ftp', 'gopher', 'telnet'],
20842
+ linkArr = url.split(':'),
20843
+ protocolChecked = false;
20844
+
20845
+ if(linkArr && linkArr.length > 0) {
20846
+ if(linkArr.length === 1) {
20847
+ url = 'http://'+ url;
20848
+ protocolChecked = true;
20849
+ }
20850
+ if(protocols.indexOf(linkArr[0]) !== -1 || protocolChecked) {
20851
+ res = '<a href="'+ url+ '" target="_blank">'+ linkLabel+ '</a>';
20852
+ }
20853
+ }
20854
+ return res;
20855
+ };
20856
  Formula.INDEX = function(arrayValues, rowNum, colNum) {
20857
  if ((rowNum < 0) || (colNum < 0)) {
20858
  return '#VALUE!';
src/SupsysticTables/Tables/assets/libraries/slimscroll.min.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)
2
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
3
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
4
+ *
5
+ * Version: 1.3.8
6
+ *
7
+ */
8
+ (function(e){e.fn.extend({slimScroll:function(f){var a=e.extend({width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},f);this.each(function(){function v(d){if(r){d=d||window.event;
9
+ var c=0;d.wheelDelta&&(c=-d.wheelDelta/120);d.detail&&(c=d.detail/3);e(d.target||d.srcTarget||d.srcElement).closest("."+a.wrapperClass).is(b.parent())&&n(c,!0);d.preventDefault&&!k&&d.preventDefault();k||(d.returnValue=!1)}}function n(d,g,e){k=!1;var f=b.outerHeight()-c.outerHeight();g&&(g=parseInt(c.css("top"))+d*parseInt(a.wheelStep)/100*c.outerHeight(),g=Math.min(Math.max(g,0),f),g=0<d?Math.ceil(g):Math.floor(g),c.css({top:g+"px"}));l=parseInt(c.css("top"))/(b.outerHeight()-c.outerHeight());g=
10
+ l*(b[0].scrollHeight-b.outerHeight());e&&(g=d,d=g/b[0].scrollHeight*b.outerHeight(),d=Math.min(Math.max(d,0),f),c.css({top:d+"px"}));b.scrollTop(g);b.trigger("slimscrolling",~~g);w();p()}function x(){u=Math.max(b.outerHeight()/b[0].scrollHeight*b.outerHeight(),30);c.css({height:u+"px"});var a=u==b.outerHeight()?"none":"block";c.css({display:a})}function w(){x();clearTimeout(B);l==~~l?(k=a.allowPageScroll,C!=l&&b.trigger("slimscroll",0==~~l?"top":"bottom")):k=!1;C=l;u>=b.outerHeight()?k=!0:(c.stop(!0,
11
+ !0).fadeIn("fast"),a.railVisible&&m.stop(!0,!0).fadeIn("fast"))}function p(){a.alwaysVisible||(B=setTimeout(function(){a.disableFadeOut&&r||y||z||(c.fadeOut("slow"),m.fadeOut("slow"))},1E3))}var r,y,z,B,A,u,l,C,k=!1,b=e(this);if(b.parent().hasClass(a.wrapperClass)){var q=b.scrollTop(),c=b.siblings("."+a.barClass),m=b.siblings("."+a.railClass);x();if(e.isPlainObject(f)){if("height"in f&&"auto"==f.height){b.parent().css("height","auto");b.css("height","auto");var h=b.parent().parent().height();b.parent().css("height",
12
+ h);b.css("height",h)}else"height"in f&&(h=f.height,b.parent().css("height",h),b.css("height",h));if("scrollTo"in f)q=parseInt(a.scrollTo);else if("scrollBy"in f)q+=parseInt(a.scrollBy);else if("destroy"in f){c.remove();m.remove();b.unwrap();return}n(q,!1,!0)}}else if(!(e.isPlainObject(f)&&"destroy"in f)){a.height="auto"==a.height?b.parent().height():a.height;q=e("<div></div>").addClass(a.wrapperClass).css({position:"relative",overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden",
13
+ width:a.width,height:a.height});var m=e("<div></div>").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?"block":"none","border-radius":a.railBorderRadius,background:a.railColor,opacity:a.railOpacity,zIndex:90}),c=e("<div></div>").addClass(a.barClass).css({background:a.color,width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible?"block":"none","border-radius":a.borderRadius,BorderRadius:a.borderRadius,MozBorderRadius:a.borderRadius,
14
+ WebkitBorderRadius:a.borderRadius,zIndex:99}),h="right"==a.position?{right:a.distance}:{left:a.distance};m.css(h);c.css(h);b.wrap(q);b.parent().append(c);b.parent().append(m);a.railDraggable&&c.bind("mousedown",function(a){var b=e(document);z=!0;t=parseFloat(c.css("top"));pageY=a.pageY;b.bind("mousemove.slimscroll",function(a){currTop=t+a.pageY-pageY;c.css("top",currTop);n(0,c.position().top,!1)});b.bind("mouseup.slimscroll",function(a){z=!1;p();b.unbind(".slimscroll")});return!1}).bind("selectstart.slimscroll",
15
+ function(a){a.stopPropagation();a.preventDefault();return!1});m.hover(function(){w()},function(){p()});c.hover(function(){y=!0},function(){y=!1});b.hover(function(){r=!0;w();p()},function(){r=!1;p()});b.bind("touchstart",function(a,b){a.originalEvent.touches.length&&(A=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){k||b.originalEvent.preventDefault();b.originalEvent.touches.length&&(n((A-b.originalEvent.touches[0].pageY)/a.touchScrollStep,!0),A=b.originalEvent.touches[0].pageY)});
16
+ x();"bottom"===a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),n(0,!0)):"top"!==a.start&&(n(e(a.start).position().top,null,!0),a.alwaysVisible||c.hide());window.addEventListener?(this.addEventListener("DOMMouseScroll",v,!1),this.addEventListener("mousewheel",v,!1)):document.attachEvent("onmousewheel",v)}});return this}});e.fn.extend({slimscroll:e.fn.slimScroll})})(jQuery);
src/SupsysticTables/Tables/views/partials/historyTabContent.twig CHANGED
@@ -2,15 +2,21 @@
2
  {% set url = build_pro_url({ 'utm_medium': 'table_history' }) %}
3
 
4
  {% block content %}
5
- <div class="col-xs-12">
 
 
 
 
 
 
6
  <a href="{{ url }}" class="button button-hero" target="_blank">
7
  {{ environment.translate('Get PRO') }}
8
  </a>
9
  </div>
10
  <div class="col-xs-12">
11
  <a href="{{ url }}" target="_blank">
12
- <img src="{{ environment.getModule('tables').getLocationUrl() }}/assets/img/table_history.png" alt="Tables History" title="Available in PRO version" style="width: 100%; height: auto;">
13
  </a>
14
  </div>
15
  {% endblock %}
16
- </div>
2
  {% set url = build_pro_url({ 'utm_medium': 'table_history' }) %}
3
 
4
  {% block content %}
5
+ {% import '@ui/tooltip.twig' as tooltip %}
6
+ <div class="col-xs-12">
7
+ <h3 style="display:inline-block;">
8
+ {{ environment.translate('Table History') }}&nbsp;
9
+ {{ tooltip.icon('Сreate editable tables for your logged in users and easily view the changes. Information about table changes will be displayed on this tab, where you can select a user from the available list to check the content, date and time changes.' | raw, 'top', true)}}
10
+ </h3>
11
+ </br>
12
  <a href="{{ url }}" class="button button-hero" target="_blank">
13
  {{ environment.translate('Get PRO') }}
14
  </a>
15
  </div>
16
  <div class="col-xs-12">
17
  <a href="{{ url }}" target="_blank">
18
+ <img style="max-width:800px;" src="{{ environment.getModule('tables').getLocationUrl() }}/assets/img/history_table.gif" alt="Tables History" title="Available in PRO version" style="width: 100%; height: auto;">
19
  </a>
20
  </div>
21
  {% endblock %}
22
+ </div>
src/SupsysticTables/Tables/views/shortcode.twig CHANGED
@@ -284,9 +284,12 @@
284
  style="width: {{ tableWidth }};"
285
  {% endif %}
286
 
287
- {% if table.woo_settings is defined and table.woo_settings.woocommerce.multiple_add_cart =='on' %}
288
- data-multiple-add-cart="{{ table.woo_settings.woocommerce.multiple_add_cart }}"
289
  {% endif %}
 
 
 
290
  >
291
 
292
  {% block caption %}
@@ -367,14 +370,18 @@
367
  {% endif %}
368
  {% if head %}
369
  {{ m.cell(cell, headRowNumber, cellIndex, 'th', _context) }}
370
- {% if cols[cellIndex] == 'Z' %}
371
  {% set countIter = countIter + 1 %}
372
  {% set cellIter = -1 %} {# set 0 because next step is cellIter = cellIter + 1 #}
373
  {% endif %}
374
  {% set cellIter = cellIter + 1 %}
375
  {% else %}
376
- {% if cell.hiddenCell != true%}
377
- <th style="width:{{ table.meta.columnsWidth[cellIndex] }}%; padding: 0 !important;"></th>
 
 
 
 
378
  {% endif %}
379
  {% endif %}
380
  {% endfor %}
@@ -424,7 +431,7 @@
424
  {% set cellIndex = cell.col %}
425
  {% endif %}
426
  {{ m.cell(cell, rowNumber, cellIndex, 'td', _context) }}
427
- {% if cols[cellIndex] == 'Z' %}
428
  {% set countIter = countIter + 1 %}
429
  {% set cellIter = -1 %} {# set 0 because next step is cellIter = cellIter + 1 #}
430
  {% endif %}
@@ -464,7 +471,7 @@
464
  {% set addFooterAutoIndex = false %}
465
  {% endif %}
466
  {{ m.cell(cell, footRowNumber, cellIndex, 'th', _context) }}
467
- {% if cols[cellIndex] == 'Z' %}
468
  {% set countIter = countIter + 1 %}
469
  {% set cellIter = -1 %} {# set 0 because next step is cellIter = cellIter + 1 #}
470
  {% endif %}
284
  style="width: {{ tableWidth }};"
285
  {% endif %}
286
 
287
+ {% if table.woo_settings is defined and table.woo_settings.woocommerce.enable == 'on' %}
288
+ data-woocommerce-table="on"
289
  {% endif %}
290
+ {% if table.woo_settings is defined and table.woo_settings.woocommerce.multiple_add_cart =='on' %}
291
+ data-multiple-add-cart="{{ table.woo_settings.woocommerce.multiple_add_cart }}"
292
+ {% endif %}
293
  >
294
 
295
  {% block caption %}
370
  {% endif %}
371
  {% if head %}
372
  {{ m.cell(cell, headRowNumber, cellIndex, 'th', _context) }}
373
+ {% if cols[cellIter] == 'Z' %}
374
  {% set countIter = countIter + 1 %}
375
  {% set cellIter = -1 %} {# set 0 because next step is cellIter = cellIter + 1 #}
376
  {% endif %}
377
  {% set cellIter = cellIter + 1 %}
378
  {% else %}
379
+ {% if cell.hiddenCell != true %}
380
+ {% set fakeCellClass = '' %}
381
+ {% if cell.invisibleCell == true %}
382
+ {% set fakeCellClass = 'invisibleCell' %}
383
+ {% endif %}
384
+ <th class="{{ fakeCellClass }}" style="width:{{ table.meta.columnsWidth[cellIndex] }}%; padding: 0 !important;"></th>
385
  {% endif %}
386
  {% endif %}
387
  {% endfor %}
431
  {% set cellIndex = cell.col %}
432
  {% endif %}
433
  {{ m.cell(cell, rowNumber, cellIndex, 'td', _context) }}
434
+ {% if cols[cellIter] == 'Z' %}
435
  {% set countIter = countIter + 1 %}
436
  {% set cellIter = -1 %} {# set 0 because next step is cellIter = cellIter + 1 #}
437
  {% endif %}
471
  {% set addFooterAutoIndex = false %}
472
  {% endif %}
473
  {{ m.cell(cell, footRowNumber, cellIndex, 'th', _context) }}
474
+ {% if cols[cellIter] == 'Z' %}
475
  {% set countIter = countIter + 1 %}
476
  {% set cellIter = -1 %} {# set 0 because next step is cellIter = cellIter + 1 #}
477
  {% endif %}
src/SupsysticTables/Tables/views/styles.twig CHANGED
@@ -1 +1 @@
1
- <style type="text/css" id="supsystic-table-{{ tableObj.view_id }}-css">{{ tableObj.meta.css }}</style>
1
+ <style type="text/css" id="supsystic-table-{{ tableObj.view_id }}-css">{{ tableObj.meta.css | raw }}</style>
src/SupsysticTables/Tables/views/view.twig CHANGED
@@ -32,7 +32,7 @@
32
  </select>
33
  </div>
34
  <div class="col-md-1 col-sm-1 col-xs-2 stbTooltipInfo">
35
- {{ tooltip.icon("<b>Table Shortcode:</b> lets display the table in the site content.<br /><br /><b>Table Part Shortcode:</b> lets display just a part of table in the site content. You can display several rows or cols, for example, 'row=1,2,3', or set diapazone: 'row=1-3' or 'row=1-3,6'.<br /><br /><b>Value Shortcode:</b> lets display a value of single table cell in the site content.<br /><br /><b>Cell Shortcode:</b> lets display a table with single cell in the site content.<br /><br /><b>History Shortcode:</b> lets display an individual table data for each autorized user. Users can change the table data through editable fields on frontend. All user tables can be shown on Table History tab.<br /><br /><b>Table PHP code:</b> lets display the table through themes/plugins files (for example in the site footer). You can use any shortcode in this way.", 'top', true) }}
36
  </div>
37
  {% for index, option in shortcodeOptions %}
38
  <div class="col-md-8 col-sm-6 col-xs-10 stbCopyTextCodeShowBlock ShortCodeFirstBlock" data-for="{{ index }}" style="display: none;">
@@ -116,13 +116,21 @@
116
  </span>
117
  </li>
118
  <li>
119
- <a href="#row-tab-settings" class="current button">
 
 
 
 
 
 
 
 
120
  <i class="fa fa-fw fa-wrench"></i>
121
  {{ environment.translate('Settings') }}
122
  </a>
123
  </li>
124
  <li>
125
- <a href="#row-tab-editor" class="button">
126
  <i class="fa fa-fw fa-th"></i>
127
  {{ environment.translate('Editor') }}
128
  </a>
@@ -146,44 +154,21 @@
146
  </div>
147
 
148
  <div class="row row-tab" id="row-tab-settings">
149
- <!-- Tabs for Settings -->
150
- <nav class="tabs-settings">
151
- <ul class="subsubsub tabs-settings-wrapper">
152
- <li>
153
- <a href="#row-tab-settings-main" class="current button">
154
- <i class="fa fa-fw fa-tachometer"></i>
155
- {{ environment.translate('Main') }}
156
- </a>
157
- </li>
158
- <li>
159
- <a href="#row-tab-settings-features" class="button">
160
- <i class="fa fa-fw fa-cogs"></i>
161
- {{ environment.translate('Features') }}
162
- </a>
163
- </li>
164
- <li>
165
- <a href="#row-tab-settings-design" class="button">
166
- <i class="fa fa-fw fa-picture-o"></i>
167
- {{ environment.translate('Appearance') }}
168
- </a>
169
- </li>
170
- <li>
171
- <a href="#row-tab-settings-text" class="button">
172
- <i class="fa fa-fw fa-language"></i>
173
- {{ environment.translate('Language and Text') }}
174
- </a>
175
- </li>
176
- <li>
177
- <a href="#row-tab-settings-source" class="button">
178
- <i class="fa fa-fw fa-database"></i>
179
- {{ environment.translate('Source') }}
180
- </a>
181
- </li>
182
- </ul>
183
- </nav>
184
  <form id="settings">
185
  <section class="row-settings-tabs">
186
- <section class="row row-settings-tab" id="row-tab-settings-main">
 
 
 
187
  <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
188
  <div class="title-place">
189
  <h3>{{ environment.translate('Table Elements') }}</h3>
@@ -571,517 +556,523 @@
571
  </div>
572
  <!-- /.form-table -->
573
  </section>
574
- <section class="row row-settings-tab" id="row-tab-settings-features">
575
- <div class="col-md-6 col-sm-6 col-xs-12">
576
- <div class="title-place">
577
- <h3>{{ environment.translate('General') }}</h3>
578
- </div>
579
- <div class="setting-wrapper row">
580
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
581
- <label for="features-responsive-mode">
582
- {{ environment.translate('Responsive Mode') }}
583
- {{ tooltip.icon(
584
- environment.translate('Standard Responsive mode - in this mode if table content doesn\'t fit all columns become under each other with one cell per row') ~ '<br>' ~ '<br>' ~
585
- environment.translate('Automatic column hiding - in this mode table columns will collapse from right to left if content does not fit to parent container width') ~ '<br>' ~ '<br>' ~
586
- environment.translate('Horizontal scroll - in this mode scroll bar will be added if table overflows parent container width') ~ '<br>' ~
587
- environment.translate('Disable Responsivity - default table fluid layout') ~ '<br>'
588
- ) }}
589
- </label>
590
- </div>
591
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
592
- <select name="responsiveMode" id="features-responsive-mode">
593
- {% for value, name in {
594
- '0': environment.translate('Standard Responsive mode'),
595
- '1': environment.translate('Automatic column hiding'),
596
- '2': environment.translate('Horizontal scroll'),
597
- '3': environment.translate('Disable Responsivity'),
598
- } %}
599
- <option value="{{ value }}"
600
- {% if value == table.settings.responsiveMode|default(0) %}
601
- selected="selected"
602
- {% endif %}
603
- >
604
- {{ name }}
605
- </option>
606
- {% endfor %}
607
- </select>
608
- </div>
609
- </div>
610
- <div class="setting-wrapper row">
611
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
612
- <label for="features-info">
613
- {{ environment.translate('Table Information') }}
614
- {{ tooltip.icon(environment.translate('Table information display field. %s') | format('<img src="http://supsystic.com/_assets/tables/tooltip/info.jpg"/>') | raw, 'top', true) }}
615
- </label>
616
- </div>
617
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
618
- <input type="checkbox" name="features[info]" {{ checkbox.checked(table.settings.features.info) }} id="features-info"/>
619
- </div>
620
  </div>
621
- <div class="setting-wrapper row">
622
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
623
- <label for="features-ordering">
624
- {{ environment.translate('Sorting') }}
625
- {{ tooltip.icon('<p style="width:227px; padding:5px margin:0">To allow dynamic sorting with arrows you must enable Header option.</p><img src="http://supsystic.com/_assets/tables/tooltip/Ordrering.jpg"/>', 'top', true) }}
626
- </label>
627
- </div>
628
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
629
- <input type="checkbox" name="features[ordering]"
630
- {{ checkbox.checked(table.settings.features.ordering) }}
631
- id="features-ordering"
632
- data-target-toggle=".sorting-options"/>
633
- <!-- /#features-ordering -->
634
- </div>
635
- </div>
636
- <div class="setting-wrapper row sorting-options"
637
- {% if table.settings.features.ordering is not defined %}
638
- style="display:none"
639
- {% endif %}
640
- >
641
- <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
642
- <label for="features-sorting-order">
643
- {{ environment.translate('Sorting Order') }}
644
- {{ tooltip.icon(environment.translate('Set sort order by default')) }}
645
- </label>
646
- </div>
647
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
648
- <select name="sortingOrder" id="features-sorting-order">
649
- <option value="asc">{{ environment.translate('Ascending') }}</option>
650
- <option value="desc"
651
- {% if table.settings.sortingOrder == 'desc' %}
652
- selected="selected"
653
- {% endif %}
654
- >{{ environment.translate('Descending') }}</option>
655
- </select>
656
- </div>
657
- </div>
658
- <div class="setting-wrapper row sorting-options"
659
- {% if table.settings.features.ordering is not defined %}
660
- style="display:none"
661
- {% endif %}
662
- >
663
- <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
664
- <label for="sorting-order-column">
665
- {{ environment.translate('Sorting Column') }}
666
- {{ tooltip.icon(environment.translate('Number of column to apply sort order. Set no value to disable table sorting by default.')) }}
667
- </label>
668
  </div>
669
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
670
- <input name="sortingOrderColumn" id="sorting-order-column" type="text" value="{{ table.settings.sortingOrderColumn | default(1) }}">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
671
  </div>
672
- </div>
673
- <div class="setting-wrapper row">
674
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
675
- <label for="features-pagination">
676
- {{ environment.translate('Pagination') }}
677
- {{ tooltip.icon('<img src="http://supsystic.com/_assets/tables/tooltip/Pagination.jpg"/>', 'top', true) }}
678
- </label>
679
- </div>
680
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
681
- <input data-toggle="collapse" type="checkbox" name="features[paging]"
682
- {{ checkbox.checked(table.settings.features.paging) }}
683
- id="features-pagination"
684
- data-target-toggle=".pagination-options"/>
685
- <!-- /#features-pagination -->
686
  </div>
687
- </div>
688
- <div class="setting-wrapper row pagination-options"
689
- {% if table.settings.features.paging is not defined %}
690
- style="display:none"
691
- {% endif %}
692
- >
693
- <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
694
- <label for="pagination-length">
695
- {{ environment.translate('Pagination List Content') }}
696
- {{ tooltip.icon('Here you can set the number of rows to display on one Pagination page. Establish several numbers separated by comma to let users choose it personally. First number will be displayed by default. Since that the number of Pagination Pages will be recounted also.', 'top', true) }}
697
- </label>
698
- </div>
699
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
700
- <input type="text"
701
- name="paginationMenuLength"
702
- value="{{ table.settings.paginationMenuLength | default('50,100,All') }}"
703
- id="pagination-length" />
704
  </div>
705
- </div>
706
- <div class="setting-wrapper row pagination-options"
707
- {% if table.settings.features.paging is not defined %}
708
- style="display:none"
709
- {% endif %}
710
- >
711
- <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
712
- <label for="pagination-size">
713
- {{ environment.translate('Pagination Size') }}
714
- </label>
715
- </div>
716
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
717
- <select name="paginationSize" id="pagination-size" >
718
- {% for value, name in {
719
- 'pagination-large': environment.translate('Large'),
720
- 'pagination-medium': environment.translate('Medium'),
721
- 'pagination-small': environment.translate('Small'),
722
- } %}
723
- <option value="{{ value }}"
724
- {% if value == table.settings.paginationSize|default('large') %}
725
  selected="selected"
726
  {% endif %}
727
- >
728
- {{ name }}
729
- </option>
730
- {% endfor %}
731
- </select>
732
  </div>
733
- </div>
734
- <div class="setting-wrapper row pagination-options"
735
- {% if table.settings.features.paging is not defined %}
736
- style="display:none"
737
- {% endif %}
738
- >
739
- <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
740
- <label for="pagination-server-processing">
741
- {{ environment.translate('Server-side Processing') }}
742
- {{ tooltip.icon(environment.translate('This option is recommended for a large tables that cannot be processed in conventional way. The table will be sequentially loaded by ajax on a per page basis, all filtering, ordering and search clauses is server-side implemented too.')) }}
743
- </label>
 
 
 
744
  </div>
745
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
746
- <input type="checkbox" name="serverSideProcessing" id="server-side-processing"
747
- {{ checkbox.checked(table.settings.serverSideProcessing) }}
748
- >
 
 
 
 
 
 
 
 
 
 
749
  </div>
750
- </div>
751
- <div class="setting-wrapper row">
752
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
753
- <label for="features-searching">
754
- {{ environment.translate('Searching') }}
755
- {{ tooltip.icon('<img src="http://supsystic.com/_assets/tables/tooltip/Searching.jpg"/>', 'top', true) }}
756
- </label>
757
- </div>
758
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
759
- <input type="checkbox" name="features[searching]"
760
- {{ checkbox.checked(table.settings.features.searching) }}
761
- id="features-searching"
762
- data-target-toggle=".searching-options"/>
 
 
 
 
763
  </div>
764
- </div>
765
- <div class="setting-wrapper row searching-options"
766
- {% if table.settings.features.searching is not defined %}
767
- style="display:none"
768
- {% endif %}
769
- >
770
- <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
771
- <label for="features-search-by-column">
772
- {{ environment.translate('Search by Columns') }}
773
- {{ tooltip.icon(environment.translate('Add search by table columns. Use a semicolon as separator for select any of the values.')) }}
774
- </label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
775
  </div>
776
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
777
- <input type="checkbox" name="searching[columnSearch]" id="features-search-by-column"
778
- {{ checkbox.checked(table.settings.searching.columnSearch) }}
779
- >
 
 
 
 
 
 
 
 
 
 
 
 
780
  </div>
781
- </div>
782
- <div class="setting-wrapper row searching-options"
783
- {% if table.settings.features.searching is not defined
784
- or (table.settings.features.searching is defined and table.settings.searching.columnSearch is not defined)
785
- %}
786
- style="display:none"
787
- {% endif %}
788
- >
789
- <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
790
- <label for="features-search-by-column-position">
791
- {{ environment.translate('Location of Search Fields') }}
792
- {{ tooltip.icon(environment.translate('Here you can choose where the column search fields will be: at the top or bottom of the table.')) }}
793
- </label>
794
- </div>
795
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
796
- <select name="searching[columnSearchPosition]" id="features-search-by-column-position" >
797
- {% for value, name in {
798
- 'bottom': environment.translate('Bottom'),
799
- 'top': environment.translate('Top'),
800
- } %}
801
- <option value="{{ value }}"
802
- {% if value == table.settings.searching.columnSearchPosition|default('Bottom') %}
803
- selected="selected"
804
- {% endif %}
805
- >
806
- {{ name }}
807
- </option>
808
- {% endfor %}
809
- </select>
810
  </div>
811
- </div>
812
- <div class="setting-wrapper row searching-options"
813
- {% if table.settings.features.searching is not defined %}
814
- style="display:none"
815
- {% endif %}
816
- >
817
- <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
818
- <label for="features-search-by-hidden-fields">
819
- {{ environment.translate('Search by Hidden Fields') }}
820
- {{ tooltip.icon(environment.translate('Lets make search by fields, marked as hidden (see appropriate button on editor toolbar)')) }}
821
- </label>
 
 
 
 
 
822
  </div>
823
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
824
- <input type="checkbox" name="searching[searchByHiddenField]" id="features-search-by-hidden-fields"
825
- {{ checkbox.checked(table.settings.searching.searchByHiddenField) }}
826
- >
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
827
  </div>
828
- </div>
829
- <div class="setting-wrapper row searching-options"
830
- {% if table.settings.features.searching is not defined %}
831
- style="display:none"
832
- {% endif %}
833
- >
834
- <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
835
- <label for="features-searching-result-only">
836
- {{ environment.translate('Show Only Search Results') }}
837
- {{ tooltip.icon(environment.translate('Hide table by default and show only if search has a result.')) }}
838
- </label>
 
 
 
 
 
839
  </div>
840
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
841
- <input type="checkbox" name="searching[resultOnly]" id="features-searching-result-only"
842
- {{ checkbox.checked(table.settings.searching.resultOnly) }}
843
- >
 
 
 
 
 
 
 
 
 
 
 
 
844
  </div>
845
- </div>
846
- <div class="setting-wrapper row searching-options"
847
- {% if table.settings.features.searching is not defined
848
- or (table.settings.features.searching is defined and table.settings.searching.resultOnly is not defined)
849
- %}
850
- style="display:none"
851
- {% endif %}
852
- >
853
- <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
854
 
855
- <label for="features-searching-show-table">
856
- {{ environment.translate('Show Empty Table') }}
857
- {{ tooltip.icon(environment.translate('Table will not be hidden by default , but will be empty.')) }}
858
- </label>
859
- </div>
860
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
861
- <input type="checkbox" name="searching[showTable]" id="features-searching-show-table"
862
- {{ checkbox.checked(table.settings.searching.showTable) }}
863
- >
864
- </div>
865
- </div>
866
- <div class="setting-wrapper row searching-options"
867
- {% if table.settings.features.searching is not defined %}
868
- style="display:none"
869
- {% endif %}
870
- >
871
- <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
872
- <label for="features-searching-strict-matching">
873
- {{ environment.translate('Strict Matching') }}
874
- {{ tooltip.icon(environment.translate('Display only entries with matching characters in the beginning of words')) }}
875
- </label>
876
- </div>
877
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
878
- <input type="checkbox" name="searching[strictMatching]" id="features-searching-strict-matching"
879
- {{ checkbox.checked(table.settings.searching.strictMatching) }}
880
- >
881
- </div>
882
- </div>
883
- <div class="setting-wrapper row searching-options"
884
- {% if table.settings.features.searching is not defined %}
885
- style="display:none"
886
- {% endif %}
887
- >
888
- <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
889
- <label for="features-searching-strict-min-chars">
890
- {{ environment.translate('Minimum Count of Characters') }}
891
- {{ tooltip.icon(environment.translate('Set minimum count of characters to start search in Search field. Set 0 to make search in any case.')) }}
892
- </label>
893
- </div>
894
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
895
- <input type="text" name="searching[minChars]" id="features-searching-strict-min-chars"
896
- value="{{ table.settings.searching.minChars|default('0') }}" />
897
- </div>
898
- </div>
899
- <div class="setting-wrapper row">
900
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
901
- <label for="features-disallow-indexing">
902
- {{ environment.translate('Disallow Indexing') }}
903
- {{ tooltip.icon(environment.translate('Disable indexing table for search bots')) }}
904
- </label>
905
- </div>
906
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
907
- <input type="checkbox" name="disallowIndexing" id="features-disallow-indexing"
908
- {{ checkbox.checked(table.settings.disallowIndexing) }} />
909
- </div>
910
- </div>
911
- <div class="setting-wrapper row">
912
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
913
- <label for="enable-after-table-loaded-script">
914
- {{ environment.translate('Execute JS Script After Table Load') }}
915
- {{ tooltip.icon(environment.translate('Allows to execute custom javascript code after table is loaded.')) }}
916
- </label>
917
- </div>
918
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
919
- <input type="checkbox" name="features[enable_after_table_loaded_script]"
920
- id="enable-after-table-loaded-script"
921
- data-target-toggle=".after-table-loaded-script-options"
922
- {{ checkbox.checked(table.settings.features.enable_after_table_loaded_script) }} />
923
- </div>
924
- </div>
925
- <div class="setting-wrapper row after-table-loaded-script-options"
926
- {% if table.settings.features.enable_after_table_loaded_script is not defined %}
927
- style="display:none"
928
- {% endif %}
929
- >
930
- <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
931
- <label for="after-table-loaded-script-text">
932
- {{ environment.translate('JS Script Text') }}
933
- </label>
934
- </div>
935
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
936
- <textarea id="after-table-loaded-script-text" placeholder="{{ environment.translate('Paste script code here')}}" style="margin-top: 10px;">{{ table.settings.features.after_table_loaded_script | default('') }}</textarea>
937
- <input type="hidden" name="features[after_table_loaded_script]" value="{{ table.settings.features.after_table_loaded_script | default('') }}" />
938
  </div>
939
- </div>
940
- </div>
941
- <div class="col-md-6 col-sm-6 col-xs-12">
942
- <div class="title-place">
943
- <h3>{{ environment.translate('Frontend Fields') }}</h3>
944
- </div>
945
- {% if environment.isPro() == false %}
946
- <div class="setting-wrapper row">
 
 
 
947
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
948
- <label for="save-editable-fields-unavailable">
949
- {{ environment.translate('Save Frontend Fields') }}
950
- {{ tooltip.icon(environment.translate('Save table data entered through frontend fields. Refer to the first two buttons on the second row of the editor toolbar:<br />Add editable field<br />Add dropdown list')) }}
951
- <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'editable_fields_feature' }) }}">{{ environment.translate('PRO option') }}</a>
 
 
 
 
 
 
 
 
 
 
952
  </label>
953
  </div>
954
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
955
- <input type="checkbox" disabled="disabled" id="save-editable-fields-unavailable"/>
 
956
  </div>
957
  </div>
958
  <div class="setting-wrapper row">
959
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
960
- <label for="mark-last-edited-cell-unavailable">
961
- {{ environment.translate('Mark Last Edited Cell') }}
962
- {{ tooltip.icon(environment.translate('Adds a symbol to last edited cell.')) }}
963
- <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'mark_last_edited_cell' }) }}">{{ environment.translate('PRO option') }}</a>
964
  </label>
965
  </div>
966
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
967
- <input type="checkbox" disabled="disabled" id="mark-last-edited-cell-unavailable"/>
 
968
  </div>
969
  </div>
970
  <div class="setting-wrapper row">
971
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
972
- <label for="editable-fields-logged-in-unavailable">
973
- {{ environment.translate('Use for Logged In Users Only') }}
974
- {{ tooltip.icon(environment.translate('Allows to <a href="%s" target="_blank">use frontend fields only for logged in users</a>. See the next buttons on the editor toolbar:<br />Add editable field<br />Add dropdown list') | format('//supsystic.com/documentation/editable-fields-logged-users/')) }}
975
- <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'editable_fields_for_logged_in_only' }) }}">{{ environment.translate('PRO option') }}</a>
976
  </label>
977
  </div>
978
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
979
- <input type="checkbox" disabled="disabled" id="editable-fields-logged-in-unavailable"/>
 
 
 
980
  </div>
981
  </div>
982
- <div class="setting-wrapper row editable-fields-logged-in-options">
983
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
984
- <label for="editable-fields-roles-unavailable">
985
- {{ environment.translate('Use for Current Roles Only') }}
986
- {{ tooltip.icon(environment.translate('Allows to use frontend fields only for users with selected roles. If there are no chosen roles - all logged in users will have ability to use the frontend fields.')) }}
987
- <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'editable_fields_for_current_roles' }) }}">{{ environment.translate('PRO option') }}</a>
 
 
988
  </label>
989
  </div>
990
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
991
- <select name="useEditableFieldsForCurRoles[]" disabled="disabled" id="editable-fields-roles-unavailable" data-placeholder="{{ environment.translate('Select roles')}}">
992
- <option>{{ environment.translate('Select roles')}}</option>
993
- </select>
994
  </div>
995
  </div>
996
- {% endif %}
 
 
 
 
997
  {% if environment.isPro() == false %}
998
- <div class="title-place">
999
- <h3>{{ environment.translate('Export / Import') }}</h3>
1000
- </div>
1001
  <div class="setting-wrapper row">
1002
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1003
- <label for="features-export-unavailable">
1004
- {{ environment.translate('Frontend Export') }}
1005
- {{ tooltip.icon(environment.translate('Allows to export table in pdf, csv, xls formats from the front-end. Choose needed formats')) }}
1006
- <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'export_feature' }) }}">{{ environment.translate('PRO option') }}</a>
1007
  </label>
1008
  </div>
1009
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1010
- <select name="features[export][]" disabled="disabled" id="features-export-unavailable" data-placeholder="{{ environment.translate('Select Some Options')}}">
1011
- <option>{{ environment.translate('Select Some Options')}}</option>
1012
- </select>
1013
  </div>
1014
  </div>
1015
  <div class="setting-wrapper row">
1016
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1017
- <label for="features-export-pdf-paper-size-unavailable">
1018
- {{ environment.translate('PDF Paper Size') }}
1019
- {{ tooltip.icon(environment.translate('Choose the paper size for PDF pages')) }}
 
1020
  </label>
1021
- <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'export_feature_pdf_paper_size' }) }}">{{ environment.translate('PRO option') }}</a>
1022
  </div>
1023
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1024
- <select name="pdfPaperSize" disabled="disabled" id="features-export-pdf-paper-size-unavailable" data-placeholder="{{ environment.translate('Automatic')}}">
1025
- <option>{{ environment.translate('Automatic')}}</option>
1026
- </select>
1027
  </div>
1028
  </div>
1029
  <div class="setting-wrapper row">
1030
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1031
- <label for="features-export-pdf-orientation-unavailable">
1032
- {{ environment.translate('PDF Page Orientation') }}
1033
- {{ tooltip.icon(environment.translate('Choose the orientation for PDF pages')) }}
 
1034
  </label>
1035
- <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'export_feature_pdf_orientation' }) }}">{{ environment.translate('PRO option') }}</a>
1036
  </div>
1037
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1038
- <select name="pdfOrientation" disabled="disabled" id="features-export-pdf-orientation-unavailable" data-placeholder="{{ environment.translate('Portrait')}}">
1039
- <option>{{ environment.translate('Portrait')}}</option>
1040
- </select>
1041
  </div>
1042
  </div>
1043
- <div class="setting-wrapper row">
1044
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1045
- <label for="features-export-pdf-export-fonts-unavailable">
1046
- {{ environment.translate('Export Fonts to PDF') }}
1047
- {{ tooltip.icon(environment.translate('Allows export to PDF file the fonts, which were set for table content via editor toolbar. Important! Custom fonts might not contain some specific characters (greek, cyrillic etc.), so after importing of fonts your PDF file might lost part of content.')) }}
 
1048
  </label>
1049
- <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'export_feature_pdf_export_fonts' }) }}">{{ environment.translate('PRO option') }}</a>
1050
  </div>
1051
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1052
- <input type="checkbox" name="pdfExportFonts" disabled="disabled" id="features-export-pdf-export-fonts-unavailable" />
 
 
1053
  </div>
1054
  </div>
1055
- <div class="setting-wrapper row">
1056
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1057
- <label for="features-export-select-logo-unavailable">
1058
- {{ environment.translate('Export Logo') }}
1059
- {{ tooltip.icon(environment.translate('Automticaly appends selected logo for output pdf or printing')) }}
1060
- </label>
1061
- <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'export_feature_select_logo' }) }}">{{ environment.translate('PRO option') }}</a>
1062
  </div>
1063
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1064
- <button class="button" disabled="disabled" id="features-export-select-logo-unavailable">{{ environment.translate('Select Logo') }}</button>
 
 
 
 
 
 
 
 
 
 
 
1065
  </div>
1066
- </div>
1067
- <div class="setting-wrapper row">
1068
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1069
- <label for="google-tables-automatically-update-unavailable">
1070
- {{ environment.translate('Autoimport from Google Sheet') }}
1071
- {{ tooltip.icon(environment.translate('If checked - table data on frontend will be overloaded from selected Google Sheet. <a href="%s" tagget="_blank">Read more</a> about how organize Auto Import form Google Sheets') | format('//supsystic.com/documentation/synchronization-table-google-sheet/')) }}
1072
- </label>
1073
- <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'google_tables_automatically_update' }) }}">{{ environment.translate('PRO option') }}</a>
 
 
 
 
 
1074
  </div>
1075
- <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1076
- <input type="checkbox" disabled="disabled" name="features[google_tables_automatically_update]" id="google-tables-automatically-update-unavailable" />
 
 
 
 
 
 
 
 
 
 
 
1077
  </div>
1078
- </div>
1079
- {% endif %}
1080
- {{ environment.getDispatcher().dispatch('tables-view-features', [table]) }}
1081
- <!-- /.form-table -->
1082
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1083
  </section>
1084
- <section class="row row-settings-tab" id="row-tab-settings-design">
 
 
 
1085
  <div class="col-md-6 col-sm-6 col-xs-12">
1086
  <div class="title-place">&nbsp;</div>
1087
  <div class="setting-wrapper row">
@@ -1230,7 +1221,7 @@
1230
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1231
  <label for="lightboxImg">
1232
  {{ environment.translate('Lightbox') }}
1233
- {{ tooltip.icon(environment.translate('Add Lightbox fo images')) }}
1234
  {% if environment.isPro() == false %}
1235
  <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'editable_fields_feature' }) }}">{{ environment.translate('PRO option') }}</a>
1236
  {% endif %}
@@ -1398,7 +1389,10 @@
1398
  </div>
1399
  <!-- /.col-md-4 col-sm-6 col-xs-12 -->
1400
  </section>
1401
- <section class="row row-settings-tab" id="row-tab-settings-text">
 
 
 
1402
  <div class="col-md-6 col-sm-6 col-xs-12">
1403
  <div class="title-place">
1404
  <h3>{{ environment.translate('Overwrite Table Text') }}</h3>
@@ -1484,7 +1478,10 @@
1484
  </div>
1485
  </div>
1486
  </section>
1487
- <section class="row row-settings-tab" id="row-tab-settings-source">
 
 
 
1488
  {% if environment.isPro() == false %}
1489
  <div class="col-md-6 col-sm-6 col-xs-12">
1490
  <div class="title-place">
@@ -1493,15 +1490,19 @@
1493
  <div class="setting-wrapper row">
1494
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1495
  <label for="table-source-database-unavailable">
 
1496
  {{ environment.translate('Data from Database') }}
1497
- {{ tooltip.icon('You can retrieve data for table from the database.', 'top', true) }}
1498
  </label>
1499
- <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'table-source-database' }) }}">{{ environment.translate('PRO option') }}</a>
1500
  </div>
1501
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1502
  <input type="checkbox" disabled="disabled" name="source[database]" id="table-source-database-unavailable" />
1503
  </div>
1504
- </div>
 
 
 
1505
  </div>
1506
  {% endif %}
1507
  {{ environment.getDispatcher().dispatch('tables-view-source', [table]) }}
@@ -1509,6 +1510,7 @@
1509
  </section>
1510
  </form>
1511
  </div>
 
1512
 
1513
  <div class="row row-tab" id="row-tab-editor">
1514
  <div id="loadingProgress">
@@ -1531,7 +1533,7 @@
1531
  </li>
1532
  <li>
1533
  <button {{ tooltip.attr(environment.translate('Add row above')) }} data-toolbar="#toolbar-rows">
1534
- <i class="fa fa-fw fa-th-list"></i><span> Add Row</span>
1535
  </button>
1536
  <div id="toolbar-rows" class="toolbar-content">
1537
  <a href="#" data-method="row">
@@ -1544,7 +1546,7 @@
1544
  </li>
1545
  <li>
1546
  <button {{ tooltip.attr(environment.translate('Add column on the left')) }} data-toolbar="#toolbar-cols">
1547
- <i class="fa fa-fw fa-th-large"></i><span> Add Column</span>
1548
  </button>
1549
  <div id="toolbar-cols" class="toolbar-content">
1550
  <a href="#" data-method="column">
@@ -1703,6 +1705,12 @@
1703
  </a>
1704
  </div>
1705
  </li>
 
 
 
 
 
 
1706
  </ul>
1707
  {{ environment.getDispatcher().dispatch('toolbar_rendered', [table]) }}
1708
  <br />
32
  </select>
33
  </div>
34
  <div class="col-md-1 col-sm-1 col-xs-2 stbTooltipInfo">
35
+ {{ tooltip.icon("<b>Table Shortcode:</b> lets display the table in the site content.<br /><br /><b>Table Part Shortcode:</b> lets display just a part of table in the site content. You can display several rows or cols, for example, 'row=1,2,3', or set diapazone: 'row=1-3' or 'row=1-3,6'.<br /><br /><b>Value Shortcode:</b> lets display a value of single table cell in the site content.<br /><br /><b>Cell Shortcode:</b> lets display a table with single cell in the site content.<br /><br /><b>History Shortcode:</b> lets display an individual table data for each autorized user. Users can change the table data through editable fields on frontend. All user tables can be shown on Table History tab.<br /><br /><b>SQL Shortcode:</b> lets build a table using SQL-query with variables. SQL-query you can set on Settings->Source Tab.<br /><br /><b>Table PHP code:</b> lets display the table through themes/plugins files (for example in the site footer). You can use any shortcode in this way.", 'top', true) }}
36
  </div>
37
  {% for index, option in shortcodeOptions %}
38
  <div class="col-md-8 col-sm-6 col-xs-10 stbCopyTextCodeShowBlock ShortCodeFirstBlock" data-for="{{ index }}" style="display: none;">
116
  </span>
117
  </li>
118
  <li>
119
+ {% set settingClass = '' %}
120
+ {% set editorClass = '' %}
121
+ {% if attributes is defined and attributes.new == '1' %}
122
+ {% set editorClass = 'current ' %}
123
+ {% else %}
124
+ {% set settingClass = 'current ' %}
125
+ {% endif %}
126
+
127
+ <a href="#row-tab-settings" class="{{ settingClass }}button">
128
  <i class="fa fa-fw fa-wrench"></i>
129
  {{ environment.translate('Settings') }}
130
  </a>
131
  </li>
132
  <li>
133
+ <a href="#row-tab-editor" class="{{ editorClass }}button">
134
  <i class="fa fa-fw fa-th"></i>
135
  {{ environment.translate('Editor') }}
136
  </a>
154
  </div>
155
 
156
  <div class="row row-tab" id="row-tab-settings">
157
+
158
+ <div class="stb-wraper-anchor-nav-links">
159
+ <a href="#stb-anl-main" class="stb-anchor-nav-links">{{ translate('Main')}}</a>
160
+ <a href="#stb-anl-features" class="stb-anchor-nav-links">{{ translate('Features')}}</a>
161
+ <a href="#stb-anl-appearance" class="stb-anchor-nav-links">{{ translate('Appearance')}}</a>
162
+ <a href="#stb-anl-language" class="stb-anchor-nav-links">{{ translate('Language and Text')}}</a>
163
+ <a href="#stb-anl-source" class="stb-anchor-nav-links">{{ translate('Source')}}</a>
164
+ </div>
165
+ <div class="settings-wrap">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
166
  <form id="settings">
167
  <section class="row-settings-tabs">
168
+ <section class="row row-settings-tab" id="stb-anl-main">
169
+ <div class="title-block col-xs-12">
170
+ <h3>{{ environment.translate('Main Settings') }}</h3>
171
+ </div>
172
  <div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
173
  <div class="title-place">
174
  <h3>{{ environment.translate('Table Elements') }}</h3>
556
  </div>
557
  <!-- /.form-table -->
558
  </section>
559
+ <section class="row row-settings-tab" id="stb-anl-features">
560
+ <div class="title-block col-xs-12">
561
+ <h3>{{ environment.translate('Features') }}</h3>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
562
  </div>
563
+ <div class="col-md-6 col-sm-6 col-xs-12">
564
+ <div class="title-place">
565
+ <h3>{{ environment.translate('General') }}</h3>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
566
  </div>
567
+ <div class="setting-wrapper row">
568
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
569
+ <label for="features-responsive-mode">
570
+ {{ environment.translate('Responsive Mode') }}
571
+ {{ tooltip.icon(
572
+ environment.translate('Standard Responsive mode - in this mode if table content doesn\'t fit all columns become under each other with one cell per row') ~ '<br>' ~ '<br>' ~
573
+ environment.translate('Automatic column hiding - in this mode table columns will collapse from right to left if content does not fit to parent container width') ~ '<br>' ~ '<br>' ~
574
+ environment.translate('Horizontal scroll - in this mode scroll bar will be added if table overflows parent container width') ~ '<br>' ~
575
+ environment.translate('Disable Responsivity - default table fluid layout') ~ '<br>'
576
+ ) }}
577
+ </label>
578
+ </div>
579
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
580
+ <select name="responsiveMode" id="features-responsive-mode">
581
+ {% for value, name in {
582
+ '0': environment.translate('Standard Responsive mode'),
583
+ '1': environment.translate('Automatic column hiding'),
584
+ '2': environment.translate('Horizontal scroll'),
585
+ '3': environment.translate('Disable Responsivity'),
586
+ } %}
587
+ <option value="{{ value }}"
588
+ {% if value == table.settings.responsiveMode|default(0) %}
589
+ selected="selected"
590
+ {% endif %}
591
+ >
592
+ {{ name }}
593
+ </option>
594
+ {% endfor %}
595
+ </select>
596
+ </div>
597
  </div>
598
+ <div class="setting-wrapper row">
599
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
600
+ <label for="features-info">
601
+ {{ environment.translate('Table Information') }}
602
+ {{ tooltip.icon(environment.translate('Table information display field. %s') | format('<img src="http://supsystic.com/_assets/tables/tooltip/info.jpg"/>') | raw, 'top', true) }}
603
+ </label>
604
+ </div>
605
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
606
+ <input type="checkbox" name="features[info]" {{ checkbox.checked(table.settings.features.info) }} id="features-info"/>
607
+ </div>
 
 
 
 
608
  </div>
609
+ <div class="setting-wrapper row">
610
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
611
+ <label for="features-ordering">
612
+ {{ environment.translate('Sorting') }}
613
+ {{ tooltip.icon('<p style="width:227px; padding:5px margin:0">To allow dynamic sorting with arrows you must enable Header option.</p><img src="http://supsystic.com/_assets/tables/tooltip/Ordrering.jpg"/>', 'top', true) }}
614
+ </label>
615
+ </div>
616
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
617
+ <input type="checkbox" name="features[ordering]"
618
+ {{ checkbox.checked(table.settings.features.ordering) }}
619
+ id="features-ordering"
620
+ data-target-toggle=".sorting-options"/>
621
+ <!-- /#features-ordering -->
622
+ </div>
 
 
 
623
  </div>
624
+ <div class="setting-wrapper row sorting-options"
625
+ {% if table.settings.features.ordering is not defined %}
626
+ style="display:none"
627
+ {% endif %}
628
+ >
629
+ <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
630
+ <label for="features-sorting-order">
631
+ {{ environment.translate('Sorting Order') }}
632
+ {{ tooltip.icon(environment.translate('Set sort order by default')) }}
633
+ </label>
634
+ </div>
635
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
636
+ <select name="sortingOrder" id="features-sorting-order">
637
+ <option value="asc">{{ environment.translate('Ascending') }}</option>
638
+ <option value="desc"
639
+ {% if table.settings.sortingOrder == 'desc' %}
 
 
 
 
640
  selected="selected"
641
  {% endif %}
642
+ >{{ environment.translate('Descending') }}</option>
643
+ </select>
644
+ </div>
 
 
645
  </div>
646
+ <div class="setting-wrapper row sorting-options"
647
+ {% if table.settings.features.ordering is not defined %}
648
+ style="display:none"
649
+ {% endif %}
650
+ >
651
+ <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
652
+ <label for="sorting-order-column">
653
+ {{ environment.translate('Sorting Column') }}
654
+ {{ tooltip.icon(environment.translate('Number of column to apply sort order. Set no value to disable table sorting by default.')) }}
655
+ </label>
656
+ </div>
657
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
658
+ <input name="sortingOrderColumn" id="sorting-order-column" type="text" value="{{ table.settings.sortingOrderColumn | default(1) }}">
659
+ </div>
660
  </div>
661
+ <div class="setting-wrapper row">
662
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
663
+ <label for="features-pagination">
664
+ {{ environment.translate('Pagination') }}
665
+ {{ tooltip.icon('<img src="http://supsystic.com/_assets/tables/tooltip/Pagination.jpg"/>', 'top', true) }}
666
+ </label>
667
+ </div>
668
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
669
+ <input data-toggle="collapse" type="checkbox" name="features[paging]"
670
+ {{ checkbox.checked(table.settings.features.paging) }}
671
+ id="features-pagination"
672
+ data-target-toggle=".pagination-options"/>
673
+ <!-- /#features-pagination -->
674
+ </div>
675
  </div>
676
+ <div class="setting-wrapper row pagination-options"
677
+ {% if table.settings.features.paging is not defined %}
678
+ style="display:none"
679
+ {% endif %}
680
+ >
681
+ <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
682
+ <label for="pagination-length">
683
+ {{ environment.translate('Pagination List Content') }}
684
+ {{ tooltip.icon('Here you can set the number of rows to display on one Pagination page. Establish several numbers separated by comma to let users choose it personally. First number will be displayed by default. Since that the number of Pagination Pages will be recounted also.', 'top', true) }}
685
+ </label>
686
+ </div>
687
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
688
+ <input type="text"
689
+ name="paginationMenuLength"
690
+ value="{{ table.settings.paginationMenuLength | default('50,100,All') }}"
691
+ id="pagination-length" />
692
+ </div>
693
  </div>
694
+ <div class="setting-wrapper row pagination-options"
695
+ {% if table.settings.features.paging is not defined %}
696
+ style="display:none"
697
+ {% endif %}
698
+ >
699
+ <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
700
+ <label for="pagination-size">
701
+ {{ environment.translate('Pagination Size') }}
702
+ </label>
703
+ </div>
704
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
705
+ <select name="paginationSize" id="pagination-size" >
706
+ {% for value, name in {
707
+ 'pagination-large': environment.translate('Large'),
708
+ 'pagination-medium': environment.translate('Medium'),
709
+ 'pagination-small': environment.translate('Small'),
710
+ } %}
711
+ <option value="{{ value }}"
712
+ {% if value == table.settings.paginationSize|default('large') %}
713
+ selected="selected"
714
+ {% endif %}
715
+ >
716
+ {{ name }}
717
+ </option>
718
+ {% endfor %}
719
+ </select>
720
+ </div>
721
  </div>
722
+ <div class="setting-wrapper row pagination-options"
723
+ {% if table.settings.features.paging is not defined %}
724
+ style="display:none"
725
+ {% endif %}
726
+ >
727
+ <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
728
+ <label for="pagination-server-processing">
729
+ {{ environment.translate('Server-side Processing') }}
730
+ {{ tooltip.icon(environment.translate('This option is recommended for a large tables that cannot be processed in conventional way. The table will be sequentially loaded by ajax on a per page basis, all filtering, ordering and search clauses is server-side implemented too.')) }}
731
+ </label>
732
+ </div>
733
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
734
+ <input type="checkbox" name="serverSideProcessing" id="server-side-processing"
735
+ {{ checkbox.checked(table.settings.serverSideProcessing) }}
736
+ >
737
+ </div>
738
  </div>
739
+ <div class="setting-wrapper row">
740
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
741
+ <label for="features-searching">
742
+ {{ environment.translate('Searching') }}
743
+ {{ tooltip.icon('<img src="http://supsystic.com/_assets/tables/tooltip/Searching.jpg"/>', 'top', true) }}
744
+ </label>
745
+ </div>
746
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
747
+ <input type="checkbox" name="features[searching]"
748
+ {{ checkbox.checked(table.settings.features.searching) }}
749
+ id="features-searching"
750
+ data-target-toggle=".searching-options"/>
751
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
752
  </div>
753
+ <div class="setting-wrapper row searching-options"
754
+ {% if table.settings.features.searching is not defined %}
755
+ style="display:none"
756
+ {% endif %}
757
+ >
758
+ <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
759
+ <label for="features-search-by-column">
760
+ {{ environment.translate('Search by Columns') }}
761
+ {{ tooltip.icon(environment.translate('Add search by table columns. Use a semicolon as separator for select any of the values.')) }}
762
+ </label>
763
+ </div>
764
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
765
+ <input type="checkbox" name="searching[columnSearch]" id="features-search-by-column"
766
+ {{ checkbox.checked(table.settings.searching.columnSearch) }}
767
+ >
768
+ </div>
769
  </div>
770
+ <div class="setting-wrapper row searching-options"
771
+ {% if table.settings.features.searching is not defined
772
+ or (table.settings.features.searching is defined and table.settings.searching.columnSearch is not defined)
773
+ %}
774
+ style="display:none"
775
+ {% endif %}
776
+ >
777
+ <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
778
+ <label for="features-search-by-column-position">
779
+ {{ environment.translate('Location of Search Fields') }}
780
+ {{ tooltip.icon(environment.translate('Here you can choose where the column search fields will be: at the top or bottom of the table.')) }}
781
+ </label>
782
+ </div>
783
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
784
+ <select name="searching[columnSearchPosition]" id="features-search-by-column-position" >
785
+ {% for value, name in {
786
+ 'bottom': environment.translate('Bottom'),
787
+ 'top': environment.translate('Top'),
788
+ } %}
789
+ <option value="{{ value }}"
790
+ {% if value == table.settings.searching.columnSearchPosition|default('Bottom') %}
791
+ selected="selected"
792
+ {% endif %}
793
+ >
794
+ {{ name }}
795
+ </option>
796
+ {% endfor %}
797
+ </select>
798
+ </div>
799
  </div>
800
+ <div class="setting-wrapper row searching-options"
801
+ {% if table.settings.features.searching is not defined %}
802
+ style="display:none"
803
+ {% endif %}
804
+ >
805
+ <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
806
+ <label for="features-search-by-hidden-fields">
807
+ {{ environment.translate('Search by Hidden Fields') }}
808
+ {{ tooltip.icon(environment.translate('Lets make search by fields, marked as hidden (see appropriate button on editor toolbar)')) }}
809
+ </label>
810
+ </div>
811
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
812
+ <input type="checkbox" name="searching[searchByHiddenField]" id="features-search-by-hidden-fields"
813
+ {{ checkbox.checked(table.settings.searching.searchByHiddenField) }}
814
+ >
815
+ </div>
816
  </div>
817
+ <div class="setting-wrapper row searching-options"
818
+ {% if table.settings.features.searching is not defined %}
819
+ style="display:none"
820
+ {% endif %}
821
+ >
822
+ <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
823
+ <label for="features-searching-result-only">
824
+ {{ environment.translate('Show Only Search Results') }}
825
+ {{ tooltip.icon(environment.translate('Hide table by default and show only if search has a result.')) }}
826
+ </label>
827
+ </div>
828
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
829
+ <input type="checkbox" name="searching[resultOnly]" id="features-searching-result-only"
830
+ {{ checkbox.checked(table.settings.searching.resultOnly) }}
831
+ >
832
+ </div>
833
  </div>
834
+ <div class="setting-wrapper row searching-options"
835
+ {% if table.settings.features.searching is not defined
836
+ or (table.settings.features.searching is defined and table.settings.searching.resultOnly is not defined)
837
+ %}
838
+ style="display:none"
839
+ {% endif %}
840
+ >
841
+ <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
 
842
 
843
+ <label for="features-searching-show-table">
844
+ {{ environment.translate('Show Empty Table') }}
845
+ {{ tooltip.icon(environment.translate('Table will not be hidden by default , but will be empty.')) }}
846
+ </label>
847
+ </div>
848
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
849
+ <input type="checkbox" name="searching[showTable]" id="features-searching-show-table"
850
+ {{ checkbox.checked(table.settings.searching.showTable) }}
851
+ >
852
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
853
  </div>
854
+ <div class="setting-wrapper row searching-options"
855
+ {% if table.settings.features.searching is not defined %}
856
+ style="display:none"
857
+ {% endif %}
858
+ >
859
+ <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
860
+ <label for="features-searching-strict-matching">
861
+ {{ environment.translate('Strict Matching') }}
862
+ {{ tooltip.icon(environment.translate('Display only entries with matching characters in the beginning of words')) }}
863
+ </label>
864
+ </div>
865
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
866
+ <input type="checkbox" name="searching[strictMatching]" id="features-searching-strict-matching"
867
+ {{ checkbox.checked(table.settings.searching.strictMatching) }}
868
+ >
869
+ </div>
870
+ </div>
871
+ <div class="setting-wrapper row searching-options"
872
+ {% if table.settings.features.searching is not defined %}
873
+ style="display:none"
874
+ {% endif %}
875
+ >
876
+ <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
877
+ <label for="features-searching-strict-min-chars">
878
+ {{ environment.translate('Minimum Count of Characters') }}
879
+ {{ tooltip.icon(environment.translate('Set minimum count of characters to start search in Search field. Set 0 to make search in any case.')) }}
880
  </label>
881
  </div>
882
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
883
+ <input type="text" name="searching[minChars]" id="features-searching-strict-min-chars"
884
+ value="{{ table.settings.searching.minChars|default('0') }}" />
885
  </div>
886
  </div>
887
  <div class="setting-wrapper row">
888
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
889
+ <label for="features-disallow-indexing">
890
+ {{ environment.translate('Disallow Indexing') }}
891
+ {{ tooltip.icon(environment.translate('Disable indexing table for search bots')) }}
 
892
  </label>
893
  </div>
894
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
895
+ <input type="checkbox" name="disallowIndexing" id="features-disallow-indexing"
896
+ {{ checkbox.checked(table.settings.disallowIndexing) }} />
897
  </div>
898
  </div>
899
  <div class="setting-wrapper row">
900
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
901
+ <label for="enable-after-table-loaded-script">
902
+ {{ environment.translate('Execute JS Script After Table Load') }}
903
+ {{ tooltip.icon(environment.translate('Allows to execute custom javascript code after table is loaded.')) }}
 
904
  </label>
905
  </div>
906
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
907
+ <input type="checkbox" name="features[enable_after_table_loaded_script]"
908
+ id="enable-after-table-loaded-script"
909
+ data-target-toggle=".after-table-loaded-script-options"
910
+ {{ checkbox.checked(table.settings.features.enable_after_table_loaded_script) }} />
911
  </div>
912
  </div>
913
+ <div class="setting-wrapper row after-table-loaded-script-options"
914
+ {% if table.settings.features.enable_after_table_loaded_script is not defined %}
915
+ style="display:none"
916
+ {% endif %}
917
+ >
918
+ <div class="setting-item setting-options col-md-6 col-sm-6 col-xs-12">
919
+ <label for="after-table-loaded-script-text">
920
+ {{ environment.translate('JS Script Text') }}
921
  </label>
922
  </div>
923
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
924
+ <textarea id="after-table-loaded-script-text" placeholder="{{ environment.translate('Paste script code here')}}" style="margin-top: 10px;">{{ table.settings.features.after_table_loaded_script | default('') }}</textarea>
925
+ <input type="hidden" name="features[after_table_loaded_script]" value="{{ table.settings.features.after_table_loaded_script | default('') }}" />
 
926
  </div>
927
  </div>
928
+ </div>
929
+ <div class="col-md-6 col-sm-6 col-xs-12">
930
+ <div class="title-place">
931
+ <h3>{{ environment.translate('Frontend Fields') }}</h3>
932
+ </div>
933
  {% if environment.isPro() == false %}
 
 
 
934
  <div class="setting-wrapper row">
935
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
936
+ <label for="save-editable-fields-unavailable">
937
+ {{ environment.translate('Save Frontend Fields') }}
938
+ {{ tooltip.icon(environment.translate('Save table data entered through frontend fields. Refer to the first two buttons on the second row of the editor toolbar:<br />Add editable field<br />Add dropdown list')) }}
939
+ <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'editable_fields_feature' }) }}">{{ environment.translate('PRO option') }}</a>
940
  </label>
941
  </div>
942
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
943
+ <input type="checkbox" disabled="disabled" id="save-editable-fields-unavailable"/>
 
 
944
  </div>
945
  </div>
946
  <div class="setting-wrapper row">
947
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
948
+ <label for="mark-last-edited-cell-unavailable">
949
+ {{ environment.translate('Mark Last Edited Cell') }}
950
+ {{ tooltip.icon(environment.translate('Adds a symbol to last edited cell.')) }}
951
+ <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'mark_last_edited_cell' }) }}">{{ environment.translate('PRO option') }}</a>
952
  </label>
 
953
  </div>
954
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
955
+ <input type="checkbox" disabled="disabled" id="mark-last-edited-cell-unavailable"/>
 
 
956
  </div>
957
  </div>
958
  <div class="setting-wrapper row">
959
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
960
+ <label for="editable-fields-logged-in-unavailable">
961
+ {{ environment.translate('Use for Logged In Users Only') }}
962
+ {{ tooltip.icon(environment.translate('Allows to <a href="%s" target="_blank">use frontend fields only for logged in users</a>. See the next buttons on the editor toolbar:<br />Add editable field<br />Add dropdown list') | format('//supsystic.com/documentation/editable-fields-logged-users/')) }}
963
+ <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'editable_fields_for_logged_in_only' }) }}">{{ environment.translate('PRO option') }}</a>
964
  </label>
 
965
  </div>
966
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
967
+ <input type="checkbox" disabled="disabled" id="editable-fields-logged-in-unavailable"/>
 
 
968
  </div>
969
  </div>
970
+ <div class="setting-wrapper row editable-fields-logged-in-options">
971
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
972
+ <label for="editable-fields-roles-unavailable">
973
+ {{ environment.translate('Use for Current Roles Only') }}
974
+ {{ tooltip.icon(environment.translate('Allows to use frontend fields only for users with selected roles. If there are no chosen roles - all logged in users will have ability to use the frontend fields.')) }}
975
+ <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'editable_fields_for_current_roles' }) }}">{{ environment.translate('PRO option') }}</a>
976
  </label>
 
977
  </div>
978
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
979
+ <select name="useEditableFieldsForCurRoles[]" disabled="disabled" id="editable-fields-roles-unavailable" data-placeholder="{{ environment.translate('Select roles')}}">
980
+ <option>{{ environment.translate('Select roles')}}</option>
981
+ </select>
982
  </div>
983
  </div>
984
+ {% endif %}
985
+ {% if environment.isPro() == false %}
986
+ <div class="title-place">
987
+ <h3>{{ environment.translate('Export / Import') }}</h3>
 
 
 
988
  </div>
989
+ <div class="setting-wrapper row">
990
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
991
+ <label for="features-export-unavailable">
992
+ {{ environment.translate('Frontend Export') }}
993
+ {{ tooltip.icon(environment.translate('Allows to export table in pdf, csv, xls formats from the front-end. Choose needed formats')) }}
994
+ <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'export_feature' }) }}">{{ environment.translate('PRO option') }}</a>
995
+ </label>
996
+ </div>
997
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
998
+ <select name="features[export][]" disabled="disabled" id="features-export-unavailable" data-placeholder="{{ environment.translate('Select Some Options')}}">
999
+ <option>{{ environment.translate('Select Some Options')}}</option>
1000
+ </select>
1001
+ </div>
1002
  </div>
1003
+ <div class="setting-wrapper row">
1004
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1005
+ <label for="features-export-pdf-paper-size-unavailable">
1006
+ {{ environment.translate('PDF Paper Size') }}
1007
+ {{ tooltip.icon(environment.translate('Choose the paper size for PDF pages')) }}
1008
+ </label>
1009
+ <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'export_feature_pdf_paper_size' }) }}">{{ environment.translate('PRO option') }}</a>
1010
+ </div>
1011
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1012
+ <select name="pdfPaperSize" disabled="disabled" id="features-export-pdf-paper-size-unavailable" data-placeholder="{{ environment.translate('Automatic')}}">
1013
+ <option>{{ environment.translate('Automatic')}}</option>
1014
+ </select>
1015
+ </div>
1016
  </div>
1017
+ <div class="setting-wrapper row">
1018
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1019
+ <label for="features-export-pdf-orientation-unavailable">
1020
+ {{ environment.translate('PDF Page Orientation') }}
1021
+ {{ tooltip.icon(environment.translate('Choose the orientation for PDF pages')) }}
1022
+ </label>
1023
+ <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'export_feature_pdf_orientation' }) }}">{{ environment.translate('PRO option') }}</a>
1024
+ </div>
1025
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1026
+ <select name="pdfOrientation" disabled="disabled" id="features-export-pdf-orientation-unavailable" data-placeholder="{{ environment.translate('Portrait')}}">
1027
+ <option>{{ environment.translate('Portrait')}}</option>
1028
+ </select>
1029
+ </div>
1030
  </div>
1031
+ <div class="setting-wrapper row">
1032
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1033
+ <label for="features-export-pdf-export-fonts-unavailable">
1034
+ {{ environment.translate('Export Fonts to PDF') }}
1035
+ {{ tooltip.icon(environment.translate('Allows export to PDF file the fonts, which were set for table content via editor toolbar. Important! Custom fonts might not contain some specific characters (greek, cyrillic etc.), so after importing of fonts your PDF file might lost part of content.')) }}
1036
+ </label>
1037
+ <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'export_feature_pdf_export_fonts' }) }}">{{ environment.translate('PRO option') }}</a>
1038
+ </div>
1039
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1040
+ <input type="checkbox" name="pdfExportFonts" disabled="disabled" id="features-export-pdf-export-fonts-unavailable" />
1041
+ </div>
1042
+ </div>
1043
+ <div class="setting-wrapper row">
1044
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1045
+ <label for="features-export-select-logo-unavailable">
1046
+ {{ environment.translate('Export Logo') }}
1047
+ {{ tooltip.icon(environment.translate('Automticaly appends selected logo for output pdf or printing')) }}
1048
+ </label>
1049
+ <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'export_feature_select_logo' }) }}">{{ environment.translate('PRO option') }}</a>
1050
+ </div>
1051
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1052
+ <button class="button" disabled="disabled" id="features-export-select-logo-unavailable">{{ environment.translate('Select Logo') }}</button>
1053
+ </div>
1054
+ </div>
1055
+ <div class="setting-wrapper row">
1056
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1057
+ <label for="google-tables-automatically-update-unavailable">
1058
+ {{ environment.translate('Autoimport from Google Sheet') }}
1059
+ {{ tooltip.icon(environment.translate('If checked - table data on frontend will be overloaded from selected Google Sheet. <a href="%s" tagget="_blank">Read more</a> about how organize Auto Import form Google Sheets') | format('//supsystic.com/documentation/synchronization-table-google-sheet/')) }}
1060
+ </label>
1061
+ <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'google_tables_automatically_update' }) }}">{{ environment.translate('PRO option') }}</a>
1062
+ </div>
1063
+ <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1064
+ <input type="checkbox" disabled="disabled" name="features[google_tables_automatically_update]" id="google-tables-automatically-update-unavailable" />
1065
+ </div>
1066
+ </div>
1067
+ {% endif %}
1068
+ {{ environment.getDispatcher().dispatch('tables-view-features', [table]) }}
1069
+ <!-- /.form-table -->
1070
+ </div>
1071
  </section>
1072
+ <section class="row row-settings-tab" id="stb-anl-appearance">
1073
+ <div class="title-block col-xs-12">
1074
+ <h3>{{ environment.translate('Appearance') }}</h3>
1075
+ </div>
1076
  <div class="col-md-6 col-sm-6 col-xs-12">
1077
  <div class="title-place">&nbsp;</div>
1078
  <div class="setting-wrapper row">
1221
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1222
  <label for="lightboxImg">
1223
  {{ environment.translate('Lightbox') }}
1224
+ {{ tooltip.icon(environment.translate('Add Lightbox fo images . <a href="https://supsystic.com/documentation/lightbox-with-full-size-images/">https://supsystic.com/documentation/lightbox-with-full-size-images/</a>')) }}
1225
  {% if environment.isPro() == false %}
1226
  <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'editable_fields_feature' }) }}">{{ environment.translate('PRO option') }}</a>
1227
  {% endif %}
1389
  </div>
1390
  <!-- /.col-md-4 col-sm-6 col-xs-12 -->
1391
  </section>
1392
+ <section class="row row-settings-tab" id="stb-anl-language">
1393
+ <div class="title-block col-xs-12">
1394
+ <h3>{{ environment.translate('Language and Text') }}</h3>
1395
+ </div>
1396
  <div class="col-md-6 col-sm-6 col-xs-12">
1397
  <div class="title-place">
1398
  <h3>{{ environment.translate('Overwrite Table Text') }}</h3>
1478
  </div>
1479
  </div>
1480
  </section>
1481
+ <section class="row row-settings-tab" id="stb-anl-source">
1482
+ <div class="title-block col-xs-12">
1483
+ <h3>{{ environment.translate('Source') }}</h3>
1484
+ </div>
1485
  {% if environment.isPro() == false %}
1486
  <div class="col-md-6 col-sm-6 col-xs-12">
1487
  <div class="title-place">
1490
  <div class="setting-wrapper row">
1491
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1492
  <label for="table-source-database-unavailable">
1493
+ {% set urlTables = environment.getModule('tables').getLocationUrl() %}
1494
  {{ environment.translate('Data from Database') }}
1495
+ {{ tooltip.icon('Database Source Pro feature allows you display table and its fields data from any table of WP database or External databases on the front-end. <a target="_blank" href="https://supsystic.com/documentation/database-source/"></br>Read more</a>' | raw, 'top', true)}}
1496
  </label>
1497
+ <a target="_blank" class="supsystic-pro-feature" href="{{ build_pro_url({ 'utm_medium': 'table-source-database' }) }}">{{ environment.translate('PRO option') }}</a></br>
1498
  </div>
1499
  <div class="setting-item col-md-6 col-sm-6 col-xs-12">
1500
  <input type="checkbox" disabled="disabled" name="source[database]" id="table-source-database-unavailable" />
1501
  </div>
1502
+ <div class="setting-item col-md-12 col-sm-12 col-xs-12">
1503
+ <a target="_blank" href="{{build_pro_url({ 'utm_medium': notify })}}"><img style="max-width:800px" src="{{ environment.getModule('tables').getLocationUrl() }}/assets/img/database.gif"/></a>
1504
+ </div>
1505
+ </div>
1506
  </div>
1507
  {% endif %}
1508
  {{ environment.getDispatcher().dispatch('tables-view-source', [table]) }}
1510
  </section>
1511
  </form>
1512
  </div>
1513
+ </div>
1514
 
1515
  <div class="row row-tab" id="row-tab-editor">
1516
  <div id="loadingProgress">
1533
  </li>
1534
  <li>
1535
  <button {{ tooltip.attr(environment.translate('Add row above')) }} data-toolbar="#toolbar-rows">
1536
+ <i class="fa fa-fw fa-th-list"></i><span> Row</span>
1537
  </button>
1538
  <div id="toolbar-rows" class="toolbar-content">
1539
  <a href="#" data-method="row">
1546
  </li>
1547
  <li>
1548
  <button {{ tooltip.attr(environment.translate('Add column on the left')) }} data-toolbar="#toolbar-cols">
1549
+ <i class="fa fa-fw fa-th-large"></i><span> Column</span>
1550
  </button>
1551
  <div id="toolbar-cols" class="toolbar-content">
1552
  <a href="#" data-method="column">
1705
  </a>
1706
  </div>
1707
  </li>
1708
+ <li>
1709
+ <button {{ tooltip.attr(environment.translate('Merge/unmerge selected cells')) }} data-toolbar="#toolbar-merge" data-method="merge">
1710
+ <i class="fa fa-expand"></i>
1711
+ <span> {{ environment.translate('Merge cells') }}</span>
1712
+ </button>
1713
+ </li>
1714
  </ul>
1715
  {{ environment.getDispatcher().dispatch('toolbar_rendered', [table]) }}
1716
  <br />
src/SupsysticTables/Woocommerce/views/partials/tabContent.twig CHANGED
@@ -4,13 +4,13 @@
4
  <a href="https://supsystic.com/plugins/woocommerce-product-table/" class="button button-hero" target="_blank">
5
  {{ environment.translate('Get Woo PRO') }}
6
  </a>
7
- <p class="description" style="font-size: 16px;">"WooCommerce" Feature allows you to create flexible, responsive WooCommerce Product Table and gives you full control over the columns properties. </p>
8
- <p class="description" style="font-size: 16px; margin-bottom: 10px">List your products in any format: price list, order forms, product catalogs & more.</p>
9
  </div>
10
  <div class="col-xs-12">
11
  <a href="https://supsystic.com/plugins/woocommerce-product-table/" target="_blank">
12
- <img src="{{ environment.getModule('woocommerce').getLocationUrl() }}/assets/img/wooadsfool.gif" alt="Woo ads gig" title="Available in PRO version" style="width: 100%; height: auto;">
13
  </a>
14
  </div>
15
  {% endblock %}
16
- </div>
4
  <a href="https://supsystic.com/plugins/woocommerce-product-table/" class="button button-hero" target="_blank">
5
  {{ environment.translate('Get Woo PRO') }}
6
  </a>
7
+ <p class="description" style="font-size: 16px;">WooCommerce Product Table allows you to create flexible, responsive tables and gives you full control over the columns properties.</p>
8
+ <p class="description" style="font-size: 16px; margin-bottom: 10px">List your products in any format: price list, order forms, product catalogues & more.</p>
9
  </div>
10
  <div class="col-xs-12">
11
  <a href="https://supsystic.com/plugins/woocommerce-product-table/" target="_blank">
12
+ <img style="max-width:800px" src="{{ environment.getModule('woocommerce').getLocationUrl() }}/assets/img/wooadsfool.gif" alt="Woo ads gig" title="Available in PRO version" style="width: 100%; height: auto;">
13
  </a>
14
  </div>
15
  {% endblock %}
16
+ </div>