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

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