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 +161 -14 1.1.02.16.7 View file →
@@ -12,9 +12,9 @@
12 12 * @return void
13 13 */
14 14 function wplng_admin_bar_menu() {
15 15
16 - if ( is_admin() ) {
16 + if ( is_admin() || ! current_user_can( 'edit_posts' ) ) {
17 17 return;
18 18 }
19 19
20 20 global $wp_admin_bar;
@@ -44,15 +44,19 @@
44 44 );
45 45 return;
46 46 }
47 47
48 - $url = wplng_get_url_current();
49 - $url_original = $url;
50 - $url_original = remove_query_arg( 'wplingua-editor', $url_original );
51 - $url_original = remove_query_arg( 'wplingua-list', $url_original );
48 + $url = wplng_get_url_current();
49 + $url_clean = remove_query_arg(
50 + array( 'wplng-mode', 'wplng-load', 'nocache' ),
51 + $url
52 + );
52 53
53 - if ( isset( $_GET['wplingua-editor'] )
54 - || isset( $_GET['wplingua-list'] )
54 + if ( ! empty( $_GET['wplng-mode'] )
55 + && (
56 + 'list' === $_GET['wplng-mode']
57 + || 'editor' === $_GET['wplng-mode']
58 + )
55 59 ) {
56 60
57 61 $wp_admin_bar->add_menu(
58 62 array(
@@ -58,9 +62,9 @@
58 62 array(
59 63 'id' => 'wplingua-return',
60 64 'parent' => 'wplingua-menu',
61 65 'title' => __( 'Return on page', 'wplingua' ),
62 - 'href' => $url_original,
66 + 'href' => $url_clean,
63 67 )
64 68 );
65 69 }
66 70
@@ -103,12 +107,12 @@
103 107 'id' => $id_editor,
104 108 'parent' => 'wplingua-editor',
105 109 'title' => $name,
106 110 'href' => add_query_arg(
107 - 'wplingua-editor',
108 - '1',
111 + 'wplng-mode',
112 + 'editor',
109 113 wplng_url_translate(
110 - wplng_get_url_original( $url_original ),
114 + wplng_get_url_original( $url_clean ),
111 115 $language['id']
112 116 )
113 117 ),
114 118 )
@@ -119,12 +123,12 @@
119 123 'id' => $id_list,
120 124 'parent' => 'wplingua-list',
121 125 'title' => $name,
122 126 'href' => add_query_arg(
123 - 'wplingua-list',
124 - '1',
127 + 'wplng-mode',
128 + 'list',
125 129 wplng_url_translate(
126 - wplng_get_url_original( $url_original ),
130 + wplng_get_url_original( $url_clean ),
127 131 $language['id']
128 132 )
129 133 ),
130 134 )
@@ -132,5 +136,148 @@
132 136
133 137 } // End foreach ( $languages_target as $language )
134 138 } // End if ( ! empty( $languages_target ) )
135 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 + );
136 283 }