!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;aVi\u1ec7c r\u00e3 \u0111\u00f4ng \u0111\u00f2i h\u1ecfi ph\u1ea3i c\u00f3 \u0111\u1ee7 th\u1eddi gian v\u00e0 l\u1eadp k\u1ebf ho\u1ea1ch \u0111\u1ec3 b\u1ea3o v\u1ec7 th\u1ef1c ph\u1ea9m kh\u1ecfi nguy c\u01a1 h\u01b0 h\u1ecfng.<\/p>\n

– Th\u1ef1c ph\u1ea9m \u0111\u00f4ng l\u1ea1nh ph\u1ea3i \u0111\u01b0\u1ee3c r\u00e3 \u0111\u00f4ng \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o qu\u00e1 tr\u00ecnh n\u1ea5u c\u00f3 hi\u1ec7u qu\u1ea3.<\/p>\n

– Vi\u1ec7c r\u00e3 \u0111\u00f4ng \u0111\u00fang c\u00e1ch \u0111\u00f2i h\u1ecfi ph\u1ea3i c\u00f3 s\u1ef1 gi\u00e1m s\u00e1t \u0111\u1ec3 ng\u0103n ch\u1eb7n th\u1ef1c ph\u1ea9m c\u00f3 nguy c\u01a1 cao ti\u1ebfp x\u00fac v\u1edbi v\u00f9ng nhi\u1ec7t \u0111\u1ed9 nguy hi\u1ec3m.<\/p>\n

– S\u1eed d\u1ee5ng H\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd an to\u00e0n th\u1ef1c \u0111\u1ec3 gi\u00fap ng\u01b0\u1eddi x\u1eed l\u00fd th\u1ef1c ph\u1ea9m ghi nh\u1edb c\u00e1c nhi\u1ec7m v\u1ee5 quan tr\u1ecdng v\u1ec1 an to\u00e0n th\u1ef1c ph\u1ea9m , bao g\u1ed3m c\u1ea3 vi\u1ec7c r\u00e3 \u0111\u00f4ng th\u1ef1c ph\u1ea9m.<\/p>\n

\u21d2 Thi\u1ebft b\u1ecb b\u1ebfp c\u00f4ng nghi\u1ec7p<\/a> – B\u1ebfp nh\u00e0 m\u00e1y<\/a><\/strong><\/span><\/p>\n

\u0110\u00f4ng l\u1ea1nh th\u1ef1c ph\u1ea9m l\u00e0 m\u1ed9t c\u00e1ch r\u1ea5t hi\u1ec7u qu\u1ea3 \u0111\u1ec3 k\u00e9o d\u00e0i \u0111\u00e1ng k\u1ec3 th\u1eddi h\u1ea1n s\u1eed d\u1ee5ng c\u1ee7a th\u1ef1c ph\u1ea9m trong qu\u00e1 tr\u00ecnh b\u1ea3o qu\u1ea3n. M\u1ed9t ho\u1ea1t \u0111\u1ed9ng t\u1ea5t y\u1ebfu \u0111i c\u00f9ng v\u1edbi qu\u00e1 tr\u00ecnh \u0111\u00f4ng l\u1ea1nh l\u00e0 qu\u00e1 tr\u00ecnh r\u00e3 \u0111\u00f4ng. Ng\u01b0\u1eddi ch\u1ebf bi\u1ebfn th\u1ef1c ph\u1ea9m g\u1ea7n nh\u01b0 kh\u00f4ng th\u1ec3 s\u1eed d\u1ee5ng th\u1ef1c ph\u1ea9m \u0111\u00f4ng l\u1ea1nh \u0111\u1ec3 ch\u1ebf bi\u1ebfn c\u00e1c m\u00f3n \u0103n. Tuy nhi\u00ean, vi\u1ec7c r\u00e3 \u0111\u00f4ng t\u1ea1o c\u01a1 h\u1ed9i cho vi khu\u1ea9n c\u00f3 h\u1ea1i v\u00e0 c\u00e1c m\u1ea7m b\u1ec7nh kh\u00e1c ph\u1ee5c h\u1ed3i v\u00e0 l\u00e0m h\u1ecfng th\u1ef1c ph\u1ea9m. Ng\u01b0\u1eddi x\u1eed l\u00fd th\u1ef1c ph\u1ea9m ph\u1ea3i t\u00ecm hi\u1ec3u \u0111\u00e2u l\u00e0 ph\u01b0\u01a1ng ph\u00e1p r\u00e3 \u0111\u00f4ng th\u1ef1c ph\u1ea9m \u0111\u00f4ng l\u1ea1nh \u0111\u00e3 \u0111\u01b0\u1ee3c ph\u00ea duy\u1ec7t.<\/p>\n

Trong b\u00e0i vi\u1ebft n\u00e0y, h\u00e3y t\u00ecm hi\u1ec3u nh\u1eefng ph\u01b0\u01a1ng ph\u00e1p n\u00e0o \u0111\u01b0\u1ee3c ch\u1ea5p thu\u1eadn \u0111\u1ec3 r\u00e3 \u0111\u00f4ng th\u1ef1c ph\u1ea9m v\u00e0 v\u1ea1ch tr\u1ea7n nh\u1eefng quan ni\u1ec7m sai l\u1ea7m ph\u1ed5 bi\u1ebfn.<\/p>\n

\"R\u00e3

R\u00e3 \u0111\u00f4ng th\u1ef1c ph\u1ea9m \u0111\u1ea3m b\u1ea3o v\u1ec7 sinh an to\u00e0n th\u1ef1c ph\u1ea9m<\/p><\/div>\n

\n
\n

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