Responsive Lightbox & Gallery - Version 2.2.2

Version Description

  • Fix: Add Media button not working for custom post types
  • Fix: Underscore.js dependency missing
  • Fix: Undefined variable: current_color_scheme
  • Fix: Root Folder missing in media upload dropdown
Download this release

Release Info

Developer dfactory
Plugin Icon 128x128 Responsive Lightbox & Gallery
Version 2.2.2
Comparing to
See all releases

Code changes from version 2.2.1 to 2.2.2

includes/class-folders.php CHANGED
@@ -158,22 +158,40 @@ class Responsive_Lightbox_Folders {
158
* @return string
159
*/
160
private function get_folders( $taxonomy, $selected = 0 ) {
161
- return wp_dropdown_categories(
162
array(
163
- 'orderby' => 'name',
164
- 'order' => 'asc',
165
- 'show_option_all' => __( 'Root Folder', 'responsive-lightbox' ),
166
- 'show_count' => false,
167
- 'hide_empty' => false,
168
- 'hierarchical' => true,
169
- 'hide_if_empty' => false,
170
- 'echo' => false,
171
- 'selected' => (int) $selected,
172
- 'id' => 'rl_folders_upload_files',
173
- 'name' => 'rl_folders_upload_files_term_id',
174
- 'taxonomy' => $taxonomy
175
)
176
);
177
}
178
179
/**
@@ -185,23 +203,41 @@ class Responsive_Lightbox_Folders {
185
// get taxonomy
186
$taxonomy = Responsive_Lightbox()->options['folders']['media_taxonomy'];
187
188
- // dropdown categories parameters
189
- echo '<p><label>' . __( 'Upload files to', 'responsive-lightbox' ) . ': ' . wp_dropdown_categories(
190
array(
191
- 'orderby' => 'name',
192
- 'order' => 'asc',
193
- 'show_option_all' => __( 'Root Folder', 'responsive-lightbox' ),
194
- 'show_count' => false,
195
- 'hide_empty' => false,
196
- 'hierarchical' => true,
197
- 'hide_if_empty' => false,
198
- 'echo' => false,
199
- 'selected' => isset( $_GET[$taxonomy] ) ? (int) $_GET[$taxonomy] : 0,
200
- 'id' => 'rl_folders_upload_files',
201
- 'name' => 'rl_folders_upload_files_term_id',
202
- 'taxonomy' => $taxonomy
203
)
204
- ) . '</label></p>';
205
}
206
207
/**
@@ -393,38 +429,40 @@ class Responsive_Lightbox_Folders {
393
$fields[$taxonomy] = $tax;
394
}
395
396
- // get taxonomy object
397
- $tax = (array) get_taxonomy( 'rl_media_tag' );
398
399
- if ( ! empty( $tax ) ) {
400
- if ( ! $tax['public'] || ! $tax['show_ui'] )
401
- return $fields;
402
403
- if ( empty( $tax['args'] ) )
404
- $tax['args'] = array();
405
406
- $tags_html = '';
407
408
- // get terms
409
- $tags = wp_get_post_terms( $post->ID, 'rl_media_tag', array( 'fields' => 'id=>name' ) );
410
411
- // valid terms?
412
- if ( ! is_wp_error( $tags ) && ! empty( $tags ) ) {
413
- foreach ( $tags as $tag_name ) {
414
- $tags_html .= '<option value="' . $tag_name . '" selected="selected">' . esc_html( $tag_name ) . '</li>';
415
- }
416
- } else
417
- $tags = array();
418
419
- // update input
420
- $tax['input'] = 'html';
421
- $tax['html'] = '
422
- <select class="rl-media-tag-select2" multiple="multiple" name="attachments[' . $post->ID . '][rl_media_tag]">
423
- ' . $tags_html . '
424
- </select>';
425
426
- // update taxonomy
427
- $fields['rl_media_tag'] = $tax;
428
}
429
}
430
@@ -846,9 +884,6 @@ class Responsive_Lightbox_Folders {
846
$color = implode( ',', $rl->hex2rgb( $_wp_admin_css_colors[$current_color_scheme]->colors[3] ) );
847
}
848
849
- // get all available colors from scheme name
850
- $colors = $_wp_admin_css_colors[$current_color_scheme]->colors;
851
-
852
wp_add_inline_style(
853
'responsive-lightbox-folders-jstree',
854
'#rl-folders-tree-container .jstree .rl-folders-state-active.rl-folders-state-hover {
@@ -1003,7 +1038,7 @@ class Responsive_Lightbox_Folders {
1003
wp_register_script( 'responsive-lightbox-folders-jstree', RESPONSIVE_LIGHTBOX_URL . '/assets/jstree/jstree' . ( ! ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.min' : '' ) . '.js', array(), $rl->defaults['version'], false );
1004
wp_register_script( 'responsive-lightbox-folders-perfect-scrollbar', RESPONSIVE_LIGHTBOX_URL . '/assets/perfect-scrollbar/perfect-scrollbar' . ( ! ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.min' : '' ) . '.js', array(), $rl->defaults['version'], false );
1005
1006
- wp_enqueue_script( 'responsive-lightbox-folders-admin', RESPONSIVE_LIGHTBOX_URL . '/js/admin-folders.js', array( 'jquery', 'jquery-ui-draggable', 'jquery-ui-droppable', 'media-views', 'responsive-lightbox-folders-jstree', 'responsive-lightbox-folders-perfect-scrollbar', 'tags-suggest' ), $rl->defaults['version'], false );
1007
1008
wp_localize_script(
1009
'responsive-lightbox-folders-admin',
158
* @return string
159
*/
160
private function get_folders( $taxonomy, $selected = 0 ) {
161
+ // get only 1 term to check if taxonomy is empty
162
+ $any_terms = get_terms(
163
array(
164
+ 'taxonomy' => $taxonomy,
165
+ 'hide_empty' => false,
166
+ 'fields' => 'ids',
167
+ 'hierarchical' => false,
168
+ 'number' => 1
169
)
170
);
171
+
172
+ // prepare dropdown categories parameters
173
+ $args = array(
174
+ 'orderby' => 'name',
175
+ 'order' => 'asc',
176
+ 'show_option_all' => __( 'Root Folder', 'responsive-lightbox' ),
177
+ 'show_count' => false,
178
+ 'hide_empty' => false,
179
+ 'hierarchical' => true,
180
+ 'hide_if_empty' => false,
181
+ 'echo' => false,
182
+ 'selected' => (int) $selected,
183
+ 'id' => 'rl_folders_upload_files',
184
+ 'name' => 'rl_folders_upload_files_term_id',
185
+ 'taxonomy' => $taxonomy
186
+ );
187
+
188
+ // no terms?
189
+ if ( ! is_wp_error( $any_terms ) && empty( $any_terms ) ) {
190
+ $args['show_option_none'] = __( 'Root Folder', 'responsive-lightbox' );
191
+ $args['option_none_value'] = 0;
192
+ }
193
+
194
+ return wp_dropdown_categories( $args );
195
}
196
197
/**
203
// get taxonomy
204
$taxonomy = Responsive_Lightbox()->options['folders']['media_taxonomy'];
205
206
+ // get only 1 term to check if taxonomy is empty
207
+ $any_terms = get_terms(
208
array(
209
+ 'taxonomy' => $taxonomy,
210
+ 'hide_empty' => false,
211
+ 'fields' => 'ids',
212
+ 'hierarchical' => false,
213
+ 'number' => 1
214
)
215
+ );
216
+
217
+ // prepare dropdown categories parameters
218
+ $args = array(
219
+ 'orderby' => 'name',
220
+ 'order' => 'asc',
221
+ 'show_option_all' => __( 'Root Folder', 'responsive-lightbox' ),
222
+ 'show_count' => false,
223
+ 'hide_empty' => false,
224
+ 'hierarchical' => true,
225
+ 'hide_if_empty' => false,
226
+ 'echo' => false,
227
+ 'selected' => isset( $_GET[$taxonomy] ) ? (int) $_GET[$taxonomy] : 0,
228
+ 'id' => 'rl_folders_upload_files',
229
+ 'name' => 'rl_folders_upload_files_term_id',
230
+ 'taxonomy' => $taxonomy
231
+ );
232
+
233
+ // no terms?
234
+ if ( ! is_wp_error( $any_terms ) && empty( $any_terms ) ) {
235
+ $args['show_option_none'] = __( 'Root Folder', 'responsive-lightbox' );
236
+ $args['option_none_value'] = 0;
237
+ }
238
+
239
+ // display select
240
+ echo '<p><label>' . __( 'Upload files to', 'responsive-lightbox' ) . ': ' . wp_dropdown_categories( $args ) . '</label></p>';
241
}
242
243
/**
429
$fields[$taxonomy] = $tax;
430
}
431
432
+ if ( Responsive_Lightbox()->options['folders']['media_tags'] && taxonomy_exists( 'rl_media_tag' ) ) {
433
+ // get taxonomy object
434
+ $tax = (array) get_taxonomy( 'rl_media_tag' );
435
436
+ if ( ! empty( $tax ) ) {
437
+ if ( ! $tax['public'] || ! $tax['show_ui'] )
438
+ return $fields;
439
440
+ if ( empty( $tax['args'] ) )
441
+ $tax['args'] = array();
442
443
+ $tags_html = '';
444
445
+ // get terms
446
+ $tags = wp_get_post_terms( $post->ID, 'rl_media_tag', array( 'fields' => 'id=>name' ) );
447
448
+ // valid terms?
449
+ if ( ! is_wp_error( $tags ) && ! empty( $tags ) ) {
450
+ foreach ( $tags as $tag_name ) {
451
+ $tags_html .= '<option value="' . $tag_name . '" selected="selected">' . esc_html( $tag_name ) . '</li>';
452
+ }
453
+ } else
454
+ $tags = array();
455
456
+ // update input
457
+ $tax['input'] = 'html';
458
+ $tax['html'] = '
459
+ <select class="rl-media-tag-select2" multiple="multiple" name="attachments[' . $post->ID . '][rl_media_tag]">
460
+ ' . $tags_html . '
461
+ </select>';
462
463
+ // update taxonomy
464
+ $fields['rl_media_tag'] = $tax;
465
+ }
466
}
467
}
468
884
$color = implode( ',', $rl->hex2rgb( $_wp_admin_css_colors[$current_color_scheme]->colors[3] ) );
885
}
886
887
wp_add_inline_style(
888
'responsive-lightbox-folders-jstree',
889
'#rl-folders-tree-container .jstree .rl-folders-state-active.rl-folders-state-hover {
1038
wp_register_script( 'responsive-lightbox-folders-jstree', RESPONSIVE_LIGHTBOX_URL . '/assets/jstree/jstree' . ( ! ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.min' : '' ) . '.js', array(), $rl->defaults['version'], false );
1039
wp_register_script( 'responsive-lightbox-folders-perfect-scrollbar', RESPONSIVE_LIGHTBOX_URL . '/assets/perfect-scrollbar/perfect-scrollbar' . ( ! ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.min' : '' ) . '.js', array(), $rl->defaults['version'], false );
1040
1041
+ wp_enqueue_script( 'responsive-lightbox-folders-admin', RESPONSIVE_LIGHTBOX_URL . '/js/admin-folders.js', array( 'jquery', 'underscore', 'jquery-ui-draggable', 'jquery-ui-droppable', 'media-models', 'responsive-lightbox-folders-jstree', 'responsive-lightbox-folders-perfect-scrollbar', 'tags-suggest' ), $rl->defaults['version'], false );
1042
1043
wp_localize_script(
1044
'responsive-lightbox-folders-admin',
includes/class-galleries.php CHANGED
@@ -947,7 +947,7 @@ class Responsive_Lightbox_Galleries {
947
// assign main instance
948
$rl = Responsive_Lightbox();
949
950
- wp_enqueue_script( 'responsive-lightbox-admin-gallery', RESPONSIVE_LIGHTBOX_URL . '/js/admin-gallery.js', array( 'jquery' ), $rl->defaults['version'], false );
951
952
wp_localize_script(
953
'responsive-lightbox-admin-gallery',
@@ -1160,7 +1160,7 @@ class Responsive_Lightbox_Galleries {
1160
array(
1161
'orderby' => 'name',
1162
'order' => 'asc',
1163
- 'show_option_none' => __( 'None', 'responsive-lightbox' ),
1164
'show_option_all' => false,
1165
'show_count' => false,
1166
'hide_empty' => false,
@@ -1175,7 +1175,7 @@ class Responsive_Lightbox_Galleries {
1175
)
1176
);
1177
} else
1178
- $subhtml = '<select><option value="0">' . esc_html__( 'None', 'responsive-lightbox' ) . '</option></select> ';
1179
1180
if ( isset( $args['include_children'] ) && $args['include_children'] ) {
1181
$subhtml .= '<label class="rl-' . $tab_id . '-' . $menu_item . '-' . $field . '-include-children" for="rl-' . $tab_id . '-' . $menu_item . '-' . $field . '-include-children"><input id="rl-' . $tab_id . '-' . $menu_item . '-' . $field . '-include-children" type="checkbox" name="rl_gallery[' . $tab_id . '][' . $menu_item . '][' . $field . '][children]" value="true" ' . checked( $args['value']['children'], true, false ) . ' />' . esc_html__( 'Include children.', 'responsive-lightbox' ) . '</label>';
@@ -2032,7 +2032,7 @@ class Responsive_Lightbox_Galleries {
2032
'taxonomy' => $rl->options['folders']['media_taxonomy'],
2033
'folder' => array(
2034
'id' => 0,
2035
- 'children' => null
2036
)
2037
);
2038
@@ -2198,7 +2198,7 @@ class Responsive_Lightbox_Galleries {
2198
$folder_id = (int) $data[$menu_item]['folder']['id'];
2199
}
2200
2201
- if ( $folder_id > 0 ) {
2202
$include_children = false;
2203
2204
// null means folder was not changed
@@ -2216,14 +2216,48 @@ class Responsive_Lightbox_Galleries {
2216
}
2217
}
2218
2219
- // prepare query arguments
2220
- $wp_query_args = array(
2221
- 'post_type' => 'attachment',
2222
- 'post_status' => 'inherit',
2223
- 'nopaging' => true,
2224
- 'posts_per_page' => -1,
2225
- 'fields' => 'ids',
2226
- 'tax_query' => array(
2227
array(
2228
'taxonomy' => $args['taxonomy'],
2229
'field' => 'term_id',
@@ -2231,7 +2265,18 @@ class Responsive_Lightbox_Galleries {
2231
'include_children' => $include_children,
2232
'operator' => 'IN'
2233
)
2234
- )
2235
);
2236
2237
// is it preview?
@@ -2644,6 +2689,7 @@ class Responsive_Lightbox_Galleries {
2644
// get images
2645
$images = $this->get_gallery_images( $post_id, $args );
2646
2647
$data = array();
2648
2649
if ( $menu_item === 'remote_library' ) {
947
// assign main instance
948
$rl = Responsive_Lightbox();
949
950
+ wp_enqueue_script( 'responsive-lightbox-admin-gallery', RESPONSIVE_LIGHTBOX_URL . '/js/admin-gallery.js', array( 'jquery', 'underscore' ), $rl->defaults['version'], false );
951
952
wp_localize_script(
953
'responsive-lightbox-admin-gallery',
1160
array(
1161
'orderby' => 'name',
1162
'order' => 'asc',
1163
+ 'show_option_none' => __( 'Root Folder', 'responsive-lightbox' ),
1164
'show_option_all' => false,
1165
'show_count' => false,
1166
'hide_empty' => false,
1175
)
1176
);
1177
} else
1178
+ $subhtml = '<select id="rl-' . $tab_id . '-' . $menu_item . '-' . $field . '" name="rl_gallery[' . $tab_id . '][' . $menu_item . '][' . $field . '][]" ><option value="0">' . esc_html__( 'Root Folder', 'responsive-lightbox' ) . '</option></select> ';
1179
1180
if ( isset( $args['include_children'] ) && $args['include_children'] ) {
1181
$subhtml .= '<label class="rl-' . $tab_id . '-' . $menu_item . '-' . $field . '-include-children" for="rl-' . $tab_id . '-' . $menu_item . '-' . $field . '-include-children"><input id="rl-' . $tab_id . '-' . $menu_item . '-' . $field . '-include-children" type="checkbox" name="rl_gallery[' . $tab_id . '][' . $menu_item . '][' . $field . '][children]" value="true" ' . checked( $args['value']['children'], true, false ) . ' />' . esc_html__( 'Include children.', 'responsive-lightbox' ) . '</label>';
2032
'taxonomy' => $rl->options['folders']['media_taxonomy'],
2033
'folder' => array(
2034
'id' => 0,
2035
+ 'children' => null // do not change!
2036
)
2037
);
2038
2198
$folder_id = (int) $data[$menu_item]['folder']['id'];
2199
}
2200
2201
+ if ( $folder_id >= 0 ) {
2202
$include_children = false;
2203
2204
// null means folder was not changed
2216
}
2217
}
2218
2219
+ if ( $folder_id === 0 ) {
2220
+ if ( $include_children ) {
2221
+ $all_folders = get_terms(
2222
+ array(
2223
+ 'taxonomy' => $args['taxonomy'],
2224
+ 'hide_empty' => false,
2225
+ 'fields' => 'ids',
2226
+ 'hierarchical' => false,
2227
+ 'number' => 0
2228
+ )
2229
+ );
2230
+
2231
+ $tax_query = array(
2232
+ 'relation' => 'OR',
2233
+ array(
2234
+ 'taxonomy' => $args['taxonomy'],
2235
+ 'field' => 'term_id',
2236
+ 'terms' => ( ! is_wp_error( $all_folders ) ) ? $all_folders : $folder_id,
2237
+ 'include_children' => $include_children,
2238
+ 'operator' => 'IN'
2239
+ ),
2240
+ array(
2241
+ 'taxonomy' => $args['taxonomy'],
2242
+ 'field' => 'term_id',
2243
+ 'terms' => $folder_id,
2244
+ 'include_children' => $include_children,
2245
+ 'operator' => 'NOT EXISTS'
2246
+ )
2247
+ );
2248
+ } else {
2249
+ $tax_query = array(
2250
+ array(
2251
+ 'taxonomy' => $args['taxonomy'],
2252
+ 'field' => 'term_id',
2253
+ 'terms' => $folder_id,
2254
+ 'include_children' => $include_children,
2255
+ 'operator' => 'NOT EXISTS'
2256
+ )
2257
+ );
2258
+ }
2259
+ } else {
2260
+ $tax_query = array(
2261
array(
2262
'taxonomy' => $args['taxonomy'],
2263
'field' => 'term_id',
2265
'include_children' => $include_children,
2266
'operator' => 'IN'
2267
)
2268
+ );
2269
+ }
2270
+
2271
+ // prepare query arguments
2272
+ $wp_query_args = array(
2273
+ 'post_type' => 'attachment',
2274
+ 'post_status' => 'inherit',
2275
+ 'post_mime_type' => array( 'image/jpeg', 'image/gif', 'image/png' ),
2276
+ 'nopaging' => true,
2277
+ 'posts_per_page' => -1,
2278
+ 'fields' => 'ids',
2279
+ 'tax_query' => $tax_query
2280
);
2281
2282
// is it preview?
2689
// get images
2690
$images = $this->get_gallery_images( $post_id, $args );
2691
2692
+ // prepare JSON array
2693
$data = array();
2694
2695
if ( $menu_item === 'remote_library' ) {
includes/class-remote-library.php CHANGED
@@ -152,7 +152,7 @@ class Responsive_Lightbox_Remote_Library {
152
// get main instance
153
$rl = Responsive_Lightbox();
154
155
- wp_enqueue_script( 'rl-remote-library-media', RESPONSIVE_LIGHTBOX_URL . '/js/admin-media.js', array( 'jquery', 'media-views', 'media-models' ), $rl->defaults['version'] );
156
157
wp_localize_script(
158
'rl-remote-library-media',
@@ -164,6 +164,7 @@ class Responsive_Lightbox_Remote_Library {
164
'providersActive' => $this->get_active_providers(),
165
'allProviders' => __( 'All providers', 'responsive-lightbox' ),
166
'uploadAndInsert' => __( 'Upload and Insert', 'responsive-lightbox' ),
167
'filterByremoteLibrary' => __( 'Filter by remote library', 'responsive-lightbox' ),
168
'getUploadNonce' => wp_create_nonce( 'rl-remote-library-upload-image' )
169
)
152
// get main instance
153
$rl = Responsive_Lightbox();
154
155
+ wp_enqueue_script( 'rl-remote-library-media', RESPONSIVE_LIGHTBOX_URL . '/js/admin-media.js', array( 'jquery', 'media-models', 'underscore' ), $rl->defaults['version'] );
156
157
wp_localize_script(
158
'rl-remote-library-media',
164
'providersActive' => $this->get_active_providers(),
165
'allProviders' => __( 'All providers', 'responsive-lightbox' ),
166
'uploadAndInsert' => __( 'Upload and Insert', 'responsive-lightbox' ),
167
+ 'uploadAndSelect' => __( 'Upload and Select', 'responsive-lightbox' ),
168
'filterByremoteLibrary' => __( 'Filter by remote library', 'responsive-lightbox' ),
169
'getUploadNonce' => wp_create_nonce( 'rl-remote-library-upload-image' )
170
)
js/admin-folders.js CHANGED
@@ -11,187 +11,191 @@
11
event_data = {},
12
allow_modal_media_tag_saving = false;
13
14
- var RLWPMediaViewMediaFramePost = wp.media.view.MediaFrame.Post;
15
-
16
- // extend media frame
17
- wp.media.view.MediaFrame.Post = RLWPMediaViewMediaFramePost.extend( {
18
- initialize: function() {
19
- // calling the initalize method from the current frame before adding new functionality
20
- RLWPMediaViewMediaFramePost.prototype.initialize.apply( this, arguments );
21
-
22
- // events
23
- this.on( 'content:render', this.contentRender, this );
24
- },
25
- contentRender: function( view ) {
26
- // valid view?
27
- if ( view !== null ) {
28
- // get all selects
29
- var selects = view.toolbar.secondary.$el.find( 'select.attachment-filters' );
30
-
31
- // fix it only for more then 2 selects (default wp)
32
- if ( selects.length > 2 ) {
33
- // calculate new width
34
- var number = parseInt( 100 / selects.length ) - 2;
35
-
36
- $( selects ).each( function( i, el ) {
37
- $( el ).css( 'width', 'calc(' + number + '% - 12px)' );
38
- } );
39
- }
40
}
41
- }
42
- } );
43
44
- // add new media folder filter
45
- var RLWPMediaViewAttachmentFilters = wp.media.view.AttachmentFilters.extend( {
46
- id: 'media-attachment-rl-folders-filters',
47
- className: 'attachment-filters attachment-rl-folders-filter',
48
- change: function() {
49
- wp.media.view.AttachmentFilters.prototype.change.apply( this, arguments );
50
-
51
- if ( grid_frame !== null )
52
- grid_frame.controller.states.get( 'library' ).get( 'library' ).observe( wp.Uploader.queue );
53
- },
54
- createFilters: function() {
55
- var filters = {},
56
- term_id = 0,
57
- terms = $( $.parseHTML( rlFoldersArgs.terms ) ).find( 'option' );
58
-
59
- // root
60
- filters[0] = {
61
- text: rlFoldersArgs.root,
62
- priority: 1,
63
- props: {
64
- [rlFoldersArgs.taxonomy]: 0,
65
- 'force_update': 0,
66
- 'include_children': false
67
}
68
- };
69
-
70
- // media folder
71
- if ( rlFoldersArgs.terms !== '' && terms.length > 0 ) {
72
- $( $.parseHTML( rlFoldersArgs.terms ) ).find('option').each( function( i, option ) {
73
- term_id = parseInt( $(option).val() );
74
- term_id = ( term_id === 0 ? 'all' : term_id );
75
- last_priority = i + 2;
76
-
77
- filters[term_id] = {
78
- text: $( option ).text(),
79
- priority: last_priority,
80
- props: {
81
- [rlFoldersArgs.taxonomy]: term_id,
82
- 'force_update': 0,
83
- 'include_children': false
84
- }
85
- };
86
- } );
87
- // all files
88
- } else {
89
- filters['all'] = {
90
- text: rlFoldersArgs.all_terms,
91
priority: 1,
92
props: {
93
- [rlFoldersArgs.taxonomy]: 'all',
94
'force_update': 0,
95
- 'include_children': true
96
}
97
};
98
- }
99
-
100
- this.filters = filters;
101
- }
102
- } );
103
104
- var RLFoldersAttachmentsBrowser = wp.media.view.AttachmentsBrowser;
105
-
106
- // extend AttachmentsBrowser
107
- wp.media.view.AttachmentsBrowser = wp.media.view.AttachmentsBrowser.extend( {
108
- createToolbar: function() {
109
- // load the original toolbar
110
- RLFoldersAttachmentsBrowser.prototype.createToolbar.call( this );
111
112
- attachments_browser = this;
113
114
- // skip remote library
115
- if ( this.model.get( 'id' ) !== 'rl-remote-library' ) {
116
- this.toolbar.set( 'RLfoldersFilterLabel', new wp.media.view.Label( {
117
- value: 'Filter by folder',
118
- attributes: {
119
- 'for': 'media-attachment-rl-folders-filters'
120
- },
121
- priority: -75
122
- } ).render() );
123
-
124
- this.toolbar.set( 'RLfoldersAttachmentFilters', new RLWPMediaViewAttachmentFilters( {
125
- controller: this.controller,
126
- model: this.collection.props,
127
- priority: -75
128
- } ).render() );
129
}
130
- }
131
- } );
132
133
- // extend AttachmentCompat
134
- var RLAttachmentCompat = {
135
- save: wp.media.view.AttachmentCompat.prototype.save,
136
- postSave: wp.media.view.AttachmentCompat.prototype.postSave
137
- };
138
139
- $.extend( wp.media.view.AttachmentCompat.prototype, {
140
- save: function( event ) {
141
- if ( ! allow_modal_media_tag_saving ) {
142
- // RLAttachmentCompat.save.apply( this, arguments );
143
- // this.$el.closest( '.attachment-details' ).removeClass( 'save-ready' ).addClass( 'save-waiting' );
144
145
- return;
146
- }
147
148
- var select = $( '.rl-media-tag-select2' ),
149
- selected = select.select2( 'data' ),
150
- tags = [],
151
- data = {};
152
153
- for ( i = 0; i < selected.length; i++ ) {
154
- tags.push( selected[i].id );
155
- }
156
157
- if ( event )
158
- event.preventDefault();
159
160
- // get serialized data
161
- _.each( this.$el.serializeArray(), function( pair ) {
162
- data[ pair.name ] = pair.value;
163
- } );
164
165
- // update rl media tag
166
- data[select.attr( 'name' )] = tags.join( ',' );
167
168
- this.controller.trigger( 'attachment:compat:waiting', ['waiting'] );
169
- this.model.saveCompat( data ).always( _.bind( this.postSave, this ) );
170
171
- // display spinner
172
- this.$el.closest( '.attachment-details' ).removeClass( 'save-ready' ).addClass( 'save-waiting' );
173
- },
174
- postSave: function() {
175
- RLAttachmentCompat.postSave.apply( this, arguments );
176
177
- // hide spinner
178
- this.$el.closest( '.attachment-details' ).addClass( 'save-ready' ).removeClass( 'save-waiting' );
179
- }
180
- } );
181
182
- if ( typeof wp.Uploader !== 'undefined' ) {
183
- // extend uploader to apply dynamic folder ID
184
- $.extend( wp.Uploader.prototype, {
185
- init: function() {
186
- this.uploader.bind( 'BeforeUpload', function( file ) {
187
- file.settings.multipart_params.rl_folders_upload_files_term_id = rl_folder_id;
188
- } );
189
}
190
} );
191
- }
192
193
- // are we ready?
194
- $( document ).ready( function() {
195
// do nothing for wp_enqueue_media
196
if ( rlFoldersArgs.page === 'media' ) {
197
// folder change
@@ -215,6 +219,7 @@
215
216
// initialize draggable
217
draggable( 'list' );
218
} else {
219
// add tree
220
$( '#wp-media-grid .error' ).after( rlFoldersArgs.template );
11
event_data = {},
12
allow_modal_media_tag_saving = false;
13
14
+ if ( typeof wp.Uploader !== 'undefined' ) {
15
+ // extend uploader to apply dynamic folder ID
16
+ $.extend( wp.Uploader.prototype, {
17
+ init: function() {
18
+ this.uploader.bind( 'BeforeUpload', function( file ) {
19
+ file.settings.multipart_params.rl_folders_upload_files_term_id = rl_folder_id;
20
+ } );
21
}
22
+ } );
23
+ }
24
25
+ // are we ready?
26
+ $( document ).ready( function() {
27
+ var RLWPMediaViewMediaFramePost = wp.media.view.MediaFrame.Post;
28
+
29
+ // extend media frame
30
+ wp.media.view.MediaFrame.Post = RLWPMediaViewMediaFramePost.extend( {
31
+ initialize: function() {
32
+ // calling the initalize method from the current frame before adding new functionality
33
+ RLWPMediaViewMediaFramePost.prototype.initialize.apply( this, arguments );
34
+
35
+ // events
36
+ this.on( 'content:render', this.contentRender, this );
37
+ },
38
+ contentRender: function( view ) {
39
+ // valid view?
40
+ if ( view !== null ) {
41
+ // get all selects
42
+ var selects = view.toolbar.secondary.$el.find( 'select.attachment-filters' );
43
+
44
+ // fix it only for more then 2 selects (default wp)
45
+ if ( selects.length > 2 ) {
46
+ // calculate new width
47
+ var number = parseInt( 100 / selects.length ) - 2;
48
+
49
+ $( selects ).each( function( i, el ) {
50
+ $( el ).css( 'width', 'calc(' + number + '% - 12px)' );
51
+ } );
52
+ }
53
}
54
+ }
55
+ } );
56
+
57
+ // add new media folder filter
58
+ var RLWPMediaViewAttachmentFilters = wp.media.view.AttachmentFilters.extend( {
59
+ id: 'media-attachment-rl-folders-filters',
60
+ className: 'attachment-filters attachment-rl-folders-filter',
61
+ change: function() {
62
+ wp.media.view.AttachmentFilters.prototype.change.apply( this, arguments );
63
+
64
+ if ( grid_frame !== null )
65
+ grid_frame.controller.states.get( 'library' ).get( 'library' ).observe( wp.Uploader.queue );
66
+ },
67
+ createFilters: function() {
68
+ var filters = {},
69
+ term_id = 0,
70
+ terms = $( $.parseHTML( rlFoldersArgs.terms ) ).find( 'option' );
71
+
72
+ // root
73
+ var root = {
74
+ text: rlFoldersArgs.root,
75
priority: 1,
76
props: {
77
+ [rlFoldersArgs.taxonomy]: 0,
78
'force_update': 0,
79
+ 'include_children': false
80
}
81
};
82
83
+ // media folder
84
+ if ( rlFoldersArgs.terms !== '' && terms.length > 0 ) {
85
+ filters[0] = root;
86
+
87
+ $( $.parseHTML( rlFoldersArgs.terms ) ).find('option').each( function( i, option ) {
88
+ term_id = parseInt( $(option).val() );
89
+ term_id = ( term_id === 0 ? 'all' : term_id );
90
+ last_priority = i + 2;
91
+
92
+ filters[term_id] = {
93
+ text: $( option ).text(),
94
+ priority: last_priority,
95
+ props: {
96
+ [rlFoldersArgs.taxonomy]: term_id,
97
+ 'force_update': 0,
98
+ 'include_children': false
99
+ }
100
+ };
101
+ } );
102
+ // all files
103
+ } else {
104
+ filters['all'] = {
105
+ text: rlFoldersArgs.all_terms,
106
+ priority: 1,
107
+ props: {
108
+ [rlFoldersArgs.taxonomy]: 'all',
109
+ 'force_update': 0,
110
+ 'include_children': true
111
+ }
112
+ };
113
114
+ filters[0] = root;
115
+ }
116
117
+ this.filters = filters;
118
}
119
+ } );
120
121
+ var RLFoldersAttachmentsBrowser = wp.media.view.AttachmentsBrowser;
122
+
123
+ // extend AttachmentsBrowser
124
+ wp.media.view.AttachmentsBrowser = wp.media.view.AttachmentsBrowser.extend( {
125
+ createToolbar: function() {
126
+ // load the original toolbar
127
+ RLFoldersAttachmentsBrowser.prototype.createToolbar.call( this );
128
+
129
+ attachments_browser = this;
130
+
131
+ // skip remote library
132
+ if ( this.model.get( 'id' ) !== 'rl-remote-library' ) {
133
+ this.toolbar.set( 'RLfoldersFilterLabel', new wp.media.view.Label( {
134
+ value: 'Filter by folder',
135
+ attributes: {
136
+ 'for': 'media-attachment-rl-folders-filters'
137
+ },
138
+ priority: -75
139
+ } ).render() );
140
+
141
+ this.toolbar.set( 'RLfoldersAttachmentFilters', new RLWPMediaViewAttachmentFilters( {
142
+ controller: this.controller,
143
+ model: this.collection.props,
144
+ priority: -75
145
+ } ).render() );
146
+ }
147
+ }
148
+ } );
149
150
+ // extend AttachmentCompat
151
+ var RLAttachmentCompat = {
152
+ save: wp.media.view.AttachmentCompat.prototype.save,
153
+ postSave: wp.media.view.AttachmentCompat.prototype.postSave
154
+ };
155
156
+ $.extend( wp.media.view.AttachmentCompat.prototype, {
157
+ save: function( event ) {
158
+ if ( ! allow_modal_media_tag_saving ) {
159
+ // RLAttachmentCompat.save.apply( this, arguments );
160
+ // this.$el.closest( '.attachment-details' ).removeClass( 'save-ready' ).addClass( 'save-waiting' );
161
162
+ return;
163
+ }
164
165
+ var select = $( '.rl-media-tag-select2' ),
166
+ selected = select.select2( 'data' ),
167
+ tags = [],
168
+ data = {};
169
170
+ for ( i = 0; i < selected.length; i++ ) {
171
+ tags.push( selected[i].id );
172
+ }
173
174
+ if ( event )
175
+ event.preventDefault();
176
177
+ // get serialized data
178
+ _.each( this.$el.serializeArray(), function( pair ) {
179
+ data[ pair.name ] = pair.value;
180
+ } );
181
182
+ // update rl media tag
183
+ data[select.attr( 'name' )] = tags.join( ',' );
184
185
+ this.controller.trigger( 'attachment:compat:waiting', ['waiting'] );
186
+ this.model.saveCompat( data ).always( _.bind( this.postSave, this ) );
187
188
+ // display spinner
189
+ this.$el.closest( '.attachment-details' ).removeClass( 'save-ready' ).addClass( 'save-waiting' );
190
+ },
191
+ postSave: function() {
192
+ RLAttachmentCompat.postSave.apply( this, arguments );
193
194
+ // hide spinner
195
+ this.$el.closest( '.attachment-details' ).addClass( 'save-ready' ).removeClass( 'save-waiting' );
196
}
197
} );
198
199
// do nothing for wp_enqueue_media
200
if ( rlFoldersArgs.page === 'media' ) {
201
// folder change
219
220
// initialize draggable
221
draggable( 'list' );
222
+ // grid
223
} else {
224
// add tree
225
$( '#wp-media-grid .error' ).after( rlFoldersArgs.template );
js/admin-galleries.js CHANGED
@@ -514,36 +514,28 @@
514
var atts = subel.attr( 'name' ).slice( 0, -1 ).split( '][' ),
515
new_value = {},
516
last;
517
- console.log( atts );
518
519
for ( var i = atts.length - nofa; i <= atts.length; i++ ) {
520
- console.log( 1 );
521
- // console.log( nofa );
522
var number = i - 1;
523
- console.log( 2 );
524
// first element?
525
if ( i === atts.length ) {
526
- console.log( 2.1 );
527
// new_value2 .= '[' + atts[number] + ']';
528
new_value = response.data.data[atts[number]];
529
} else {
530
- console.log( 2.2 );
531
last = new_value[atts[number]];
532
}
533
- console.log( 3 );
534
// remember last array
535
new_value = last;
536
- console.log( 4 );
537
// do not reset for last element
538
// if ( number > atts.length - nofa )
539
// new_value = {};
540
}
541
542
- console.log( 5 );
543
// get new array
544
value = new_value;
545
- console.log( value );
546
- console.log( 6 );
547
} else
548
subel.val( response.data.data );
549
break;
514
var atts = subel.attr( 'name' ).slice( 0, -1 ).split( '][' ),
515
new_value = {},
516
last;
517
518
for ( var i = atts.length - nofa; i <= atts.length; i++ ) {
519
var number = i - 1;
520
+
521
// first element?
522
if ( i === atts.length ) {
523
// new_value2 .= '[' + atts[number] + ']';
524
new_value = response.data.data[atts[number]];
525
} else {
526
last = new_value[atts[number]];
527
}
528
+
529
// remember last array
530
new_value = last;
531
+
532
// do not reset for last element
533
// if ( number > atts.length - nofa )
534
// new_value = {};
535
}
536
537
// get new array
538
value = new_value;
539
} else
540
subel.val( response.data.data );
541
break;
js/admin-media.js CHANGED
@@ -1,336 +1,434 @@
1
( function ( $ ) {
2
3
- var gutenberg_active = typeof rlBlockEditor !== 'undefined';
4
5
- if ( gutenberg_active ) {
6
- RLWPMediaViewMediaFramePostTrigger = wp.media.view.MediaFrame.Post.prototype.trigger;
7
8
- // extend MediaFrame.Post
9
- wp.media.view.MediaFrame.Post.prototype.trigger = function( action ) {
10
- RLWPMediaViewMediaFramePostTrigger.apply( this, Array.prototype.slice.call( arguments ) );
11
12
- if ( action === 'open' ) {
13
- if ( $( this.modal.clickedOpenerEl ).hasClass( 'rl-remote-library-media-button' ) )
14
- this.setState( 'rl-remote-library' );
15
- else if ( $( this.modal.clickedOpenerEl ).hasClass( 'rl-gallery-media-button' ) )
16
- this.setState( 'rl-gallery' );
17
}
18
}
19
- }
20
-
21
- // add new media folder filter
22
- var RLWPMediaViewAttachmentFilters = wp.media.view.AttachmentFilters.extend( {
23
- id: 'media-attachment-rl-remote-library-filters',
24
- className: 'attachment-filters attachment-rl-remote-library-filter',
25
- createFilters: function() {
26
- var filters = {
27
- all: {
28
- text: rlRemoteLibraryMedia.allProviders,
29
- priority: 1,
30
- props: {
31
- media_provider: 'all'
32
}
33
- }
34
- };
35
36
- // add active providers
37
- for ( var i = 0; i < rlRemoteLibraryMedia.providersActive.length; i++ ) {
38
- var provider = rlRemoteLibraryMedia.providersActive[i];
39
40
- filters[provider] = {
41
- text: rlRemoteLibraryMedia.providers[provider].name,
42
- priority: i + 2,
43
- props: {
44
- media_provider: provider
45
}
46
}
47
- }
48
-
49
- this.filters = filters;
50
- }
51
- } );
52
53
- var RLWPMediaViewAttachmentsBrowser = wp.media.view.AttachmentsBrowser;
54
-
55
- wp.media.view.AttachmentsBrowser = wp.media.view.AttachmentsBrowser.extend( {
56
- createToolbar: function() {
57
- // load the original toolbar
58
- RLWPMediaViewAttachmentsBrowser.prototype.createToolbar.call( this );
59
60
- if ( this.model.get( 'id' ) === 'rl-remote-library' ) {
61
- this.toolbar.set( 'RLremoteLibraryFilterLabel', new wp.media.view.Label( {
62
- value: rlRemoteLibraryMedia.filterByremoteLibrary,
63
- attributes: {
64
- 'for': 'media-attachment-rl-remote-library-filters'
65
- },
66
- priority: -75
67
- } ).render() );
68
-
69
- this.toolbar.set( 'RLremoteLibraryAttachmentFilters', new RLWPMediaViewAttachmentFilters( {
70
- controller: this.controller,
71
- model: this.collection.props,
72
- priority: -75
73
- } ).render() );
74
}
75
- }
76
- } );
77
78
- var RLRemoteLibraryCollection,
79
- RLRemoteLibraryContentView,
80
- RLWPMediaViewMediaFramePost = wp.media.view.MediaFrame.Post,
81
- attachment_defaults = {
82
- width: 0,
83
- height: 0
84
- };
85
-
86
- // add new attributes
87
- RLWPMediaViewMediaFramePost.currentAttachment = attachment_defaults;
88
- RLWPMediaViewMediaFramePost.remoteLibraryImage = false;
89
- RLWPMediaViewMediaFramePost.requestHash = '';
90
-
91
- // extend media frame
92
- wp.media.view.MediaFrame.Post = RLWPMediaViewMediaFramePost.extend( {
93
- initialize: function() {
94
- // calling the initalize method from the current frame before adding new functionality
95
- RLWPMediaViewMediaFramePost.prototype.initialize.apply( this, arguments );
96
-
97
- // adding new state for remote library image
98
- this.states.add( [
99
- new wp.media.controller.Library( {
100
- id: 'rl-remote-library',
101
- title: 'Remote Library',
102
- priority: 99,
103
- toolbar: gutenberg_active ? 'select' : 'main-insert',
104
- multiple: false,
105
- editable: true,
106
- allowLocalEdits: true,
107
- library: new wp.media.model.Attachments(),
108
- displaySettings: true,
109
- displayUserSettings: true,
110
- filterable: true,
111
- searchable: true,
112
- content: 'browse',
113
- router: false,
114
- date: false,
115
- sortable: false,
116
- type: 'image',
117
- dragInfo: false,
118
- menu: gutenberg_active ? false : 'default'
119
- } )
120
- ] );
121
-
122
- var RLWPMediaEditorSendAttachment = wp.media.editor.send.attachment;
123
-
124
- // replace send attachment
125
- wp.media.editor.send.attachment = function( props, attachment ) {
126
- // remote library simulated attachment?
127
- if ( typeof attachment.remote_library_image !== 'undefined' && attachment.remote_library_image === true ) {
128
- RLWPMediaViewMediaFramePost.remoteLibraryImage = true;
129
-
130
- if ( props.size === 'thumbnail' ) {
131
- RLWPMediaViewMediaFramePost.currentAttachment.width = attachment.thumbnail_width;
132
- RLWPMediaViewMediaFramePost.currentAttachment.height = attachment.thumbnail_height;
133
- } else {
134
- RLWPMediaViewMediaFramePost.currentAttachment.width = attachment.width;
135
- RLWPMediaViewMediaFramePost.currentAttachment.height = attachment.height;
136
}
137
}
138
139
- // return original function
140
- return RLWPMediaEditorSendAttachment( props, attachment );
141
- }
142
143
- var RLWPMediaPost = wp.media.post;
144
145
- // replace ajax request
146
- wp.media.post = function( action, data ) {
147
- // send attachment to editor action?
148
- if ( action === 'send-attachment-to-editor' && RLWPMediaViewMediaFramePost.remoteLibraryImage === true ) {
149
- var attachmentID = data.attachment.id;
150
151
- // replace pseudo ID with generated thumbnial ID
152
- data.attachment.id = parseInt( rlRemoteLibraryMedia.thumbnailID );
153
154
- // set pseudo ID too
155
- data.attachment.att_id = attachmentID;
156
157
- // select this image as remote library one
158
- data.attachment.remote_library_image = true;
159
160
- // set new dimensions
161
- data.attachment.width = RLWPMediaViewMediaFramePost.currentAttachment.width;
162
- data.attachment.height = RLWPMediaViewMediaFramePost.currentAttachment.height;
163
164
- // back to defaults
165
- RLWPMediaViewMediaFramePost.currentAttachment = attachment_defaults;
166
167
- // restore defaulkt behavior
168
- RLWPMediaViewMediaFramePost.remoteLibraryImage = false;
169
}
170
171
- // return original function
172
- return RLWPMediaPost( action, data );
173
- }
174
175
- // events
176
- this.on( 'activate', this.contentRender, this );
177
- },
178
- contentRender: function() {
179
- // get view content
180
- var view = this.content.get();
181
182
- // valid remote library view?
183
- if ( view !== null && 'model' in view && view.model.id === 'rl-remote-library' ) {
184
- var contentState = this.state(),
185
- contentSelection = contentState.get( 'selection' );
186
187
- // clear selection
188
- contentSelection.reset();
189
190
- var toolbar = this.toolbar.get(),
191
- controller = this,
192
- spinner = view.toolbar.get( 'spinner' );
193
194
- // display spinner
195
- spinner.$el.css( 'marginLeft', '6px' );
196
- spinner.show();
197
198
- // hide uploader view
199
- view.$el.find( '.uploader-inline' ).addClass( 'hidden' );
200
-
201
- this.selectionStatusToolbar( toolbar );
202
-
203
- // add upload button
204
- toolbar.set( 'rl-upload-insert', {
205
- style: 'primary',
206
- priority: 80,
207
- text: rlRemoteLibraryMedia.uploadAndInsert,
208
- requires: { selection: true },
209
- click: function() {
210
- var state = controller.state(),
211
- selection = state.get( 'selection' ),
212
- image = selection.single(),
213
- content = controller.content.get(),
214
- attachment = content.attachments.$el.find( 'li[data-id="' + image.attributes.id + '"] .thumbnail' ),
215
- attachment_image = attachment.find( '.centered' );
216
-
217
- attachment_image.css( { opacity: 0.1, transition: 'opacity 500ms' } );
218
- attachment_image.after( '<div class="media-progress-bar"><div style="width: 20%"></div></div>' );
219
-
220
- var progress = attachment.find( '.media-progress-bar div' ),
221
- transition = progress.css( 'transition' );
222
-
223
- progress.css( 'transition', 'width 10s' ).animate( { width: "100%" }, 0 );
224
-
225
- $.post( ajaxurl, {
226
- action: 'rl_upload_image',
227
- image: image.attributes,
228
- post_id: rlRemoteLibraryMedia.postID,
229
- rlnonce: rlRemoteLibraryMedia.getUploadNonce
230
- } ).done( function( response ) {
231
- progress.css( 'transition', 'width 0.5s' ).animate( { width: "100%" }, 0, function() {
232
- attachment_image.css( { opacity: 1, transition: '' } );
233
-
234
- $( this ).css( 'transition', transition );
235
-
236
- // update attachment data
237
- selection.models[0].attributes.id = parseInt( response.id );
238
- selection.models[0].attributes.url = response.full[0];
239
- selection.models[0].attributes.sizes.full.url = response.full[0];
240
-
241
- // remove progress bar
242
- progress.remove();
243
-
244
- // close modal
245
- controller.close();
246
-
247
- // trigger insert event
248
- state.trigger( ( gutenberg_active ? 'select' : 'insert' ), selection ).reset();
249
- } );
250
- } ).always( function( data ) {
251
- //
252
- } );
253
- }
254
- } );
255
256
- RLRemoteLibraryContentView = view;
257
- RLRemoteLibraryContentView.blockScrolling = false;
258
- RLRemoteLibraryContentView.responseData = [];
259
260
- var model = view.model.collection.get( 'rl-remote-library' );
261
262
- // set scroll event
263
- this.handleScroll = _.chain( this.handleScroll ).bind( view ).throttle( wp.media.isTouchDevice ? 300 : 200 ).value();
264
265
- // bind scroll event
266
- view.attachments.$el.on( 'scroll', this.handleScroll );
267
268
- // assign model
269
- RLRemoteLibraryCollection = model;
270
271
- // run ajax calls for all providers
272
- var promise = remoteQuery( 'all', '', 1, [] );
273
274
- promise.then(
275
- result => {
276
- // any results?
277
- if ( result.images.length ) {
278
- // add images to library
279
- model.attributes.library.push( result.images );
280
281
- // increase page number
282
- RLWPMediaModelAttachments.media_page++;
283
284
- RLRemoteLibraryContentView.blockScrolling = false;
285
- RLRemoteLibraryContentView.responseData = result.data;
286
287
- // last page?
288
- if ( result.last === false )
289
- this.handleScroll();
290
- }
291
292
- // hide spinner
293
- view.toolbar.get( 'spinner' ).hide();
294
- },
295
- error => {
296
- RLRemoteLibraryContentView.blockScrolling = false;
297
- RLRemoteLibraryContentView.responseData = [];
298
- }
299
- );
300
}
301
- },
302
- handleScroll: function() {
303
- // is another scrolling pending?
304
- if ( RLRemoteLibraryContentView.blockScrolling )
305
- return;
306
-
307
- var view = this.views.parent,
308
- el = this.attachments.el,
309
- scrollTop = el.scrollTop;
310
-
311
- // the scroll event occurs on the document, but the element that should be checked is the document body
312
- if ( el === document ) {
313
- el = document.body;
314
- scrollTop = $( document ).scrollTop();
315
}
316
317
- if ( ! $( el ).is( ':visible' ) )
318
- return;
319
320
- // get content view
321
- var content = view.content.get();
322
323
- // show the spinner only if we are close to the bottom.
324
- if ( el.scrollHeight - ( scrollTop + el.clientHeight ) < el.clientHeight / 3 )
325
- content.toolbar.get( 'spinner' ).show();
326
327
- if ( el.scrollHeight < scrollTop + ( el.clientHeight * 3 ) ) {
328
RLRemoteLibraryContentView.blockScrolling = true;
329
330
// display spinner
331
- content.toolbar.get( 'spinner' ).show();
332
333
- var promise = remoteQuery( RLWPMediaModelAttachments.media_provider, RLWPMediaModelAttachments.media_search, RLWPMediaModelAttachments.media_page, RLRemoteLibraryContentView.responseData );
334
335
promise.then(
336
result => {
@@ -342,16 +440,17 @@
342
// increase page number
343
RLWPMediaModelAttachments.media_page++;
344
345
RLRemoteLibraryContentView.blockScrolling = false;
346
RLRemoteLibraryContentView.responseData = result.data;
347
348
// last page?
349
if ( result.last === false )
350
- view.handleScroll( result.data );
351
}
352
353
// hide spinner
354
- content.toolbar.get( 'spinner' ).hide();
355
},
356
error => {
357
RLRemoteLibraryContentView.blockScrolling = false;
@@ -359,129 +458,32 @@
359
}
360
);
361
}
362
- }
363
- } );
364
-
365
- var RLWPMediaViewSettingsAttachmentDisplay = wp.media.view.Settings.AttachmentDisplay;
366
-
367
- wp.media.view.Settings.AttachmentDisplay = wp.media.view.Settings.AttachmentDisplay.extend( {
368
- render: function() {
369
- // remove medium size
370
- if ( typeof this.options.attachment.attributes.remote_library_image !== 'undefined' && this.options.attachment.attributes.remote_library_image )
371
- delete this.options.attachment.attributes.sizes.medium;
372
-
373
- // load the original render function
374
- RLWPMediaViewSettingsAttachmentDisplay.prototype.render.call( this );
375
-
376
- return this;
377
- }
378
- } );
379
-
380
- var RLWPMediaModelAttachments = wp.media.model.Attachments;
381
-
382
- // add new attributes
383
- RLWPMediaModelAttachments.media_page = 1;
384
- RLWPMediaModelAttachments.media_provider = 'all';
385
- RLWPMediaModelAttachments.media_search = '';
386
-
387
- // extend media frame
388
- wp.media.model.Attachments = RLWPMediaModelAttachments.extend( {
389
- initialize: function() {
390
- // calling the initalize method from the current frame before adding new functionality
391
- RLWPMediaModelAttachments.prototype.initialize.apply( this, arguments );
392
-
393
- // events
394
- this.props.on( 'change', this.handleFilters );
395
- },
396
- handleFilters: function() {
397
- // clear current collection
398
- RLRemoteLibraryCollection.attributes.library.reset();
399
-
400
- // clear current selection
401
- RLRemoteLibraryCollection.get( 'selection' ).reset();
402
-
403
- // hide uploader view
404
- RLRemoteLibraryContentView.$el.find( '.uploader-inline' ).addClass( 'hidden' );
405
-
406
- // reset page to first
407
- RLWPMediaModelAttachments.media_page = 1;
408
-
409
- // clear response data
410
- RLRemoteLibraryContentView.responseData = [];
411
-
412
- // make sure media provider is set
413
- if ( typeof this.attributes.media_provider === 'undefined' )
414
- RLWPMediaModelAttachments.media_provider = this.attributes.media_provider = 'all';
415
- else
416
- RLWPMediaModelAttachments.media_provider = this.attributes.media_provider;
417
-
418
- // make sure search phrase is set
419
- if ( typeof this.attributes.search === 'undefined' )
420
- RLWPMediaModelAttachments.media_search = this.attributes.search = '';
421
- else
422
- RLWPMediaModelAttachments.media_search = this.attributes.search;
423
-
424
- // disable scroll event
425
- RLRemoteLibraryContentView.blockScrolling = true;
426
-
427
- // display spinner
428
- RLRemoteLibraryContentView.toolbar.get( 'spinner' ).show();
429
-
430
- var promise = remoteQuery( this.attributes.media_provider, this.attributes.search, RLWPMediaModelAttachments.media_page, RLRemoteLibraryContentView.responseData );
431
-
432
- promise.then(
433
- result => {
434
- // any results?
435
- if ( result.images.length ) {
436
- // add images to library
437
- RLRemoteLibraryCollection.attributes.library.push( result.images );
438
-
439
- // increase page number
440
- RLWPMediaModelAttachments.media_page++;
441
-
442
- // allow scrolling
443
- RLRemoteLibraryContentView.blockScrolling = false;
444
- RLRemoteLibraryContentView.responseData = result.data;
445
-
446
- // last page?
447
- if ( result.last === false )
448
- RLRemoteLibraryContentView.views.parent.handleScroll();
449
- }
450
-
451
- // hide spinner
452
- RLRemoteLibraryContentView.toolbar.get( 'spinner' ).hide();
453
- },
454
- error => {
455
- RLRemoteLibraryContentView.blockScrolling = false;
456
- RLRemoteLibraryContentView.responseData = [];
457
- }
458
- );
459
- }
460
- } );
461
462
- function remoteQuery( provider, phrase, page, response_data ) {
463
- var promise = new Promise( ( resolve, reject ) => {
464
- // set current request phrase
465
- RLWPMediaViewMediaFramePost.requestHash = 'provider:' + provider + '|phrase:' + phrase;
466
-
467
- $.post( ajaxurl, {
468
- action: 'rl_remote_library_query',
469
- media_provider: provider,
470
- media_search: phrase,
471
- media_page: page,
472
- response_data: response_data
473
- } ).done( function( response ) {
474
- // valid request hash?
475
- if ( RLWPMediaViewMediaFramePost.requestHash === 'provider:' + provider + '|phrase:' + phrase )
476
- resolve( response );
477
- else
478
reject( [] );
479
- } ).fail( function() {
480
- reject( [] );
481
} );
482
- } );
483
484
- return promise;
485
- }
486
487
} )( jQuery );
1
( function ( $ ) {
2
3
+ $( document ).on( 'ready', function() {
4
+ var gutenberg_active = typeof rlBlockEditor !== 'undefined';
5
6
+ if ( gutenberg_active ) {
7
+ RLWPMediaViewMediaFramePostTrigger = wp.media.view.MediaFrame.Post.prototype.trigger;
8
9
+ // extend MediaFrame.Post
10
+ wp.media.view.MediaFrame.Post.prototype.trigger = function( action ) {
11
+ RLWPMediaViewMediaFramePostTrigger.apply( this, Array.prototype.slice.call( arguments ) );
12
13
+ if ( action === 'open' ) {
14
+ if ( $( this.modal.clickedOpenerEl ).hasClass( 'rl-remote-library-media-button' ) )
15
+ this.setState( 'rl-remote-library' );
16
+ else if ( $( this.modal.clickedOpenerEl ).hasClass( 'rl-gallery-media-button' ) )
17
+ this.setState( 'rl-gallery' );
18
+ }
19
}
20
}
21
+
22
+ // add new media folder filter
23
+ var RLWPMediaViewAttachmentFilters = wp.media.view.AttachmentFilters.extend( {
24
+ id: 'media-attachment-rl-remote-library-filters',
25
+ className: 'attachment-filters attachment-rl-remote-library-filter',
26
+ createFilters: function() {
27
+ var filters = {
28
+ all: {
29
+ text: rlRemoteLibraryMedia.allProviders,
30
+ priority: 1,
31
+ props: {
32
+ media_provider: 'all'
33
+ }
34
}
35
+ };
36
37
+ // add active providers
38
+ for ( var i = 0; i < rlRemoteLibraryMedia.providersActive.length; i++ ) {
39
+ var provider = rlRemoteLibraryMedia.providersActive[i];
40
41
+ filters[provider] = {
42
+ text: rlRemoteLibraryMedia.providers[provider].name,
43
+ priority: i + 2,
44
+ props: {
45
+ media_provider: provider
46
+ }
47
}
48
}
49
50
+ this.filters = filters;
51
+ }
52
+ } );
53
54
+ var RLWPMediaViewAttachmentsBrowser = wp.media.view.AttachmentsBrowser;
55
+
56
+ wp.media.view.AttachmentsBrowser = wp.media.view.AttachmentsBrowser.extend( {
57
+ createToolbar: function() {
58
+ // load the original toolbar
59
+ RLWPMediaViewAttachmentsBrowser.prototype.createToolbar.call( this );
60
+
61
+ if ( this.model.get( 'id' ) === 'rl-remote-library' ) {
62
+ this.toolbar.set( 'RLremoteLibraryFilterLabel', new wp.media.view.Label( {
63
+ value: rlRemoteLibraryMedia.filterByremoteLibrary,
64
+ attributes: {
65
+ 'for': 'media-attachment-rl-remote-library-filters'
66
+ },
67
+ priority: -75
68
+ } ).render() );
69
+
70
+ this.toolbar.set( 'RLremoteLibraryAttachmentFilters', new RLWPMediaViewAttachmentFilters( {
71
+ controller: this.controller,
72
+ model: this.collection.props,
73
+ priority: -75
74
+ } ).render() );
75
+ }
76
}
77
+ } );
78
+
79
+ var RLRemoteLibraryCollection,
80
+ RLRemoteLibraryContentView,
81
+ RLWPMediaViewMediaFramePost = wp.media.view.MediaFrame.Post,
82
+ attachment_defaults = {
83
+ width: 0,
84
+ height: 0
85
+ };
86
87
+ // add new attributes
88
+ RLWPMediaViewMediaFramePost.currentAttachment = attachment_defaults;
89
+ RLWPMediaViewMediaFramePost.remoteLibraryImage = false;
90
+ RLWPMediaViewMediaFramePost.requestHash = '';
91
+
92
+ // extend media frame
93
+ wp.media.view.MediaFrame.Post = RLWPMediaViewMediaFramePost.extend( {
94
+ initialize: function() {
95
+ // calling the initalize method from the current frame before adding new functionality
96
+ RLWPMediaViewMediaFramePost.prototype.initialize.apply( this, arguments );
97
+
98
+ // adding new state for remote library image
99
+ this.states.add( [
100
+ new wp.media.controller.Library( {
101
+ id: 'rl-remote-library',
102
+ title: 'Remote Library',
103
+ priority: 99,
104
+ toolbar: gutenberg_active ? 'select' : 'main-insert',
105
+ multiple: false,
106
+ editable: true,
107
+ allowLocalEdits: true,
108
+ library: new wp.media.model.Attachments(),
109
+ displaySettings: true,
110
+ displayUserSettings: true,
111
+ filterable: true,
112
+ searchable: true,
113
+ content: 'browse',
114
+ router: false,
115
+ date: false,
116
+ sortable: false,
117
+ type: 'image',
118
+ dragInfo: false,
119
+ menu: gutenberg_active ? false : 'default'
120
+ } )
121
+ ] );
122
+
123
+ var RLWPMediaEditorSendAttachment = wp.media.editor.send.attachment;
124
+
125
+ // replace send attachment
126
+ wp.media.editor.send.attachment = function( props, attachment ) {
127
+ // remote library simulated attachment?
128
+ if ( typeof attachment.remote_library_image !== 'undefined' && attachment.remote_library_image === true ) {
129
+ RLWPMediaViewMediaFramePost.remoteLibraryImage = true;
130
+
131
+ if ( props.size === 'thumbnail' ) {
132
+ RLWPMediaViewMediaFramePost.currentAttachment.width = attachment.thumbnail_width;
133
+ RLWPMediaViewMediaFramePost.currentAttachment.height = attachment.thumbnail_height;
134
+ } else {
135
+ RLWPMediaViewMediaFramePost.currentAttachment.width = attachment.width;
136
+ RLWPMediaViewMediaFramePost.currentAttachment.height = attachment.height;
137
+ }
138
}
139
+
140
+ // return original function
141
+ return RLWPMediaEditorSendAttachment( props, attachment );
142
}
143
144
+ var RLWPMediaPost = wp.media.post;
145
146
+ // replace ajax request
147
+ wp.media.post = function( action, data ) {
148
+ // send attachment to editor action?
149
+ if ( action === 'send-attachment-to-editor' && RLWPMediaViewMediaFramePost.remoteLibraryImage === true ) {
150
+ var attachmentID = data.attachment.id;
151
152
+ // replace pseudo ID with generated thumbnial ID
153
+ data.attachment.id = parseInt( rlRemoteLibraryMedia.thumbnailID );
154
155
+ // set pseudo ID too
156
+ data.attachment.att_id = attachmentID;
157
158
+ // select this image as remote library one
159
+ data.attachment.remote_library_image = true;
160
161
+ // set new dimensions
162
+ data.attachment.width = RLWPMediaViewMediaFramePost.currentAttachment.width;
163
+ data.attachment.height = RLWPMediaViewMediaFramePost.currentAttachment.height;
164
165
+ // back to defaults
166
+ RLWPMediaViewMediaFramePost.currentAttachment = attachment_defaults;
167
168
+ // restore defaulkt behavior
169
+ RLWPMediaViewMediaFramePost.remoteLibraryImage = false;
170
+ }
171
172
+ // return original function
173
+ return RLWPMediaPost( action, data );
174
}
175
176
+ // events
177
+ this.on( 'activate', this.activateContent, this );
178
+ },
179
+ activateContent: function() {
180
+ // get view content
181
+ var view = this.content.get();
182
+
183
+ // valid remote library view?
184
+ if ( view !== null && 'model' in view && view.model.id === 'rl-remote-library' ) {
185
+ var contentState = this.state(),
186
+ contentSelection = contentState.get( 'selection' );
187
+
188
+ // clear selection
189
+ contentSelection.reset();
190
+
191
+ var toolbar = this.toolbar.get(),
192
+ controller = this,
193
+ spinner = view.toolbar.get( 'spinner' );
194
+
195
+ // display spinner
196
+ spinner.$el.css( 'marginLeft', '6px' );
197
+ spinner.show();
198
+
199
+ // hide uploader view
200
+ view.$el.find( '.uploader-inline' ).addClass( 'hidden' );
201
+
202
+ this.selectionStatusToolbar( toolbar );
203
+
204
+ // add upload button
205
+ toolbar.set( 'rl-upload-insert', {
206
+ style: 'primary',
207
+ priority: 20,
208
+ text: gutenberg_active ? rlRemoteLibraryMedia.uploadAndSelect : rlRemoteLibraryMedia.uploadAndInsert,
209
+ requires: { selection: true },
210
+ click: function() {
211
+ var state = controller.state(),
212
+ selection = state.get( 'selection' ),
213
+ image = selection.single(),
214
+ content = controller.content.get(),
215
+ attachment = content.attachments.$el.find( 'li[data-id="' + image.attributes.id + '"] .thumbnail' ),
216
+ attachment_image = attachment.find( '.centered' );
217
+
218
+ attachment_image.css( { opacity: 0.1, transition: 'opacity 500ms' } );
219
+ attachment_image.after( '<div class="media-progress-bar"><div style="width: 20%"></div></div>' );
220
+
221
+ var progress = attachment.find( '.media-progress-bar div' ),
222
+ transition = progress.css( 'transition' );
223
+
224
+ progress.css( 'transition', 'width 10s' ).animate( { width: "100%" }, 0 );
225
+
226
+ $.post( ajaxurl, {
227
+ action: 'rl_upload_image',
228
+ image: image.attributes,
229
+ post_id: rlRemoteLibraryMedia.postID,
230
+ rlnonce: rlRemoteLibraryMedia.getUploadNonce
231
+ } ).done( function( response ) {
232
+ progress.css( 'transition', 'width 0.5s' ).animate( { width: "100%" }, 0, function() {
233
+ attachment_image.css( { opacity: 1, transition: '' } );
234
+
235
+ $( this ).css( 'transition', transition );
236
+
237
+ // update attachment data
238
+ selection.models[0].attributes.id = parseInt( response.id );
239
+ selection.models[0].attributes.url = response.full[0];
240
+ selection.models[0].attributes.sizes.full.url = response.full[0];
241
+
242
+ // remove progress bar
243
+ progress.remove();
244
+
245
+ // close modal
246
+ controller.close();
247
+
248
+ // trigger insert event
249
+ state.trigger( ( gutenberg_active ? 'select' : 'insert' ), selection ).reset();
250
+ } );
251
+ } ).always( function( data ) {
252
+ //
253
+ } );
254
+ }
255
+ } );
256
257
+ RLRemoteLibraryContentView = view;
258
+ RLRemoteLibraryContentView.blockScrolling = false;
259
+ RLRemoteLibraryContentView.responseData = [];
260
261
+ var model = view.model.collection.get( 'rl-remote-library' );
262
263
+ // set scroll event
264
+ this.handleScroll = _.chain( this.handleScroll ).bind( view ).throttle( wp.media.isTouchDevice ? 300 : 200 ).value();
265
266
+ // bind scroll event
267
+ view.attachments.$el.on( 'scroll', this.handleScroll );
268
269
+ // assign model
270
+ RLRemoteLibraryCollection = model;
271
272
+ // run ajax calls for all providers
273
+ var promise = remoteQuery( 'all', '', 1, [] );
274
275
+ promise.then(
276
+ result => {
277
+ // any results?
278
+ if ( result.images.length ) {
279
+ // add images to library
280
+ model.attributes.library.push( result.images );
281
282
+ // increase page number
283
+ RLWPMediaModelAttachments.media_page++;
284
285
+ RLRemoteLibraryContentView.blockScrolling = false;
286
+ RLRemoteLibraryContentView.responseData = result.data;
287
288
+ // last page?
289
+ if ( result.last === false )
290
+ this.handleScroll();
291
+ }
292
293
+ // hide spinner
294
+ view.toolbar.get( 'spinner' ).hide();
295
+ },
296
+ error => {
297
+ RLRemoteLibraryContentView.blockScrolling = false;
298
+ RLRemoteLibraryContentView.responseData = [];
299
+ }
300
+ );
301
+ }
302
+ },
303
+ handleScroll: function() {
304
+ // is another scrolling pending?
305
+ if ( RLRemoteLibraryContentView.blockScrolling )
306
+ return;
307
+
308
+ var view = this.views.parent,
309
+ el = this.attachments.el,
310
+ scrollTop = el.scrollTop;
311
+
312
+ // the scroll event occurs on the document, but the element that should be checked is the document body
313
+ if ( el === document ) {
314
+ el = document.body;
315
+ scrollTop = $( document ).scrollTop();
316
+ }
317
318
+ if ( ! $( el ).is( ':visible' ) )
319
+ return;
320
321
+ // get content view
322
+ var content = view.content.get();
323
324
+ // show the spinner only if we are close to the bottom.
325
+ if ( el.scrollHeight - ( scrollTop + el.clientHeight ) < el.clientHeight / 3 )
326
+ content.toolbar.get( 'spinner' ).show();
327
328
+ if ( el.scrollHeight < scrollTop + ( el.clientHeight * 3 ) ) {
329
+ RLRemoteLibraryContentView.blockScrolling = true;
330
331
+ // display spinner
332
+ content.toolbar.get( 'spinner' ).show();
333
334
+ var promise = remoteQuery( RLWPMediaModelAttachments.media_provider, RLWPMediaModelAttachments.media_search, RLWPMediaModelAttachments.media_page, RLRemoteLibraryContentView.responseData );
335
+
336
+ promise.then(
337
+ result => {
338
+ // any results?
339
+ if ( result.images.length ) {
340
+ // add images to library
341
+ RLRemoteLibraryCollection.attributes.library.push( result.images );
342
+
343
+ // increase page number
344
+ RLWPMediaModelAttachments.media_page++;
345
+
346
+ RLRemoteLibraryContentView.blockScrolling = false;
347
+ RLRemoteLibraryContentView.responseData = result.data;
348
+
349
+ // last page?
350
+ if ( result.last === false )
351
+ view.handleScroll( result.data );
352
+ }
353
+
354
+ // hide spinner
355
+ content.toolbar.get( 'spinner' ).hide();
356
+ },
357
+ error => {
358
+ RLRemoteLibraryContentView.blockScrolling = false;
359
+ RLRemoteLibraryContentView.responseData = [];
360
+ }
361
+ );
362
+ }
363
}
364
+ } );
365
+
366
+ var RLWPMediaViewSettingsAttachmentDisplay = wp.media.view.Settings.AttachmentDisplay;
367
+
368
+ wp.media.view.Settings.AttachmentDisplay = wp.media.view.Settings.AttachmentDisplay.extend( {
369
+ render: function() {
370
+ // remove medium size
371
+ if ( typeof this.options.attachment.attributes.remote_library_image !== 'undefined' && this.options.attachment.attributes.remote_library_image )
372
+ delete this.options.attachment.attributes.sizes.medium;
373
+
374
+ // load the original render function
375
+ RLWPMediaViewSettingsAttachmentDisplay.prototype.render.call( this );
376
+
377
+ return this;
378
}
379
+ } );
380
+
381
+ var RLWPMediaModelAttachments = wp.media.model.Attachments;
382
383
+ // add new attributes
384
+ RLWPMediaModelAttachments.media_page = 1;
385
+ RLWPMediaModelAttachments.media_provider = 'all';
386
+ RLWPMediaModelAttachments.media_search = '';
387
388
+ // extend media frame
389
+ wp.media.model.Attachments = RLWPMediaModelAttachments.extend( {
390
+ initialize: function() {
391
+ // calling the initalize method from the current frame before adding new functionality
392
+ RLWPMediaModelAttachments.prototype.initialize.apply( this, arguments );
393
+
394
+ // events
395
+ this.props.on( 'change', this.handleFilters );
396
+ },
397
+ handleFilters: function() {
398
+ // clear current collection
399
+ RLRemoteLibraryCollection.attributes.library.reset();
400
+
401
+ // clear current selection
402
+ RLRemoteLibraryCollection.get( 'selection' ).reset();
403
+
404
+ // hide uploader view
405
+ RLRemoteLibraryContentView.$el.find( '.uploader-inline' ).addClass( 'hidden' );
406
407
+ // reset page to first
408
+ RLWPMediaModelAttachments.media_page = 1;
409
410
+ // clear response data
411
+ RLRemoteLibraryContentView.responseData = [];
412
+
413
+ // make sure media provider is set
414
+ if ( typeof this.attributes.media_provider === 'undefined' )
415
+ RLWPMediaModelAttachments.media_provider = this.attributes.media_provider = 'all';
416
+ else
417
+ RLWPMediaModelAttachments.media_provider = this.attributes.media_provider;
418
+
419
+ // make sure search phrase is set
420
+ if ( typeof this.attributes.search === 'undefined' )
421
+ RLWPMediaModelAttachments.media_search = this.attributes.search = '';
422
+ else
423
+ RLWPMediaModelAttachments.media_search = this.attributes.search;
424
+
425
+ // disable scroll event
426
RLRemoteLibraryContentView.blockScrolling = true;
427
428
// display spinner
429
+ RLRemoteLibraryContentView.toolbar.get( 'spinner' ).show();
430
431
+ var promise = remoteQuery( this.attributes.media_provider, this.attributes.search, RLWPMediaModelAttachments.media_page, RLRemoteLibraryContentView.responseData );
432
433
promise.then(
434
result => {
440
// increase page number
441
RLWPMediaModelAttachments.media_page++;
442
443
+ // allow scrolling
444
RLRemoteLibraryContentView.blockScrolling = false;
445
RLRemoteLibraryContentView.responseData = result.data;
446
447
// last page?
448
if ( result.last === false )
449
+ RLRemoteLibraryContentView.views.parent.handleScroll();
450
}
451
452
// hide spinner
453
+ RLRemoteLibraryContentView.toolbar.get( 'spinner' ).hide();
454
},
455
error => {
456
RLRemoteLibraryContentView.blockScrolling = false;
458
}
459
);
460
}
461
+ } );
462
463
+ function remoteQuery( provider, phrase, page, response_data ) {
464
+ var promise = new Promise( ( resolve, reject ) => {
465
+ // set current request phrase
466
+ RLWPMediaViewMediaFramePost.requestHash = 'provider:' + provider + '|phrase:' + phrase;
467
+
468
+ $.post( ajaxurl, {
469
+ action: 'rl_remote_library_query',
470
+ media_provider: provider,
471
+ media_search: phrase,
472
+ media_page: page,
473
+ response_data: response_data
474
+ } ).done( function( response ) {
475
+ // valid request hash?
476
+ if ( RLWPMediaViewMediaFramePost.requestHash === 'provider:' + provider + '|phrase:' + phrase )
477
+ resolve( response );
478
+ else
479
+ reject( [] );
480
+ } ).fail( function() {
481
reject( [] );
482
+ } );
483
} );
484
485
+ return promise;
486
+ }
487
+ } );
488
489
} )( jQuery );
library/simplehtmldom/simple_html_dom.php CHANGED
@@ -634,7 +634,9 @@ class simple_html_dom_node
634
// Check if ID matches
635
if ($pass && $id !== '' && isset($node->attr['id'])) {
636
// Note: Only consider the first ID (as browsers do)
637
- $node_id = explode(' ', trim($node->attr['id']))[0];
638
639
if($id !== $node_id) { $pass = false; }
640
}
634
// Check if ID matches
635
if ($pass && $id !== '' && isset($node->attr['id'])) {
636
// Note: Only consider the first ID (as browsers do)
637
+ // $node_id = explode(' ', trim($node->attr['id']))[0];
638
+ $node_id = explode(' ', trim($node->attr['id']));
639
+ $node_id = $node_id[0];
640
641
if($id !== $node_id) { $pass = false; }
642
}
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://www.dfactory.eu/
4
Tags: responsive gallery plugin, lightbox, photo gallery, masonry, video gallery, gallery builder, image gallery
5
Requires at least: 4.0
6
Tested up to: 5.3
7
- Stable tag: 2.2.1
8
Requires PHP: 5.2.4
9
License: MIT License
10
License URI: http://opensource.org/licenses/MIT
@@ -27,7 +27,7 @@ Say goodbye to coding. With the built-in drag and drop Gallery builder, you will
27
28
= Vast Customization Options =
29
30
- Responsive Lightbox and Gallery plugin is packed with customization options per each gallery and lightbox style so you can tweak them to suit your websites audience with just a few clicks.
31
32
= SEO-Friendly and Lightweight =
33
@@ -116,15 +116,15 @@ Many users love to have different ways to customize their galleries. This bundle
116
117
= Will this plugin slow down my site? =
118
119
- Responsive Lightbox and Gallery plugin is a lightweight WordPress gallery plugin built with performance and speed in mind. This means your page load time wont be affected.
120
121
= How can I get the most of this plugin? =
122
123
- Responsive Lightbox and Gallery plugin comes with plenty of documentation to guide you while creating and customizing your galleries. On top of that, youll find plenty of articles on how to add the lightbox effect, how to use the gallery builder, and much more! Need to fix a specific issue? Share it on our forum and get the answer you need!
124
125
= I need a specific style, layout or effect for my galleries. What should I do? =
126
127
- Responsive Lightbox and Gallery plugin comes with many styles and effects already in its free version and can be enhanced with 10+ premium extensions like Masonry Gallery Pro, Hidden Gallery, Slider Gallery, and many more. <a href="https://dfactory.eu/products/responsive-lightbox-gallery-extensions/?utm_source=repo&utm_medium=link&utm_campaign=responsive-lightbox-plugin-free">Check them all out here</a> and pick your preferred one!
128
129
== Installation ==
130
@@ -139,6 +139,12 @@ Responsive Lightbox and Gallery plugin comes with many styles and effects alread
139
140
== Changelog ==
141
142
= 2.2.1 =
143
* Fix: Invalid arguments passed in class-folders.php
144
@@ -434,5 +440,5 @@ Initial release
434
435
== Upgrade Notice ==
436
437
- = 2.2.1 =
438
- * Fix: Invalid arguments passed in class-folders.php
4
Tags: responsive gallery plugin, lightbox, photo gallery, masonry, video gallery, gallery builder, image gallery
5
Requires at least: 4.0
6
Tested up to: 5.3
7
+ Stable tag: 2.2.2
8
Requires PHP: 5.2.4
9
License: MIT License
10
License URI: http://opensource.org/licenses/MIT
27
28
= Vast Customization Options =
29
30
+ Responsive Lightbox and Gallery plugin is packed with customization options per each gallery and lightbox style so you can tweak them to suit your website's audience with just a few clicks.
31
32
= SEO-Friendly and Lightweight =
33
116
117
= Will this plugin slow down my site? =
118
119
+ Responsive Lightbox and Gallery plugin is a lightweight WordPress gallery plugin built with performance and speed in mind. This means your page load time won't be affected.
120
121
= How can I get the most of this plugin? =
122
123
+ Responsive Lightbox and Gallery plugin comes with plenty of documentation to guide you while creating and customizing your galleries. On top of that, you'll find plenty of articles on how to add the lightbox effect, how to use the gallery builder, and much more! Need to fix a specific issue? Share it on our forum and get the answer you need!
124
125
= I need a specific style, layout or effect for my galleries. What should I do? =
126
127
+ Responsive Lightbox and Gallery plugin comes with many styles and effects already in it's free version and can be enhanced with 10+ premium extensions like Masonry Gallery Pro, Hidden Gallery, Slider Gallery, and many more. <a href="https://dfactory.eu/products/responsive-lightbox-gallery-extensions/?utm_source=repo&utm_medium=link&utm_campaign=responsive-lightbox-plugin-free">Check them all out here</a> and pick your preferred one!
128
129
== Installation ==
130
139
140
== Changelog ==
141
142
+ = 2.2.2 =
143
+ * Fix: Add Media button not working for custom post types
144
+ * Fix: Underscore.js dependency missing
145
+ * Fix: Undefined variable: current_color_scheme
146
+ * Fix: Root Folder missing in media upload dropdown
147
+
148
= 2.2.1 =
149
* Fix: Invalid arguments passed in class-folders.php
150
440
441
== Upgrade Notice ==
442
443
+ = 2.2.2 =
444
+ * Fix: Multiple bug fixes release
responsive-lightbox.php CHANGED
@@ -2,7 +2,7 @@
2
/*
3
Plugin Name: Responsive Lightbox & Gallery
4
Description: Responsive Lightbox & Gallery allows users to create galleries and view larger versions of images, galleries and videos in a lightbox (overlay) effect optimized for mobile devices.
5
- Version: 2.2.1
6
Author: dFactory
7
Author URI: http://www.dfactory.eu/
8
Plugin URI: http://www.dfactory.eu/plugins/responsive-lightbox/
@@ -43,7 +43,7 @@ include_once( RESPONSIVE_LIGHTBOX_PATH . 'includes' . DIRECTORY_SEPARATOR . 'fun
43
* Responsive Lightbox class.
44
*
45
* @class Responsive_Lightbox
46
- * @version 2.2.1
47
*/
48
class Responsive_Lightbox {
49
@@ -264,7 +264,7 @@ class Responsive_Lightbox {
264
'origin_left' => true,
265
'origin_top' => true
266
),
267
- 'version' => '2.2.1',
268
'activation_date' => ''
269
);
270
public $options = array();
@@ -1058,7 +1058,7 @@ class Responsive_Lightbox {
1058
1059
wp_enqueue_script( 'responsive-lightbox-admin-select2', RESPONSIVE_LIGHTBOX_URL . '/assets/select2/select2.full' . ( ! ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.min' : '' ) . '.js', array( 'jquery' ), $this->defaults['version'] );
1060
1061
- wp_enqueue_script( 'responsive-lightbox-admin-galleries', RESPONSIVE_LIGHTBOX_URL . '/js/admin-galleries.js', array( 'jquery', 'wp-color-picker' ), $this->defaults['version'] );
1062
1063
wp_localize_script(
1064
'responsive-lightbox-admin-galleries',
@@ -1157,7 +1157,7 @@ class Responsive_Lightbox {
1157
public function sidebar_admin_setup() {
1158
wp_enqueue_media();
1159
1160
- wp_enqueue_script( 'responsive-lightbox-admin-widgets', RESPONSIVE_LIGHTBOX_URL . '/js/admin-widgets.js', array( 'jquery' ), $this->defaults['version'] );
1161
1162
wp_localize_script(
1163
'responsive-lightbox-admin-widgets',
2
/*
3
Plugin Name: Responsive Lightbox & Gallery
4
Description: Responsive Lightbox & Gallery allows users to create galleries and view larger versions of images, galleries and videos in a lightbox (overlay) effect optimized for mobile devices.
5
+ Version: 2.2.2
6
Author: dFactory
7
Author URI: http://www.dfactory.eu/
8
Plugin URI: http://www.dfactory.eu/plugins/responsive-lightbox/
43
* Responsive Lightbox class.
44
*
45
* @class Responsive_Lightbox
46
+ * @version 2.2.2
47
*/
48
class Responsive_Lightbox {
49
264
'origin_left' => true,
265
'origin_top' => true
266
),
267
+ 'version' => '2.2.2',
268
'activation_date' => ''
269
);
270
public $options = array();
1058
1059
wp_enqueue_script( 'responsive-lightbox-admin-select2', RESPONSIVE_LIGHTBOX_URL . '/assets/select2/select2.full' . ( ! ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '.min' : '' ) . '.js', array( 'jquery' ), $this->defaults['version'] );
1060
1061
+ wp_enqueue_script( 'responsive-lightbox-admin-galleries', RESPONSIVE_LIGHTBOX_URL . '/js/admin-galleries.js', array( 'jquery', 'underscore', 'wp-color-picker' ), $this->defaults['version'] );
1062
1063
wp_localize_script(
1064
'responsive-lightbox-admin-galleries',
1157
public function sidebar_admin_setup() {
1158
wp_enqueue_media();
1159
1160
+ wp_enqueue_script( 'responsive-lightbox-admin-widgets', RESPONSIVE_LIGHTBOX_URL . '/js/admin-widgets.js', array( 'jquery', 'underscore' ), $this->defaults['version'] );
1161
1162
wp_localize_script(
1163
'responsive-lightbox-admin-widgets',