PluginProbe
Translate and Go multilingual – Automatic AI translation – wpLingua / 2.16.7
Translate and Go multilingual – Automatic AI translation – wpLingua v2.16.7
2.16.7 2.16.6 2.16.5 2.16.4 2.16.3 2.16.2 2.16.1 2.16.0 2.15.2 2.15.1 2.15.0 2.14.3 2.14.2 2.14.1 2.14.0 2.13.1 2.13.0 2.12.3 2.12.2 2.12.1 trunk 1.0.3 1.0.4 1.0.5 1.1.0 All 112 releases
← All changes | inc/admin/admin-bar.php +283 -283 2.12.22.16.7 View file →
@@ -1,283 +1,283 @@
1 -<?php
2 -
3 -// If this file is called directly, abort.
4 -if ( ! defined( 'WPINC' ) ) {
5 - die;
6 -}
7 -
8 -
9 -/**
10 - * Add wpLingua menu in Admin Bar for wpLingua
11 - *
12 - * @return void
13 - */
14 -function wplng_admin_bar_menu() {
15 -
16 - if ( is_admin() || ! current_user_can( 'edit_posts' ) ) {
17 - return;
18 - }
19 -
20 - global $wp_admin_bar;
21 -
22 - $wp_admin_bar->add_menu(
23 - array(
24 - 'id' => 'wplingua-menu',
25 - 'title' => __( 'wpLingua', 'wplingua' ),
26 - 'href' => false,
27 - )
28 - );
29 -
30 - if ( ! wplng_url_is_translatable() ) {
31 - $wp_admin_bar->add_menu(
32 - array(
33 - 'id' => 'wplingua-url-exclude',
34 - 'parent' => 'wplingua-menu',
35 - 'title' => __( 'This URL is excluded from translation', 'wplingua' ),
36 - 'href' => esc_url(
37 - add_query_arg(
38 - 'page',
39 - 'wplingua-exclusions',
40 - get_admin_url() . 'admin.php'
41 - )
42 - ),
43 - )
44 - );
45 - return;
46 - }
47 -
48 - $url = wplng_get_url_current();
49 - $url_clean = remove_query_arg(
50 - array( 'wplng-mode', 'wplng-load', 'nocache' ),
51 - $url
52 - );
53 -
54 - if ( ! empty( $_GET['wplng-mode'] )
55 - && (
56 - 'list' === $_GET['wplng-mode']
57 - || 'editor' === $_GET['wplng-mode']
58 - )
59 - ) {
60 -
61 - $wp_admin_bar->add_menu(
62 - array(
63 - 'id' => 'wplingua-return',
64 - 'parent' => 'wplingua-menu',
65 - 'title' => __( 'Return on page', 'wplingua' ),
66 - 'href' => $url_clean,
67 - )
68 - );
69 - }
70 -
71 - $wp_admin_bar->add_menu(
72 - array(
73 - 'id' => 'wplingua-editor',
74 - 'parent' => 'wplingua-menu',
75 - 'title' => __( 'Visual editor', 'wplingua' ),
76 - 'href' => false,
77 - )
78 - );
79 -
80 - $wp_admin_bar->add_menu(
81 - array(
82 - 'id' => 'wplingua-list',
83 - 'parent' => 'wplingua-menu',
84 - 'title' => __( 'All translations on page', 'wplingua' ),
85 - 'href' => false,
86 - )
87 - );
88 -
89 - $languages_target = wplng_get_languages_target();
90 -
91 - if ( ! empty( $languages_target ) ) {
92 -
93 - foreach ( $languages_target as $language ) {
94 -
95 - if ( empty( $language['name'] )
96 - || empty( $language['id'] )
97 - ) {
98 - continue;
99 - }
100 -
101 - $name = sanitize_text_field( $language['name'] );
102 - $id_editor = sanitize_title( 'wplingua-editor-' . $language['id'] );
103 - $id_list = sanitize_title( 'wplingua-list-' . $language['id'] );
104 -
105 - $wp_admin_bar->add_menu(
106 - array(
107 - 'id' => $id_editor,
108 - 'parent' => 'wplingua-editor',
109 - 'title' => $name,
110 - 'href' => add_query_arg(
111 - 'wplng-mode',
112 - 'editor',
113 - wplng_url_translate(
114 - wplng_get_url_original( $url_clean ),
115 - $language['id']
116 - )
117 - ),
118 - )
119 - );
120 -
121 - $wp_admin_bar->add_menu(
122 - array(
123 - 'id' => $id_list,
124 - 'parent' => 'wplingua-list',
125 - 'title' => $name,
126 - 'href' => add_query_arg(
127 - 'wplng-mode',
128 - 'list',
129 - wplng_url_translate(
130 - wplng_get_url_original( $url_clean ),
131 - $language['id']
132 - )
133 - ),
134 - )
135 - );
136 -
137 - } // End foreach ( $languages_target as $language )
138 - } // End if ( ! empty( $languages_target ) )
139 -
140 - /**
141 - * Edit slug translation link
142 - */
143 -
144 - if ( is_404() ) {
145 - return;
146 - }
147 -
148 - $url_original = wplng_get_url_original( $url_clean );
149 - $url_original_parsed = parse_url( $url_original );
150 -
151 - if ( ! isset( $url_original_parsed['path'] ) ) {
152 - return;
153 - }
154 -
155 - $path = $url_original_parsed['path'];
156 -
157 - // Return path if no contains slug
158 -
159 - if ( '/' === $path || '' === $path ) {
160 - return;
161 - }
162 -
163 - // Transform the multi part slug to an slug array
164 -
165 - $slugs = explode( '/', $path );
166 - $slugs = array_filter( $slugs );
167 -
168 - $last_slug = '';
169 -
170 - foreach ( $slugs as $slug ) {
171 - if ( '/' === $slug || '' === $slug ) {
172 - continue;
173 - }
174 - $last_slug = $slug;
175 - }
176 -
177 - if ( '/' === $last_slug
178 - || '' === $last_slug
179 - || ! wplng_text_is_translatable( $last_slug )
180 - ) {
181 - return;
182 - }
183 -
184 - $slug_id = wplng_get_slug_saved_from_original( $last_slug );
185 -
186 - if ( false === $slug_id ) {
187 - $slug_id = wplng_create_slug( $slug );
188 - }
189 -
190 - $edit_slug_link = get_edit_post_link( $slug_id );
191 -
192 - if ( ! is_string( $edit_slug_link ) ) {
193 - return;
194 - }
195 -
196 - $wp_admin_bar->add_menu(
197 - array(
198 - 'id' => 'wplingua-slug',
199 - 'parent' => 'wplingua-menu',
200 - 'title' => __( 'Edit the page slug', 'wplingua' ),
201 - 'href' => $edit_slug_link,
202 - 'meta' => array(
203 - 'target' => '_blank',
204 - ),
205 - )
206 - );
207 -}
208 -
209 -
210 -/**
211 - * Add an edit translation link in admin bar for post and page edit
212 - *
213 - * @return void
214 - */
215 -function wplng_admin_bar_edit() {
216 -
217 - /**
218 - * Check the current page
219 - */
220 -
221 - if ( ! function_exists( 'get_current_screen' )
222 - || ! is_admin()
223 - || ! current_user_can( 'edit_posts' )
224 - ) {
225 - return;
226 - }
227 -
228 - $current_screen = get_current_screen();
229 -
230 - if ( empty( $current_screen->base )
231 - || empty( $current_screen->id )
232 - || 'post' !== $current_screen->base
233 - || (
234 - 'page' !== $current_screen->id
235 - && 'post' !== $current_screen->id
236 - )
237 - ) {
238 - return;
239 - }
240 -
241 - /**
242 - * Check if a target language is defined
243 - */
244 -
245 - $languages_target_ids = wplng_get_languages_target_ids();
246 -
247 - if ( empty( $languages_target_ids[0] ) ) {
248 - return;
249 - }
250 -
251 - /**
252 - * Get the link
253 - */
254 -
255 - $url = get_permalink();
256 -
257 - if ( empty( $url ) || ! wplng_url_is_translatable( $url ) ) {
258 - return;
259 - }
260 -
261 - $url = add_query_arg(
262 - 'wplng-mode',
263 - 'list',
264 - wplng_url_translate(
265 - $url,
266 - $languages_target_ids[0]
267 - )
268 - );
269 -
270 - /**
271 - * Add the admin bar link
272 - */
273 -
274 - global $wp_admin_bar;
275 -
276 - $wp_admin_bar->add_menu(
277 - array(
278 - 'id' => 'wplingua-edit-translations',
279 - 'title' => __( 'Translations', 'wplingua' ),
280 - 'href' => $url,
281 - )
282 - );
283 -}
1 +<?php
2 +
3 +// If this file is called directly, abort.
4 +if ( ! defined( 'WPINC' ) ) {
5 + die;
6 +}
7 +
8 +
9 +/**
10 + * Add wpLingua menu in Admin Bar for wpLingua
11 + *
12 + * @return void
13 + */
14 +function wplng_admin_bar_menu() {
15 +
16 + if ( is_admin() || ! current_user_can( 'edit_posts' ) ) {
17 + return;
18 + }
19 +
20 + global $wp_admin_bar;
21 +
22 + $wp_admin_bar->add_menu(
23 + array(
24 + 'id' => 'wplingua-menu',
25 + 'title' => __( 'wpLingua', 'wplingua' ),
26 + 'href' => false,
27 + )
28 + );
29 +
30 + if ( ! wplng_url_is_translatable() ) {
31 + $wp_admin_bar->add_menu(
32 + array(
33 + 'id' => 'wplingua-url-exclude',
34 + 'parent' => 'wplingua-menu',
35 + 'title' => __( 'This URL is excluded from translation', 'wplingua' ),
36 + 'href' => esc_url(
37 + add_query_arg(
38 + 'page',
39 + 'wplingua-exclusions',
40 + get_admin_url() . 'admin.php'
41 + )
42 + ),
43 + )
44 + );
45 + return;
46 + }
47 +
48 + $url = wplng_get_url_current();
49 + $url_clean = remove_query_arg(
50 + array( 'wplng-mode', 'wplng-load', 'nocache' ),
51 + $url
52 + );
53 +
54 + if ( ! empty( $_GET['wplng-mode'] )
55 + && (
56 + 'list' === $_GET['wplng-mode']
57 + || 'editor' === $_GET['wplng-mode']
58 + )
59 + ) {
60 +
61 + $wp_admin_bar->add_menu(
62 + array(
63 + 'id' => 'wplingua-return',
64 + 'parent' => 'wplingua-menu',
65 + 'title' => __( 'Return on page', 'wplingua' ),
66 + 'href' => $url_clean,
67 + )
68 + );
69 + }
70 +
71 + $wp_admin_bar->add_menu(
72 + array(
73 + 'id' => 'wplingua-editor',
74 + 'parent' => 'wplingua-menu',
75 + 'title' => __( 'Visual editor', 'wplingua' ),
76 + 'href' => false,
77 + )
78 + );
79 +
80 + $wp_admin_bar->add_menu(
81 + array(
82 + 'id' => 'wplingua-list',
83 + 'parent' => 'wplingua-menu',
84 + 'title' => __( 'All translations on page', 'wplingua' ),
85 + 'href' => false,
86 + )
87 + );
88 +
89 + $languages_target = wplng_get_languages_target();
90 +
91 + if ( ! empty( $languages_target ) ) {
92 +
93 + foreach ( $languages_target as $language ) {
94 +
95 + if ( empty( $language['name'] )
96 + || empty( $language['id'] )
97 + ) {
98 + continue;
99 + }
100 +
101 + $name = sanitize_text_field( $language['name'] );
102 + $id_editor = sanitize_title( 'wplingua-editor-' . $language['id'] );
103 + $id_list = sanitize_title( 'wplingua-list-' . $language['id'] );
104 +
105 + $wp_admin_bar->add_menu(
106 + array(
107 + 'id' => $id_editor,
108 + 'parent' => 'wplingua-editor',
109 + 'title' => $name,
110 + 'href' => add_query_arg(
111 + 'wplng-mode',
112 + 'editor',
113 + wplng_url_translate(
114 + wplng_get_url_original( $url_clean ),
115 + $language['id']
116 + )
117 + ),
118 + )
119 + );
120 +
121 + $wp_admin_bar->add_menu(
122 + array(
123 + 'id' => $id_list,
124 + 'parent' => 'wplingua-list',
125 + 'title' => $name,
126 + 'href' => add_query_arg(
127 + 'wplng-mode',
128 + 'list',
129 + wplng_url_translate(
130 + wplng_get_url_original( $url_clean ),
131 + $language['id']
132 + )
133 + ),
134 + )
135 + );
136 +
137 + } // End foreach ( $languages_target as $language )
138 + } // End if ( ! empty( $languages_target ) )
139 +
140 + /**
141 + * Edit slug translation link
142 + */
143 +
144 + if ( is_404() ) {
145 + return;
146 + }
147 +
148 + $url_original = wplng_get_url_original( $url_clean );
149 + $url_original_parsed = parse_url( $url_original );
150 +
151 + if ( ! isset( $url_original_parsed['path'] ) ) {
152 + return;
153 + }
154 +
155 + $path = $url_original_parsed['path'];
156 +
157 + // Return path if no contains slug
158 +
159 + if ( '/' === $path || '' === $path ) {
160 + return;
161 + }
162 +
163 + // Transform the multi part slug to an slug array
164 +
165 + $slugs = explode( '/', $path );
166 + $slugs = array_filter( $slugs );
167 +
168 + $last_slug = '';
169 +
170 + foreach ( $slugs as $slug ) {
171 + if ( '/' === $slug || '' === $slug ) {
172 + continue;
173 + }
174 + $last_slug = $slug;
175 + }
176 +
177 + if ( '/' === $last_slug
178 + || '' === $last_slug
179 + || ! wplng_text_is_translatable( $last_slug )
180 + ) {
181 + return;
182 + }
183 +
184 + $slug_id = wplng_get_slug_saved_from_original( $last_slug );
185 +
186 + if ( false === $slug_id ) {
187 + $slug_id = wplng_create_slug( $last_slug );
188 + }
189 +
190 + $edit_slug_link = get_edit_post_link( $slug_id );
191 +
192 + if ( ! is_string( $edit_slug_link ) ) {
193 + return;
194 + }
195 +
196 + $wp_admin_bar->add_menu(
197 + array(
198 + 'id' => 'wplingua-slug',
199 + 'parent' => 'wplingua-menu',
200 + 'title' => __( 'Edit the page slug', 'wplingua' ),
201 + 'href' => $edit_slug_link,
202 + 'meta' => array(
203 + 'target' => '_blank',
204 + ),
205 + )
206 + );
207 +}
208 +
209 +
210 +/**
211 + * Add an edit translation link in admin bar for post and page edit
212 + *
213 + * @return void
214 + */
215 +function wplng_admin_bar_edit() {
216 +
217 + /**
218 + * Check the current page
219 + */
220 +
221 + if ( ! function_exists( 'get_current_screen' )
222 + || ! is_admin()
223 + || ! current_user_can( 'edit_posts' )
224 + ) {
225 + return;
226 + }
227 +
228 + $current_screen = get_current_screen();
229 +
230 + if ( empty( $current_screen->base )
231 + || empty( $current_screen->id )
232 + || 'post' !== $current_screen->base
233 + || (
234 + 'page' !== $current_screen->id
235 + && 'post' !== $current_screen->id
236 + )
237 + ) {
238 + return;
239 + }
240 +
241 + /**
242 + * Check if a target language is defined
243 + */
244 +
245 + $languages_target_ids = wplng_get_languages_target_ids();
246 +
247 + if ( empty( $languages_target_ids[0] ) ) {
248 + return;
249 + }
250 +
251 + /**
252 + * Get the link
253 + */
254 +
255 + $url = get_permalink();
256 +
257 + if ( empty( $url ) || ! wplng_url_is_translatable( $url ) ) {
258 + return;
259 + }
260 +
261 + $url = add_query_arg(
262 + 'wplng-mode',
263 + 'list',
264 + wplng_url_translate(
265 + $url,
266 + $languages_target_ids[0]
267 + )
268 + );
269 +
270 + /**
271 + * Add the admin bar link
272 + */
273 +
274 + global $wp_admin_bar;
275 +
276 + $wp_admin_bar->add_menu(
277 + array(
278 + 'id' => 'wplingua-edit-translations',
279 + 'title' => __( 'Translations', 'wplingua' ),
280 + 'href' => $url,
281 + )
282 + );
283 +}