!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)},e=function(t){var e=t.selection.getNode();return"A"===e.tagName&&""===t.dom.getAttrib(e,"href")?e.id||e.name:""},i=function(t,e){var n=t.selection.getNode();"A"===n.tagName&&""===t.dom.getAttrib(n,"href")?(n.removeAttribute("name"),n.id=e,t.undoManager.add()):(t.focus(),t.selection.collapse(!0),t.execCommand("mceInsertContent",!1,t.dom.createHTML("a",{id:e})))},n=function(r){var t=e(r);r.windowManager.open({title:"Anchor",body:{type:"textbox",name:"id",size:40,label:"Id",value:t},onsubmit:function(t){var e,n,o=t.data.id;e=r,(a(n=o)?(i(e,n),0):(e.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),1))&&t.preventDefault()}})},o=function(t){t.addCommand("mceAnchor",function(){n(t)})},r=function(o){return function(t){for(var e=0;e 0 ) { // language dropdown var select = t.find( ':input[name="inline_lang_choice"]' ); var lang = $( '#lang_' + term_id ).html(); select.val( lang ); // populates the dropdown // disable the language dropdown for default categories var default_cat = $( '#default_cat_' + term_id ).html(); if ( term_id == default_cat ) { select.prop( 'disabled', true ); } } } } ); } ); /** * Update rows of translated terms when adding / deleting a translation or when the language is modified in quick edit. * Acts on ajaxSuccess event. */ jQuery( function( $ ) { $( document ).ajaxSuccess( function( event, xhr, settings ) { function update_rows( term_id ) { // collect old translations var translations = new Array(); $( '.translation_' + term_id ).each( function() { translations.push( $( this ).parent().parent().attr( 'id' ).substring( 4 ) ); } ); var data = { action: 'pll_update_term_rows', term_id: term_id, translations: translations.join( ',' ), taxonomy: $( "input[name='taxonomy']" ).val(), post_type: $( "input[name='post_type']" ).val(), screen: $( "input[name='screen']" ).val(), _pll_nonce: $( '#_pll_nonce' ).val() }; // get the modified rows in ajax and update them $.post( ajaxurl, data, function( response ) { if ( response ) { var res = wpAjax.parseAjaxResponse( response, 'ajax-response' ); $.each( res.responses, function() { if ( 'row' == this.what ) { // data is built with a call to WP_Terms_List_Table::single_row method // which uses internally other WordPress methods which escape correctly values. // For Polylang language columns the HTML code is correctly escaped in PLL_Admin_Filters_Columns::term_column method. $( "#tag-" + this.supplemental.term_id ).replaceWith( this.data ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.replaceWith } } ); } } ); } var data = wpAjax.unserialize( settings.data ); // what were the data sent by the ajax request? if ( 'undefined' != typeof( data['action'] ) ) { switch ( data['action'] ) { // when adding a term, the new term_id is in the ajax response case 'add-tag': res = wpAjax.parseAjaxResponse( xhr.responseXML, 'ajax-response' ); $.each( res.responses, function() { if ( 'term' == this.what ) { update_rows( this.supplemental.term_id ); } } ); // and also reset translations hidden input fields $( '.htr_lang' ).val( 0 ); break; // when deleting a term case 'delete-tag': update_rows( data['tag_ID'] ); break; // in case the language is modified in quick edit and breaks translations case 'inline-save-tax': update_rows( data['tax_ID'] ); break; } } } ); } ); jQuery( function( $ ) { // translations autocomplete input box function init_translations() { $( '.tr_lang' ).each( function(){ var tr_lang = $( this ).attr( 'id' ).substring( 8 ); var td = $( this ).parent().parent().siblings( '.pll-edit-column' ); $( this ).autocomplete( { minLength: 0, source: ajaxurl + '?action=pll_terms_not_translated' + '&term_language=' + $( '#term_lang_choice' ).val() + '&term_id=' + $( "input[name='tag_ID']" ).val() + '&taxonomy=' + $( "input[name='taxonomy']" ).val() + '&translation_language=' + tr_lang + '&post_type=' + typenow + '&_pll_nonce=' + $( '#_pll_nonce' ).val(), select: function( event, ui ) { $( '#htr_lang_' + tr_lang ).val( ui.item.id ); // ui.item.link is built and come from server side and is well escaped when necessary td.html( ui.item.link ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html }, } ); // when the input box is emptied $( this ).on( 'blur', function() { if ( ! $( this ).val() ) { $( '#htr_lang_' + tr_lang ).val( 0 ); // Value is retrieved from HTML already generated server side td.html( td.siblings( '.hidden' ).children().clone() ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html } } ); } ); } init_translations(); // ajax for changing the term's language $( '#term_lang_choice' ).change( function() { var value = $( this ).val(); var lang = $( this ).children( 'option[value="' + value + '"]' ).attr( 'lang' ); var dir = $( '.pll-translation-column > span[lang="' + lang + '"]' ).attr( 'dir' ); var data = { action: 'term_lang_choice', lang: value, from_tag: $( "input[name='from_tag']" ).val(), term_id: $( "input[name='tag_ID']" ).val(), taxonomy: $( "input[name='taxonomy']" ).val(), post_type: typenow, _pll_nonce: $( '#_pll_nonce' ).val() }; $.post( ajaxurl, data, function( response ) { var res = wpAjax.parseAjaxResponse( response, 'ajax-response' ); $.each( res.responses, function() { switch ( this.what ) { case 'translations': // translations fields // Data is built and come from server side and is well escaped when necessary $( "#term-translations" ).html( this.data ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html init_translations(); break; case 'parent': // parent dropdown list for hierarchical taxonomies // data correctly escaped in PLL_Admin_Filters_Term::term_lang_choice method which uses wp_dropdown_categories function. $( '#parent' ).replaceWith( this.data ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.replaceWith break; case 'tag_cloud': // popular items // data correctly escaped in PLL_Admin_Filters_Term::term_lang_choice method which uses wp_tag_cloud and wp_generate_tag_cloud functions. $( '.tagcloud' ).replaceWith( this.data ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.replaceWith break; case 'flag': // flag in front of the select dropdown // Data is built and come from server side and is well escaped when necessary $( '.pll-select-flag' ).html( this.data ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.html break; } } ); // Modifies the text direction $( 'body' ).removeClass( 'pll-dir-rtl' ).removeClass( 'pll-dir-ltr' ).addClass( 'pll-dir-' + dir ); } ); } ); } ); 'use strict';(function(d){"object"==typeof exports&&"object"==typeof module?d(require("../../lib/codemirror"),require("./searchcursor"),require("../scroll/annotatescrollbar")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","./searchcursor","../scroll/annotatescrollbar"],d):d(CodeMirror)})(function(d){function g(a,c,b,e){this.cm=a;this.options=e;var f={listenForChanges:!1},d;for(d in e)f[d]=e[d];f.className||(f.className="CodeMirror-search-match");this.annotation=a.annotateScrollbar(f); this.query=c;this.caseFold=b;this.gap={from:a.firstLine(),to:a.lastLine()+1};this.matches=[];this.update=null;this.findMatches();this.annotation.update(this.matches);var g=this;a.on("change",this.changeHandler=function(a,b){g.onChange(b)})}function h(a,c,b){return a<=c?a:Math.max(c,a+b)}d.defineExtension("showMatchesOnScrollbar",function(a,c,b){"string"==typeof b&&(b={className:b});b||(b={});return new g(this,a,c,b)});g.prototype.findMatches=function(){if(this.gap){for(var a=0;a=this.gap.to)break;c.to.line>=this.gap.from&&this.matches.splice(a--,1)}for(var b=this.cm.getSearchCursor(this.query,d.Pos(this.gap.from,0),this.caseFold),e=this.options&&this.options.maxMatches||1E3;b.findNext();){c={from:b.from(),to:b.to()};if(c.from.line>=this.gap.to)break;this.matches.splice(a++,0,c);if(this.matches.length>e)break}this.gap=null}};g.prototype.onChange=function(a){var c=a.from.line,b=d.changeEnd(a).line,e=b-a.to.line;this.gap?(this.gap.from=Math.min(h(this.gap.from, c,e),a.from.line),this.gap.to=Math.max(h(this.gap.to,c,e),a.from.line)):this.gap={from:a.from.line,to:b+1};if(e)for(a=0;aNh\u1eb1m\u00a0 \u0111em \u0111\u1ebfn cho kh\u00e1ch h\u00e0ng nhi\u1ec1u s\u1ef1 l\u1ef1a ch\u1ecdn v\u1ec1 c\u00e1c s\u1ea3n ph\u1ea9m c\u1ee7a b\u1ebfp \u00e1 c\u00f4ng nghi\u1ec7p, Himalaya \u0111\u00e3 kh\u00f4ng ng\u1eebng nghi\u00ean c\u1ee9u v\u00e0 t\u00ecm t\u00f2i \u0111\u1ec3 cho ra \u0111\u1eddi c\u00e1c d\u00f2ng s\u1ea3n ph\u1ea9m n\u1ed5i b\u1eadt v\u1ec1 m\u1eb7t c\u00f4ng n\u0103ng v\u00e0 hi\u1ec7u su\u1ea5t, gi\u00fap cho ng\u01b0\u1eddi \u0111\u1ea7u b\u1ebfp n\u00e2ng cao hi\u1ec7u su\u1ea5t n\u1ea5u \u0103n m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3 nh\u1ea5t. B\u1ebfp \u00e1 t\u1ea1i Himalaya l\u00e0 d\u00f2ng s\u1ea3n ph\u1ea9m \u0111\u00e3 qu\u00e1 quen thu\u1ed9c tr\u00ean th\u1ecb tr\u01b0\u1eddng b\u1ebfp c\u00f4ng nghi\u1ec7p, nh\u01b0ng m\u1eabu b\u1ebfp \u00e1 2 h\u1ecdng kh\u00f2<\/a><\/strong> l\u00e0 d\u00f2ng s\u1ea3n ph\u1ea9m m\u1edbi v\u1edbi m\u1ed9t s\u1ed1 t\u00ednh n\u0103ng kh\u00e1c ho\u00e0n to\u00e0n v\u1edbi c\u00e1c lo\u1ea1i b\u1ebfp \u00e1 kh\u00e1c.<\/p>\n\n\n\n

\u0110\u1ec3 x\u00e0o, n\u1ea5u nhanh s\u1ed1 l\u01b0\u1ee3ng th\u1ef1c ph\u1ea9m l\u1edbn t\u1ea1i c\u00e1c nh\u00e0 m\u00e1y, tr\u01b0\u1eddng h\u1ecdc hay nh\u00e0 h\u00e0ng,\u2026 th\u00ec c\u00e1c b\u1ea1n s\u1ebd c\u1ea7n \u0111\u1ebfn d\u00f2ng b\u1ebfp hi\u1ec7n \u0111\u1ea1i, n\u0103ng su\u1ea5t cao nh\u01b0ng gi\u00e1 th\u00e0nh h\u1ee3p l\u00fd v\u00e0 b\u1ebfp \u00e1 2 h\u1ecdng kh\u00f2 l\u00e0 s\u1ea3n ph\u1ea9m chuy\u00ean d\u1ee5ng \u0111\u1ec3 n\u1ea5u \u0103n cho c\u00e1c khu b\u1ebfp \u0103n t\u1eadp th\u1ec3. V\u1edbi nhi\u1ec1u n\u0103m kinh nghi\u1ec7m trong ng\u00e0nh s\u1ea3n xu\u1ea5t b\u1ebfp c\u00f4ng nghi\u1ec7p, c\u00f4ng ty c\u1ed5 ph\u1ea7n Inox Himalaya t\u1ef1 tin mang \u0111\u1ebfn cho kh\u00e1ch h\u00e0ng s\u1ea3n ph\u1ea9m b\u1ebfp \u00e1 2 h\u1ecdng kh\u00f2 hay c\u00f2n g\u1ecdi l\u00e0 b\u1ebfp \u00e1 h\u1ecdng kh\u00e8<\/strong> v\u1edbi nhi\u1ec1u t\u00ednh n\u0103ng v\u01b0\u1ee3t tr\u1ed9i v\u00e0 c\u00f4ng n\u0103ng h\u1eefu \u00edch, \u0111\u00e2y s\u1ebd l\u00e0 m\u1ed9t s\u1ea3n ph\u1ea9m tuy\u1ec7t vi cho c\u00e1c nh\u00e0 m\u00e1y, nh\u00e0 h\u00e0ng, tr\u01b0\u1eddng h\u1ecdc m\u00e0 b\u1ea1n kh\u00f4ng n\u00ean b\u1ecf qua.<\/p>\n\n\n\n

\u21d2 Xem ngay b\u00e0i vi\u1ebft li\u00ean quan: C\u00e1ch ch\u1ecdn b\u1ebfp \u00e1 c\u00f4ng nghi\u1ec7p<\/a><\/p>\n\n\n\n

\"B\u1ebfp<\/figure>\n\n\n\n
\n
\n

M\u1ee5c l\u1ee5c<\/p>\n