Version Description
- Advanced gallery sorting options, new sorting management options
Download this release
Release Info
Developer | robosoft |
Plugin | Gallery – Photo Gallery and Images Gallery |
Version | 2.6.21 |
Comparing to | |
See all releases |
Code changes from version 2.6.20 to 2.6.21
- css/admin/info.css +1 -1
- css/admin/topblock.css +1 -1
- includes/extensions/category/css/style.css +4 -0
- includes/extensions/category/js/script.js +13 -2
- includes/extensions/categoryPage/category.class.php +246 -0
- includes/extensions/categoryPage/category.init.php +23 -0
- includes/extensions/categoryPage/css/index.html +0 -0
- includes/extensions/categoryPage/css/style.css +161 -0
- includes/extensions/categoryPage/index.html +0 -0
- includes/extensions/categoryPage/js/index.html +0 -0
- includes/extensions/categoryPage/js/jquery.nestable.js +484 -0
- includes/extensions/categoryPage/js/script.js +92 -0
- includes/rbs_gallery_init.php +13 -1
- includes/rbs_gallery_menu.php +14 -0
- readme.txt +14 -9
- robogallery.php +3 -3
css/admin/info.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
/*
|
1 |
+
/*
|
css/admin/topblock.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
/*
|
2 |
.gb-admin-notice, .fs-notice{ display:none !important; }
|
1 |
+
/*
|
2 |
.gb-admin-notice, .fs-notice{ display:none !important; }
|
includes/extensions/category/css/style.css
CHANGED
@@ -159,3 +159,7 @@
|
|
159 |
left: 50%;
|
160 |
margin: -20px 0 0 -20px;
|
161 |
}
|
|
|
|
|
|
|
|
159 |
left: 50%;
|
160 |
margin: -20px 0 0 -20px;
|
161 |
}
|
162 |
+
|
163 |
+
.nestable-list .dd-handle:hover{
|
164 |
+
cursor: pointer;
|
165 |
+
}
|
includes/extensions/category/js/script.js
CHANGED
@@ -4,19 +4,25 @@
|
|
4 |
this.$edit = null;
|
5 |
this.postId = null;
|
6 |
this.postType = null;
|
|
|
7 |
|
8 |
this.init();
|
9 |
}
|
10 |
AttributeMetaBox.prototype = {
|
11 |
init: function () {
|
12 |
var self = this;
|
|
|
|
|
13 |
|
14 |
self.$edit = self.$element.find('button.edit');
|
15 |
self.postId = self.$edit.data('post_id');
|
16 |
self.postType = self.$edit.data('post_type');
|
17 |
|
18 |
self.$edit.click(function() {
|
19 |
-
|
|
|
|
|
|
|
20 |
});
|
21 |
},
|
22 |
edit: function () {
|
@@ -24,13 +30,17 @@
|
|
24 |
|
25 |
new DialogEdit({
|
26 |
postType: this.postType,
|
27 |
-
callbackSave: function() {
|
|
|
|
|
28 |
});
|
29 |
|
30 |
return false;
|
31 |
},
|
32 |
update: function () {
|
33 |
var self = this;
|
|
|
|
|
34 |
|
35 |
$.ajax({
|
36 |
url: hierarchyPostAttributes.ajaxUrl,
|
@@ -143,6 +153,7 @@
|
|
143 |
}
|
144 |
},
|
145 |
destroy: function () {
|
|
|
146 |
this.$element.dialog('close');
|
147 |
this.$element.remove();
|
148 |
}
|
4 |
this.$edit = null;
|
5 |
this.postId = null;
|
6 |
this.postType = null;
|
7 |
+
window['catDialogClick'] = 0;
|
8 |
|
9 |
this.init();
|
10 |
}
|
11 |
AttributeMetaBox.prototype = {
|
12 |
init: function () {
|
13 |
var self = this;
|
14 |
+
|
15 |
+
|
16 |
|
17 |
self.$edit = self.$element.find('button.edit');
|
18 |
self.postId = self.$edit.data('post_id');
|
19 |
self.postType = self.$edit.data('post_type');
|
20 |
|
21 |
self.$edit.click(function() {
|
22 |
+
if( window['catDialogClick'] == 0 ){
|
23 |
+
window['catDialogClick'] = 1;
|
24 |
+
return self.edit();
|
25 |
+
}
|
26 |
});
|
27 |
},
|
28 |
edit: function () {
|
30 |
|
31 |
new DialogEdit({
|
32 |
postType: this.postType,
|
33 |
+
callbackSave: function() {
|
34 |
+
self.update();
|
35 |
+
}
|
36 |
});
|
37 |
|
38 |
return false;
|
39 |
},
|
40 |
update: function () {
|
41 |
var self = this;
|
42 |
+
|
43 |
+
window['catDialogClick'] = 0;
|
44 |
|
45 |
$.ajax({
|
46 |
url: hierarchyPostAttributes.ajaxUrl,
|
153 |
}
|
154 |
},
|
155 |
destroy: function () {
|
156 |
+
window['catDialogClick'] = 0;
|
157 |
this.$element.dialog('close');
|
158 |
this.$element.remove();
|
159 |
}
|
includes/extensions/categoryPage/category.class.php
ADDED
@@ -0,0 +1,246 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Robo Gallery
|
4 |
+
* Version: 1.0
|
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 |
+
* Copyright (c) 2014-2016, Robosoft. All rights reserved.
|
12 |
+
* Available only in https://robosoft.co/robogallery/
|
13 |
+
*/
|
14 |
+
|
15 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
16 |
+
|
17 |
+
class ROBO_GALLERY_CATEGORY_PAGE{
|
18 |
+
|
19 |
+
protected $postType;
|
20 |
+
|
21 |
+
protected $postTypeParams;
|
22 |
+
|
23 |
+
protected $assetsUri;
|
24 |
+
|
25 |
+
protected $currentPostOrder;
|
26 |
+
|
27 |
+
public function __construct($postType){ //, array $postTypeParams
|
28 |
+
|
29 |
+
$this->postType = $postType;
|
30 |
+
$this->postTypeParams = array();
|
31 |
+
//$this->postTypeParams = $postTypeParams;
|
32 |
+
$this->assetsUri = plugin_dir_url(__FILE__);
|
33 |
+
|
34 |
+
|
35 |
+
$this->enqueueScripts();
|
36 |
+
// add_action("wp_ajax_hierarchy_{$this->postType}_meta_box", array($this, 'ajaxMetaBoxAttributes'));
|
37 |
+
|
38 |
+
//add_action("wp_ajax_hierarchy_{$this->postType}_dialog", array($this, 'ajaxDialog'));
|
39 |
+
|
40 |
+
$this->ajaxDialog ();
|
41 |
+
|
42 |
+
add_action("wp_ajax_hierarchy_{$this->postType}_dialog_save", array($this, 'ajaxDialogSave'));
|
43 |
+
|
44 |
+
}
|
45 |
+
|
46 |
+
|
47 |
+
|
48 |
+
|
49 |
+
public function enqueueScripts(){
|
50 |
+
wp_enqueue_style('wp-jquery-ui-dialog');
|
51 |
+
wp_enqueue_style(
|
52 |
+
'hierarchy-post-attributes-style',
|
53 |
+
$this->assetsUri . 'css/style.css',
|
54 |
+
array('wp-jquery-ui-dialog')
|
55 |
+
);
|
56 |
+
|
57 |
+
wp_enqueue_script('jquery-ui-dialog');
|
58 |
+
wp_enqueue_script(
|
59 |
+
'hierarchy-post-attributes-nestable-js',
|
60 |
+
$this->assetsUri . 'js/jquery.nestable.js',
|
61 |
+
array('jquery-ui-dialog'),
|
62 |
+
false,
|
63 |
+
true
|
64 |
+
);
|
65 |
+
wp_enqueue_script(
|
66 |
+
'hierarchy-post-attributes-js',
|
67 |
+
$this->assetsUri . 'js/script.js',
|
68 |
+
array('jquery-ui-dialog', 'hierarchy-post-attributes-nestable-js'),
|
69 |
+
false,
|
70 |
+
true
|
71 |
+
);
|
72 |
+
|
73 |
+
$postTypeObject = get_post_type_object($this->postType);
|
74 |
+
wp_localize_script(
|
75 |
+
'hierarchy-post-attributes-js',
|
76 |
+
'hierarchyPostAttributes',
|
77 |
+
array(
|
78 |
+
'ajaxUrl' => admin_url('admin-ajax.php'),
|
79 |
+
'metaBox' => array(
|
80 |
+
'action' => array(
|
81 |
+
'get' => "hierarchy_{$this->postType}_meta_box"
|
82 |
+
)
|
83 |
+
),
|
84 |
+
'dialog' => array(
|
85 |
+
'title' => __(sprintf('Edit hierarchy of %s', $postTypeObject->labels->name)),
|
86 |
+
'button' => array(
|
87 |
+
'save' => array(
|
88 |
+
'label' => __('Save')
|
89 |
+
),
|
90 |
+
'cancel' => array(
|
91 |
+
'label' => __('Cancel')
|
92 |
+
)
|
93 |
+
),
|
94 |
+
'action' => array(
|
95 |
+
'get' => "hierarchy_{$this->postType}_dialog",
|
96 |
+
'save' => "hierarchy_{$this->postType}_dialog_save",
|
97 |
+
),
|
98 |
+
),
|
99 |
+
'error' => array(
|
100 |
+
'title' => __('Error'),
|
101 |
+
'button' => array(
|
102 |
+
'ok' => array(
|
103 |
+
'label' => __('OK')
|
104 |
+
),
|
105 |
+
)
|
106 |
+
)
|
107 |
+
)
|
108 |
+
);
|
109 |
+
}
|
110 |
+
|
111 |
+
|
112 |
+
|
113 |
+
|
114 |
+
|
115 |
+
|
116 |
+
public function ajaxDialog() {
|
117 |
+
$this->checkPermission();
|
118 |
+
|
119 |
+
$postTree = $this->getPostTree(ROBO_GALLERY_TYPE_POST);
|
120 |
+
?>
|
121 |
+
<p>
|
122 |
+
<button class="save_category button button-primary"> Save</button>
|
123 |
+
</p>
|
124 |
+
<div class="wrapper-nestable-list" >
|
125 |
+
<div class="nestable-list dd">
|
126 |
+
<?php $this->theNestableList($postTree); ?>
|
127 |
+
</div>
|
128 |
+
<div class="nestable-list-spinner">
|
129 |
+
<img src="<?php echo admin_url('/images/spinner-2x.gif') ?>" />
|
130 |
+
</div>
|
131 |
+
</div>
|
132 |
+
<button class="save_category button button-primary"> Save</button>
|
133 |
+
<?php
|
134 |
+
|
135 |
+
//wp_die();
|
136 |
+
}
|
137 |
+
|
138 |
+
public function ajaxDialogSave() {
|
139 |
+
$this->checkPermission();
|
140 |
+
|
141 |
+
if (!isset($_POST['hierarchy_posts'])) {
|
142 |
+
header('HTTP/1.0 403 Forbidden');
|
143 |
+
echo 'Empty posts hierarchy data for saving';
|
144 |
+
die();
|
145 |
+
}
|
146 |
+
if (!is_array($_POST['hierarchy_posts'])) {
|
147 |
+
header('HTTP/1.0 403 Forbidden');
|
148 |
+
echo 'Wrong posts hierarchy data for saving';
|
149 |
+
die();
|
150 |
+
}
|
151 |
+
|
152 |
+
$hierarchyPosts = $_POST['hierarchy_posts'];
|
153 |
+
$this->currentPostOrder = 0;
|
154 |
+
foreach ($hierarchyPosts as $order => $postData) {
|
155 |
+
$this->updatePostHierarchy($postData);
|
156 |
+
}
|
157 |
+
}
|
158 |
+
|
159 |
+
|
160 |
+
protected function getPostTree($postType){
|
161 |
+
$args = array(
|
162 |
+
'post_type' => $postType,
|
163 |
+
'post_status' => 'publish',
|
164 |
+
'posts_per_page' => -1,
|
165 |
+
'orderby' => 'menu_order',
|
166 |
+
'order' => 'ASC'
|
167 |
+
);
|
168 |
+
$postMap = array();
|
169 |
+
$postTree = array();
|
170 |
+
|
171 |
+
foreach (get_posts($args) as $post) {
|
172 |
+
if (isset($postMap[$post->ID])) {
|
173 |
+
$postMap[$post->ID]['post'] = $post;
|
174 |
+
$postData = &$postMap[$post->ID];
|
175 |
+
} else {
|
176 |
+
$postData = array('post' => $post, 'children' => array());
|
177 |
+
$postMap[$post->ID] = &$postData;
|
178 |
+
}
|
179 |
+
if (0 == $post->post_parent) {
|
180 |
+
$postTree["{$post->menu_order}-{$post->ID}"] = &$postData;
|
181 |
+
} else {
|
182 |
+
$postMap[$post->post_parent]['children'][$post->ID] = &$postData;
|
183 |
+
}
|
184 |
+
unset($postData);
|
185 |
+
}
|
186 |
+
|
187 |
+
// Adding children posts with lost parent to tree
|
188 |
+
foreach ($postMap as &$postData) {
|
189 |
+
if (!isset($postData['post']) && is_array($postData['children'])) {
|
190 |
+
foreach ($postData['children'] as &$childPostData) {
|
191 |
+
$childPost = $childPostData['post'];
|
192 |
+
$postTree["{$childPost->menu_order}-{$childPost->ID}"] = &$childPostData;
|
193 |
+
}
|
194 |
+
}
|
195 |
+
}
|
196 |
+
asort($postTree);
|
197 |
+
|
198 |
+
return $postTree;
|
199 |
+
}
|
200 |
+
|
201 |
+
|
202 |
+
protected function theNestableList(array $tree){
|
203 |
+
?>
|
204 |
+
<ol class="dd-list">
|
205 |
+
<?php foreach ($tree as $item) : ?>
|
206 |
+
<li class="dd-item" data-id="<?php echo $item['post']->ID; ?>">
|
207 |
+
<div class="dd-handle">
|
208 |
+
<?php
|
209 |
+
$title = esc_attr($item['post']->post_title);
|
210 |
+
echo "{$title} [{$item['post']->ID}: {$item['post']->post_name}]" ; ?>
|
211 |
+
</div>
|
212 |
+
<?php if (!empty($item['children'])) : ?>
|
213 |
+
<?php $this->theNestableList($item['children']); ?>
|
214 |
+
<?php endif; ?>
|
215 |
+
</li>
|
216 |
+
<?php endforeach; ?>
|
217 |
+
</ol>
|
218 |
+
<?php
|
219 |
+
}
|
220 |
+
|
221 |
+
|
222 |
+
protected function checkPermission(){
|
223 |
+
$postTypeObject = get_post_type_object($this->postType);
|
224 |
+
if (!current_user_can($postTypeObject->cap->edit_posts)) {
|
225 |
+
header('HTTP/1.0 403 Forbidden');
|
226 |
+
echo sprintf("You don't have permission for editing this %s", $postTypeObject->labels->name);
|
227 |
+
die();
|
228 |
+
}
|
229 |
+
}
|
230 |
+
|
231 |
+
|
232 |
+
protected function updatePostHierarchy($postData, $parentId = 0){
|
233 |
+
$this->currentPostOrder++;
|
234 |
+
wp_update_post(array(
|
235 |
+
'ID' => absint($postData['id']),
|
236 |
+
'post_parent' => absint($parentId),
|
237 |
+
'menu_order' => $this->currentPostOrder
|
238 |
+
));
|
239 |
+
|
240 |
+
if (!empty($postData['children'])) {
|
241 |
+
foreach ($postData['children'] as $childPostData) {
|
242 |
+
$this->updatePostHierarchy($childPostData, $postData['id']);
|
243 |
+
}
|
244 |
+
}
|
245 |
+
}
|
246 |
+
}
|
includes/extensions/categoryPage/category.init.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
* Robo Gallery
|
4 |
+
* Version: 1.0
|
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 |
+
* Copyright (c) 2014-2016, Robosoft. All rights reserved.
|
12 |
+
* Available only in https://robosoft.co/robogallery/
|
13 |
+
*/
|
14 |
+
|
15 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
16 |
+
|
17 |
+
/*if(!function_exists('rbs_gallery_category_init')){
|
18 |
+
function rbs_gallery_category_init(){*/
|
19 |
+
rbs_gallery_include('category.class.php', plugin_dir_path( __FILE__ ) );
|
20 |
+
new ROBO_GALLERY_CATEGORY_PAGE( ROBO_GALLERY_TYPE_POST );
|
21 |
+
/* }
|
22 |
+
add_action( 'init', 'rbs_gallery_category_init' );
|
23 |
+
}*/
|
includes/extensions/categoryPage/css/index.html
ADDED
File without changes
|
includes/extensions/categoryPage/css/style.css
ADDED
@@ -0,0 +1,161 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.nestable-list.dd,
|
2 |
+
.nestable-list .dd {
|
3 |
+
position: relative;
|
4 |
+
display: block;
|
5 |
+
margin: 0;
|
6 |
+
padding: 0;
|
7 |
+
list-style: none;
|
8 |
+
font-size: 13px;
|
9 |
+
line-height: 20px;
|
10 |
+
}
|
11 |
+
|
12 |
+
.nestable-list .dd-list {
|
13 |
+
display: block;
|
14 |
+
position: relative;
|
15 |
+
margin: 0;
|
16 |
+
padding: 0;
|
17 |
+
list-style: none;
|
18 |
+
}
|
19 |
+
|
20 |
+
.nestable-list .dd-list .dd-list {
|
21 |
+
padding-left: 30px;
|
22 |
+
}
|
23 |
+
|
24 |
+
.nestable-list .dd-collapsed .dd-list {
|
25 |
+
display: none;
|
26 |
+
}
|
27 |
+
|
28 |
+
.nestable-list .dd-item,
|
29 |
+
.nestable-list .dd-empty,
|
30 |
+
.nestable-list .dd-placeholder {
|
31 |
+
display: block;
|
32 |
+
position: relative;
|
33 |
+
margin: 0;
|
34 |
+
padding: 0;
|
35 |
+
min-height: 20px;
|
36 |
+
font-size: 13px;
|
37 |
+
line-height: 20px;
|
38 |
+
}
|
39 |
+
|
40 |
+
.nestable-list .dd-handle {
|
41 |
+
display: block;
|
42 |
+
height: 30px;
|
43 |
+
margin: 5px 0;
|
44 |
+
padding: 5px 10px;
|
45 |
+
color: #333;
|
46 |
+
text-decoration: none;
|
47 |
+
font-weight: bold;
|
48 |
+
border: 1px solid #ccc;
|
49 |
+
background: #fafafa;
|
50 |
+
background: -webkit-linear-gradient(top, #fafafa 0%, #eee 100%);
|
51 |
+
background: -moz-linear-gradient(top, #fafafa 0%, #eee 100%);
|
52 |
+
background: linear-gradient(top, #fafafa 0%, #eee 100%);
|
53 |
+
-webkit-border-radius: 3px;
|
54 |
+
border-radius: 3px;
|
55 |
+
box-sizing: border-box;
|
56 |
+
-moz-box-sizing: border-box;
|
57 |
+
}
|
58 |
+
|
59 |
+
.nestable-list .dd-handle:hover {
|
60 |
+
color: #2ea8e5;
|
61 |
+
background: #fff;
|
62 |
+
}
|
63 |
+
|
64 |
+
.nestable-list .dd-item > button {
|
65 |
+
display: block;
|
66 |
+
position: relative;
|
67 |
+
cursor: pointer;
|
68 |
+
float: left;
|
69 |
+
width: 25px;
|
70 |
+
height: 20px;
|
71 |
+
margin: 5px 0;
|
72 |
+
padding: 0;
|
73 |
+
text-indent: 100%;
|
74 |
+
white-space: nowrap;
|
75 |
+
overflow: hidden;
|
76 |
+
border: 0;
|
77 |
+
background: transparent;
|
78 |
+
font-size: 12px;
|
79 |
+
line-height: 1;
|
80 |
+
text-align: center;
|
81 |
+
font-weight: bold;
|
82 |
+
}
|
83 |
+
|
84 |
+
.nestable-list .dd-item > button:before {
|
85 |
+
content: '+';
|
86 |
+
display: block;
|
87 |
+
position: absolute;
|
88 |
+
width: 100%;
|
89 |
+
text-align: center;
|
90 |
+
text-indent: 0;
|
91 |
+
}
|
92 |
+
|
93 |
+
.nestable-list .dd-item > button[data-action="collapse"]:before {
|
94 |
+
content: '-';
|
95 |
+
}
|
96 |
+
|
97 |
+
.nestable-list .dd-placeholder,
|
98 |
+
.nestable-list .dd-empty {
|
99 |
+
margin: 5px 0;
|
100 |
+
padding: 0;
|
101 |
+
min-height: 30px;
|
102 |
+
background: #f2fbff;
|
103 |
+
border: 1px dashed #b6bcbf;
|
104 |
+
box-sizing: border-box;
|
105 |
+
-moz-box-sizing: border-box;
|
106 |
+
}
|
107 |
+
|
108 |
+
.nestable-list .dd-empty {
|
109 |
+
border: 1px dashed #bbb;
|
110 |
+
min-height: 100px;
|
111 |
+
background-color: #e5e5e5;
|
112 |
+
background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
|
113 |
+
-webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
|
114 |
+
background-image: -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
|
115 |
+
-moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
|
116 |
+
background-image: linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff),
|
117 |
+
linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
|
118 |
+
background-size: 60px 60px;
|
119 |
+
background-position: 0 0, 30px 30px;
|
120 |
+
}
|
121 |
+
|
122 |
+
.nestable-list .dd-dragel {
|
123 |
+
position: absolute;
|
124 |
+
pointer-events: none;
|
125 |
+
z-index: 9999;
|
126 |
+
}
|
127 |
+
|
128 |
+
.nestable-list .dd-dragel > .dd-item .dd-handle {
|
129 |
+
margin-top: 0;
|
130 |
+
}
|
131 |
+
|
132 |
+
.nestable-list .dd-dragel .dd-handle {
|
133 |
+
-webkit-box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, .1);
|
134 |
+
box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, .1);
|
135 |
+
}
|
136 |
+
|
137 |
+
/* EXTRA STYLE */
|
138 |
+
#hierarchy-post-attributes-metabox .actions {
|
139 |
+
text-align: right;
|
140 |
+
}
|
141 |
+
|
142 |
+
.wrapper-nestable-list {
|
143 |
+
position: relative;
|
144 |
+
width: 100%;
|
145 |
+
height: 100%;
|
146 |
+
}
|
147 |
+
.nestable-list-spinner {
|
148 |
+
display: none;
|
149 |
+
position: absolute;
|
150 |
+
top: 0;
|
151 |
+
left: 0;
|
152 |
+
width: 100%;
|
153 |
+
height: 100%;
|
154 |
+
background: rgba(255, 255, 255, 0.5);
|
155 |
+
}
|
156 |
+
.nestable-list-spinner img {
|
157 |
+
position: absolute;
|
158 |
+
top: 50%;
|
159 |
+
left: 50%;
|
160 |
+
margin: -20px 0 0 -20px;
|
161 |
+
}
|
includes/extensions/categoryPage/index.html
ADDED
File without changes
|
includes/extensions/categoryPage/js/index.html
ADDED
File without changes
|
includes/extensions/categoryPage/js/jquery.nestable.js
ADDED
@@ -0,0 +1,484 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Nestable jQuery Plugin - Copyright (c) 2012 David Bushell - http://dbushell.com/
|
3 |
+
* Dual-licensed under the BSD or MIT licenses
|
4 |
+
*/
|
5 |
+
;(function($, window, document, undefined)
|
6 |
+
{
|
7 |
+
var hasTouch = 'ontouchstart' in document;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Detect CSS pointer-events property
|
11 |
+
* events are normally disabled on the dragging element to avoid conflicts
|
12 |
+
* https://github.com/ausi/Feature-detection-technique-for-pointer-events/blob/master/modernizr-pointerevents.js
|
13 |
+
*/
|
14 |
+
var hasPointerEvents = (function()
|
15 |
+
{
|
16 |
+
var el = document.createElement('div'),
|
17 |
+
docEl = document.documentElement;
|
18 |
+
if (!('pointerEvents' in el.style)) {
|
19 |
+
return false;
|
20 |
+
}
|
21 |
+
el.style.pointerEvents = 'auto';
|
22 |
+
el.style.pointerEvents = 'x';
|
23 |
+
docEl.appendChild(el);
|
24 |
+
var supports = window.getComputedStyle && window.getComputedStyle(el, '').pointerEvents === 'auto';
|
25 |
+
docEl.removeChild(el);
|
26 |
+
return !!supports;
|
27 |
+
})();
|
28 |
+
|
29 |
+
var defaults = {
|
30 |
+
listNodeName : 'ol',
|
31 |
+
itemNodeName : 'li',
|
32 |
+
rootClass : 'dd',
|
33 |
+
listClass : 'dd-list',
|
34 |
+
itemClass : 'dd-item',
|
35 |
+
dragClass : 'dd-dragel',
|
36 |
+
handleClass : 'dd-handle',
|
37 |
+
collapsedClass : 'dd-collapsed',
|
38 |
+
placeClass : 'dd-placeholder',
|
39 |
+
noDragClass : 'dd-nodrag',
|
40 |
+
emptyClass : 'dd-empty',
|
41 |
+
expandBtnHTML : '<button data-action="expand" type="button">Expand</button>',
|
42 |
+
collapseBtnHTML : '<button data-action="collapse" type="button">Collapse</button>',
|
43 |
+
group : 0,
|
44 |
+
maxDepth : 5,
|
45 |
+
threshold : 20
|
46 |
+
};
|
47 |
+
|
48 |
+
function Plugin(element, options)
|
49 |
+
{
|
50 |
+
this.w = $(document);
|
51 |
+
this.el = $(element);
|
52 |
+
this.options = $.extend({}, defaults, options);
|
53 |
+
this.init();
|
54 |
+
}
|
55 |
+
|
56 |
+
Plugin.prototype = {
|
57 |
+
|
58 |
+
init: function()
|
59 |
+
{
|
60 |
+
var list = this;
|
61 |
+
|
62 |
+
list.reset();
|
63 |
+
|
64 |
+
list.el.data('nestable-group', this.options.group);
|
65 |
+
|
66 |
+
list.placeEl = $('<div class="' + list.options.placeClass + '"/>');
|
67 |
+
|
68 |
+
$.each(this.el.find(list.options.itemNodeName), function(k, el) {
|
69 |
+
list.setParent($(el));
|
70 |
+
});
|
71 |
+
|
72 |
+
list.el.on('click', 'button', function(e) {
|
73 |
+
if (list.dragEl) {
|
74 |
+
return;
|
75 |
+
}
|
76 |
+
var target = $(e.currentTarget),
|
77 |
+
action = target.data('action'),
|
78 |
+
item = target.parent(list.options.itemNodeName);
|
79 |
+
if (action === 'collapse') {
|
80 |
+
list.collapseItem(item);
|
81 |
+
}
|
82 |
+
if (action === 'expand') {
|
83 |
+
list.expandItem(item);
|
84 |
+
}
|
85 |
+
});
|
86 |
+
|
87 |
+
var onStartEvent = function(e)
|
88 |
+
{
|
89 |
+
var handle = $(e.target);
|
90 |
+
if (!handle.hasClass(list.options.handleClass)) {
|
91 |
+
if (handle.closest('.' + list.options.noDragClass).length) {
|
92 |
+
return;
|
93 |
+
}
|
94 |
+
handle = handle.closest('.' + list.options.handleClass);
|
95 |
+
}
|
96 |
+
|
97 |
+
if (!handle.length || list.dragEl) {
|
98 |
+
return;
|
99 |
+
}
|
100 |
+
|
101 |
+
list.isTouch = /^touch/.test(e.type);
|
102 |
+
if (list.isTouch && e.touches.length !== 1) {
|
103 |
+
return;
|
104 |
+
}
|
105 |
+
|
106 |
+
e.preventDefault();
|
107 |
+
list.dragStart(e.touches ? e.touches[0] : e);
|
108 |
+
};
|
109 |
+
|
110 |
+
var onMoveEvent = function(e)
|
111 |
+
{
|
112 |
+
if (list.dragEl) {
|
113 |
+
e.preventDefault();
|
114 |
+
list.dragMove(e.touches ? e.touches[0] : e);
|
115 |
+
}
|
116 |
+
};
|
117 |
+
|
118 |
+
var onEndEvent = function(e)
|
119 |
+
{
|
120 |
+
if (list.dragEl) {
|
121 |
+
e.preventDefault();
|
122 |
+
list.dragStop(e.touches ? e.touches[0] : e);
|
123 |
+
}
|
124 |
+
};
|
125 |
+
|
126 |
+
if (hasTouch) {
|
127 |
+
list.el[0].addEventListener('touchstart', onStartEvent, false);
|
128 |
+
window.addEventListener('touchmove', onMoveEvent, false);
|
129 |
+
window.addEventListener('touchend', onEndEvent, false);
|
130 |
+
window.addEventListener('touchcancel', onEndEvent, false);
|
131 |
+
}
|
132 |
+
|
133 |
+
list.el.on('mousedown', onStartEvent);
|
134 |
+
list.w.on('mousemove', onMoveEvent);
|
135 |
+
list.w.on('mouseup', onEndEvent);
|
136 |
+
|
137 |
+
},
|
138 |
+
|
139 |
+
serialize: function()
|
140 |
+
{
|
141 |
+
var data,
|
142 |
+
depth = 0,
|
143 |
+
list = this;
|
144 |
+
step = function(level, depth)
|
145 |
+
{
|
146 |
+
var array = [ ],
|
147 |
+
items = level.children(list.options.itemNodeName);
|
148 |
+
items.each(function()
|
149 |
+
{
|
150 |
+
var li = $(this),
|
151 |
+
item = $.extend({}, li.data()),
|
152 |
+
sub = li.children(list.options.listNodeName);
|
153 |
+
if (sub.length) {
|
154 |
+
item.children = step(sub, depth + 1);
|
155 |
+
}
|
156 |
+
array.push(item);
|
157 |
+
});
|
158 |
+
return array;
|
159 |
+
};
|
160 |
+
data = step(list.el.find(list.options.listNodeName).first(), depth);
|
161 |
+
return data;
|
162 |
+
},
|
163 |
+
|
164 |
+
serialise: function()
|
165 |
+
{
|
166 |
+
return this.serialize();
|
167 |
+
},
|
168 |
+
|
169 |
+
reset: function()
|
170 |
+
{
|
171 |
+
this.mouse = {
|
172 |
+
offsetX : 0,
|
173 |
+
offsetY : 0,
|
174 |
+
startX : 0,
|
175 |
+
startY : 0,
|
176 |
+
lastX : 0,
|
177 |
+
lastY : 0,
|
178 |
+
nowX : 0,
|
179 |
+
nowY : 0,
|
180 |
+
distX : 0,
|
181 |
+
distY : 0,
|
182 |
+
dirAx : 0,
|
183 |
+
dirX : 0,
|
184 |
+
dirY : 0,
|
185 |
+
lastDirX : 0,
|
186 |
+
lastDirY : 0,
|
187 |
+
distAxX : 0,
|
188 |
+
distAxY : 0
|
189 |
+
};
|
190 |
+
this.isTouch = false;
|
191 |
+
this.moving = false;
|
192 |
+
this.dragEl = null;
|
193 |
+
this.dragRootEl = null;
|
194 |
+
this.dragDepth = 0;
|
195 |
+
this.hasNewRoot = false;
|
196 |
+
this.pointEl = null;
|
197 |
+
},
|
198 |
+
|
199 |
+
expandItem: function(li)
|
200 |
+
{
|
201 |
+
li.removeClass(this.options.collapsedClass);
|
202 |
+
li.children('[data-action="expand"]').hide();
|
203 |
+
li.children('[data-action="collapse"]').show();
|
204 |
+
li.children(this.options.listNodeName).show();
|
205 |
+
},
|
206 |
+
|
207 |
+
collapseItem: function(li)
|
208 |
+
{
|
209 |
+
var lists = li.children(this.options.listNodeName);
|
210 |
+
if (lists.length) {
|
211 |
+
li.addClass(this.options.collapsedClass);
|
212 |
+
li.children('[data-action="collapse"]').hide();
|
213 |
+
li.children('[data-action="expand"]').show();
|
214 |
+
li.children(this.options.listNodeName).hide();
|
215 |
+
}
|
216 |
+
},
|
217 |
+
|
218 |
+
expandAll: function()
|
219 |
+
{
|
220 |
+
var list = this;
|
221 |
+
list.el.find(list.options.itemNodeName).each(function() {
|
222 |
+
list.expandItem($(this));
|
223 |
+
});
|
224 |
+
},
|
225 |
+
|
226 |
+
collapseAll: function()
|
227 |
+
{
|
228 |
+
var list = this;
|
229 |
+
list.el.find(list.options.itemNodeName).each(function() {
|
230 |
+
list.collapseItem($(this));
|
231 |
+
});
|
232 |
+
},
|
233 |
+
|
234 |
+
setParent: function(li)
|
235 |
+
{
|
236 |
+
if (li.children(this.options.listNodeName).length) {
|
237 |
+
li.prepend($(this.options.expandBtnHTML));
|
238 |
+
li.prepend($(this.options.collapseBtnHTML));
|
239 |
+
}
|
240 |
+
li.children('[data-action="expand"]').hide();
|
241 |
+
},
|
242 |
+
|
243 |
+
unsetParent: function(li)
|
244 |
+
{
|
245 |
+
li.removeClass(this.options.collapsedClass);
|
246 |
+
li.children('[data-action]').remove();
|
247 |
+
li.children(this.options.listNodeName).remove();
|
248 |
+
},
|
249 |
+
|
250 |
+
dragStart: function(e)
|
251 |
+
{
|
252 |
+
var mouse = this.mouse,
|
253 |
+
target = $(e.target),
|
254 |
+
dragItem = target.closest(this.options.itemNodeName);
|
255 |
+
|
256 |
+
this.placeEl.css('height', dragItem.height());
|
257 |
+
|
258 |
+
mouse.offsetX = e.offsetX !== undefined ? e.offsetX : e.pageX - target.offset().left;
|
259 |
+
mouse.offsetY = e.offsetY !== undefined ? e.offsetY : e.pageY - target.offset().top;
|
260 |
+
mouse.startX = mouse.lastX = e.pageX;
|
261 |
+
mouse.startY = mouse.lastY = e.pageY;
|
262 |
+
|
263 |
+
this.dragRootEl = this.el;
|
264 |
+
|
265 |
+
this.dragEl = $(document.createElement(this.options.listNodeName)).addClass(this.options.listClass + ' ' + this.options.dragClass);
|
266 |
+
this.dragEl.css('width', dragItem.width());
|
267 |
+
|
268 |
+
dragItem.after(this.placeEl);
|
269 |
+
dragItem[0].parentNode.removeChild(dragItem[0]);
|
270 |
+
dragItem.appendTo(this.dragEl);
|
271 |
+
|
272 |
+
$(document.body).append(this.dragEl);
|
273 |
+
this.dragEl.css({
|
274 |
+
'left' : e.pageX - mouse.offsetX,
|
275 |
+
'top' : e.pageY - mouse.offsetY
|
276 |
+
});
|
277 |
+
// total depth of dragging item
|
278 |
+
var i, depth,
|
279 |
+
items = this.dragEl.find(this.options.itemNodeName);
|
280 |
+
for (i = 0; i < items.length; i++) {
|
281 |
+
depth = $(items[i]).parents(this.options.listNodeName).length;
|
282 |
+
if (depth > this.dragDepth) {
|
283 |
+
this.dragDepth = depth;
|
284 |
+
}
|
285 |
+
}
|
286 |
+
},
|
287 |
+
|
288 |
+
dragStop: function(e)
|
289 |
+
{
|
290 |
+
var el = this.dragEl.children(this.options.itemNodeName).first();
|
291 |
+
el[0].parentNode.removeChild(el[0]);
|
292 |
+
this.placeEl.replaceWith(el);
|
293 |
+
|
294 |
+
this.dragEl.remove();
|
295 |
+
this.el.trigger('change');
|
296 |
+
if (this.hasNewRoot) {
|
297 |
+
this.dragRootEl.trigger('change');
|
298 |
+
}
|
299 |
+
this.reset();
|
300 |
+
},
|
301 |
+
|
302 |
+
dragMove: function(e)
|
303 |
+
{
|
304 |
+
var list, parent, prev, next, depth,
|
305 |
+
opt = this.options,
|
306 |
+
mouse = this.mouse;
|
307 |
+
|
308 |
+
this.dragEl.css({
|
309 |
+
'left' : e.pageX - mouse.offsetX,
|
310 |
+
'top' : e.pageY - mouse.offsetY
|
311 |
+
});
|
312 |
+
|
313 |
+
// mouse position last events
|
314 |
+
mouse.lastX = mouse.nowX;
|
315 |
+
mouse.lastY = mouse.nowY;
|
316 |
+
// mouse position this events
|
317 |
+
mouse.nowX = e.pageX;
|
318 |
+
mouse.nowY = e.pageY;
|
319 |
+
// distance mouse moved between events
|
320 |
+
mouse.distX = mouse.nowX - mouse.lastX;
|
321 |
+
mouse.distY = mouse.nowY - mouse.lastY;
|
322 |
+
// direction mouse was moving
|
323 |
+
mouse.lastDirX = mouse.dirX;
|
324 |
+
mouse.lastDirY = mouse.dirY;
|
325 |
+
// direction mouse is now moving (on both axis)
|
326 |
+
mouse.dirX = mouse.distX === 0 ? 0 : mouse.distX > 0 ? 1 : -1;
|
327 |
+
mouse.dirY = mouse.distY === 0 ? 0 : mouse.distY > 0 ? 1 : -1;
|
328 |
+
// axis mouse is now moving on
|
329 |
+
var newAx = Math.abs(mouse.distX) > Math.abs(mouse.distY) ? 1 : 0;
|
330 |
+
|
331 |
+
// do nothing on first move
|
332 |
+
if (!mouse.moving) {
|
333 |
+
mouse.dirAx = newAx;
|
334 |
+
mouse.moving = true;
|
335 |
+
return;
|
336 |
+
}
|
337 |
+
|
338 |
+
// calc distance moved on this axis (and direction)
|
339 |
+
if (mouse.dirAx !== newAx) {
|
340 |
+
mouse.distAxX = 0;
|
341 |
+
mouse.distAxY = 0;
|
342 |
+
} else {
|
343 |
+
mouse.distAxX += Math.abs(mouse.distX);
|
344 |
+
if (mouse.dirX !== 0 && mouse.dirX !== mouse.lastDirX) {
|
345 |
+
mouse.distAxX = 0;
|
346 |
+
}
|
347 |
+
mouse.distAxY += Math.abs(mouse.distY);
|
348 |
+
if (mouse.dirY !== 0 && mouse.dirY !== mouse.lastDirY) {
|
349 |
+
mouse.distAxY = 0;
|
350 |
+
}
|
351 |
+
}
|
352 |
+
mouse.dirAx = newAx;
|
353 |
+
|
354 |
+
/**
|
355 |
+
* move horizontal
|
356 |
+
*/
|
357 |
+
if (mouse.dirAx && mouse.distAxX >= opt.threshold) {
|
358 |
+
// reset move distance on x-axis for new phase
|
359 |
+
mouse.distAxX = 0;
|
360 |
+
prev = this.placeEl.prev(opt.itemNodeName);
|
361 |
+
// increase horizontal level if previous sibling exists and is not collapsed
|
362 |
+
if (mouse.distX > 0 && prev.length && !prev.hasClass(opt.collapsedClass)) {
|
363 |
+
// cannot increase level when item above is collapsed
|
364 |
+
list = prev.find(opt.listNodeName).last();
|
365 |
+
// check if depth limit has reached
|
366 |
+
depth = this.placeEl.parents(opt.listNodeName).length;
|
367 |
+
if (depth + this.dragDepth <= opt.maxDepth) {
|
368 |
+
// create new sub-level if one doesn't exist
|
369 |
+
if (!list.length) {
|
370 |
+
list = $('<' + opt.listNodeName + '/>').addClass(opt.listClass);
|
371 |
+
list.append(this.placeEl);
|
372 |
+
prev.append(list);
|
373 |
+
this.setParent(prev);
|
374 |
+
} else {
|
375 |
+
// else append to next level up
|
376 |
+
list = prev.children(opt.listNodeName).last();
|
377 |
+
list.append(this.placeEl);
|
378 |
+
}
|
379 |
+
}
|
380 |
+
}
|
381 |
+
// decrease horizontal level
|
382 |
+
if (mouse.distX < 0) {
|
383 |
+
// we can't decrease a level if an item preceeds the current one
|
384 |
+
next = this.placeEl.next(opt.itemNodeName);
|
385 |
+
if (!next.length) {
|
386 |
+
parent = this.placeEl.parent();
|
387 |
+
this.placeEl.closest(opt.itemNodeName).after(this.placeEl);
|
388 |
+
if (!parent.children().length) {
|
389 |
+
this.unsetParent(parent.parent());
|
390 |
+
}
|
391 |
+
}
|
392 |
+
}
|
393 |
+
}
|
394 |
+
|
395 |
+
var isEmpty = false;
|
396 |
+
|
397 |
+
// find list item under cursor
|
398 |
+
if (!hasPointerEvents) {
|
399 |
+
this.dragEl[0].style.visibility = 'hidden';
|
400 |
+
}
|
401 |
+
this.pointEl = $(document.elementFromPoint(e.pageX - document.body.scrollLeft, e.pageY - (window.pageYOffset || document.documentElement.scrollTop)));
|
402 |
+
if (!hasPointerEvents) {
|
403 |
+
this.dragEl[0].style.visibility = 'visible';
|
404 |
+
}
|
405 |
+
if (this.pointEl.hasClass(opt.handleClass)) {
|
406 |
+
this.pointEl = this.pointEl.parent(opt.itemNodeName);
|
407 |
+
}
|
408 |
+
if (this.pointEl.hasClass(opt.emptyClass)) {
|
409 |
+
isEmpty = true;
|
410 |
+
}
|
411 |
+
else if (!this.pointEl.length || !this.pointEl.hasClass(opt.itemClass)) {
|
412 |
+
return;
|
413 |
+
}
|
414 |
+
|
415 |
+
// find parent list of item under cursor
|
416 |
+
var pointElRoot = this.pointEl.closest('.' + opt.rootClass),
|
417 |
+
isNewRoot = this.dragRootEl.data('nestable-id') !== pointElRoot.data('nestable-id');
|
418 |
+
|
419 |
+
/**
|
420 |
+
* move vertical
|
421 |
+
*/
|
422 |
+
if (!mouse.dirAx || isNewRoot || isEmpty) {
|
423 |
+
// check if groups match if dragging over new root
|
424 |
+
if (isNewRoot && opt.group !== pointElRoot.data('nestable-group')) {
|
425 |
+
return;
|
426 |
+
}
|
427 |
+
// check depth limit
|
428 |
+
depth = this.dragDepth - 1 + this.pointEl.parents(opt.listNodeName).length;
|
429 |
+
if (depth > opt.maxDepth) {
|
430 |
+
return;
|
431 |
+
}
|
432 |
+
var before = e.pageY < (this.pointEl.offset().top + this.pointEl.height() / 2);
|
433 |
+
parent = this.placeEl.parent();
|
434 |
+
// if empty create new list to replace empty placeholder
|
435 |
+
if (isEmpty) {
|
436 |
+
list = $(document.createElement(opt.listNodeName)).addClass(opt.listClass);
|
437 |
+
list.append(this.placeEl);
|
438 |
+
this.pointEl.replaceWith(list);
|
439 |
+
}
|
440 |
+
else if (before) {
|
441 |
+
this.pointEl.before(this.placeEl);
|
442 |
+
}
|
443 |
+
else {
|
444 |
+
this.pointEl.after(this.placeEl);
|
445 |
+
}
|
446 |
+
if (!parent.children().length) {
|
447 |
+
this.unsetParent(parent.parent());
|
448 |
+
}
|
449 |
+
if (!this.dragRootEl.find(opt.itemNodeName).length) {
|
450 |
+
this.dragRootEl.append('<div class="' + opt.emptyClass + '"/>');
|
451 |
+
}
|
452 |
+
// parent root list has changed
|
453 |
+
if (isNewRoot) {
|
454 |
+
this.dragRootEl = pointElRoot;
|
455 |
+
this.hasNewRoot = this.el[0] !== this.dragRootEl[0];
|
456 |
+
}
|
457 |
+
}
|
458 |
+
}
|
459 |
+
|
460 |
+
};
|
461 |
+
|
462 |
+
$.fn.nestable = function(params)
|
463 |
+
{
|
464 |
+
var lists = this,
|
465 |
+
retval = this;
|
466 |
+
|
467 |
+
lists.each(function()
|
468 |
+
{
|
469 |
+
var plugin = $(this).data("nestable");
|
470 |
+
|
471 |
+
if (!plugin) {
|
472 |
+
$(this).data("nestable", new Plugin(this, params));
|
473 |
+
$(this).data("nestable-id", new Date().getTime());
|
474 |
+
} else {
|
475 |
+
if (typeof params === 'string' && typeof plugin[params] === 'function') {
|
476 |
+
retval = plugin[params]();
|
477 |
+
}
|
478 |
+
}
|
479 |
+
});
|
480 |
+
|
481 |
+
return retval || lists;
|
482 |
+
};
|
483 |
+
|
484 |
+
})(window.jQuery || window.Zepto, window, document);
|
includes/extensions/categoryPage/js/script.js
ADDED
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
;(function ($, undefined){
|
2 |
+
|
3 |
+
|
4 |
+
function DialogEdit() {
|
5 |
+
this.$element = $('.wrapper-nestable-list');
|
6 |
+
this.$nestableList = this.$element.find('.nestable-list');
|
7 |
+
this.$nestableList.nestable({group: 1, maxDepth: 100});
|
8 |
+
|
9 |
+
this.init();
|
10 |
+
}
|
11 |
+
DialogEdit.prototype = {
|
12 |
+
init: function() {
|
13 |
+
var self = this;
|
14 |
+
$('.save_category').click(function(event) {
|
15 |
+
event.preventDefault();
|
16 |
+
self.save() ;
|
17 |
+
});
|
18 |
+
},
|
19 |
+
|
20 |
+
save : function () {
|
21 |
+
var self = this,
|
22 |
+
hierarchyPosts = this.$nestableList.nestable('serialise');
|
23 |
+
|
24 |
+
self.spinner(true);
|
25 |
+
$.ajax({
|
26 |
+
url: hierarchyPostAttributes.ajaxUrl,
|
27 |
+
method: 'post',
|
28 |
+
data: {
|
29 |
+
action: hierarchyPostAttributes.dialog.action.save,
|
30 |
+
hierarchy_posts: hierarchyPosts
|
31 |
+
},
|
32 |
+
success: function (response) {
|
33 |
+
self.spinner(false);
|
34 |
+
self.destroy();
|
35 |
+
},
|
36 |
+
error: function (jqXHR) {
|
37 |
+
self.destroy();
|
38 |
+
new DialogError(jqXHR.responseText);
|
39 |
+
}
|
40 |
+
});
|
41 |
+
},
|
42 |
+
|
43 |
+
spinner: function(isShow) {
|
44 |
+
if (isShow) {
|
45 |
+
var $spinner = this.$element.find('.nestable-list-spinner').clone();
|
46 |
+
$spinner.appendTo(this.$element.closest('.ui-dialog.ui-widget')).show();
|
47 |
+
} else {
|
48 |
+
this.$element.find('.nestable-list-spinner').remove();
|
49 |
+
}
|
50 |
+
},
|
51 |
+
|
52 |
+
destroy: function () {
|
53 |
+
this.$element.dialog('close');
|
54 |
+
this.$element.remove();
|
55 |
+
}
|
56 |
+
};
|
57 |
+
|
58 |
+
function DialogError(message) {
|
59 |
+
this.$element = $('<div id="hierarchy-post-error">' + message + '</div>');
|
60 |
+
this.show()
|
61 |
+
}
|
62 |
+
DialogError.prototype = {
|
63 |
+
show: function () {
|
64 |
+
var self = this;
|
65 |
+
|
66 |
+
self.$element.appendTo('body');
|
67 |
+
self.$element.dialog({
|
68 |
+
'dialogClass' : 'wp-dialog',
|
69 |
+
'title': hierarchyPostAttributes.error.title,
|
70 |
+
'modal' : true,
|
71 |
+
'autoOpen' : true,
|
72 |
+
'closeOnEscape' : false,
|
73 |
+
'buttons' : [
|
74 |
+
{
|
75 |
+
'text' : hierarchyPostAttributes.error.button.ok.label,
|
76 |
+
'class' : 'button',
|
77 |
+
'click' : function() { return self.destroy(); }
|
78 |
+
}
|
79 |
+
],
|
80 |
+
'close': function() { return self.destroy(); }
|
81 |
+
});
|
82 |
+
},
|
83 |
+
destroy: function () {
|
84 |
+
this.$element.dialog('close');
|
85 |
+
this.$element.remove();
|
86 |
+
}
|
87 |
+
};
|
88 |
+
|
89 |
+
$(document).ready(function() {
|
90 |
+
new DialogEdit();
|
91 |
+
});
|
92 |
+
}(jQuery));
|
includes/rbs_gallery_init.php
CHANGED
@@ -38,6 +38,8 @@ if(!function_exists('rbs_gallery_include')){
|
|
38 |
}
|
39 |
}
|
40 |
|
|
|
|
|
41 |
if( is_admin() ){
|
42 |
$photonic_options = get_option( 'photonic_options', array() );
|
43 |
if( !isset($photonic_options['disable_editor']) || $photonic_options['disable_editor']!='on' ){
|
@@ -45,6 +47,12 @@ if( is_admin() ){
|
|
45 |
delete_option("photonic_options");
|
46 |
add_option( 'photonic_options', $photonic_options );
|
47 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
}
|
49 |
|
50 |
rbs_gallery_include(array( 'rbs_gallery_config.php', 'rbs_gallery_button.php', 'rbs_gallery_widget.php'), ROBO_GALLERY_INCLUDES_PATH);
|
@@ -175,9 +183,13 @@ if(!function_exists('rbs_gallery_main_init')){
|
|
175 |
/* backup init */
|
176 |
rbs_gallery_include('backup/backup.init.php', ROBO_GALLERY_EXTENSIONS_PATH);
|
177 |
/* category init */
|
178 |
-
if(
|
|
|
|
|
|
|
179 |
rbs_gallery_include('category/category.init.php', ROBO_GALLERY_EXTENSIONS_PATH);
|
180 |
}
|
|
|
181 |
/* stats init */
|
182 |
rbs_gallery_include('stats/stats.init.php', ROBO_GALLERY_EXTENSIONS_PATH);
|
183 |
}
|
38 |
}
|
39 |
}
|
40 |
|
41 |
+
|
42 |
+
|
43 |
if( is_admin() ){
|
44 |
$photonic_options = get_option( 'photonic_options', array() );
|
45 |
if( !isset($photonic_options['disable_editor']) || $photonic_options['disable_editor']!='on' ){
|
47 |
delete_option("photonic_options");
|
48 |
add_option( 'photonic_options', $photonic_options );
|
49 |
}
|
50 |
+
|
51 |
+
add_action( 'plugins_loaded', 'rbs_hide_messages' );
|
52 |
+
function rbs_hide_messages(){
|
53 |
+
$titleMes = 'ban';
|
54 |
+
remove_action( 'init', 'gallery_'.$titleMes.'k_admin_notice_class' );
|
55 |
+
}
|
56 |
}
|
57 |
|
58 |
rbs_gallery_include(array( 'rbs_gallery_config.php', 'rbs_gallery_button.php', 'rbs_gallery_widget.php'), ROBO_GALLERY_INCLUDES_PATH);
|
183 |
/* backup init */
|
184 |
rbs_gallery_include('backup/backup.init.php', ROBO_GALLERY_EXTENSIONS_PATH);
|
185 |
/* category init */
|
186 |
+
if(
|
187 |
+
!get_option(ROBO_GALLERY_PREFIX.'categoryShow', 0) &&
|
188 |
+
!( isset($_GET['page']) && $_GET['page'] == 'robo-gallery-cat' )
|
189 |
+
){
|
190 |
rbs_gallery_include('category/category.init.php', ROBO_GALLERY_EXTENSIONS_PATH);
|
191 |
}
|
192 |
+
|
193 |
/* stats init */
|
194 |
rbs_gallery_include('stats/stats.init.php', ROBO_GALLERY_EXTENSIONS_PATH);
|
195 |
}
|
includes/rbs_gallery_menu.php
CHANGED
@@ -69,6 +69,20 @@ if(!function_exists('robo_gallery_about_submenu_page')){
|
|
69 |
}
|
70 |
}
|
71 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
if(!function_exists('robo_gallery_support_submenu_page')){
|
73 |
add_action('admin_menu', 'robo_gallery_support_submenu_page');
|
74 |
function robo_gallery_support_submenu_page() {
|
69 |
}
|
70 |
}
|
71 |
|
72 |
+
|
73 |
+
if(!function_exists('robo_gallery_cat_submenu_page') && 2==3){
|
74 |
+
add_action('admin_menu', 'robo_gallery_cat_submenu_page');
|
75 |
+
function robo_gallery_cat_submenu_page() {
|
76 |
+
add_submenu_page( 'edit.php?post_type=robo_gallery_table', 'Category Robo Gallery', 'Category', 'manage_options', 'robo-gallery-cat', 'robo_gallery_cat_submenu_page_render' );
|
77 |
+
}
|
78 |
+
function robo_gallery_cat_submenu_page_render(){
|
79 |
+
rbs_gallery_include('categoryPage/category.class.php', ROBO_GALLERY_EXTENSIONS_PATH);
|
80 |
+
//rbs_gallery_include('category.class.php', plugin_dir_path( __FILE__ ) );
|
81 |
+
new ROBO_GALLERY_CATEGORY_PAGE( ROBO_GALLERY_TYPE_POST );
|
82 |
+
}
|
83 |
+
}
|
84 |
+
|
85 |
+
|
86 |
if(!function_exists('robo_gallery_support_submenu_page')){
|
87 |
add_action('admin_menu', 'robo_gallery_support_submenu_page');
|
88 |
function robo_gallery_support_submenu_page() {
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://robosoft.co/robogallery
|
|
4 |
Tags: gallery, photo gallery, images gallery, gallery images, responsive gallery, categories gallery, Polaroid gallery, gallery lightbox, portfolio gallery, video gallery, Gallery Plugin, Robo Gallery
|
5 |
Requires at least: 3.3
|
6 |
Tested up to: 4.8
|
7 |
-
Stable tag: 2.6.
|
8 |
License: GPLv2 or later
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -16,14 +16,14 @@ Gallery modes photo gallery, images gallery, video gallery, Polaroid gallery, ga
|
|
16 |
|
17 |
#### [Gallery Most Easy and Powerful plugin to create attractive image section on your WordPress website.](https://robosoft.co/robogallery/#overview)
|
18 |
|
19 |
-
#### Gallery on your website it's really attractive and very important part of your pages. If you looking for fast, easy gallery with simple and very beautiful, highly customizable design [here is it...](https://robosoft.co/robogallery/#overview) Gallery where even newbie in
|
20 |
|
21 |
> #### New function
|
22 |
>
|
23 |
> Tags for gallery images. It's alternative navigation mode in gallery. You can easily switch between regular gallery categories filter on top to the tags mode
|
24 |
>
|
25 |
|
26 |
-
= Install and create your first
|
27 |
|
28 |
[youtube https://www.youtube.com/watch?v=m9XIeqMnhYI&feature=youtu.be]
|
29 |
|
@@ -49,7 +49,7 @@ Gallery modes photo gallery, images gallery, video gallery, Polaroid gallery, ga
|
|
49 |
* **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.
|
50 |
* **Auto-resizing for thumbnails and images** - gallery media manager allow you make additional customization of the gallery images, like: rotation, flip, crop, manual resize.
|
51 |
* **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.
|
52 |
-
* **Implemented to avoid AJAX libs conflicts** - all gallery code implemented in native
|
53 |
* **Polaroid gallery** - with our gallery you can create Polaroid gallery just with few clicks.
|
54 |
* **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.
|
55 |
* **Build in colors selector** - in gallery you can easily change color of any gallery.
|
@@ -57,7 +57,7 @@ Gallery modes photo gallery, images gallery, video gallery, Polaroid gallery, ga
|
|
57 |
* **Build in borders and shadows settings** - gallery borders and shadows have advanced options for configuration design and style of this gallery interface elements.
|
58 |
* **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
|
59 |
* **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
|
60 |
-
* **Implemented in native
|
61 |
* **Multi Categories** - gallery implemented with multi categories gallery support. You can create your own galleries tree, depend of your needs
|
62 |
* **Classic gallery layout** - layout of the gallery could have classic style or grid layout, every gallery on page could have own styles and settings
|
63 |
* **Advanced pagination function** - pagination function of the gallery implemented in google load more style
|
@@ -69,7 +69,7 @@ Gallery modes photo gallery, images gallery, video gallery, Polaroid gallery, ga
|
|
69 |
* **Resizing crop function** - in gallery media managed you'll find great set of very useful features for example gallery images crop, and manual resizing
|
70 |
* **Optional mobile touch support** - our gallery support mobile devices and you can customize responsive gallery layout settings for different screen sizes
|
71 |
* **Custom ordering of the images** - ordering for all gallery images of the gallery could be easily changed manually in media manager or you can find order by options in general gallery settings
|
72 |
-
* **Ability to insert gallery to the
|
73 |
* **Gallery lightbox social buttons** - in gallery settings you can turn on/off social buttons
|
74 |
* **Gallery lightbox background color** - in gallery lightbox settings you can change color of the background with comfortable color selector
|
75 |
* **Gallery lightbox background transparency** - in gallery lightbox settings you can change transparency of the background with comfortable color selector
|
@@ -137,7 +137,6 @@ Robo gallery have advanced functionality which provide you ide range of settings
|
|
137 |
|
138 |
Categories gallery it's very important and useful functionality of the gallery. With categories function gallery images will be split into separate categories and navigated by top menu between different galleries. As alternative function to the categories in top menu of the gallery implemented gallery tags mode. When every gallery image could have tags defined in gallery image settings.
|
139 |
|
140 |
-
|
141 |
Robo Gallery is one of the most powerful wordpress gallery. With Robo Gallery you can create portfolio, lightbox gallery, multi categories gallery, video gallery and much more interesting functionality already included into gallery package. If you looking for some new gallery features, which do not implemented yet in our gallery just send an email to our support team.
|
142 |
|
143 |
|
@@ -159,8 +158,8 @@ Robo Gallery is one of the most powerful wordpress gallery. With Robo Gallery yo
|
|
159 |
* **Advanced gallery menu settings** - in gallery implemented advanced customizable options for navigation menu. Gallery have advanced structure with ability to customize styles of the gallery menus.
|
160 |
* **Thumbnails size** - in gallery implemented customizable options for thumbnails size definition and complex interface building. Gallery options have source size options where you can easily switch between size of the gallery thumbnails.
|
161 |
* **SEO optimized code** - 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.
|
162 |
-
* **Multi site** - in gallery implemented multisite support. You can install gallery in admin dashboard and enable plugin for all child blogs.
|
163 |
-
|
164 |
|
165 |
> #### Useful Gallery Links
|
166 |
>
|
@@ -258,6 +257,9 @@ If any problem occurs, please contact us.
|
|
258 |
|
259 |
== Changelog ==
|
260 |
|
|
|
|
|
|
|
261 |
= 2.6.20 =
|
262 |
* Update of the gallery settings block
|
263 |
* Change interface code structure, added new tabs
|
@@ -412,6 +414,9 @@ If any problem occurs, please contact us.
|
|
412 |
|
413 |
== Upgrade Notice ==
|
414 |
|
|
|
|
|
|
|
415 |
= 2.6.20 =
|
416 |
Update of the gallery settings block
|
417 |
Change interface code structure, added new tabs
|
4 |
Tags: gallery, photo gallery, images gallery, gallery images, responsive gallery, categories gallery, Polaroid gallery, gallery lightbox, portfolio gallery, video gallery, Gallery Plugin, Robo Gallery
|
5 |
Requires at least: 3.3
|
6 |
Tested up to: 4.8
|
7 |
+
Stable tag: 2.6.21
|
8 |
License: GPLv2 or later
|
9 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
16 |
|
17 |
#### [Gallery Most Easy and Powerful plugin to create attractive image section on your WordPress website.](https://robosoft.co/robogallery/#overview)
|
18 |
|
19 |
+
#### Gallery on your website it's really attractive and very important part of your pages. If you looking for fast, easy gallery with simple and very beautiful, highly customizable design [here is it...](https://robosoft.co/robogallery/#overview) Gallery where even newbie in WordPress will be able to create your first gallery in few minutes and at the same time Wordpress professionals get advanced tools and freedom of creativity. Just download this Gallery and you'll not look for any other gallery any more! [Fall in Love with this Gallery like we do!](https://robosoft.co/robogallery/#overview)
|
20 |
|
21 |
> #### New function
|
22 |
>
|
23 |
> Tags for gallery images. It's alternative navigation mode in gallery. You can easily switch between regular gallery categories filter on top to the tags mode
|
24 |
>
|
25 |
|
26 |
+
= Install and create your first WordPress gallery in few minutes =
|
27 |
|
28 |
[youtube https://www.youtube.com/watch?v=m9XIeqMnhYI&feature=youtu.be]
|
29 |
|
49 |
* **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.
|
50 |
* **Auto-resizing for thumbnails and images** - gallery media manager allow you make additional customization of the gallery images, like: rotation, flip, crop, manual resize.
|
51 |
* **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.
|
52 |
+
* **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.
|
53 |
* **Polaroid gallery** - with our gallery you can create Polaroid gallery just with few clicks.
|
54 |
* **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.
|
55 |
* **Build in colors selector** - in gallery you can easily change color of any gallery.
|
57 |
* **Build in borders and shadows settings** - gallery borders and shadows have advanced options for configuration design and style of this gallery interface elements.
|
58 |
* **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
|
59 |
* **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
|
60 |
+
* **Implemented in native WordPress style using native classes** - gallery fully native for WordPress implemented without any hacks and tricks
|
61 |
* **Multi Categories** - gallery implemented with multi categories gallery support. You can create your own galleries tree, depend of your needs
|
62 |
* **Classic gallery layout** - layout of the gallery could have classic style or grid layout, every gallery on page could have own styles and settings
|
63 |
* **Advanced pagination function** - pagination function of the gallery implemented in google load more style
|
69 |
* **Resizing crop function** - in gallery media managed you'll find great set of very useful features for example gallery images crop, and manual resizing
|
70 |
* **Optional mobile touch support** - our gallery support mobile devices and you can customize responsive gallery layout settings for different screen sizes
|
71 |
* **Custom ordering of the images** - ordering for all gallery images of the gallery could be easily changed manually in media manager or you can find order by options in general gallery settings
|
72 |
+
* **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
|
73 |
* **Gallery lightbox social buttons** - in gallery settings you can turn on/off social buttons
|
74 |
* **Gallery lightbox background color** - in gallery lightbox settings you can change color of the background with comfortable color selector
|
75 |
* **Gallery lightbox background transparency** - in gallery lightbox settings you can change transparency of the background with comfortable color selector
|
137 |
|
138 |
Categories gallery it's very important and useful functionality of the gallery. With categories function gallery images will be split into separate categories and navigated by top menu between different galleries. As alternative function to the categories in top menu of the gallery implemented gallery tags mode. When every gallery image could have tags defined in gallery image settings.
|
139 |
|
|
|
140 |
Robo Gallery is one of the most powerful wordpress gallery. With Robo Gallery you can create portfolio, lightbox gallery, multi categories gallery, video gallery and much more interesting functionality already included into gallery package. If you looking for some new gallery features, which do not implemented yet in our gallery just send an email to our support team.
|
141 |
|
142 |
|
158 |
* **Advanced gallery menu settings** - in gallery implemented advanced customizable options for navigation menu. Gallery have advanced structure with ability to customize styles of the gallery menus.
|
159 |
* **Thumbnails size** - in gallery implemented customizable options for thumbnails size definition and complex interface building. Gallery options have source size options where you can easily switch between size of the gallery thumbnails.
|
160 |
* **SEO optimized code** - 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.
|
161 |
+
* **Multi site** - in gallery implemented multisite support. You can install gallery in admin dashboard and enable plugin for all child blogs. You don't need to configure any special settings for multisite in our plugin. Multi site mode switch on automatically.
|
162 |
+
* **Backup function** - our plugin have advanced backup feature. In backup section you can create copy of the settings and images. We have implemented few modes you can create full backup of the settings and images and restore this configuration on some other location or even on this website after re-configuration of the page.
|
163 |
|
164 |
> #### Useful Gallery Links
|
165 |
>
|
257 |
|
258 |
== Changelog ==
|
259 |
|
260 |
+
= 2.6.21 =
|
261 |
+
* Advanced gallery sorting options, new sorting management options
|
262 |
+
|
263 |
= 2.6.20 =
|
264 |
* Update of the gallery settings block
|
265 |
* Change interface code structure, added new tabs
|
414 |
|
415 |
== Upgrade Notice ==
|
416 |
|
417 |
+
= 2.6.21 =
|
418 |
+
Advanced gallery sorting options, new sorting management options
|
419 |
+
|
420 |
= 2.6.20 =
|
421 |
Update of the gallery settings block
|
422 |
Change interface code structure, added new tabs
|
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.6.
|
7 |
Author: RoboSoft
|
8 |
Author URI: https://robosoft.co/wordpress-gallery-plugin
|
9 |
License: GPLv3 or later
|
@@ -15,12 +15,12 @@ if(!defined('WPINC'))die;
|
|
15 |
if(!defined("ABSPATH"))exit;
|
16 |
|
17 |
define("ROBO_GALLERY", 1);
|
18 |
-
define("ROBO_GALLERY_VERSION", '2.6.
|
19 |
|
20 |
if( !defined("ROBO_GALLERY_PATH") ) define("ROBO_GALLERY_PATH", plugin_dir_path( __FILE__ ));
|
21 |
|
22 |
define("ROBO_GALLERY_SPECIAL", 1);
|
23 |
-
define("ROBO_GALLERY_EVENT_DATE", '2017-
|
24 |
define("ROBO_GALLERY_EVENT_HOUR", 24);
|
25 |
|
26 |
add_action( 'plugins_loaded', 'rbs_gallery_load_textdomain' );
|
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.6.21
|
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.6.21');
|
19 |
|
20 |
if( !defined("ROBO_GALLERY_PATH") ) define("ROBO_GALLERY_PATH", plugin_dir_path( __FILE__ ));
|
21 |
|
22 |
define("ROBO_GALLERY_SPECIAL", 1);
|
23 |
+
define("ROBO_GALLERY_EVENT_DATE", '2017-09-03');
|
24 |
define("ROBO_GALLERY_EVENT_HOUR", 24);
|
25 |
|
26 |
add_action( 'plugins_loaded', 'rbs_gallery_load_textdomain' );
|