PluginProbe
Translate and Go multilingual – Automatic AI translation – wpLingua / 2.16.5
Translate and Go multilingual – Automatic AI translation – wpLingua v2.16.5
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
wplingua / inc / admin / option-page-link-media.php

option-page-link-media.php in Translate and Go multilingual – Automatic AI translation – wpLingua 2.16.5, at inc/admin/option-page-link-media.php

503 lines 14.0 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 * Print HTML Option page - wpLingua : Links & Medias
11 *
12 * @return void
13 */
14 function wplng_option_page_link_media() {
15
16 $entries_json = wplng_link_media_get_entries_json();
17
18 ?>
19
20 <h1 class="wplng-option-page-title"><span class="dashicons dashicons-translation"></span> <?php esc_html_e( 'wpLingua - Links & Medias', 'wplingua' ); ?></h1>
21
22 <div class="wrap">
23 <hr class="wp-header-end">
24 <?php echo wplng_option_page_settings_menu(); ?>
25 <form id="wplng-option-link-media-form" method="post" action="options.php">
26 <?php
27 settings_fields( 'wplng_link_media' );
28 do_settings_sections( 'wplng_link_media' );
29 ?>
30 <table class="form-table wplng-form-table">
31
32 <tr class="wplng-beta-hidden" style="display: none;">
33 <th scope="row"><span class="dashicons dashicons-printer"></span> <?php esc_html_e( 'Debug', 'wplingua' ); ?></th>
34 <td>
35 <fieldset>
36 <textarea name="wplng_link_media_entries" id="wplng_link_media_entries"><?php echo esc_textarea( $entries_json ); ?></textarea>
37 </fieldset>
38 </td>
39 </tr>
40
41 <tr id="wplng-section-entries-all">
42 <th scope="row"><span class="dashicons dashicons-format-gallery"></span> <?php esc_html_e( 'Links & medias', 'wplingua' ); ?></th>
43 <td>
44 <fieldset>
45
46 <p><strong><?php esc_html_e( 'Links and medias translations rules: ', 'wplingua' ); ?></strong></p>
47
48 <p><?php esc_html_e( 'Translation rules on links and media allow different images to be displayed or link URLs to be changed according to the current language. These rules apply to elements such as: link target URLs, image source URLs, iframe source URLs, URLs in intercepted JSONs...', 'wplingua' ); ?></p>
49
50 <hr>
51
52 <?php wplng_option_page_link_media_entries_html(); ?>
53
54 <a href="javascript:void(0);" class="button button-primary" id="wplng-new-rule-button">
55 <?php esc_html_e( 'Add a rule', 'wplingua' ); ?>
56 </a>
57
58 </fieldset>
59 </td>
60 </tr>
61
62 <tr id="wplng-section-entry-new" style="display: none;">
63 <th scope="row"><span class="dashicons dashicons-welcome-add-page"></span> <?php esc_html_e( 'Add an entry', 'wplingua' ); ?></th>
64 <td class="wplng-flex-container">
65 <div id="wplng-link-media-entry-new">
66 <?php wplng_option_page_link_media_new_entry_html(); ?>
67 </div>
68 </td>
69 </tr>
70
71 <tr id="wplng-section-entry-edit" style="display: none;">
72 <th scope="row"><span class="dashicons dashicons-welcome-write-blog"></span> <?php esc_html_e( 'Edit the entry', 'wplingua' ); ?></th>
73 <td class="wplng-flex-container">
74 <div id="wplng-link-media-entry-edit">
75 <?php wplng_option_page_link_media_edit_entry_html(); ?>
76 </div>
77 </td>
78 </tr>
79 </table>
80
81 <?php submit_button(); ?>
82
83 </form>
84 </div>
85 <?php
86 }
87
88
89 /**
90 * Print HTML subsection of Option page : wpLingua Dictionary - Entries
91 *
92 * @return void
93 */
94 function wplng_option_page_link_media_entries_html() {
95
96 $link_media_entries = wplng_link_media_get_entries();
97
98 if ( empty( $link_media_entries ) ) {
99 return '';
100 }
101
102 $language_website = wplng_get_language_website();
103 $language_website_html = '<img';
104 $language_website_html .= ' src="' . esc_url( $language_website['flag'] ) . '"';
105 $language_website_html .= ' alt="' . esc_attr( $language_website['name'] ) . '"';
106 $language_website_html .= ' class="wplng-flag"';
107 $language_website_html .= '>';
108
109 $html = '<label><strong>';
110 $html .= esc_html__( 'All links and medias rules: ', 'wplingua' );
111 $html .= '</strong></label>';
112 $html .= '<br>';
113 $html .= '<div id="wplng-link-media-entries">';
114
115 foreach ( $link_media_entries as $rule_number => $entry ) {
116
117 $html .= '<div';
118 $html .= ' class="wplng-link-media-entry"';
119 $html .= ' wplng-rule="' . esc_attr( $rule_number ) . '"';
120 $html .= '>';
121
122 $html .= '<div class="wplng-rule-header">';
123
124 $html .= '<div class="wplng-rule-name">';
125 $html .= esc_html__( 'Rule N°', 'wplingua' );
126 $html .= esc_html( $rule_number + 1 );
127 $html .= '</div>'; // ENd .wplng-rule-name
128
129 $html .= '<div class="wplng-rule-action">';
130 $html .= '<a';
131 $html .= ' href="javascript:void(0);"';
132 $html .= ' class="wplng-rule-link-edit"';
133 $html .= ' wplng-rule="' . esc_attr( $rule_number ) . '"';
134 $html .= '>';
135 $html .= esc_html__( 'Edit', 'wplingua' );
136 $html .= '</a> ';
137 $html .= '<a';
138 $html .= ' href="javascript:void(0);"';
139 $html .= ' class="wplng-rule-link-remove"';
140 $html .= ' wplng-rule="' . esc_attr( $rule_number ) . '"';
141 $html .= '>';
142 $html .= esc_html__( 'Remove', 'wplingua' );
143 $html .= '</a>';
144 $html .= '</div>'; // .wplng-rule-action
145
146 $html .= '</div>'; // End .wplng-rule-header
147
148 $html .= '<hr>';
149
150 if ( isset( $entry['rules'] ) ) {
151
152 /**
153 * Mode
154 */
155
156 $html .= '<strong>';
157 $html .= esc_html__( 'Mode: ', 'wplingua' );
158 $html .= '</strong>';
159
160 if ( empty( $entry['mode'] ) ) {
161 $entry['mode'] = 'exactly';
162 }
163
164 switch ( $entry['mode'] ) {
165 case 'exactly':
166 $html .= esc_html__( 'Exactly equal', 'wplingua' );
167 break;
168
169 case 'partially':
170 $html .= esc_html__( 'Partially equal', 'wplingua' );
171 break;
172
173 case 'regex':
174 $html .= esc_html__( 'Regex', 'wplingua' );
175 break;
176
177 default:
178 $html .= esc_html__( 'Error', 'wplingua' );
179 break;
180 }
181
182 $html .= '<hr>';
183
184 /**
185 * Source
186 */
187
188 $html .= '<strong>';
189 $html .= $language_website_html;
190 $html .= esc_html__( 'Original: ', 'wplingua' );
191 $html .= '</strong>';
192 $html .= esc_html( $entry['source'] );
193
194 /**
195 * Rules
196 */
197
198 foreach ( $entry['rules'] as $language_id => $rule ) {
199
200 $language = wplng_get_language_by_id( $language_id );
201
202 $html .= '<hr>';
203 $html .= '<strong>';
204 $html .= '<img';
205 $html .= ' src="' . esc_url( $language['flag'] ) . '"';
206 $html .= ' alt="' . esc_attr( $language['name'] ) . '"';
207 $html .= ' class="wplng-flag"';
208 $html .= '>';
209 $html .= esc_html( $language['name'] );
210 $html .= ' : ';
211 $html .= '</strong>';
212 $html .= esc_html( $rule );
213 }
214 }
215
216 $html .= '</div>'; // End .wplng-dictionary-entry
217 }
218
219 $html .= '</div>'; // End #wplng-dictionary-entries
220
221 echo $html;
222 }
223
224
225 /**
226 * Print HTML subsection of Option page : wpLingua Links & Medias - New entry
227 *
228 * @return void
229 */
230 function wplng_option_page_link_media_new_entry_html() {
231
232 $html = '';
233
234 /**
235 * Input: Source
236 */
237
238 $language_website = wplng_get_language_website();
239 $language_website_html = '<img';
240 $language_website_html .= ' src="' . esc_url( $language_website['flag'] ) . '"';
241 $language_website_html .= ' alt="' . esc_attr( $language_website['name'] ) . '"';
242 $language_website_html .= ' class="wplng-flag"';
243 $language_website_html .= '>';
244
245 $html .= '<fieldset>';
246 $html .= '<label for="wplng-new-source">';
247 $html .= '<strong>';
248 $html .= $language_website_html;
249 $html .= esc_html__( 'Original URL: ', 'wplingua' );
250 $html .= '</strong>';
251 $html .= '</label>';
252 $html .= '<br>';
253 $html .= '<input';
254 $html .= ' type="text"';
255 $html .= ' name="wplng-new-source"';
256 $html .= ' id="wplng-new-source"';
257 $html .= ' maxlength="256"';
258 $html .= '/>';
259 $html .= '</fieldset>';
260
261 /**
262 * Input: Mode
263 */
264
265 $html .= '<fieldset class="wplng-link-media-mode">';
266 $html .= '<input';
267 $html .= ' type="radio"';
268 $html .= ' name="wplng_new_mode"';
269 $html .= ' value="exactly"';
270 $html .= ' id="wplng_new_mode_exactly"';
271 $html .= ' checked';
272 $html .= '>';
273 $html .= '<label for="wplng_new_mode_exactly"> ';
274 $html .= esc_html__( 'Exactly equal', 'wplingua' );
275 $html .= '</label> ';
276 $html .= '<input';
277 $html .= ' type="radio"';
278 $html .= ' name="wplng_new_mode"';
279 $html .= ' value="partially"';
280 $html .= ' id="wplng_new_mode_partially"';
281 $html .= '>';
282 $html .= '<label for="wplng_new_mode_partially"> ';
283 $html .= esc_html__( 'Partially equal', 'wplingua' );
284 $html .= '</label> ';
285 $html .= '<input';
286 $html .= ' type="radio"';
287 $html .= ' name="wplng_new_mode"';
288 $html .= ' value="regex"';
289 $html .= ' id="wplng_new_mode_regex"';
290 $html .= '>';
291 $html .= '<label for="wplng_new_mode_regex"> ';
292 $html .= esc_html__( 'REGEX', 'wplingua' );
293 $html .= '</label>';
294 $html .= '</fieldset>';
295
296 /**
297 * Input: Rules
298 */
299
300 $language_target = wplng_get_languages_target();
301
302 $html .= '<div id="wplng-new-rules">';
303 foreach ( $language_target as $language ) {
304
305 $name = 'wplng-new-always-translate-' . $language['id'];
306
307 $html .= '<div class="wplng-new-rule" wplng-rule="' . esc_attr( $language['id'] ) . '">';
308 $html .= '<hr>';
309 $html .= '<fieldset>';
310 $html .= '<label for="' . esc_attr( $name ) . '">';
311 $html .= '<strong>';
312 $html .= '<img';
313 $html .= ' src="' . esc_url( $language['flag'] ) . '"';
314 $html .= ' alt="' . esc_attr( $language['name'] ) . '"';
315 $html .= ' class="wplng-flag"';
316 $html .= '>';
317 $html .= esc_html( $language['name'] );
318 $html .= esc_html__( ' - URL: ', 'wplingua' );
319 $html .= '</strong>';
320 $html .= '</label>';
321
322 $html .= '<br>';
323
324 $html .= '<input';
325 $html .= ' type="text"';
326 $html .= ' name="' . esc_attr( $name ) . '"';
327 $html .= ' id="' . esc_attr( $name ) . '"';
328 $html .= ' maxlength="256"';
329 $html .= '/>';
330
331 $html .= '</fieldset>';
332 $html .= '</div>';
333
334 }
335 $html .= '</div>';
336
337 $html .= '<div id="wplng-new-action-section" class="wplng-flex-row">';
338
339 $html .= '<div class="wplng-flex-item">';
340 $html .= '<a';
341 $html .= ' href="javascript:void(0);"';
342 $html .= ' id="wplng-new-cancel-button"';
343 $html .= ' class="button "';
344 $html .= '>';
345 $html .= esc_html__( 'Cancel', 'wplingua' );
346 $html .= '</a>';
347 $html .= '</div>'; // End .wplng-flex-item
348
349 $html .= '<div class="wplng-flex-item">';
350 $html .= '<a';
351 $html .= ' href="javascript:void(0);"';
352 $html .= ' id="wplng-new-add-button"';
353 $html .= ' class="button button-primary"';
354 $html .= '>';
355 $html .= esc_html__( 'Save new entry', 'wplingua' );
356 $html .= '</a>';
357 $html .= '</div>'; // End .wplng-flex-item
358
359 $html .= '</div>'; // End #wplng-new-action-section
360
361 echo $html;
362 }
363
364
365 /**
366 * Print HTML subsection of Option page : wpLingua Links & Medias - Edit entry
367 *
368 * @return void
369 */
370 function wplng_option_page_link_media_edit_entry_html() {
371
372 $html = '';
373
374 /**
375 * Input : Source
376 */
377
378 $language_website = wplng_get_language_website();
379 $language_website_html = '<img';
380 $language_website_html .= ' src="' . esc_url( $language_website['flag'] ) . '"';
381 $language_website_html .= ' alt="' . esc_attr( $language_website['name'] ) . '"';
382 $language_website_html .= ' class="wplng-flag"';
383 $language_website_html .= '>';
384
385 $html .= '<fieldset>';
386 $html .= '<label for="wplng-edit-source">';
387 $html .= '<strong>';
388 $html .= $language_website_html;
389 $html .= esc_html__( 'Original URL: ', 'wplingua' );
390 $html .= '</strong>';
391 $html .= '</label>';
392 $html .= '<br>';
393 $html .= '<input';
394 $html .= ' type="text"';
395 $html .= ' name="wplng-edit-source"';
396 $html .= ' id="wplng-edit-source"';
397 $html .= ' maxlength="256"';
398 $html .= '/>';
399 $html .= '</fieldset>';
400
401 /**
402 * Input: Mode
403 */
404
405 $html .= '<fieldset class="wplng-link-media-mode">';
406 $html .= '<input';
407 $html .= ' type="radio"';
408 $html .= ' name="wplng_edit_mode"';
409 $html .= ' value="exactly"';
410 $html .= ' id="wplng_edit_mode_exactly"';
411 $html .= ' checked';
412 $html .= '>';
413 $html .= '<label for="wplng_edit_mode_exactly"> ';
414 $html .= esc_html__( 'Exactly equal', 'wplingua' );
415 $html .= '</label> ';
416 $html .= '<input';
417 $html .= ' type="radio"';
418 $html .= ' name="wplng_edit_mode"';
419 $html .= ' value="partially"';
420 $html .= ' id="wplng_edit_mode_partially"';
421 $html .= '>';
422 $html .= '<label for="wplng_edit_mode_partially"> ';
423 $html .= esc_html__( 'Partially equal', 'wplingua' );
424 $html .= '</label> ';
425 $html .= '<input';
426 $html .= ' type="radio"';
427 $html .= ' name="wplng_edit_mode"';
428 $html .= ' value="regex"';
429 $html .= ' id="wplng_edit_mode_regex"';
430 $html .= '>';
431 $html .= '<label for="wplng_edit_mode_regex"> ';
432 $html .= esc_html__( 'REGEX', 'wplingua' );
433 $html .= '</label>';
434 $html .= '</fieldset>';
435
436 /**
437 * Input: Rules
438 */
439
440 $language_target = wplng_get_languages_target();
441
442 $html .= '<div id="wplng-edit-rules">';
443 foreach ( $language_target as $language ) {
444
445 $name = 'wplng-edit-always-translate-' . $language['id'];
446
447 $html .= '<div class="wplng-edit-rule" wplng-rule="' . esc_attr( $language['id'] ) . '">';
448 $html .= '<hr>';
449 $html .= '<fieldset>';
450 $html .= '<label for="' . esc_attr( $name ) . '">';
451 $html .= '<strong>';
452 $html .= '<img';
453 $html .= ' src="' . esc_url( $language['flag'] ) . '"';
454 $html .= ' alt="' . esc_attr( $language['name'] ) . '"';
455 $html .= ' class="wplng-flag"';
456 $html .= '>';
457 $html .= esc_html( $language['name'] );
458 $html .= esc_html__( ' - Always translate by: ', 'wplingua' );
459 $html .= '</strong>';
460 $html .= '</label>';
461
462 $html .= '<br>';
463
464 $html .= '<input';
465 $html .= ' type="text"';
466 $html .= ' name="' . esc_attr( $name ) . '"';
467 $html .= ' id="' . esc_attr( $name ) . '"';
468 $html .= ' maxlength="256"';
469 $html .= '/>';
470
471 $html .= '</fieldset>';
472 $html .= '</div>';
473
474 }
475 $html .= '</div>';
476
477 $html .= '<div id="wplng-edit-action-section" class="wplng-flex-row">';
478
479 $html .= '<div class="wplng-flex-item">';
480 $html .= '<a';
481 $html .= ' href="javascript:void(0);"';
482 $html .= ' id="wplng-edit-cancel-button"';
483 $html .= ' class="button "';
484 $html .= '>';
485 $html .= esc_html__( 'Cancel', 'wplingua' );
486 $html .= '</a>';
487 $html .= '</div>'; // End .wplng-flex-item
488
489 $html .= '<div class="wplng-flex-item">';
490 $html .= '<a';
491 $html .= ' href="javascript:void(0);"';
492 $html .= ' id="wplng-edit-save-button"';
493 $html .= ' class="button button-primary"';
494 $html .= '>';
495 $html .= esc_html__( 'Save edited entry', 'wplingua' );
496 $html .= '</a>';
497 $html .= '</div>'; // End .wplng-flex-item
498
499 $html .= '</div>';
500
501 echo $html;
502 }
503