PluginProbe
Translate and Go multilingual – Automatic AI translation – wpLingua / 2.16.6
Translate and Go multilingual – Automatic AI translation – wpLingua v2.16.6
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 1.1.1 All 111 releases
wplingua / inc / admin / admin-bar.php

admin-bar.php in Translate and Go multilingual – Automatic AI translation – wpLingua 2.16.6, at inc/admin/admin-bar.php

284 lines 5.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 }
284