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
wplingua / inc / admin / option-page-link-media.php

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

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