1+ /**
2+ *
3+ */
4+ /* global wp, jQuery */
5+ /* exported PluginCustomizer */
6+ var PSPolyLang = ( function ( api , $ ) {
7+ 'use strict' ;
8+
9+ var component = {
10+ data : {
11+ url : null ,
12+ languages : null ,
13+ current_language : null ,
14+ }
15+ } ;
16+
17+ /**
18+ * Initialize functionality.
19+ *
20+ * @param {object } args Args.
21+ * @param {string } args.url Preview URL.
22+ * @returns {void }
23+ */
24+ component . init = function init ( pll ) {
25+ _ . extend ( component . data , pll ) ;
26+ if ( ! pll || ! pll . url || ! pll . languages || ! pll . current_language ) {
27+ throw new Error ( 'Missing args' ) ;
28+ }
29+
30+ api . bind ( 'ready' , function ( ) {
31+ api . previewer . previewUrl . set ( pll . url ) ;
32+
33+ var languages = pll . languages ;
34+ var current_language = pll . current_language ;
35+ var current_language_name = '' ;
36+
37+ var html = '<span style="position:relative;left:38px;margin-right:5px;top:2.5px;margin-left:5px;">' + pcLangTrans + ': </span>' ;
38+ html += '<select id="pll-language-select" style="position:relative; left: 35px; top: 1px; padding: 4px 1px;width: 50px;">' ;
39+ for ( var i = 0 ; i < languages . length ; i ++ ) {
40+ var language = languages [ i ] ;
41+ var selected = ( language . slug === current_language ) ? 'selected=""' : '' ;
42+ current_language_name = ( language . slug === current_language ) ? language . name . substr ( 0 , 3 ) : 'Eng' ;
43+ html += '<option ' + selected + ' value="' + language . slug + '">' + language . name . substr ( 0 , 3 ) + '</option>' ;
44+ }
45+ html += '</select>' ;
46+ $ ( html ) . prependTo ( '#customize-header-actions' ) ;
47+
48+
49+ $ ( 'body' ) . on ( 'change' , '#pll-language-select' , function ( ) {
50+ var language = $ ( this ) . val ( ) ;
51+ var old_url = window . location . href ;
52+ window . location . href = updateQueryStringParameter ( window . location . href , 'lang' , language ) ;
53+ } ) ;
54+ } ) ;
55+
56+ function updateQueryStringParameter ( uri , key , value ) {
57+ var re = new RegExp ( "([?&])" + key + "=.*?(&|$)" , "i" ) ;
58+ var separator = uri . indexOf ( '?' ) !== - 1 ? "&" : "?" ;
59+ if ( uri . match ( re ) ) {
60+ return uri . replace ( re , '$1' + key + "=" + value + '$2' ) ;
61+ } else {
62+ return uri + separator + key + "=" + value ;
63+ }
64+ }
65+ } ;
66+
67+ return component ;
68+ } ( wp . customize , jQuery ) ) ;
0 commit comments