PluginProbe
Polylang / 2.0.12
Polylang v2.0.12
3.8.9 3.8.8 3.8.7 3.8.6 3.8.5 3.8.4 3.8.3 2.7 2.7.0.1 2.7.1 2.7.2 2.7.3 2.7.4 2.8 2.8.1 2.8.2 2.8.3 2.8.4 2.9 2.9.1 2.9.2 3.0 3.0.1 3.0.2 3.0.3 All 233 releases
polylang / js / post.js

post.js in Polylang 2.0.12, at js/post.js

244 lines 7.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 // tag suggest
2 // valid for both tag metabox and quick edit
3 (function( $ ){
4 $.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
5 if ( 'string' === typeof options.data && ( -1 !== options.url.indexOf( 'action=ajax-tag-search' ) || -1 !== options.data.indexOf( 'action=ajax-tag-search' ) ) && ( ( lang = $( '.post_lang_choice' ).val() ) || ( lang = $( ':input[name="inline_lang_choice"]' ).val() ) ) ) {
6 options.data = 'lang=' + lang + '&' + options.data;
7 }
8 });
9 })( jQuery );
10
11 // overrides tagBox.get
12 (function( $ ){
13 // overrides function to add the language
14 tagBox.get = function( id ) {
15 var tax = id.substr( id.indexOf( '-' ) + 1 );
16
17 // add the language in the $_POST variable
18 var data = {
19 action: 'get-tagcloud',
20 lang: $( '.post_lang_choice' ).val(),
21 tax: tax
22 }
23
24 $.post( ajaxurl, data, function( r, stat ) {
25 if ( 0 == r || 'success' != stat ) {
26 r = wpAjax.broken;
27 }
28
29 r = $( '<p id="tagcloud-' + tax + '" class="the-tagcloud">' + r + '</p>' );
30 $( 'a', r ).click(function(){
31 tagBox.flushTags( $( this ).closest( '.inside' ).children( '.tagsdiv' ), this );
32 return false;
33 });
34
35 // add an if else condition to allow modifying the tags outputed when switching the language
36 if ( v = $( '.the-tagcloud' ).css( 'display' ) ) {
37 $( '.the-tagcloud' ).replaceWith( r );
38 $( '.the-tagcloud' ).css( 'display', v );
39 }
40 else {
41 $( '#' + id ).after( r );
42 }
43 });
44 }
45 })( jQuery );
46
47 // quick edit
48 (function( $ ) {
49 $( document ).bind( 'DOMNodeInserted', function( e ) {
50 var t = $( e.target );
51
52 // WP inserts the quick edit from
53 if ( 'inline-edit' == t.attr( 'id' ) ) {
54 var post_id = t.prev().attr( 'id' ).replace( "post-", "" );
55
56 if ( post_id > 0 ) {
57 // language dropdown
58 var select = t.find( ':input[name="inline_lang_choice"]' );
59 var lang = $( '#lang_' + post_id ).html();
60 select.val( lang ); // populates the dropdown
61
62 filter_terms( lang ); // initial filter for category checklist
63 filter_pages( lang ); // initial filter for parent dropdown
64
65 // modify category checklist an parent dropdown on language change
66 select.change(function() {
67 filter_terms( $( this ).val() );
68 filter_pages( $( this ).val() );
69 });
70 }
71 }
72
73 // filter category checklist
74 function filter_terms( lang ) {
75 if ( "undefined" != typeof( pll_term_languages ) ) {
76 $.each( pll_term_languages, function( lg, term_tax ) {
77 $.each( term_tax, function( tax, terms ) {
78 $.each( terms, function( i ) {
79 id = '#' + tax + '-' + pll_term_languages[ lg ][ tax ][ i ];
80 lang == lg ? $( id ).show() : $( id ).hide();
81 });
82 });
83 });
84 }
85 }
86
87 // filter parent page dropdown list
88 function filter_pages( lang ) {
89 if ( "undefined" != typeof( pll_page_languages ) ) {
90 $.each( pll_page_languages, function( lg, pages ) {
91 $.each( pages, function( i ) {
92 v = $( '#post_parent option[value="' + pll_page_languages[ lg ][ i ] + '"]' );
93 lang == lg ? v.show() : v.hide();
94 });
95 });
96 }
97 }
98 });
99 })( jQuery );
100
101 // update rows of translated posts when the language is modified in quick edit
102 // acts on ajaxSuccess event
103 (function( $ ) {
104 $( document ).ajaxSuccess(function( event, xhr, settings ) {
105 function update_rows( post_id ) {
106 // collect old translations
107 var translations = new Array;
108 $( '.translation_' + post_id ).each(function() {
109 translations.push( $( this ).parent().parent().attr( 'id' ).substring( 5 ) );
110 });
111
112 var data = {
113 action: 'pll_update_post_rows',
114 post_id: post_id,
115 translations: translations.join( ',' ),
116 post_type: $( "input[name='post_type']" ).val(),
117 screen: $( "input[name='screen']" ).val(),
118 _pll_nonce: $( "input[name='_inline_edit']" ).val() // reuse quick edit nonce
119 }
120
121 // get the modified rows in ajax and update them
122 $.post( ajaxurl, data, function( response ) {
123 if ( response ) {
124 var res = wpAjax.parseAjaxResponse( response, 'ajax-response' );
125 $.each( res.responses, function() {
126 if ( 'row' == this.what ) {
127 $( "#post-" + this.supplemental.post_id ).replaceWith( this.data );
128 }
129 });
130 }
131 });
132 }
133
134 var data = wpAjax.unserialize( settings.data ); // what were the data sent by the ajax request?
135 if ( 'undefined' != typeof( data['action'] ) && 'inline-save' == data['action'] ) {
136 update_rows( data['post_ID'] );
137 }
138 });
139 })( jQuery );
140
141 jQuery( document ).ready(function( $ ) {
142 // collect taxonomies - code partly copied from WordPress
143 var taxonomies = new Array();
144 $( '.categorydiv' ).each(function(){
145 var this_id = $( this ).attr( 'id' ), taxonomyParts, taxonomy;
146
147 taxonomyParts = this_id.split( '-' );
148 taxonomyParts.shift();
149 taxonomy = taxonomyParts.join( '-' );
150 taxonomies.push( taxonomy ); // store the taxonomy for future use
151
152 // add our hidden field in the new category form - for each hierarchical taxonomy
153 // to set the language when creating a new category
154 $( '#' + taxonomy + '-add-submit' ).before( $( '<input />' )
155 .attr( 'type', 'hidden' )
156 .attr( 'id', taxonomy + '-lang' )
157 .attr( 'name', 'term_lang_choice' )
158 .attr( 'value', $( '.post_lang_choice' ).val() )
159 );
160 });
161
162 // ajax for changing the post's language in the languages metabox
163 $( '.post_lang_choice' ).change(function() {
164 var data = {
165 action: 'post_lang_choice',
166 lang: $( this ).val(),
167 post_type: $( '#post_type' ).val(),
168 taxonomies: taxonomies,
169 post_id: $( '#post_ID' ).val(),
170 _pll_nonce: $( '#_pll_nonce' ).val()
171 }
172
173 $.post( ajaxurl, data , function( response ) {
174 var res = wpAjax.parseAjaxResponse( response, 'ajax-response' );
175 $.each( res.responses, function() {
176 switch ( this.what ) {
177 case 'translations': // translations fields
178 $( '.translations' ).html( this.data );
179 init_translations();
180 break;
181 case 'taxonomy': // categories metabox for posts
182 var tax = this.data;
183 $( '#' + tax + 'checklist' ).html( this.supplemental.all );
184 $( '#' + tax + 'checklist-pop' ).html( this.supplemental.populars );
185 $( '#new' + tax + '_parent' ).replaceWith( this.supplemental.dropdown );
186 $( '#' + tax + '-lang' ).val( $( '.post_lang_choice' ).val() ); // hidden field
187 break;
188 case 'pages': // parent dropdown list for pages
189 $( '#parent_id' ).html( this.data );
190 break;
191 case 'flag': // flag in front of the select dropdown
192 $( '.pll-select-flag' ).html( this.data );
193 break;
194 case 'permalink': // Sample permalink
195 var div = $( '#edit-slug-box' );
196 if ( '-1' != this.data && div.children().length ) {
197 div.html( this.data );
198 }
199 break;
200 }
201 });
202
203 // modifies the language in the tag cloud
204 $( '.tagcloud-link' ).each(function() {
205 var id = $( this ).attr( 'id' );
206 tagBox.get( id );
207 });
208 });
209 });
210
211 // translations autocomplete input box
212 function init_translations() {
213 $( '.tr_lang' ).each(function(){
214 var tr_lang = $( this ).attr( 'id' ).substring( 8 );
215 var td = $( this ).parent().siblings( '.pll-edit-column' );
216
217 $( this ).autocomplete({
218 minLength: 0,
219
220 source: ajaxurl + '?action=pll_posts_not_translated' +
221 '&post_language=' + $( '.post_lang_choice' ).val() +
222 '&translation_language=' + tr_lang +
223 '&post_type=' + $( '#post_type' ).val() +
224 '&_pll_nonce=' + $( '#_pll_nonce' ).val(),
225
226 select: function( event, ui ) {
227 $( '#htr_lang_' + tr_lang ).val( ui.item.id );
228 td.html( ui.item.link );
229 },
230 });
231
232 // when the input box is emptied
233 $( this ).blur(function() {
234 if ( ! $( this ).val() ) {
235 $( '#htr_lang_' + tr_lang ).val( 0 );
236 td.html( td.siblings( '.hidden' ).children().clone() );
237 }
238 });
239 });
240 }
241
242 init_translations();
243 });
244