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 / term.js

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

161 lines 4.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 // quick edit
2 (function( $ ) {
3 $( document ).bind( 'DOMNodeInserted', function( e ) {
4 var t = $( e.target );
5
6 // WP inserts the quick edit from
7 if ( 'inline-edit' == t.attr( 'id' ) ) {
8 var term_id = t.prev().attr( 'id' ).replace( "tag-", "" );
9
10 if ( term_id > 0 ) {
11 // language dropdown
12 var select = t.find( ':input[name="inline_lang_choice"]' );
13 var lang = $( '#lang_' + term_id ).html();
14 select.val( lang ); // populates the dropdown
15
16 // disable the language dropdown for default categories
17 var default_cat = $( '#default_cat_' + term_id ).html();
18 if ( term_id == default_cat ) {
19 select.prop( 'disabled', true );
20 }
21 }
22 }
23 });
24 })( jQuery );
25
26
27 // update rows of translated terms when adding / deleting a translation or when the language is modified in quick edit
28 // acts on ajaxSuccess event
29 (function( $ ) {
30 $( document ).ajaxSuccess(function( event, xhr, settings ) {
31 function update_rows( term_id ) {
32 // collect old translations
33 var translations = new Array;
34 $( '.translation_' + term_id ).each(function() {
35 translations.push( $( this ).parent().parent().attr( 'id' ).substring( 4 ) );
36 });
37
38 var data = {
39 action: 'pll_update_term_rows',
40 term_id: term_id,
41 translations: translations.join( ',' ),
42 taxonomy: $( "input[name='taxonomy']" ).val(),
43 post_type: $( "input[name='post_type']" ).val(),
44 screen: $( "input[name='screen']" ).val(),
45 _pll_nonce: $( '#_pll_nonce' ).val()
46 }
47
48 // get the modified rows in ajax and update them
49 $.post( ajaxurl, data, function( response ) {
50 if ( response ) {
51 var res = wpAjax.parseAjaxResponse( response, 'ajax-response' );
52 $.each( res.responses, function() {
53 if ( 'row' == this.what ) {
54 $( "#tag-" + this.supplemental.term_id ).replaceWith( this.data );
55 }
56 });
57 }
58 });
59 }
60
61 var data = wpAjax.unserialize( settings.data ); // what were the data sent by the ajax request?
62 if ( 'undefined' != typeof( data['action'] ) ) {
63 switch ( data['action'] ) {
64 // when adding a term, the new term_id is in the ajax response
65 case 'add-tag':
66 res = wpAjax.parseAjaxResponse( xhr.responseXML, 'ajax-response' );
67 $.each( res.responses, function() {
68 if ( 'term' == this.what ) {
69 update_rows( this.supplemental.term_id );
70 }
71 });
72
73 // and also reset translations hidden input fields
74 $( '.htr_lang' ).val( 0 );
75 break;
76
77 // when deleting a term
78 case 'delete-tag':
79 update_rows( data['tag_ID'] );
80 break;
81
82 // in case the language is modified in quick edit and breaks translations
83 case 'inline-save-tax':
84 update_rows( data['tax_ID'] );
85 break;
86 }
87 }
88 });
89 })( jQuery );
90
91 jQuery( document ).ready(function( $ ) {
92 // translations autocomplete input box
93 function init_translations() {
94 $( '.tr_lang' ).each(function(){
95 var tr_lang = $( this ).attr( 'id' ).substring( 8 );
96 var td = $( this ).parent().siblings( '.pll-edit-column' );
97
98 $( this ).autocomplete({
99 minLength: 0,
100
101 source: ajaxurl + '?action=pll_terms_not_translated' +
102 '&term_language=' + $( '#term_lang_choice' ).val() +
103 '&term_id=' + $( "input[name='tag_ID']" ).val() +
104 '&taxonomy=' + $( "input[name='taxonomy']" ).val() +
105 '&translation_language=' + tr_lang +
106 '&post_type=' + typenow +
107 '&_pll_nonce=' + $( '#_pll_nonce' ).val(),
108
109 select: function( event, ui ) {
110 $( '#htr_lang_' + tr_lang ).val( ui.item.id );
111 td.html( ui.item.link );
112 },
113 });
114
115 // when the input box is emptied
116 $( this ).blur(function() {
117 if ( ! $( this ).val() ) {
118 $( '#htr_lang_' + tr_lang ).val( 0 );
119 td.html( td.siblings( '.hidden' ).children().clone() );
120 }
121 });
122 });
123 }
124
125 init_translations();
126
127 // ajax for changing the term's language
128 $( '#term_lang_choice' ).change(function() {
129 var data = {
130 action: 'term_lang_choice',
131 lang: $( this ).val(),
132 from_tag: $( "input[name='from_tag']" ).val(),
133 term_id: $( "input[name='tag_ID']" ).val(),
134 taxonomy: $( "input[name='taxonomy']" ).val(),
135 post_type: typenow,
136 _pll_nonce: $( '#_pll_nonce' ).val()
137 }
138
139 $.post( ajaxurl, data, function( response ) {
140 var res = wpAjax.parseAjaxResponse( response, 'ajax-response' );
141 $.each( res.responses, function() {
142 switch ( this.what ) {
143 case 'translations': // translations fields
144 $( "#term-translations" ).html( this.data );
145 init_translations();
146 break;
147 case 'parent': // parent dropdown list for hierarchical taxonomies
148 $( '#parent' ).replaceWith( this.data );
149 break;
150 case 'tag_cloud': // popular items
151 $( '.tagcloud' ).replaceWith( this.data );
152 break;
153 case 'flag': // flag in front of the select dropdown
154 $( '.pll-select-flag' ).html( this.data );
155 break;
156 }
157 });
158 });
159 });
160 });
161