| @@ -1,17 +1,11 @@ | ||
| 1 | -/** | |
| 2 | - * @package Polylang | |
| 3 | - */ | |
| 4 | - | |
| 5 | 1 | // tag suggest in metabox |
| 6 | 2 | (function( $ ){ |
| 7 | - $.ajaxPrefilter( | |
| 8 | - function( options, originalOptions, jqXHR ) { | |
| 9 | - if ( 'string' === typeof options.data && -1 !== options.url.indexOf( 'action=ajax-tag-search' ) && ( lang = $( '.post_lang_choice' ).val() ) ) { | |
| 10 | - options.data = 'lang=' + lang + '&' + options.data; | |
| 11 | - } | |
| 3 | + $.ajaxPrefilter(function( options, originalOptions, jqXHR ) { | |
| 4 | + if ( 'string' === typeof options.data && -1 !== options.url.indexOf( 'action=ajax-tag-search' ) && ( lang = $( '.post_lang_choice' ).val() ) ) { | |
| 5 | + options.data = 'lang=' + lang + '&' + options.data; | |
| 12 | 6 | } |
| 13 | - ); | |
| 7 | + }); | |
| 14 | 8 | })( jQuery ); |
| 15 | 9 | |
| 16 | 10 | // overrides tagBox.get |
| 17 | 11 | (function( $ ){ |
| @@ -25,176 +19,139 @@ | ||
| 25 | 19 | lang: $( '.post_lang_choice' ).val(), |
| 26 | 20 | tax: tax |
| 27 | 21 | } |
| 28 | 22 | |
| 29 | - $.post( | |
| 30 | - ajaxurl, | |
| 31 | - data, | |
| 32 | - function( r, stat ) { | |
| 33 | - if ( 0 == r || 'success' != stat ) { | |
| 34 | - r = wpAjax.broken; | |
| 35 | - } | |
| 23 | + $.post( ajaxurl, data, function( r, stat ) { | |
| 24 | + if ( 0 == r || 'success' != stat ) { | |
| 25 | + r = wpAjax.broken; | |
| 26 | + } | |
| 36 | 27 | |
| 37 | - // @see code from WordPress core https://github.com/WordPress/WordPress/blob/5.2.2/wp-admin/js/tags-box.js#L291 | |
| 38 | - // @see wp_generate_tag_cloud function which generate the escaped HTML https://github.com/WordPress/WordPress/blob/a02b5cc2a8eecb8e076fbb7cf4de7bd2ec8a8eb1/wp-includes/category-template.php#L966-L975 | |
| 39 | - r = $( '<div />' ).addClass( 'the-tagcloud' ).attr( 'id', 'tagcloud-' + tax ).html( r ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html | |
| 40 | - $( 'a', r ).click( | |
| 41 | - function(){ | |
| 42 | - tagBox.flushTags( $( this ).closest( '.inside' ).children( '.tagsdiv' ), this ); | |
| 43 | - return false; | |
| 44 | - } | |
| 45 | - ); | |
| 28 | + r = $( '<div id="tagcloud-' + tax + '" class="the-tagcloud">' + r + '</div>' ); | |
| 29 | + $( 'a', r ).click(function(){ | |
| 30 | + tagBox.flushTags( $( this ).closest( '.inside' ).children( '.tagsdiv' ), this ); | |
| 31 | + return false; | |
| 32 | + }); | |
| 46 | 33 | |
| 47 | - // add an if else condition to allow modifying the tags outputed when switching the language | |
| 48 | - if ( v = $( '.the-tagcloud' ).css( 'display' ) ) { | |
| 49 | - $( '.the-tagcloud' ).replaceWith( r ); | |
| 50 | - $( '.the-tagcloud' ).css( 'display', v ); | |
| 51 | - } | |
| 52 | - else { | |
| 53 | - $( '#' + id ).after( r ); | |
| 54 | - } | |
| 34 | + // add an if else condition to allow modifying the tags outputed when switching the language | |
| 35 | + if ( v = $( '.the-tagcloud' ).css( 'display' ) ) { | |
| 36 | + $( '.the-tagcloud' ).replaceWith( r ); | |
| 37 | + $( '.the-tagcloud' ).css( 'display', v ); | |
| 55 | 38 | } |
| 56 | - ); | |
| 39 | + else { | |
| 40 | + $( '#' + id ).after( r ); | |
| 41 | + } | |
| 42 | + }); | |
| 57 | 43 | } |
| 58 | 44 | })( jQuery ); |
| 59 | 45 | |
| 60 | -jQuery( document ).ready( | |
| 61 | - function( $ ) { | |
| 62 | - // collect taxonomies - code partly copied from WordPress | |
| 63 | - var taxonomies = new Array(); | |
| 64 | - $( '.categorydiv' ).each( | |
| 65 | - function(){ | |
| 66 | - var this_id = $( this ).attr( 'id' ), taxonomyParts, taxonomy; | |
| 46 | +jQuery( document ).ready(function( $ ) { | |
| 47 | + // collect taxonomies - code partly copied from WordPress | |
| 48 | + var taxonomies = new Array(); | |
| 49 | + $( '.categorydiv' ).each(function(){ | |
| 50 | + var this_id = $( this ).attr( 'id' ), taxonomyParts, taxonomy; | |
| 67 | 51 | |
| 68 | - taxonomyParts = this_id.split( '-' ); | |
| 69 | - taxonomyParts.shift(); | |
| 70 | - taxonomy = taxonomyParts.join( '-' ); | |
| 71 | - taxonomies.push( taxonomy ); // store the taxonomy for future use | |
| 52 | + taxonomyParts = this_id.split( '-' ); | |
| 53 | + taxonomyParts.shift(); | |
| 54 | + taxonomy = taxonomyParts.join( '-' ); | |
| 55 | + taxonomies.push( taxonomy ); // store the taxonomy for future use | |
| 72 | 56 | |
| 73 | - // add our hidden field in the new category form - for each hierarchical taxonomy | |
| 74 | - // to set the language when creating a new category | |
| 75 | - $( '#' + taxonomy + '-add-submit' ).before( | |
| 76 | - $( '<input />' ).attr( 'type', 'hidden' ) | |
| 77 | - .attr( 'id', taxonomy + '-lang' ) | |
| 78 | - .attr( 'name', 'term_lang_choice' ) | |
| 79 | - .attr( 'value', $( '.post_lang_choice' ).val() ) | |
| 80 | - ); | |
| 81 | - } | |
| 57 | + // add our hidden field in the new category form - for each hierarchical taxonomy | |
| 58 | + // to set the language when creating a new category | |
| 59 | + $( '#' + taxonomy + '-add-submit' ).before( $( '<input />' ) | |
| 60 | + .attr( 'type', 'hidden' ) | |
| 61 | + .attr( 'id', taxonomy + '-lang' ) | |
| 62 | + .attr( 'name', 'term_lang_choice' ) | |
| 63 | + .attr( 'value', $( '.post_lang_choice' ).val() ) | |
| 82 | 64 | ); |
| 65 | + }); | |
| 83 | 66 | |
| 84 | - // ajax for changing the post's language in the languages metabox | |
| 85 | - $( '.post_lang_choice' ).change( | |
| 86 | - function() { | |
| 87 | - var value = $( this ).val(); | |
| 88 | - var lang = $( this ).children( 'option[value="' + value + '"]' ).attr( 'lang' ); | |
| 89 | - var dir = $( '.pll-translation-column > span[lang="' + lang + '"]' ).attr( 'dir' ); | |
| 67 | + // ajax for changing the post's language in the languages metabox | |
| 68 | + $( '.post_lang_choice' ).change(function() { | |
| 69 | + var value = $( this ).val(); | |
| 70 | + var lang = $( this ).children( 'option[value="' + value + '"]' ).attr( 'lang' ); | |
| 71 | + var dir = $( '.pll-translation-column > span[lang="' + lang + '"]' ).attr( 'dir' ); | |
| 90 | 72 | |
| 91 | - var data = { | |
| 92 | - action: 'post_lang_choice', | |
| 93 | - lang: value, | |
| 94 | - post_type: $( '#post_type' ).val(), | |
| 95 | - taxonomies: taxonomies, | |
| 96 | - post_id: $( '#post_ID' ).val(), | |
| 97 | - _pll_nonce: $( '#_pll_nonce' ).val() | |
| 73 | + var data = { | |
| 74 | + action: 'post_lang_choice', | |
| 75 | + lang: value, | |
| 76 | + post_type: $( '#post_type' ).val(), | |
| 77 | + taxonomies: taxonomies, | |
| 78 | + post_id: $( '#post_ID' ).val(), | |
| 79 | + _pll_nonce: $( '#_pll_nonce' ).val() | |
| 80 | + } | |
| 81 | + | |
| 82 | + $.post( ajaxurl, data , function( response ) { | |
| 83 | + var res = wpAjax.parseAjaxResponse( response, 'ajax-response' ); | |
| 84 | + $.each( res.responses, function() { | |
| 85 | + switch ( this.what ) { | |
| 86 | + case 'translations': // translations fields | |
| 87 | + $( '.translations' ).html( this.data ); | |
| 88 | + init_translations(); | |
| 89 | + break; | |
| 90 | + case 'taxonomy': // categories metabox for posts | |
| 91 | + var tax = this.data; | |
| 92 | + $( '#' + tax + 'checklist' ).html( this.supplemental.all ); | |
| 93 | + $( '#' + tax + 'checklist-pop' ).html( this.supplemental.populars ); | |
| 94 | + $( '#new' + tax + '_parent' ).replaceWith( this.supplemental.dropdown ); | |
| 95 | + $( '#' + tax + '-lang' ).val( $( '.post_lang_choice' ).val() ); // hidden field | |
| 96 | + break; | |
| 97 | + case 'pages': // parent dropdown list for pages | |
| 98 | + $( '#parent_id' ).html( this.data ); | |
| 99 | + break; | |
| 100 | + case 'flag': // flag in front of the select dropdown | |
| 101 | + $( '.pll-select-flag' ).html( this.data ); | |
| 102 | + break; | |
| 103 | + case 'permalink': // Sample permalink | |
| 104 | + var div = $( '#edit-slug-box' ); | |
| 105 | + if ( '-1' != this.data && div.children().length ) { | |
| 106 | + div.html( this.data ); | |
| 107 | + } | |
| 108 | + break; | |
| 98 | 109 | } |
| 110 | + }); | |
| 99 | 111 | |
| 100 | - $.post( | |
| 101 | - ajaxurl, | |
| 102 | - data, | |
| 103 | - function( response ) { | |
| 104 | - var res = wpAjax.parseAjaxResponse( response, 'ajax-response' ); | |
| 105 | - $.each( | |
| 106 | - res.responses, | |
| 107 | - function() { | |
| 108 | - switch ( this.what ) { | |
| 109 | - case 'translations': // translations fields | |
| 110 | - // Data is built and come from server side and is well escaped when necessary | |
| 111 | - $( '.translations' ).html( this.data ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html | |
| 112 | - init_translations(); | |
| 113 | - break; | |
| 114 | - case 'taxonomy': // categories metabox for posts | |
| 115 | - var tax = this.data; | |
| 116 | - // @see wp_terms_checklist https://github.com/WordPress/WordPress/blob/5.2.2/wp-admin/includes/template.php#L175 | |
| 117 | - // @see https://github.com/WordPress/WordPress/blob/5.2.2/wp-admin/includes/class-walker-category-checklist.php#L89-L111 | |
| 118 | - $( '#' + tax + 'checklist' ).html( this.supplemental.all ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html | |
| 119 | - // @see wp_popular_terms_checklist https://github.com/WordPress/WordPress/blob/5.2.2/wp-admin/includes/template.php#L236 | |
| 120 | - $( '#' + tax + 'checklist-pop' ).html( this.supplemental.populars ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html | |
| 121 | - $( '#new' + tax + '_parent' ).replaceWith( this.supplemental.dropdown ); | |
| 122 | - $( '#' + tax + '-lang' ).val( $( '.post_lang_choice' ).val() ); // hidden field | |
| 123 | - break; | |
| 124 | - case 'pages': // parent dropdown list for pages | |
| 125 | - // @see wp_dropdown_pages https://github.com/WordPress/WordPress/blob/5.2.2/wp-includes/post-template.php#L1186-L1208 | |
| 126 | - // @see https://github.com/WordPress/WordPress/blob/5.2.2/wp-includes/class-walker-page-dropdown.php#L88 | |
| 127 | - $( '#parent_id' ).html( this.data ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html | |
| 128 | - break; | |
| 129 | - case 'flag': // flag in front of the select dropdown | |
| 130 | - // Data is built and come from server side and is well escaped when necessary | |
| 131 | - $( '.pll-select-flag' ).html( this.data ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html | |
| 132 | - break; | |
| 133 | - case 'permalink': // Sample permalink | |
| 134 | - var div = $( '#edit-slug-box' ); | |
| 135 | - if ( '-1' != this.data && div.children().length ) { | |
| 136 | - // @see get_sample_permalink_html https://github.com/WordPress/WordPress/blob/5.2.2/wp-admin/includes/post.php#L1425-L1454 | |
| 137 | - div.html( this.data ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html | |
| 138 | - } | |
| 139 | - break; | |
| 140 | - } | |
| 141 | - } | |
| 142 | - ); | |
| 112 | + // modifies the language in the tag cloud | |
| 113 | + $( '.tagcloud-link' ).each(function() { | |
| 114 | + var id = $( this ).attr( 'id' ); | |
| 115 | + tagBox.get( id ); | |
| 116 | + }); | |
| 143 | 117 | |
| 144 | - // modifies the language in the tag cloud | |
| 145 | - $( '.tagcloud-link' ).each( | |
| 146 | - function() { | |
| 147 | - var id = $( this ).attr( 'id' ); | |
| 148 | - tagBox.get( id ); | |
| 149 | - } | |
| 150 | - ); | |
| 118 | + // Modifies the text direction | |
| 119 | + $( 'body' ).removeClass( 'pll-dir-rtl' ).removeClass( 'pll-dir-ltr' ).addClass( 'pll-dir-' + dir ); | |
| 120 | + $( '#content_ifr' ).contents().find( 'html' ).attr( 'lang', lang ).attr( 'dir', dir ); | |
| 121 | + $( '#content_ifr' ).contents().find( 'body' ).attr( 'dir', dir ); | |
| 122 | + }); | |
| 123 | + }); | |
| 151 | 124 | |
| 152 | - // Modifies the text direction | |
| 153 | - $( 'body' ).removeClass( 'pll-dir-rtl' ).removeClass( 'pll-dir-ltr' ).addClass( 'pll-dir-' + dir ); | |
| 154 | - $( '#content_ifr' ).contents().find( 'html' ).attr( 'lang', lang ).attr( 'dir', dir ); | |
| 155 | - $( '#content_ifr' ).contents().find( 'body' ).attr( 'dir', dir ); | |
| 156 | - } | |
| 157 | - ); | |
| 158 | - } | |
| 159 | - ); | |
| 125 | + // translations autocomplete input box | |
| 126 | + function init_translations() { | |
| 127 | + $( '.tr_lang' ).each(function(){ | |
| 128 | + var tr_lang = $( this ).attr( 'id' ).substring( 8 ); | |
| 129 | + var td = $( this ).parent().parent().siblings( '.pll-edit-column' ); | |
| 160 | 130 | |
| 161 | - // translations autocomplete input box | |
| 162 | - function init_translations() { | |
| 163 | - $( '.tr_lang' ).each( | |
| 164 | - function(){ | |
| 165 | - var tr_lang = $( this ).attr( 'id' ).substring( 8 ); | |
| 166 | - var td = $( this ).parent().parent().siblings( '.pll-edit-column' ); | |
| 131 | + $( this ).autocomplete({ | |
| 132 | + minLength: 0, | |
| 167 | 133 | |
| 168 | - $( this ).autocomplete( | |
| 169 | - { | |
| 170 | - minLength: 0, | |
| 171 | - source: ajaxurl + '?action=pll_posts_not_translated' + | |
| 172 | - '&post_language=' + $( '.post_lang_choice' ).val() + | |
| 173 | - '&translation_language=' + tr_lang + | |
| 174 | - '&post_type=' + $( '#post_type' ).val() + | |
| 175 | - '&_pll_nonce=' + $( '#_pll_nonce' ).val(), | |
| 176 | - select: function( event, ui ) { | |
| 177 | - $( '#htr_lang_' + tr_lang ).val( ui.item.id ); | |
| 178 | - // ui.item.link is built and come from server side and is well escaped when necessary | |
| 179 | - td.html( ui.item.link ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html | |
| 180 | - }, | |
| 181 | - } | |
| 182 | - ); | |
| 134 | + source: ajaxurl + '?action=pll_posts_not_translated' + | |
| 135 | + '&post_language=' + $( '.post_lang_choice' ).val() + | |
| 136 | + '&translation_language=' + tr_lang + | |
| 137 | + '&post_type=' + $( '#post_type' ).val() + | |
| 138 | + '&_pll_nonce=' + $( '#_pll_nonce' ).val(), | |
| 183 | 139 | |
| 184 | - // when the input box is emptied | |
| 185 | - $( this ).blur( | |
| 186 | - function() { | |
| 187 | - if ( ! $( this ).val() ) { | |
| 188 | - $( '#htr_lang_' + tr_lang ).val( 0 ); | |
| 189 | - // Value is retrieved from HTML already generated server side | |
| 190 | - td.html( td.siblings( '.hidden' ).children().clone() ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html | |
| 191 | - } | |
| 192 | - } | |
| 193 | - ); | |
| 140 | + select: function( event, ui ) { | |
| 141 | + $( '#htr_lang_' + tr_lang ).val( ui.item.id ); | |
| 142 | + td.html( ui.item.link ); | |
| 143 | + }, | |
| 144 | + }); | |
| 145 | + | |
| 146 | + // when the input box is emptied | |
| 147 | + $( this ).blur(function() { | |
| 148 | + if ( ! $( this ).val() ) { | |
| 149 | + $( '#htr_lang_' + tr_lang ).val( 0 ); | |
| 150 | + td.html( td.siblings( '.hidden' ).children().clone() ); | |
| 194 | 151 | } |
| 195 | - ); | |
| 196 | - } | |
| 152 | + }); | |
| 153 | + }); | |
| 154 | + } | |
| 197 | 155 | |
| 198 | - init_translations(); | |
| 199 | - } | |
| 200 | -); | |
| 156 | + init_translations(); | |
| 157 | +}); | |