Gallery – Photo Gallery and Images Gallery - Version 2.8.0

Version Description

  • fix of the backup notices
  • fix of the export back up function
  • Global modification of plugin structure, new add-ons section
  • New backup add-on
  • New statistics add-on
Download this release

Release Info

Developer robosoft
Plugin Icon 128x128 Gallery – Photo Gallery and Images Gallery
Version 2.8.0
Comparing to
See all releases

Code changes from version 2.7.14 to 2.8.0

app/app.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * Robo Gallery
5
+ * Version: 2.7.16 - 94417
6
+ * By Robosoft
7
+ *
8
+ * Contact: https://robosoft.co/robogallery/
9
+ * Created: 2015
10
+ * Licensed under the GPLv2 license - http://opensource.org/licenses/gpl-2.0.php
11
+
12
+ */
13
+
14
+
15
+ /* classes */
16
+ /*include_once ROBO_GALLERY_APP_PATH.'class.helper.php';*/
17
+ include_once ROBO_GALLERY_APP_PATH.'class.view.php';
18
+ include_once ROBO_GALLERY_APP_PATH.'class.brand.php';
19
+
20
+ /* extensions */
21
+ define("ROBO_GALLERY_APP_EXTENSIONS_PATH", ROBO_GALLERY_APP_PATH.'extensions/');
22
+ include_once ROBO_GALLERY_APP_EXTENSIONS_PATH.'manager/init.php';
app/class.brand.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * Robo Gallery
5
+ * Version: 2.7.16 - 94417
6
+ * By Robosoft
7
+ *
8
+ * Contact: https://robosoft.co/robogallery/
9
+ * Created: 2015
10
+ * Licensed under the GPLv2 license - http://opensource.org/licenses/gpl-2.0.php
11
+
12
+ */
13
+
14
+
15
+ class rbsGalleryBrand{
16
+ static function getPluginName(){
17
+ return 'Robo Gallery';
18
+ }
19
+ }
app/class.view.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * Robo Gallery
5
+ * Version: 2.7.16 - 94417
6
+ * By Robosoft
7
+ *
8
+ * Contact: https://robosoft.co/robogallery/
9
+ * Created: 2015
10
+ * Licensed under the GPLv2 license - http://opensource.org/licenses/gpl-2.0.php
11
+
12
+ */
13
+
14
+ class rbsGalleryClassView{
15
+
16
+ private $templatePath = '';
17
+
18
+ public function __construct( $templatePath ){
19
+
20
+ if (!file_exists($templatePath)) {
21
+ throw new Exception( "Could not find template path. Template: {$templatePath}");
22
+ } else {
23
+ $this->templatePath =$templatePath;
24
+ }
25
+
26
+ }
27
+
28
+ public function render($template, array $vars = array())
29
+ {
30
+ $templatePath = $this->templatePath . $template . '.tpl.php';
31
+
32
+ if (!file_exists($templatePath)) {
33
+ throw new Exception( "Could not find template. Template: {$template}");
34
+ }
35
+ extract($vars);
36
+ require $templatePath;
37
+ }
38
+
39
+ /**
40
+ * @param string $template
41
+ * @param array $vars
42
+ * @return string
43
+ */
44
+ public function content($template, array $vars = array())
45
+ {
46
+ ob_start();
47
+ $this->render($template, $vars);
48
+ $content = ob_get_clean();
49
+ //ob_clean();
50
+
51
+ return $content;
52
+ }
53
+ }
app/extensions/manager/class.addons.action.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Robo Gallery
4
+ * Version: 2.7.16 - 94417
5
+ * By Robosoft
6
+ *
7
+ * Contact: https://robosoft.co/robogallery/
8
+ * Created: 2015
9
+ * Licensed under the GPLv2 license - http://opensource.org/licenses/gpl-2.0.php
10
+
11
+ */
12
+
13
+ if ( ! defined( 'ABSPATH' ) ) exit;
14
+
15
+
16
+ class Gallery_RoTeam_AddonAction{
17
+
18
+ static function getAddons(){
19
+
20
+ }
21
+ }
app/extensions/manager/class.addons.php ADDED
@@ -0,0 +1,443 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Robo Gallery
4
+ * Version: 2.7.16 - 94417
5
+ * By Robosoft
6
+ *
7
+ * Contact: https://robosoft.co/robogallery/
8
+ * Created: 2015
9
+ * Licensed under the GPLv2 license - http://opensource.org/licenses/gpl-2.0.php
10
+
11
+ */
12
+
13
+ if ( ! defined( 'ABSPATH' ) ) exit;
14
+
15
+
16
+ class rbsGalleryAddons{
17
+
18
+ protected $postType;
19
+
20
+ protected $title;
21
+
22
+ protected $assetsUri;
23
+
24
+ protected $actionName;
25
+
26
+ protected $tag;
27
+
28
+ protected $addons;
29
+
30
+ protected $menuTag='';
31
+
32
+ public $view;
33
+
34
+ public function __construct( $postType ){
35
+
36
+ if (!$postType) {
37
+ throw new Exception( "Could not set post type");
38
+ }
39
+
40
+ $this->postType = $postType;
41
+
42
+ $this->checkDepends();
43
+
44
+ $this->title = rbsGalleryBrand::getPluginName();
45
+
46
+ $this->assetsUri = plugin_dir_url(__FILE__);
47
+
48
+ $this->path = plugin_dir_path( __FILE__ );
49
+
50
+ $this->tag = "{$this->postType}-file";
51
+
52
+ $this->view = new rbsGalleryClassView( $this->path.'templates/' );
53
+
54
+ $this->addons = $this->getAddons();
55
+
56
+ $this->addAjaxHooks();
57
+ /* check_status */
58
+ add_action('wp_ajax_rb_check_status', array($this, 'getPluginStatus'));
59
+
60
+ /* activate included plugin */
61
+ add_action('wp_ajax_rb_activate_included_plugin', array($this, 'activateIncludedPlugin') );
62
+
63
+ /* deactivate included plugin */
64
+ add_action('wp_ajax_rb_deactivate_included_plugin', array($this, 'deactivateIncludedPlugin') );
65
+
66
+ add_action( 'init', array($this, 'init') );
67
+ }
68
+
69
+ private function addAjaxHooks(){
70
+
71
+ }
72
+
73
+ private function checkDepends(){
74
+ if( !function_exists('is_plugin_active') ) include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
75
+ include_once plugin_dir_path( __FILE__ ).'class.addons.action.php';
76
+ }
77
+
78
+
79
+ public function showAddons(){
80
+ $this->enqueueScripts();
81
+ $this->renderAddons();
82
+ }
83
+
84
+ public function addMenuItem(){
85
+ $this->menuTag = add_submenu_page( 'edit.php?post_type='.$this->postType, $this->title.' Add-ons', 'Add-ons', 'manage_options', $this->postType.'-addons', array($this, 'showAddons' ) );
86
+ }
87
+
88
+
89
+ public function init(){
90
+ add_action('admin_menu', array($this, 'addMenuItem'), 10);
91
+ }
92
+
93
+ public function enqueueScripts(){
94
+ $screen = get_current_screen();
95
+
96
+ if ($this->postType !== $screen->post_type) return;
97
+
98
+ wp_enqueue_style(
99
+ $this->tag.'-style',
100
+ $this->assetsUri . 'css/style.css',
101
+ array()
102
+ );
103
+ wp_enqueue_style('wp-jquery-ui-dialog');
104
+
105
+ wp_enqueue_script('jquery-ui-dialog');
106
+
107
+ add_thickbox();
108
+ wp_enqueue_script('plugin-install');
109
+
110
+ wp_enqueue_script(
111
+ $this->tag.'-js',
112
+ $this->assetsUri . 'js/script.js',
113
+ array('jquery'),
114
+ false,
115
+ true
116
+ );
117
+
118
+ echo " <style>html body div#wpcontent div.fs-notice, .ngg_admin_notice{display: none !important; }</style> ";
119
+
120
+ wp_localize_script(
121
+ $this->tag.'-js',
122
+
123
+ 'rbsGalleryAddonAttributes',
124
+
125
+ array(
126
+ 'ajaxUrl' => admin_url('admin-ajax.php'),
127
+
128
+ 'action' => array(
129
+ 'save' => $this->actionName,
130
+ ),
131
+
132
+ 'labels' => array(
133
+ 'download' => __('Download', 'yo-gallery'),
134
+ 'downloading' => __('Downloading', 'yo-gallery'),
135
+
136
+ 'activate' => __('Activate', 'yo-gallery'),
137
+ 'activating' => __('Activating', 'yo-gallery'),
138
+ 'activated' => __('Activated', 'yo-gallery'),
139
+
140
+ 'deactivate' => __('Deactivate', 'yo-gallery'),
141
+ 'deactivating' => __('Deactivating', 'yo-gallery'),
142
+ 'deactivated' => __('Deactivated', 'yo-gallery'),
143
+
144
+
145
+ 'information' => __('Information', 'yo-gallery'),
146
+
147
+ 'installnow' => __('Install Now', 'yo-gallery'),
148
+ 'installing' => __('Installing', 'yo-gallery'),
149
+ 'installed' => __('Installed', 'yo-gallery'),
150
+ ),
151
+ )
152
+ );
153
+ }
154
+
155
+
156
+
157
+
158
+ public function renderAddons() {
159
+
160
+ /*$this->checkPermission();*/
161
+
162
+ $params=array(
163
+ 'addons' => '',
164
+ 'categories' => $this->getCategories(),
165
+ );
166
+
167
+ if(!count($this->addons)) return '';
168
+
169
+ foreach ($this->addons as $code => $addon ) {
170
+ $params['addons'] .= $this->renderAddon( $code, $addon );
171
+ }
172
+
173
+ echo $this->view->content("addons", $params);
174
+ }
175
+
176
+
177
+ public function getAddonData( $addon, $elem ){
178
+ return isset($addon[$elem]) ? $addon[$elem] : null;
179
+ }
180
+
181
+
182
+ public function getDownloadUrl( $slug ){
183
+ return esc_url(
184
+ wp_nonce_url(
185
+ self_admin_url('update.php?action=install-plugin&plugin=' . $slug),
186
+ 'install-plugin_' . $slug)
187
+ );
188
+ }
189
+
190
+ private function getActivateUrl( $plugin, $action = 'activate' ) {
191
+ if ( strpos( $plugin, '/' ) ) {
192
+ $plugin = str_replace( '\/', '%2F', $plugin );
193
+ }
194
+ $url = sprintf( admin_url( 'plugins.php?action=' . $action . '&plugin=%s&plugin_status=all&paged=1&s' ), $plugin );
195
+ $_REQUEST['plugin'] = $plugin;
196
+ $url = wp_nonce_url( $url, $action . '-plugin_' . $plugin );
197
+ return $url;
198
+ }
199
+
200
+ private function getManagerUrl( $plugin ) {
201
+ $url = sprintf( admin_url( 'plugins.php?plugin_status=search&paged=1&s=%s' ), strtolower($plugin) );
202
+ return $url;
203
+ }
204
+
205
+ public function renderAddon( $code, $addon ){
206
+
207
+ $slug = $this->getAddonData($addon, 'slug');
208
+
209
+ $fileName = $this->getAddonData($addon, 'file');
210
+
211
+ $status = $this->checkPluginStatus($code);
212
+
213
+ $templatingFields = array(
214
+ 'title' => $this->getAddonData($addon, 'title'),
215
+
216
+ 'slug' => $slug,
217
+ 'code' => $code,
218
+
219
+ 'status' => $status,
220
+
221
+ 'commercial'=> $this->getAddonData($addon, 'commercial'),
222
+ 'public' => $this->getAddonData($addon, 'public'),
223
+ 'included' => $this->getAddonData($addon, 'included'),
224
+
225
+ // 'price' => $this->getAddonData($addon, 'price'),
226
+
227
+ 'desc' => $this->getAddonData($addon, 'desc'),
228
+
229
+ 'category' => $this->getAddonData($addon, 'category'),
230
+
231
+ 'url' => $this->getAddonData($addon, 'url'),
232
+ );
233
+
234
+ $templatingFields['downloadUrl'] = $this->getDownloadUrl( $slug ) ;
235
+ $templatingFields['activateUrl'] = $this->getActivateUrl( $fileName );
236
+
237
+ $templatingFields['deactivateUrl'] = admin_url( 'plugins.php?plugin_status=all&paged=1&s');
238
+ $templatingFields['informationUrl'] = admin_url('plugin-install.php?tab=plugin-information&plugin='.$slug.'&TB_iframe=true&width=600&height=550');
239
+
240
+ $templatingFields['pluginManagerUrl'] = $this->getManagerUrl($slug);
241
+
242
+ $nonce = '';
243
+
244
+ //print_r($templatingFields);
245
+ return $this->view->content("addon", $templatingFields);
246
+ }
247
+
248
+ private function putAddon( $addonConfig ){
249
+
250
+ $addonDefaultConfig = array(
251
+ 'title' => '',
252
+ 'category' => '',
253
+
254
+ 'slug' => '',
255
+ 'file' => '',
256
+
257
+ /*'price' => 0,*/
258
+
259
+ 'commercial'=> 0,
260
+ 'included' => 0,
261
+ 'public' => 0,
262
+
263
+ 'desc' => '',
264
+
265
+ );
266
+
267
+ if(!is_array($addonConfig)) return $addonDefaultConfigl;
268
+
269
+ return array_merge( $addonDefaultConfig, $addonConfig );
270
+ }
271
+
272
+ public function deactivateIncludedPlugin(){
273
+ $status = array( 'result' => false );
274
+ $plugin = sanitize_text_field( $_POST['plugin'] );
275
+ $this->checkPermission();
276
+ $status['result'] = $this->activatePlugin($plugin,'deactivate');
277
+ echo json_encode($status);
278
+ exit;
279
+ }
280
+
281
+ public function activateIncludedPlugin(){
282
+ $status = array( 'result' => false );
283
+ $plugin = sanitize_text_field( $_POST['plugin'] );
284
+ $this->checkPermission();
285
+ $status['result'] = $this->activatePlugin($plugin);
286
+ echo json_encode($status);
287
+ exit;
288
+ }
289
+
290
+
291
+ public function activatePlugin( $plugin, $action = 'activate' ){
292
+ if(!$plugin ) return false;
293
+ $activateCode = $action=='activate' ? 1 : 0;
294
+ echo ROBO_GALLERY_OPTIONS.'addon_'.$plugin;
295
+
296
+ update_option( ROBO_GALLERY_OPTIONS.'addon_'.$plugin, $activateCode );
297
+ return true;
298
+ }
299
+
300
+ public function getAddons(){
301
+
302
+ $addons =array();
303
+
304
+ $addons['robogallerypro'] = $this->putAddon(
305
+ array(
306
+ 'title' => 'Robo Gallery Pro',
307
+ 'category' => 'gallery',
308
+ 'url' => 'https://robosoft.co/robogallery/#pricing',
309
+ 'slug' => 'robogallerykey',
310
+ 'file' => 'robogallerykey/robogallerykey.php',
311
+ 'desc' => 'with PRO version you get more advanced functionality and even more flexibility in settings and gallery design. Get access to more add-ons which extend functionality of the plugin.',
312
+ 'commercial'=> 1,
313
+ )
314
+ );
315
+
316
+ /*$addons['lightbox'] = $this->putAddon(
317
+ array(
318
+ 'title' => 'Lightbox Pro',
319
+ 'category' => 'lightbox',
320
+ 'url' => 'https://google.com',
321
+ 'slug' => 'akismet',
322
+ 'file' => 'akismet/akismet.php',
323
+ 'commercial'=> 1,
324
+ )
325
+ );*/
326
+
327
+
328
+ /*$addons['breadcrumbs'] = $this->putAddon(
329
+ array(
330
+ 'title' => 'BreadCrumbs',
331
+ 'price' => 19,
332
+ 'category' => 'navigation',
333
+ 'slug' => 'akismet',
334
+ 'file' => 'akismet/akismet.php',
335
+ 'public'=> 1,
336
+ )
337
+ );*/
338
+
339
+ $addons['backup'] = $this->putAddon(
340
+ array(
341
+ 'title' => 'BackUp ',
342
+ 'category' => 'navigation',
343
+ 'slug' => 'backup',
344
+ 'desc' => 'Advanced gallery backup add-on with wide range of backup customization modes. Back up and restore galleries with or without images in few clicks.',
345
+ 'included' => 1
346
+ )
347
+ );
348
+
349
+ $addons['stats'] = $this->putAddon(
350
+ array(
351
+ 'title' => 'Statistics',
352
+ 'category' => 'menu',
353
+ 'slug' => 'stats',
354
+ 'desc' => 'Advanced statistics gallery add-on with very simple and effective interface. Just few clicks and you get all information for your gallery users visits. View statistics by gallery / total / all elements.',
355
+ 'included' => 1,
356
+ )
357
+ );
358
+
359
+ return $addons;
360
+ }
361
+
362
+ public function getCategories(){
363
+ return Array (
364
+ 'all' => Array ( 'name' => 'All' ),
365
+ 'activated' => Array ( 'name' => 'Active' ),
366
+ /* 'featured' => Array ( 'name' => 'Featured' ),
367
+ 'free' => Array ( 'name' => 'Free' ),*/
368
+ 'premium' => Array ( 'name' => 'Premium' ),
369
+ );
370
+ }
371
+
372
+ function checkPluginStatus( $plugin ){
373
+
374
+ $status = array(
375
+ 'download' => 0,
376
+ 'active' => 0,
377
+ 'message' => '',
378
+ 'error' => 0,
379
+ );
380
+
381
+ if( !$plugin ){
382
+ $status['error'] = 1;
383
+ $status['message'] = 'Error:: input parameters is empty';
384
+
385
+ return $status;
386
+ }
387
+
388
+ if( $plugin && isset( $this->addons[$plugin] ) ){
389
+
390
+ $item = $this->addons[$plugin];
391
+
392
+ if($item['included']){
393
+ $status['download'] = 1;
394
+ $status['active'] = get_option( ROBO_GALLERY_OPTIONS.'addon_'.$plugin, 0 ) ? 1 : 0;
395
+ return $status;
396
+ }
397
+
398
+ /* for not included */
399
+ if( isset($item['slug']) && isset($item['file']) ){
400
+
401
+ $plugin_dir = ABSPATH . 'wp-content/plugins/'.$item['slug'].'/';
402
+ $plugin_file = ABSPATH . 'wp-content/plugins/'.$item['file'];
403
+
404
+ if ( is_dir($plugin_dir) && file_exists($plugin_file) ){
405
+
406
+ $status['download'] = 1;
407
+
408
+ if( is_plugin_active( $item['file'] ) ) $status['active'] = 1;
409
+ }
410
+
411
+ } else {
412
+ $status['message'] = 'Error:: plugin file is empty';
413
+ $status['error'] = 1;
414
+ }
415
+
416
+ } else {
417
+ $status['message'] = 'Error:: plugin name is empty';
418
+ $status['error'] = 1;
419
+ }
420
+
421
+ return $status;
422
+ }
423
+
424
+ function getPluginStatus( ){
425
+ $plugin = sanitize_text_field( $_POST['plugin'] );
426
+
427
+ $status = $this->checkPluginStatus($plugin);
428
+
429
+ echo json_encode($status);
430
+ exit;
431
+ }
432
+
433
+
434
+ protected function checkPermission(){
435
+ if (!current_user_can('activate_plugins')) {
436
+ header('HTTP/1.0 403 Forbidden');
437
+ echo __("You don't have permission for activate plugin");
438
+ die();
439
+ }
440
+ }
441
+
442
+
443
+ }
app/extensions/manager/css/index.html ADDED
File without changes
app/extensions/manager/css/style.css ADDED
@@ -0,0 +1,175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .rbs-gallery-addon-wrap {
2
+ margin-left: 0;
3
+ width: 98%;
4
+ max-width: 98%;
5
+ }
6
+
7
+ .rbs-gallery-addon-browser{
8
+ margin-top: 10px;
9
+ width: 100%;
10
+ position: relative;
11
+ }
12
+
13
+
14
+
15
+ .spinner {
16
+ position: absolute;
17
+ margin-top: 15px;
18
+ }
19
+
20
+ .rbs-gallery-addon-browser * {
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ .rbs-gallery-nav-tabs a:focus{
25
+ box-shadow: none;
26
+ }
27
+
28
+ .rbs-gallery-addon-items{
29
+ padding: 0;
30
+ margin: 0;
31
+ }
32
+
33
+ .rbs-gallery-addon-items .rbs-gallery-addon-item{
34
+ /* background-color: #767676; */ /* grey */
35
+ font-size: 50px;
36
+ padding: 10px 20px 10px 20px;
37
+ font-weight: bold;
38
+ color: white;
39
+ margin-top: 15px;
40
+ margin-bottom: 15px;
41
+ position: relative;
42
+ line-height: normal;
43
+ }
44
+
45
+ .rbs-gallery-addons-labels{
46
+ float: left;
47
+ margin-left: 20px;
48
+ margin-right: 20px;
49
+ display: inline-block;
50
+ vertical-align: middle;
51
+ /* margin-top: -9px; */
52
+ }
53
+ .rbs-gallery-addons-labels .twoj-addon-label{
54
+ /* background-color: #767676; */ /* grey */
55
+ font-size: 14px;
56
+ padding: 0px 6px 2px 6px;
57
+ font-weight: bold;
58
+ color: white;
59
+ margin: 0;
60
+ cursor: pointer;
61
+ }
62
+
63
+
64
+ .rbs-gallery-addon-item .addon-desc{
65
+ font-size: 16px;
66
+ padding: 0px 0px 5px 0px;
67
+ text-align: justify;
68
+ }
69
+
70
+
71
+ .rbs-gallery-addon-item .icon-plugin{
72
+ font-size: 69px;
73
+ margin: 0;
74
+ padding: 0;
75
+ width: auto;
76
+ height: auto;
77
+ }
78
+ .rbs-gallery-addon-item .icon-loading{
79
+ margin-bottom: 4px;
80
+ vertical-align: middle;
81
+ }
82
+
83
+ .icon-loading-hide{
84
+ display: none;
85
+ }
86
+
87
+ .rbs-gallery-addon-item .icon-loading.spin {
88
+ animation: icon-loading-spin 1s infinite;
89
+ animation-timing-function: linear;
90
+ }
91
+
92
+ @keyframes icon-loading-spin {
93
+ 0%{ transform: rotate( 0deg ); }
94
+ 100%{ transform: rotate( 360deg ); }
95
+ }
96
+
97
+ .rbs-gallery-addon-item .addon-title{
98
+
99
+ }
100
+
101
+
102
+
103
+
104
+ .rbs-gallery-addon-item.addon-activated,
105
+ .rbs-gallery-addons-labels .addon-activated{
106
+ background-color: #767676;
107
+ }
108
+
109
+ .rbs-gallery-addon-item a.addon-button {
110
+ position: absolute;
111
+ right: 20px;
112
+ top: 30px;
113
+ }
114
+
115
+ .rbs-gallery-addon-item.uncolored,
116
+ .twoj-addon-label.uncolored{
117
+ background-color: #d7dadd;
118
+ /* opacity: 0.12; */
119
+ }
120
+
121
+ .addon-lightbox{
122
+ background-color: #21ba45; /* green */
123
+ }
124
+ .addon-menu{
125
+ background-color: #db2828; /* red */
126
+ }
127
+
128
+ .addon-interface{
129
+ background-color: #a333c8; /* purple */
130
+ }
131
+ .addon-navigation{
132
+ background-color: #e03997; /* pink */
133
+ }
134
+
135
+ .addon-gallery{
136
+ background-color: #00b5ad; /* teal */
137
+ }
138
+
139
+
140
+ .rbs-gallery-addon-item.element{
141
+ background-color: #b5cc18; /* olive */
142
+ }
143
+ .rbs-gallery-addon-item.element{
144
+ background-color: #6435c9; /* violet */
145
+ }
146
+
147
+ .rbs-gallery-addon-item.element{
148
+ background-color: #a5673f; /* brown */
149
+ }
150
+
151
+ .download-error{
152
+ border: 1px solid;
153
+ margin: -15px 0 15px 0;
154
+ padding: 10px;
155
+
156
+ color:#fff!important;
157
+ background-color:#f44336!important;
158
+ box-shadow: 0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19);
159
+ }
160
+ .error-hide{
161
+ display: none;
162
+ }
163
+
164
+ @media screen and ( max-width: 600px ) {
165
+ .rbs-gallery-addon-item .icon-plugin{ display: none; }
166
+ .rbs-gallery-addon-items .rbs-gallery-addon-item{ font-size: 30px; }
167
+ .rbs-gallery-addon-item a.addon-button { top: 15px;}
168
+ .rbs-gallery-addon-item .addon-desc{ padding: 0px; font-size: 14px; }
169
+ }
170
+ @media screen and ( max-width: 800px ) {
171
+ .rbs-gallery-addons-labels{ display: none; }
172
+ .extension-reload{ display: none; }
173
+ }
174
+
175
+
app/extensions/manager/index.html ADDED
File without changes
app/extensions/manager/init.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Robo Gallery
4
+ * Version: 2.7.16 - 94417
5
+ * By Robosoft
6
+ *
7
+ * Contact: https://robosoft.co/robogallery/
8
+ * Created: 2015
9
+ * Licensed under the GPLv2 license - http://opensource.org/licenses/gpl-2.0.php
10
+
11
+ */
12
+
13
+ if ( ! defined( 'ABSPATH' ) ) exit;
14
+
15
+ include_once plugin_dir_path( __FILE__ ).'class.addons.php';
16
+
17
+ new rbsGalleryAddons( ROBO_GALLERY_TYPE_POST );
app/extensions/manager/js/index.html ADDED
File without changes
app/extensions/manager/js/script.js ADDED
@@ -0,0 +1,408 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function(RBPLUGINMANAGER, $, undefined) {
2
+
3
+ RBPLUGINMANAGER.showSpinner = function($btn) {
4
+ var $container = $btn.find('.icon-loading.dashicons-update');
5
+ $container.removeClass('icon-loading-hide').addClass('spin');
6
+ };
7
+
8
+ RBPLUGINMANAGER.hideSpinner = function($btn) {
9
+ var $container = $btn.find('.icon-loading.dashicons-update');
10
+ $container.removeClass('spin').addClass('icon-loading-hide');
11
+ };
12
+
13
+ RBPLUGINMANAGER.showError = function($btn) {
14
+ $btn.parent().next('.download-error').css('display', 'block');
15
+ };
16
+
17
+ RBPLUGINMANAGER.updateButtonLabel = function($btn, label) {
18
+ $btn.find('span.text').text(label);
19
+ };
20
+
21
+ RBPLUGINMANAGER.clearClassButton = function( $btn , newClass) {
22
+ $btn.removeClass('addon-activate addon-download addon-link thickbox open-plugin-details-modal').addClass(newClass);
23
+ };
24
+
25
+
26
+ RBPLUGINMANAGER.updateButtonActivated = function($btn) {
27
+ RBPLUGINMANAGER.updateButtonLabel( $btn, rbsGalleryAddonAttributes.labels.installed );
28
+ RBPLUGINMANAGER.hideSpinner( $btn );
29
+ if( $btn.attr('data-commercial') == 1 ){
30
+ RBPLUGINMANAGER.clearClassButton( $btn, 'addon-link');
31
+ $btn.attr('href', $btn.attr('data-url'));
32
+ } else {
33
+ RBPLUGINMANAGER.clearClassButton( $btn, 'addon-link thickbox open-plugin-details-modal');
34
+ $btn.attr('href', $btn.attr('data-information'));
35
+ }
36
+
37
+ $btn.parent().addClass('addon-activated');
38
+ $btn.find('.dashicons-yes').removeClass('icon-loading-hide');
39
+ };
40
+
41
+ RBPLUGINMANAGER.updateButtonIncludedActivated = function($btn) {
42
+ RBPLUGINMANAGER.updateButtonLabel( $btn, rbsGalleryAddonAttributes.labels.activated );
43
+ $btn.find('.dashicons-yes').removeClass('icon-loading-hide');
44
+ RBPLUGINMANAGER.clearClassButton( $btn);
45
+ RBPLUGINMANAGER.hideSpinner( $btn );
46
+ setTimeout(function() {
47
+ RBPLUGINMANAGER.updateButtonLabel( $btn, rbsGalleryAddonAttributes.labels.deactivate );
48
+ RBPLUGINMANAGER.clearClassButton( $btn, 'addon-deactivate');
49
+ $btn.find('.dashicons-yes').addClass('icon-loading-hide');
50
+ $btn.parent().addClass('addon-activated');
51
+ $btn.removeClass('disabled');
52
+ }, 2000);
53
+ };
54
+
55
+ RBPLUGINMANAGER.updateButtonIncludedDeactivated = function($btn) {
56
+ RBPLUGINMANAGER.updateButtonLabel( $btn, rbsGalleryAddonAttributes.labels.deactivated );
57
+ $btn.find('.dashicons-yes').removeClass('icon-loading-hide');
58
+ RBPLUGINMANAGER.clearClassButton( $btn);
59
+ RBPLUGINMANAGER.hideSpinner( $btn );
60
+ setTimeout(function() {
61
+ RBPLUGINMANAGER.updateButtonLabel( $btn, rbsGalleryAddonAttributes.labels.activate );
62
+ RBPLUGINMANAGER.clearClassButton( $btn, 'addon-activate');
63
+ $btn.find('.dashicons-yes').addClass('icon-loading-hide');
64
+ $btn.parent().removeClass('addon-activated');
65
+ $btn.removeClass('disabled');
66
+ }, 2000);
67
+ };
68
+
69
+
70
+
71
+ rbsGalleryAddonAttributes
72
+
73
+ RBPLUGINMANAGER.bindActionButtons = function() {
74
+ $('a.addon-button').on('click', function(e) {
75
+
76
+ var $btn = $(this);
77
+
78
+
79
+ if ($btn.attr('target') == '_blank' || $btn.hasClass('addon-link') ) {
80
+ console.log('open link');
81
+ return true;
82
+ }
83
+
84
+ e.preventDefault();
85
+
86
+ if ($btn.is('.disabled')) {
87
+ console.log('disabled');
88
+ return false;
89
+ }
90
+
91
+ /*var confirmMsg = $(this).data('confirm');
92
+
93
+ if (confirmMsg) {
94
+ console.log('with confirmation');
95
+ if (confirm(confirmMsg)) {
96
+ RBPLUGINMANAGER.showSpinner($btn);
97
+ $btn.addClass('disabled');
98
+ } else {
99
+ return false;
100
+ }
101
+ } else {*/
102
+
103
+ $btn.addClass('disabled');
104
+ RBPLUGINMANAGER.showSpinner($btn);
105
+
106
+ console.log('without confirmation');
107
+
108
+ if( $btn.hasClass('addon-activate') ){
109
+
110
+ if( $btn.data('included')==1 ) RBPLUGINMANAGER.activateIncludedPlugin( $btn );
111
+ else RBPLUGINMANAGER.activatePlugin( $btn );
112
+
113
+ }else if($btn.hasClass('addon-deactivate')) {
114
+
115
+ if( $btn.data('included')==1 ) RBPLUGINMANAGER.deactivateIncludedPlugin( $btn );
116
+
117
+ }else if($btn.hasClass('addon-download')) {
118
+
119
+ RBPLUGINMANAGER.downloadPlugin( $btn );
120
+
121
+ }
122
+
123
+ return false;
124
+ /*}*/
125
+ });
126
+ };
127
+
128
+
129
+
130
+ RBPLUGINMANAGER.downloadPlugin = function( $btn ) {
131
+
132
+ var url = $btn.data('download'),
133
+ slug = $btn.data('slug'),
134
+ code = $btn.data('code');
135
+
136
+ RBPLUGINMANAGER.updateButtonLabel( $btn, rbsGalleryAddonAttributes.labels.downloading );
137
+
138
+ console.log('download slug:'+slug+' code:'+code);
139
+ console.log('Download ' + url);
140
+
141
+ jQuery.ajax({
142
+ method: "POST",
143
+ url: url,
144
+ }).done(function() {
145
+
146
+ console.log('Done download');
147
+
148
+ jQuery.ajax({ // Check if plugin installed
149
+ type: 'POST',
150
+ url: ajaxurl,
151
+
152
+ data: {
153
+ 'action': 'rb_check_status',
154
+ 'plugin': code
155
+ },
156
+
157
+ error: function(){
158
+ console.log('Error: check unsuccessful');
159
+ RBPLUGINMANAGER.hideSpinner( $btn );
160
+ RBPLUGINMANAGER.showError( $btn );
161
+ },
162
+ success: function(response){
163
+ var pluginStatus = JSON.parse( response );
164
+
165
+ console.log(pluginStatus);
166
+
167
+ if( pluginStatus.download == 1) {
168
+ /* plugin downloaded */
169
+ if(pluginStatus.active==1){
170
+ /* plugin activate */
171
+ RBPLUGINMANAGER.updateButtonActivated( $btn);
172
+ } else {
173
+ /* plugin don't activate */
174
+ RBPLUGINMANAGER.activatePlugin( $btn );
175
+ }
176
+
177
+ } else {
178
+ console.log('Error: download unsuccessful');
179
+ RBPLUGINMANAGER.hideSpinner( $btn );
180
+ RBPLUGINMANAGER.showError( $btn );
181
+ }
182
+ }
183
+ });
184
+ })
185
+ .fail(function() {
186
+ console.log('Error: send request unsuccessful');
187
+ RBPLUGINMANAGER.hideSpinner( $btn );
188
+ RBPLUGINMANAGER.showError( $btn );
189
+ });
190
+
191
+ };
192
+
193
+ RBPLUGINMANAGER.activateIncludedPlugin = function( $btn ) {
194
+
195
+
196
+ var url = $btn.data('activate'),
197
+ slug = $btn.data('slug'),
198
+ code = $btn.data('code');
199
+
200
+ console.log('Activate Included slug:'+slug+' code:'+code);
201
+ console.log('Activate ' + url);
202
+
203
+ RBPLUGINMANAGER.updateButtonLabel( $btn, rbsGalleryAddonAttributes.labels.activating )
204
+
205
+ jQuery.ajax({
206
+ method: "POST",
207
+ url: ajaxurl,
208
+
209
+ data: {
210
+ 'action': 'rb_activate_included_plugin',
211
+ 'plugin': code
212
+ },
213
+ }).done(function() {
214
+ console.log('Activated');
215
+
216
+ jQuery.ajax({ // Check if plugin installed
217
+ type: 'POST',
218
+ url: ajaxurl,
219
+ data: {
220
+ 'action': 'rb_check_status',
221
+ 'plugin': code
222
+ },
223
+ error: function(){
224
+ RBPLUGINMANAGER.hideSpinner($btn);
225
+ RBPLUGINMANAGER.showError($btn);
226
+ },
227
+ success: function(response){
228
+ var pluginStatus = JSON.parse(response);
229
+
230
+ console.log(pluginStatus);
231
+
232
+ if( pluginStatus.download == 1 && pluginStatus.active==1 ) {
233
+ /* plugin active */
234
+ RBPLUGINMANAGER.updateButtonIncludedActivated( $btn);
235
+ } else {
236
+ RBPLUGINMANAGER.hideSpinner($btn);
237
+ RBPLUGINMANAGER.showError($btn);
238
+ }
239
+ }
240
+ });
241
+ })
242
+ .fail(function() {
243
+ RBPLUGINMANAGER.hideSpinner($btn);
244
+ RBPLUGINMANAGER.showError($btn);
245
+ });
246
+
247
+ };
248
+
249
+ RBPLUGINMANAGER.deactivateIncludedPlugin = function( $btn ) {
250
+
251
+
252
+ var slug = $btn.data('slug'),
253
+ code = $btn.data('code');
254
+
255
+ console.log('Deactivate Included slug:'+slug+' code:'+code);
256
+
257
+ RBPLUGINMANAGER.updateButtonLabel( $btn, rbsGalleryAddonAttributes.labels.deactivating )
258
+
259
+ jQuery.ajax({
260
+ method: "POST",
261
+ url: ajaxurl,
262
+
263
+ data: {
264
+ 'action': 'rb_deactivate_included_plugin',
265
+ 'plugin': code
266
+ },
267
+ }).done(function() {
268
+ console.log('Deactivated');
269
+
270
+ jQuery.ajax({ // Check if plugin installed
271
+ type: 'POST',
272
+ url: ajaxurl,
273
+ data: {
274
+ 'action': 'rb_check_status',
275
+ 'plugin': code
276
+ },
277
+ error: function(){
278
+ RBPLUGINMANAGER.hideSpinner($btn);
279
+ RBPLUGINMANAGER.showError($btn);
280
+ },
281
+ success: function(response){
282
+ var pluginStatus = JSON.parse(response);
283
+
284
+ console.log(pluginStatus);
285
+
286
+ if( pluginStatus.active==0 ) {
287
+ /* plugin active */
288
+ RBPLUGINMANAGER.updateButtonIncludedDeactivated( $btn);
289
+ } else {
290
+ RBPLUGINMANAGER.hideSpinner($btn);
291
+ RBPLUGINMANAGER.showError($btn);
292
+ }
293
+ }
294
+ });
295
+ })
296
+ .fail(function() {
297
+ RBPLUGINMANAGER.hideSpinner($btn);
298
+ RBPLUGINMANAGER.showError($btn);
299
+ });
300
+
301
+ };
302
+
303
+ RBPLUGINMANAGER.activatePlugin = function( $btn ) {
304
+
305
+
306
+ var url = $btn.data('activate'),
307
+ slug = $btn.data('slug'),
308
+ code = $btn.data('code');
309
+
310
+ console.log('Activate slug:'+slug+' code:'+code);
311
+ console.log('Activate ' + url);
312
+
313
+ RBPLUGINMANAGER.updateButtonLabel( $btn, rbsGalleryAddonAttributes.labels.activating )
314
+
315
+ jQuery.ajax({
316
+ method: "POST",
317
+ url: url,
318
+ }).done(function() {
319
+ console.log('Activated');
320
+
321
+ jQuery.ajax({ // Check if plugin installed
322
+ type: 'POST',
323
+ url: ajaxurl,
324
+ data: {
325
+ 'action': 'rb_check_status',
326
+ 'plugin': code
327
+ },
328
+ error: function(){
329
+ RBPLUGINMANAGER.hideSpinner($btn);
330
+ RBPLUGINMANAGER.showError($btn);
331
+ },
332
+ success: function(response){
333
+ var pluginStatus = JSON.parse(response);
334
+
335
+ console.log(pluginStatus);
336
+
337
+ if( pluginStatus.download == 1 && pluginStatus.active==1 ) {
338
+ /* plugin active */
339
+ RBPLUGINMANAGER.updateButtonActivated( $btn);
340
+ } else {
341
+ RBPLUGINMANAGER.hideSpinner($btn);
342
+ RBPLUGINMANAGER.showError($btn);
343
+ }
344
+ }
345
+ });
346
+ })
347
+ .fail(function() {
348
+ RBPLUGINMANAGER.hideSpinner($btn);
349
+ RBPLUGINMANAGER.showError($btn);
350
+ });
351
+
352
+ };
353
+
354
+ //hook up clicking the tag links above the extensions
355
+ RBPLUGINMANAGER.bindTagLinks = function() {
356
+ $('.rbs-gallery-addons-labels span.twoj-addon-label').on('click', function() {
357
+ var tag = $(this);
358
+ var filter = tag.data('category');
359
+ if( tag.hasClass('click') ){
360
+ $('.rbs-gallery-addon-browser .extensions .rbs-gallery-addon-item').removeClass('uncolored');
361
+ $('.rbs-gallery-addons-labels .twoj-addon-label').removeClass('uncolored');
362
+ tag.removeClass('click');
363
+ } else {
364
+ $('.rbs-gallery-addon-browser .rbs-gallery-addon-item').addClass('uncolored');
365
+ $('.rbs-gallery-addons-labels .twoj-addon-label').addClass('uncolored').removeClass('click');
366
+ $('.rbs-gallery-addon-browser .extensions .addon-' + filter).removeClass('uncolored');
367
+ $('.rbs-gallery-addon-browser .extensions .addon-' + filter).prependTo('.rbs-gallery-addon-browser .extensions');
368
+ $('.rbs-gallery-addons-labels .twoj-addon-label.addon-' + filter).removeClass('uncolored').addClass('click');
369
+ }
370
+
371
+
372
+ });
373
+ };
374
+
375
+ RBPLUGINMANAGER.bindTabs = function() {
376
+ $(".rbs-gallery-nav-tabs a.nav-tab").click( function(e) {
377
+
378
+ e.preventDefault();
379
+
380
+ $this = $(this);
381
+
382
+ $this.parents(".nav-tab-wrapper:first").find(".nav-tab-active").removeClass("nav-tab-active");
383
+ $this.addClass("nav-tab-active");
384
+
385
+ var filter = $this.attr('href').replace('#', '');
386
+ $('.rbs-gallery-addon-browser .extensions .rbs-gallery-addon-item').hide();
387
+ $('.rbs-gallery-addon-browser .extensions .addon-' + filter).show();
388
+ });
389
+
390
+ if (window.location.hash) {
391
+ $('a.nav-tab[href="' + window.location.hash + '"]').click();
392
+ } else {
393
+ $('a.nav-tab-all').click();
394
+ }
395
+
396
+ return false;
397
+ };
398
+
399
+ $(function() { //wait for ready
400
+
401
+ RBPLUGINMANAGER.bindTabs();
402
+ RBPLUGINMANAGER.bindActionButtons();
403
+ RBPLUGINMANAGER.bindTagLinks();
404
+ });
405
+
406
+ }( window.RBPLUGINMANAGER = window.RBPLUGINMANAGER || {}, jQuery));
407
+
408
+
app/extensions/manager/templates/addon.tpl.php ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $class = '';
4
+
5
+ if( $status['active'] ) $class=" addon-deactivate ";
6
+ if( !$status['active'] && $status['download'] ) $class=" addon-activate ";
7
+ if( !$status['download'] & !$commercial ) $class=" addon-download ";
8
+ if( $commercial && !$status['download'] ) $class=" addon-link ";
9
+
10
+
11
+ ?>
12
+ <div class="rbs-gallery-addon-item addon-all<?php
13
+ echo ' addon-'.$category;
14
+
15
+ if( $status['active'] ) echo ' addon-activated';
16
+ if( $commercial ) echo ' addon-premium';
17
+
18
+ ?>">
19
+ <span class="dashicons dashicons-admin-plugins icon-plugin"></span>
20
+ <span class="addon-title"><?php echo $title; ?></span>
21
+
22
+ <?php if( $status['active'] && $included ){ ?>
23
+ <a
24
+ href="<?php echo admin_url($url); ?>"
25
+ data-slug="<?php echo $slug;?>"
26
+ data-code="<?php echo $code;?>"
27
+ <?php if( $included ) echo ' data-included="1" ';?>
28
+ class=" button button-primary addon-button addon-deactivate"
29
+ >
30
+ <span class="dashicons dashicons-update icon-loading icon-loading-hide"></span>
31
+ <span class="dashicons dashicons-yes icon-loading icon-loading-hide"></span>
32
+
33
+ <span class="text"> <?php _e('Deactivate'); ?></span>
34
+ </a>
35
+ <?php } ?>
36
+
37
+ <?php if( $status['active'] && !$included ){ ?>
38
+ <a
39
+ href="<?php echo $pluginManagerUrl; ?>"
40
+ data-slug="<?php echo $slug;?>"
41
+ data-code="<?php echo $code;?>"
42
+ <?php if( $included ) echo ' data-included="1" ';?>
43
+ class=" button button-primary addon-button addon-link addon-deactivate"
44
+ >
45
+ <span class="dashicons dashicons-update icon-loading icon-loading-hide"></span>
46
+ <span class="dashicons dashicons-yes icon-loading icon-loading-hide"></span>
47
+
48
+ <span class="text"> <?php _e('Deactivate'); ?></span>
49
+ </a>
50
+ <?php } ?>
51
+
52
+ <?php if( !$status['active'] && $status['download'] ){ ?>
53
+ <a href="#"
54
+ data-slug="<?php echo $slug;?>"
55
+ data-code="<?php echo $code;?>"
56
+ data-url="<?php echo $url; ?>"
57
+
58
+ data-activate="<?php echo $activateUrl; ?>"
59
+ data-deactivate="<?php echo $deactivateUrl; ?>"
60
+ data-information="<?php echo $informationUrl; ?>"
61
+ <?php if( $included ) echo ' data-included="1" ';?>
62
+ <?php if( $commercial ) echo ' data-commercial="1" ';?>
63
+ class="button button-primary addon-button addon-activate"
64
+ >
65
+ <span class="dashicons dashicons-update icon-loading icon-loading-hide"></span>
66
+ <span class="dashicons dashicons-yes icon-loading icon-loading-hide"></span>
67
+
68
+ <span class="text"> <?php _e('Activate'); ?></span>
69
+ </a>
70
+ <?php } ?>
71
+
72
+ <?php if( !$status['download'] & !$commercial ){ ?>
73
+ <a href="#"
74
+ data-code="<?php echo $code;?>"
75
+ data-slug="<?php echo $slug;?>"
76
+ data-download="<?php echo $downloadUrl; ?>"
77
+ data-activate="<?php echo $activateUrl; ?>"
78
+ data-deactivate="<?php echo $deactivateUrl; ?>"
79
+ data-information="<?php echo $informationUrl; ?>"
80
+ class="button button-primary addon-button addon-download"
81
+ >
82
+ <span class="dashicons dashicons-update icon-loading icon-loading-hide"></span>
83
+ <span class="dashicons dashicons-yes icon-loading icon-loading-hide"></span>
84
+
85
+ <span class="text"> <?php _e('Install Now'); ?> </span>
86
+ </a>
87
+ <?php } ?>
88
+
89
+ <?php if( $commercial && !$status['download'] ){ ?>
90
+ <a
91
+ href="<?php echo $url;?>"
92
+ class="button button-primary addon-button addon-link"
93
+ >
94
+ <span class="dashicons dashicons-update icon-loading icon-loading-hide"></span>
95
+ <span class="dashicons dashicons-yes icon-loading icon-loading-hide"></span>
96
+
97
+ <span class="text"> <?php echo __('Purchase'); ?></span>
98
+ </a>
99
+ <?php } ?>
100
+
101
+ <div class="addon-desc"><?php _e($desc); ?></div>
102
+
103
+ </div>
104
+ <div class="download-error" style="display: none;">
105
+ <?php echo sprintf( __("Oops ... Something went wrong. Wordpress don't able to download add-on. Please try again later or download it manually from <a class='thickbox open-plugin-details-modal' href='%s'>[here]</a>. In the case if this situation repeat contact our [support team]",'robo-gallery'), $informationUrl ); ?>
106
+ </div>
app/extensions/manager/templates/addons.tpl.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <style>
2
+
3
+ </style>
4
+ <div class="wrap rbs-gallery-addon-wrap">
5
+ <h1>
6
+ <?php printf( __( '%s Add-ons', 'yo-gallery' ), rbsGalleryBrand::getPluginName() ); ?>
7
+ <span class="spinner"></span>
8
+ </h1>
9
+
10
+ <div class="rbs-gallery-addon-text">
11
+ <?php printf( __( "Add-ons for %s it's even more awesome functionality and flexibility for the core gallery plugin.", 'yo-gallery' ), rbsGalleryBrand::getPluginName() ); ?>
12
+ </div>
13
+
14
+ <h2 class="rbs-gallery-nav-tabs nav-tab-wrapper">
15
+ <?php
16
+ foreach ( $categories as $category_slug => $category ) {
17
+ echo "<a href=\"#{$category_slug}\" class=\"nav-tab nav-tab-{$category_slug}\">{$category['name']}</a>";
18
+ }
19
+ ?>
20
+ <?php if(2==3){ ?>
21
+ <div class="rbs-gallery-addons-labels">
22
+ <span class='twoj-addon-label addon-menu' data-category="menu"> <?php _e( 'Menu', 'yo-gallery' ); ?></span>
23
+ <span class='twoj-addon-label addon-lightbox' data-category="lightbox"> <?php _e( 'Lightbox', 'yo-gallery' ); ?></span>
24
+ <span class='twoj-addon-label addon-navigation' data-category="navigation"> <?php _e( 'Navigation', 'yo-gallery' ); ?></span>
25
+ </div>
26
+ <?php } ?>
27
+ </h2>
28
+ </div>
29
+
30
+ <div class="rbs-gallery-addon-browser rbs-gallery-addon-items">
31
+ <div class="extensions">
32
+ <?php echo $addons; ?>
33
+ </div>
34
+ </div>
includes/extensions/backup/backup.init.php CHANGED
@@ -40,7 +40,7 @@ if(!function_exists('rbs_gallery_full_export')){
40
  }
41
 
42
  $info = pathinfo($exportFileName);
43
- if (!$info["extension"]){
44
  $exportFileName.='.zip';
45
  }
46
 
@@ -77,7 +77,7 @@ if(!function_exists('rbs_gallery_export')){
77
  }
78
 
79
  $info = pathinfo($exportFileName);
80
- if (!$info["extension"]){
81
  $exportFileName.='.xml';
82
  }
83
 
40
  }
41
 
42
  $info = pathinfo($exportFileName);
43
+ if ( !isset($info["extension"]) || !$info["extension"] ){
44
  $exportFileName.='.zip';
45
  }
46
 
77
  }
78
 
79
  $info = pathinfo($exportFileName);
80
+ if ( !isset($info["extension"]) || !$info["extension"] ){
81
  $exportFileName.='.xml';
82
  }
83
 
includes/rbs_gallery_init.php CHANGED
@@ -15,7 +15,7 @@
15
  if ( ! defined( 'ABSPATH' ) ) exit;
16
 
17
  define( "ROBO_GALLERY_PREFIX", 'rsg_');
18
- define( "ROBO_GALLERY_TYPE_POST", 'robo_gallery_table');
19
 
20
  define( "ROBO_GALLERY_ICON_PRO", '<button type="button" class="btn btn-danger btn-xs rbs-label-pro">Pro</button>');
21
  define( "ROBO_GALLERY_LABEL_PRO", '<span>'.__( 'Available in', 'robo-gallery' ).'</span> '.ROBO_GALLERY_ICON_PRO);
@@ -182,8 +182,11 @@ if(!function_exists('rbs_gallery_main_init')){
182
  rbs_gallery_include('rbs_create_post_ajax.php', ROBO_GALLERY_EXTENSIONS_PATH);
183
 
184
  /* Init function */
185
- /* backup init */
186
- rbs_gallery_include('backup/backup.init.php', ROBO_GALLERY_EXTENSIONS_PATH);
 
 
 
187
  /* category init */
188
  if(
189
  !get_option(ROBO_GALLERY_PREFIX.'categoryShow', 0) &&
@@ -194,8 +197,11 @@ if(!function_exists('rbs_gallery_main_init')){
194
 
195
  rbs_gallery_include('categoryPage/category.init.php', ROBO_GALLERY_EXTENSIONS_PATH);
196
 
197
- /* stats init */
198
- rbs_gallery_include('stats/stats.init.php', ROBO_GALLERY_EXTENSIONS_PATH);
 
 
 
199
  }
200
  }
201
 
15
  if ( ! defined( 'ABSPATH' ) ) exit;
16
 
17
  define( "ROBO_GALLERY_PREFIX", 'rsg_');
18
+
19
 
20
  define( "ROBO_GALLERY_ICON_PRO", '<button type="button" class="btn btn-danger btn-xs rbs-label-pro">Pro</button>');
21
  define( "ROBO_GALLERY_LABEL_PRO", '<span>'.__( 'Available in', 'robo-gallery' ).'</span> '.ROBO_GALLERY_ICON_PRO);
182
  rbs_gallery_include('rbs_create_post_ajax.php', ROBO_GALLERY_EXTENSIONS_PATH);
183
 
184
  /* Init function */
185
+
186
+ /* backup init */
187
+ if( get_option( ROBO_GALLERY_OPTIONS.'addon_backup', 0 ) ){
188
+ rbs_gallery_include('backup/backup.init.php', ROBO_GALLERY_EXTENSIONS_PATH);
189
+ }
190
  /* category init */
191
  if(
192
  !get_option(ROBO_GALLERY_PREFIX.'categoryShow', 0) &&
197
 
198
  rbs_gallery_include('categoryPage/category.init.php', ROBO_GALLERY_EXTENSIONS_PATH);
199
 
200
+
201
+ /* stats init */
202
+ if( get_option( ROBO_GALLERY_OPTIONS.'addon_stats', 0 ) ){
203
+ rbs_gallery_include('stats/stats.init.php', ROBO_GALLERY_EXTENSIONS_PATH);
204
+ }
205
  }
206
  }
207
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://robosoft.co/robogallery
4
  Tags: gallery, photo gallery, image gallery, wordpress gallery plugin, responsive gallery
5
  Requires at least: 3.3
6
  Tested up to: 4.9
7
- Stable tag: 2.7.14
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -37,22 +37,22 @@ Robo Gallery is advanced responsive photo gallery plugin. Flexible gallery image
37
 
38
  = Gallery Key Features =
39
 
40
- * **Fully responsive gallery and Mobile features** - advanced responsive gallery. Gallery implemented with advanced settings for different devices screen size.
41
  * **Fade effects** - one of the gallery hover animation it's classic fade effect.
42
  * **Batch images upload** - gallery have advanced media manager which allow to upload batch of the images by one click. Just drag and drop set of the gallery images and it's upload automatically to the server.
43
  * **Auto-resizing for thumbnails and images** - gallery media manager allow you make additional customization of the gallery images, like: rotation, flip, crop, manual resize.
44
- * **Customizable 15 hover effects** - all gallery hover effects working in cooperation with gallery interface configuration options. You can easily change style and colors of the hover animation elements.
45
  * **Implemented to avoid AJAX libs conflicts** - all gallery code implemented in native WordPress style as result our gallery don't have any conflicts and work really stable.
46
- * **Polaroid gallery** - with our gallery you can create Polaroid gallery just with few clicks.
47
- * **Advanced Polaroid Styles** - gallery images Polaroid gallery styles implemented with advanced functionality. Implemented left, right and centre Gallery images titles alignment. Polaroid gallery description panel of the gallery images background color selector. Polaroid gallery description panel text source.
48
- * **Build in colors selector** - in gallery you can easily change color of any gallery.
49
  * **Social sharing** - gallery lightbox support social sharing in twitter, facebook, google plus and pinterest.
50
  * **Build in borders and shadows settings** - gallery borders and shadows have advanced options for configuration design and style of this gallery interface elements.
51
  * **Font settings** - gallery have build in advanced text style editor options. With this options you can fully customize title, caption, description of the every gallery image
52
  * **Different resolutions** - gallery have implemented advanced size control options where you can define layout or fixed size for the gallery elements on different screen resolutions
53
  * **Implemented in native WordPress style using native classes** - gallery fully native for WordPress implemented without any hacks and tricks
54
- * **Multi Categories** - gallery implemented with multi categories gallery support. You can create your own galleries tree, depend of your needs
55
- * **Classic gallery layout** - layout of the gallery could have classic style or grid layout, every gallery on page could have own styles and settings
56
  * **Advanced pagination function** - pagination function of the gallery implemented in google load more style
57
  * **Work in IE, Firefox, Safari, Opera, Chrome** - gallery work properly in all latest versions of the popular browsers
58
  * **Lazy loading option** - in gallery implemented advanced lazy loading options, for the case when you have big sets of the gallery images you can define amount of the galleries images for the first load and for the next steps of the load more option
@@ -65,34 +65,34 @@ Robo Gallery is advanced responsive photo gallery plugin. Flexible gallery image
65
  * **Ability to insert gallery to the WordPress post, page, widget** - every gallery could be insert in to post, page or widget with build in shortcode tag or using wizard button - shortcode generator in post or page editor
66
  * **Gallery lightbox social buttons** - in gallery settings you can turn on/off social buttons
67
  * **Gallery lightbox background color** - in gallery lightbox settings you can change color of the background with comfortable color selector
68
- * **Gallery lightbox background transparency** - in gallery lightbox settings you can change transparency of the background with comfortable color selector
69
- * **Gallery lightbox font color** - in gallery lightbox settings you can change color of the font with comfortable color selector
70
- * **Gallery lightbox font transparency** - in gallery lightbox settings you can change transparency of the font with comfortable color selector
71
  * **Advanced Compatibility** - in our gallery we implement advanced compatibility options to avoid conflict with libraries of another plugins and theme. You can switch between modes to find properly value for your gallery and your case.
72
  * **Advanced Social Sharing** - advanced social sharing functionality in lightbox. Implemented deep linking functionality for the gallery images social sharing services Facebook, Twitter, Pinterest, Google+, VK
73
- * **Click Thumbnails** - advanced click functionality. You can use click on buttons or on the gallery thumbnails to enlarge gallery image or open gallery image link. With new functionality you can combine absolutely different features of the gallery clicking functionality.
74
  * **Gallery Alignment** - alignment of the photo gallery in post or page depend of your needs. You don't need to use HTML tags or some CSS tricks this function gonna help you to align your images gallery the way you need. Possible to select one from implemented alignment modes: left, right, center for images gallery alignment inside post or page content.
75
  * **Gallery Padding** - new padding options. Define custom values in pixels for padding gallery block in post or page content. Is it possible to define padding from left, right, top and bottom side.
76
- * **Post Generator** - new function for the automatically post creation with gallery tag inside it. Advanced gallery post manager implemented with additional functions for customization and management all your gallery posts in one place.
77
- * **Description Panel** - new gallery image description panel in lightbox, few different themes. Gallery settings make you able to change gallery panel theme styles. In gallery description panel you can define few content source. Gallery image title, gallery image caption or gallery image description.
78
  * **Swipe in Lightbox** - gallery lightbox support swipe effect on multiply mobile devices. Swipe properly work in lightbox for all gallery images. Tested for Android and iOS.
79
  * **Advanced Link Button Design** - gallery front end interface have link button. This button provide linking functionality on every gallery image thumbnail.
80
  This interface gallery button have wide range of the front end interface customization options. You can easily change this gallery button color, border and icon.
81
- * **Hover Description Template** - every gallery image contain description field. In additional parameters of the gallery image hover you can define some HTML or tags or build-in tags for customization of the gallery image description.
82
- * **Gallery Plugin Compatibility Settings** - in gallery settings you can customize general gallery plugin settings to avoid conflicts with another plugins or wordpress theme.
83
- * **Gallery Admin Interface Modes** - in gallery settings you can customize gallery plugin interface settings to avoid conflicts with another plugins.
84
- * **Video Gallery Links** - in gallery media manager every image have separate option for video gallery link. Video Gallery links could be specified to to the youtube or vimeo.
85
- * **Images Custom Ratio** - in gallery settings you can define custom ratio for every gallery. Every gallery could have personal settings for this option.
86
- * **Thumbnails Fade Effect** - in gallery implemented Fade effect for the hover of the gallery thumbnails. With such effect gallery hover animation become more attractive and eye catching.
87
- * **Advanced Load more function** - in gallery implemented very attractive navigation mode. Auto pre loading images like endless list of the gallery images. This gallery load more function have alot of customization options to make it work the way you need.
88
  * **SEO code optimization** - in gallery implemented few front end code output modes. One simplified mode with all core front end gallery code elements another mode with additional not visible elements. This option have additional modes. This SEO output modes give you default output mode, thumbnail, thumnails+links mode.
89
- * **Gallery Template** - in our gallery we have advanced templating engine for gallery images description. Every hover text of gallery image could be edit and customized with built-in templating options.
90
  * **Gallery Cache** - incredible new super cache option make your gallery load ten time faster. This function use absolutely new model of the images load. When you enable cache for big size gallery it's gonna be much faster and effective to use our plugin. Your visitors will be really surprised by the speed of the page load.
91
 
92
 
93
  = Gallery Pro Key Features =
94
 
95
- * **Tags for gallery images** - every gallery image contain description field. In additional parameters of the gallery image hover you can define some HTML or tags or build-in tags for customization of the gallery image description.
96
  * **Grid layout** - in gallery implemented not only classic gallery layout, but also grid layout for the modern style gallery with different size of the gallery thumbnails.
97
  * **Support Videos** - every gallery image have option where possible to define video link for every particular gallery image
98
  * **Smart Links** - in our gallery implemented smart gallery images links and video links parsing algorithm. Implemented auto detection links with turned off link navigation buttons
@@ -110,18 +110,6 @@ This interface gallery button have wide range of the front end interface customi
110
 
111
  > #### Useful Gallery Links
112
  >
113
- >[Multi Categories Cars Gallery Demo](https://robosoft.co/demo/gallery/cars-gallery-demo/)
114
- >
115
- >[Grid Layout Gallery Demo with Fade hover effect](https://robosoft.co/demo/gallery/custom-layout/)
116
- >
117
- >[Multi Categories Polaroid style Movie Gallery Demo with classic layout](https://robosoft.co/demo/gallery/gallery-demo-movie/)
118
- >
119
- >[Design Sketch Gallery Demo with grid layout](https://robosoft.co/demo/gallery/gallery-design/)
120
- >
121
- >[Multi Categories Gallery Demo with custom interface colors and classic layout](https://robosoft.co/demo/gallery/push-effect-demo/)
122
- >
123
- >[Video Gallery Demo with grid layout](https://robosoft.co/demo/gallery/design-video-gallery)
124
- >
125
  >[Technical Support for Robo Gallery](https://robosoft.co/robogallery)
126
  >
127
  >[Find More Details about Robo Gallery](https://robosoft.co/robogallery)
@@ -204,6 +192,13 @@ If any problem occurs, please contact us.
204
 
205
  == Changelog ==
206
 
 
 
 
 
 
 
 
207
  = 2.7.14 =
208
  * fix of the image manager addditional fields values validation
209
 
@@ -410,6 +405,13 @@ If any problem occurs, please contact us.
410
 
411
  == Upgrade Notice ==
412
 
 
 
 
 
 
 
 
413
  = 2.7.14 =
414
  fix of the image manager addditional fields values validation
415
 
4
  Tags: gallery, photo gallery, image gallery, wordpress gallery plugin, responsive gallery
5
  Requires at least: 3.3
6
  Tested up to: 4.9
7
+ Stable tag: 2.8.0
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
10
 
37
 
38
  = Gallery Key Features =
39
 
40
+ * **Fully responsive gallery and Mobile features** - advanced responsive gallery. Plugin implemented with advanced settings for different devices screen size.
41
  * **Fade effects** - one of the gallery hover animation it's classic fade effect.
42
  * **Batch images upload** - gallery have advanced media manager which allow to upload batch of the images by one click. Just drag and drop set of the gallery images and it's upload automatically to the server.
43
  * **Auto-resizing for thumbnails and images** - gallery media manager allow you make additional customization of the gallery images, like: rotation, flip, crop, manual resize.
44
+ * **Customizable 15 hover effects** - all gallery hover effects working in cooperation with interface configuration options. You can easily change style and colors of the hover animation elements.
45
  * **Implemented to avoid AJAX libs conflicts** - all gallery code implemented in native WordPress style as result our gallery don't have any conflicts and work really stable.
46
+ * **Polaroid gallery** - with our plugin you can create Polaroid gallery just with few clicks.
47
+ * **Advanced Polaroid Styles** - Polaroid gallery styles implemented with advanced functionality. Implemented left, right and centre Gallery images titles alignment. Polaroid gallery description panel of the gallery images background color selector. Polaroid gallery description panel text source.
48
+ * **Build in colors selector** - in gallery you can easily change color of any interface element.
49
  * **Social sharing** - gallery lightbox support social sharing in twitter, facebook, google plus and pinterest.
50
  * **Build in borders and shadows settings** - gallery borders and shadows have advanced options for configuration design and style of this gallery interface elements.
51
  * **Font settings** - gallery have build in advanced text style editor options. With this options you can fully customize title, caption, description of the every gallery image
52
  * **Different resolutions** - gallery have implemented advanced size control options where you can define layout or fixed size for the gallery elements on different screen resolutions
53
  * **Implemented in native WordPress style using native classes** - gallery fully native for WordPress implemented without any hacks and tricks
54
+ * **Multi Categories** - gallery implemented with multi categories albums support. You can create your own galleries tree, depend of your needs
55
+ * **Classic gallery layout** - layout of the gallery could have classic style or grid layout, every item on page could have own styles and settings
56
  * **Advanced pagination function** - pagination function of the gallery implemented in google load more style
57
  * **Work in IE, Firefox, Safari, Opera, Chrome** - gallery work properly in all latest versions of the popular browsers
58
  * **Lazy loading option** - in gallery implemented advanced lazy loading options, for the case when you have big sets of the gallery images you can define amount of the galleries images for the first load and for the next steps of the load more option
65
  * **Ability to insert gallery to the WordPress post, page, widget** - every gallery could be insert in to post, page or widget with build in shortcode tag or using wizard button - shortcode generator in post or page editor
66
  * **Gallery lightbox social buttons** - in gallery settings you can turn on/off social buttons
67
  * **Gallery lightbox background color** - in gallery lightbox settings you can change color of the background with comfortable color selector
68
+ * **Lightbox background transparency** - in lightbox settings you can change transparency of the background with comfortable color selector
69
+ * **Lightbox font color** - in lightbox settings you can change color of the font with comfortable color selector
70
+ * **Lightbox font transparency** - in lightbox settings you can change transparency of the font with comfortable color selector
71
  * **Advanced Compatibility** - in our gallery we implement advanced compatibility options to avoid conflict with libraries of another plugins and theme. You can switch between modes to find properly value for your gallery and your case.
72
  * **Advanced Social Sharing** - advanced social sharing functionality in lightbox. Implemented deep linking functionality for the gallery images social sharing services Facebook, Twitter, Pinterest, Google+, VK
73
+ * **Click Thumbnails** - advanced click functionality. You can use click on buttons or on the gallery thumbnails to enlarge image or open image link. With new functionality you can combine absolutely different features of the gallery clicking functionality.
74
  * **Gallery Alignment** - alignment of the photo gallery in post or page depend of your needs. You don't need to use HTML tags or some CSS tricks this function gonna help you to align your images gallery the way you need. Possible to select one from implemented alignment modes: left, right, center for images gallery alignment inside post or page content.
75
  * **Gallery Padding** - new padding options. Define custom values in pixels for padding gallery block in post or page content. Is it possible to define padding from left, right, top and bottom side.
76
+ * **Post Generator** - new function for the automatically post creation with gallery tag inside it. Advanced post manager implemented with additional functions for customization and management all your gallery posts in one place.
77
+ * **Description Panel** - new gallery image description panel in lightbox, few different themes. Settings section make you able to change gallery panel theme styles. In gallery description panel you can define few content source. Image title, image caption or image description.
78
  * **Swipe in Lightbox** - gallery lightbox support swipe effect on multiply mobile devices. Swipe properly work in lightbox for all gallery images. Tested for Android and iOS.
79
  * **Advanced Link Button Design** - gallery front end interface have link button. This button provide linking functionality on every gallery image thumbnail.
80
  This interface gallery button have wide range of the front end interface customization options. You can easily change this gallery button color, border and icon.
81
+ * **Hover Description Template** - every gallery image contain description field. In additional parameters of the image hover you can define some HTML or tags or build-in tags for customization of the image description.
82
+ * **Gallery Plugin Compatibility Settings** - in gallery settings you can customize general plugin settings to avoid conflicts with another plugins or wordpress theme.
83
+ * **Gallery Admin Interface Modes** - in gallery settings you can customize plugin interface settings to avoid conflicts with another plugins.
84
+ * **Video Gallery Links** - in gallery media manager every image have separate option for video link. Video Gallery links could be specified to to the youtube or vimeo.
85
+ * **Images Custom Ratio** - in gallery settings you can define custom ratio for every picture. Every gallery could have personal settings for this option.
86
+ * **Thumbnails Fade Effect** - in gallery implemented Fade effect for the hover of the photo thumbnails. With such effect gallery hover animation become more attractive and eye catching.
87
+ * **Advanced Load more function** - in gallery implemented very attractive navigation mode. Auto pre loading images like endless list of the gallery images. Load more function have alot of customization options to make it work the way you need.
88
  * **SEO code optimization** - in gallery implemented few front end code output modes. One simplified mode with all core front end gallery code elements another mode with additional not visible elements. This option have additional modes. This SEO output modes give you default output mode, thumbnail, thumnails+links mode.
89
+ * **Gallery Template** - in our gallery we have advanced templating engine for images description. Every hover text of gallery image could be edit and customized with built-in templating options.
90
  * **Gallery Cache** - incredible new super cache option make your gallery load ten time faster. This function use absolutely new model of the images load. When you enable cache for big size gallery it's gonna be much faster and effective to use our plugin. Your visitors will be really surprised by the speed of the page load.
91
 
92
 
93
  = Gallery Pro Key Features =
94
 
95
+ * **Tags for gallery images** - every gallery image contain description field. In additional parameters of the image hover you can define some HTML or tags or build-in tags for customization of the image description.
96
  * **Grid layout** - in gallery implemented not only classic gallery layout, but also grid layout for the modern style gallery with different size of the gallery thumbnails.
97
  * **Support Videos** - every gallery image have option where possible to define video link for every particular gallery image
98
  * **Smart Links** - in our gallery implemented smart gallery images links and video links parsing algorithm. Implemented auto detection links with turned off link navigation buttons
110
 
111
  > #### Useful Gallery Links
112
  >
 
 
 
 
 
 
 
 
 
 
 
 
113
  >[Technical Support for Robo Gallery](https://robosoft.co/robogallery)
114
  >
115
  >[Find More Details about Robo Gallery](https://robosoft.co/robogallery)
192
 
193
  == Changelog ==
194
 
195
+ = 2.8.0 =
196
+ * fix of the backup notices
197
+ * fix of the export back up function
198
+ * Global modification of plugin structure, new add-ons section
199
+ * New backup add-on
200
+ * New statistics add-on
201
+
202
  = 2.7.14 =
203
  * fix of the image manager addditional fields values validation
204
 
405
 
406
  == Upgrade Notice ==
407
 
408
+ = 2.8.0 =
409
+ Fix of the backup notices
410
+ Fix of the export back up function
411
+ Global modification of plugin structure, new add-ons section
412
+ New backup add-on
413
+ New statistics add-on
414
+
415
  = 2.7.14 =
416
  fix of the image manager addditional fields values validation
417
 
robogallery.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Robo Gallery
4
  Plugin URI: https://robosoft.co/wordpress-gallery-plugin
5
  Description: Gallery modes photo gallery, images gallery, video gallery, Polaroid gallery, gallery lighbox, portfolio gallery, responsive gallery
6
- Version: 2.7.14
7
  Author: RoboSoft
8
  Author URI: https://robosoft.co/wordpress-gallery-plugin
9
  License: GPLv3 or later
@@ -15,7 +15,9 @@ if(!defined('WPINC'))die;
15
  if(!defined("ABSPATH"))exit;
16
 
17
  define("ROBO_GALLERY", 1);
18
- define("ROBO_GALLERY_VERSION", '2.7.14');
 
 
19
 
20
  if( !defined("ROBO_GALLERY_PATH") ) define("ROBO_GALLERY_PATH", plugin_dir_path( __FILE__ ));
21
 
@@ -53,6 +55,7 @@ if( $keyResult=rbs_gallery_pro_check() ){
53
  }
54
 
55
  define("ROBO_GALLERY_INCLUDES_PATH", ROBO_GALLERY_PATH.'includes/');
 
56
  define("ROBO_GALLERY_FRONTEND_PATH", ROBO_GALLERY_INCLUDES_PATH.'frontend/');
57
  define("ROBO_GALLERY_FRONTEND_EXT_PATH",ROBO_GALLERY_FRONTEND_PATH.'extensions/');
58
 
@@ -64,6 +67,13 @@ define("ROBO_GALLERY_CMB_FILEDS_PATH", ROBO_GALLERY_CMB_PATH.'fields/');
64
 
65
  define("ROBO_GALLERY_URL", plugin_dir_url( __FILE__ ));
66
 
 
 
 
 
 
 
 
67
  function activateRoboGallery() {
68
  require_once ROBO_GALLERY_INCLUDES_PATH.'rbs_class_activator.php';
69
  Robo_Gallery_Activator::activate();
3
  Plugin Name: Robo Gallery
4
  Plugin URI: https://robosoft.co/wordpress-gallery-plugin
5
  Description: Gallery modes photo gallery, images gallery, video gallery, Polaroid gallery, gallery lighbox, portfolio gallery, responsive gallery
6
+ Version: 2.8.0
7
  Author: RoboSoft
8
  Author URI: https://robosoft.co/wordpress-gallery-plugin
9
  License: GPLv3 or later
15
  if(!defined("ABSPATH"))exit;
16
 
17
  define("ROBO_GALLERY", 1);
18
+ define("ROBO_GALLERY_VERSION", '2.8.0');
19
+
20
+ define("ROBO_GALLERY_OPTIONS", 'rbs_opt_');
21
 
22
  if( !defined("ROBO_GALLERY_PATH") ) define("ROBO_GALLERY_PATH", plugin_dir_path( __FILE__ ));
23
 
55
  }
56
 
57
  define("ROBO_GALLERY_INCLUDES_PATH", ROBO_GALLERY_PATH.'includes/');
58
+
59
  define("ROBO_GALLERY_FRONTEND_PATH", ROBO_GALLERY_INCLUDES_PATH.'frontend/');
60
  define("ROBO_GALLERY_FRONTEND_EXT_PATH",ROBO_GALLERY_FRONTEND_PATH.'extensions/');
61
 
67
 
68
  define("ROBO_GALLERY_URL", plugin_dir_url( __FILE__ ));
69
 
70
+ define( "ROBO_GALLERY_TYPE_POST", 'robo_gallery_table');
71
+
72
+ /* version 3 */
73
+ define("ROBO_GALLERY_APP_PATH", ROBO_GALLERY_PATH.'app/');
74
+ require_once ROBO_GALLERY_APP_PATH.'app.php';
75
+
76
+
77
  function activateRoboGallery() {
78
  require_once ROBO_GALLERY_INCLUDES_PATH.'rbs_class_activator.php';
79
  Robo_Gallery_Activator::activate();