diff --git a/admin/js/core/qtranslatex.js b/admin/js/core/qtranslatex.js index 371213be..fb30eafb 100644 --- a/admin/js/core/qtranslatex.js +++ b/admin/js/core/qtranslatex.js @@ -207,8 +207,23 @@ const qTranslateX = function (pg) { } } - let contents; + const inputFieldFormId = $(inputField).attr('form'); + const $form = (inputFieldFormId !== undefined) ? $('#' + inputFieldFormId) : $(inputField).closest('form'); + if (!$form.length) { + console.error('No form found for translatable field id=', inputField.id); + return; + } + const form = $form[0]; + const formContainsInput = ($(inputField).closest($form).length > 0); + const addElementToForm = function (newField) { + if (formContainsInput) { + inputField.parentNode.insertBefore(newField, inputField); + } else { + $form.append(newField); + } + } + let contents; hook.fields = {}; if (!qTranslateConfig.RAW) { // Most crucial moment when untranslated content is parsed @@ -224,22 +239,17 @@ const qTranslateX = function (pg) { newName += suffixName; const newField = qtranxj_ce('input', {name: newName, type: 'hidden', className: 'hidden', value: text}); hook.fields[lang] = newField; - inputField.parentNode.insertBefore(newField, inputField); + addElementToForm(newField); } // insert a hidden element in the form so that the edit language is sent to the server - const $form = $(inputField).closest('form'); - if ($form.length) { - const $hidden = $form.find('input[name="qtranslate-edit-language"]'); - if (!$hidden.length) { - qtranxj_ce('input', { - type: 'hidden', - name: 'qtranslate-edit-language', - value: qTranslateConfig.activeLanguage - }, $form[0], true); - } - } else { - console.error('No form found for translatable field id=', inputField.id); + const $hidden = $form.find('input[name="qtranslate-edit-language"]'); + if (!$hidden.length) { + qtranxj_ce('input', { + type: 'hidden', + name: 'qtranslate-edit-language', + value: qTranslateConfig.activeLanguage + }, form, true); } } @@ -271,8 +281,9 @@ const qTranslateX = function (pg) { break; } - if (hook.sepfield) - inputField.parentNode.insertBefore(hook.sepfield, inputField); + if (hook.sepfield) { + addElementToForm(hook.sepfield); + } return hook; }; diff --git a/dist/main.js b/dist/main.js index 91cc72f5..6e7795fa 100644 --- a/dist/main.js +++ b/dist/main.js @@ -1 +1 @@ -(()=>{"use strict";var e={303:()=>{var e=jQuery;e(document).on("qtxLoadAdmin:edit-tags",(function(t,n){var a=function(e,t){n.addDisplayHook(t)},i=function(t){var n=e(t);n.find(".row-title, .description").each(a),n.find("td.name span.inline").css("display","none")},o=e("#the-list"),r=e("#the-list > tr").length,s=function(){var e=o.children();if(r===e.length)return!1;var t=r>e.length;if(r=e.length,t)return!1;for(var n=0;n tr > td.name span.inline").css("display","none")}))},769:()=>{jQuery(document).on("qtxLoadAdmin:nav-menus",(function(e,t){var n=function(e){t.addContentHooksByClass("edit-menu-item-title",e),t.addContentHooksByClass("edit-menu-item-attr-title",e),t.addContentHooksByClass("[edit-menu-item-description",e),t.addDisplayHooksByClass("menu-item-title",e),t.addDisplayHooksByTagInClass("link-to-original","A",e)},a=function(e){for(var t,a=/id="menu-item-(\d+)"/gi;t=a.exec(e);){var i="menu-item-"+t[1],o=document.getElementById(i);o&&n(o)}};if(wpNavMenu){var i=wpNavMenu.addMenuItemToBottom;"function"==typeof i&&(wpNavMenu.addMenuItemToBottom=function(e,t){i(e,t),a(e)}),"function"==typeof wp_addMenuItemToTop&&(wpNavMenu.addMenuItemToTop=function(e){wp_addMenuItemToTop(e),a(e)})}var o=function(e){wpNavMenu&&("function"==typeof wpNavMenu.refreshKeyboardAccessibility&&wpNavMenu.refreshKeyboardAccessibility(),"function"==typeof wpNavMenu.refreshAdvancedAccessibility&&wpNavMenu.refreshAdvancedAccessibility())};o(),t.addLanguageSwitchAfterListener(o)}))},90:()=>{var e=jQuery,t=Object.freeze({QTX_URL_QUERY:1,QTX_URL_PATH:2,QTX_URL_DOMAIN:3,QTX_URL_DOMAINS:4});e(document).on("qtxLoadAdmin:post",(function(n,a){var i,o,r,s,l,d,c,u=function(e,n){switch(qTranslateConfig.url_mode){case t.QTX_URL_QUERY:e.search?e.search+="&lang="+n:e.search="?lang="+n;break;case t.QTX_URL_PATH:var a=qTranslateConfig.home_url_path,i=e.pathname;"/"!==i[0]&&(i="/"+i);var o=i.indexOf(a);o>=0&&(e.pathname=qTranslateConfig.homeinfo_path+n+i.substring(o+a.length-1));break;case t.QTX_URL_DOMAIN:e.host=n+"."+e.host;break;case t.QTX_URL_DOMAINS:e.host=qTranslateConfig.domains[n]}},g=function(n){if(!i){var a=document.getElementById("view-post-btn");if(!a||!a.children.length)return;if("A"!==(i=a.children[0]).tagName)return;o=i.href,r=qtranxj_ce("a",{}),o.search(/\?/)}r.href=o,u(r,n),i.href=r.href;var g=document.getElementById("preview-action");if(g&&g.children.length&&(g.children[0].href=r.href),qTranslateConfig.url_mode!==t.QTX_URL_QUERY){if(!s){var f=document.getElementById("sample-permalink");f&&f.offsetHeight>0&&f.childNodes.length&&(s=f.childNodes[0],l=s.nodeValue)}s&&(r.href=l,u(r,n),s.nodeValue=r.href)}else c||(e("#sample-permalink").append(''),c=e("#sample-permalink-lang-query")),c&&c.text((o.search(/\?/)<0?"/?lang=":"&lang=")+n);d||(d=document.getElementById("wp-admin-bar-view")),d&&d.children.length&&(d.children[0].href=i.href)},f=e("#title"),h=e("#title-prompt-text");function v(e){for(var t={},n=("?"===e[0]?e.substr(1):e).split("&"),a=0;a{var e=jQuery;e(document).on("qtxLoadAdmin:widgets",(function(t,n){if(window.wpWidgets){jQuery(document).on("tinymce-editor-init",(function(t,a){var i=e(a.settings.selector).parents(".widget"),o=i.find(".widget-id").val(),r="widget-"+o+"-title";i.find(".text-widget-fields input[id$='_title']").each((function(e,t){n.attachContentHook(t,r)}));var s="widget-"+o+"-text";n.attachEditorHook(a,s)}));var a=function(e,t){if("text"===t.find(".id_base").val()){var a=t.find(".widget-id").val(),i=t.find(".text-widget-fields input[id$='_title']");t.find(".widget-content input[id^='widget-text-'][id$='-title']").each((function(e,t){n.refreshContentHook(t),n.attachContentHook(i[0],t.id)}));var o=t.find(".text-widget-fields textarea[id$='_text']"),r=window.tinyMCE.get(o[0].id);t.find(".widget-content textarea[id^='widget-text-'][id$='-text']").each((function(e,a){if(n.refreshContentHook(a),r){n.attachEditorHook(r,a.id);var i=t.find(".sync-input.text");o.val(i.val()+"*")}})),a in wp.textWidgets.widgetControls&&wp.textWidgets.widgetControls[a].updateFields()}else t.find(".widget-content input[id^='widget-'][id$='-title']").each((function(e,t){n.refreshContentHook(t)}));wpWidgets.appendTitle(t)};e(document).on("widget-added",(function(e,t){a(0,t),n.setupLanguageSwitch()})),e(document).on("widget-updated",a),n.addLanguageSwitchAfterListener((function(){e("#widgets-right .widget").each((function(){wpWidgets.appendTitle(this)}))}))}}))}},t={};function n(a){var i=t[a];if(void 0!==i)return i.exports;var o=t[a]={exports:{}};return e[a](o,o.exports,n),o.exports}(()=>{n(303),n(769),n(90),n(403);var e=function(e,t,n,a){var i=document.createElement(e);if(t)for(var o in t)i[o]=t[o];return n&&(a&&n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i)),i},t=window.qTranslateConfig,a=function(e){var n="(\x3c!--:lang--\x3e|\x3c!--:--\x3e|\\[:lang]|\\[:]|{:lang}|{:})".replace(/lang/g,t.lang_code_format),a=new RegExp(n,"gi");if(3==="a~b".split(/(~)/).length)return e.split(a);for(var i,o=0,r=[];null!=(i=a.exec(e));)r.push(e.slice(o,i.index)),i.length>1&&r.push(i[1]),o=a.lastIndex;return ov&&(u+=f.name.substring(v,m)),g="[]"}if(f.fields={},!d.RAW){for(var p in h=i(t.value),t.value=h[f.lang],h){var w=h[p],y=u+"["+p+"]";g&&(y+=g);var b=e("input",{name:y,type:"hidden",className:"hidden",value:w});f.fields[p]=b,t.parentNode.insertBefore(b,t)}var C=l(t).closest("form");C.length?C.find('input[name="qtranslate-edit-language"]').length||e("input",{type:"hidden",name:"qtranslate-edit-language",value:d.activeLanguage},C[0],!0):console.error("No form found for translatable field id=",t.id)}switch(a){case"slug":case"term":d.RAW&&(h=i(t.value)),f.sepfield=e("input",{name:u+"[qtranslate-original-value]",type:"hidden",className:"hidden",value:h[d.default_language]});break;default:d.RAW||(f.sepfield=e("input",{name:u+"[qtranslate-separator]",type:"hidden",className:"hidden",value:a}))}return f.sepfield&&t.parentNode.insertBefore(f.sepfield,t),f},this.addContentHookC=function(e){return n.addContentHook(e,"[")},this.addContentHookB=function(e){return n.addContentHook(e,"[")},this.addContentHookById=function(e,t,a){return n.addContentHook(document.getElementById(e),t,a)},this.addContentHookByIdName=function(e){var t;switch(e[0]){case"<":case"[":t=e.substring(0,1),e=e.substring(1)}return n.addContentHookById(e,t)},this.addContentHookByIdC=function(e){return n.addContentHookById(e,"[")},this.addContentHookByIdB=function(e){return n.addContentHookById(e,"[")},this.addContentHooks=function(e,t,a){for(var i=0;i=0;){var n=u[t];n.nd.parentNode?n.nd.nodeValue=n.contents[e]:u.splice(t,1)}for(var i=g.length;--i>=0;){var r=g[i];r.nd.parentNode?r.nd.setAttribute(r.attr,r.contents[e]):g.splice(i,1)}if(!d.RAW)for(var f in c){var h=c[f],v=h.mce&&!h.mce.hidden;v&&h.mce.save();var m=h.contentField.value.trim(),p=a(m);if(!p||p.length<=1){h.fields[h.lang].value=m,h.lang=e;var y=h.fields[h.lang].value;h.contentField.placeholder&&""!==y&&(h.contentField.placeholder=""),h.contentField.value=y,l(h.contentField).trigger("change"),v&&w(h)}else{var b=o(p);for(var C in h.fields)h.fields[C].value=b[C];h.lang=e}}};this.addDisplayHooks=function(e){for(var t=0;t=0){var h=n.createSetOfLSB();f.target.parentNode.insertBefore(h,f.target)}if(f.where&&f.where.indexOf("after")>=0){var v=n.createSetOfLSB();f.target.parentNode.insertBefore(v,f.target.nextSibling)}if(f.where&&f.where.indexOf("first")>=0){var m=n.createSetOfLSB();f.target.insertBefore(m,f.target.firstChild)}if(f.where&&f.where.indexOf("last")>=0){var p=n.createSetOfLSB();f.target.insertBefore(p,null)}}}(),n.addLanguageSwitchListener(y),t.onTabSwitch&&n.addLanguageSwitchListener(t.onTabSwitch),f=!0)},d.LSB?(d.activeLanguage=sessionStorage.getItem(r),d.activeLanguage&&n.isLanguageEnabled(d.activeLanguage)||(d.activeLanguage=d.language,n.isLanguageEnabled(d.activeLanguage)?s(d.activeLanguage):d.LSB=!1)):(d.activeLanguage=d.language,s(d.activeLanguage)),d.onTabSwitchFunctions||(d.onTabSwitchFunctions=[]),d.onTabSwitchFunctionsSave||(d.onTabSwitchFunctionsSave=[]),d.onTabSwitchFunctionsLoad||(d.onTabSwitchFunctionsLoad=[]),"function"==typeof t.addContentHooks&&t.addContentHooks(n),d.page_config&&d.page_config.forms&&function(e){for(var t in e){var a=e[t],i=void 0;if(a.form){if(a.form.id)i=document.getElementById(a.form.id);else if(a.form.jquery)i=l(a.form.jquery);else if(a.form.name){var o=document.getElementsByName(a.form.name);o&&o.length&&(i=o[0])}}else i=document.getElementById(t);for(var r in i||(i=b())||(i=document),a.fields){var s=a.fields[r],d=[];if(s.container_id){var c=document.getElementById(s.container_id);c&&d.push(c)}else s.container_jquery?d=l(s.container_jquery):s.container_class?d=document.getElementsByClassName(s.container_class):d.push(i);var u=s.encode;switch(u){case"none":break;case"display":if(s.jquery)for(var g=0;g{"use strict";var e={303:()=>{var e=jQuery;e(document).on("qtxLoadAdmin:edit-tags",(function(t,n){var a=function(e,t){n.addDisplayHook(t)},i=function(t){var n=e(t);n.find(".row-title, .description").each(a),n.find("td.name span.inline").css("display","none")},o=e("#the-list"),r=e("#the-list > tr").length,s=function(){var e=o.children();if(r===e.length)return!1;var t=r>e.length;if(r=e.length,t)return!1;for(var n=0;n tr > td.name span.inline").css("display","none")}))},769:()=>{jQuery(document).on("qtxLoadAdmin:nav-menus",(function(e,t){var n=function(e){t.addContentHooksByClass("edit-menu-item-title",e),t.addContentHooksByClass("edit-menu-item-attr-title",e),t.addContentHooksByClass("[edit-menu-item-description",e),t.addDisplayHooksByClass("menu-item-title",e),t.addDisplayHooksByTagInClass("link-to-original","A",e)},a=function(e){for(var t,a=/id="menu-item-(\d+)"/gi;t=a.exec(e);){var i="menu-item-"+t[1],o=document.getElementById(i);o&&n(o)}};if(wpNavMenu){var i=wpNavMenu.addMenuItemToBottom;"function"==typeof i&&(wpNavMenu.addMenuItemToBottom=function(e,t){i(e,t),a(e)}),"function"==typeof wp_addMenuItemToTop&&(wpNavMenu.addMenuItemToTop=function(e){wp_addMenuItemToTop(e),a(e)})}var o=function(e){wpNavMenu&&("function"==typeof wpNavMenu.refreshKeyboardAccessibility&&wpNavMenu.refreshKeyboardAccessibility(),"function"==typeof wpNavMenu.refreshAdvancedAccessibility&&wpNavMenu.refreshAdvancedAccessibility())};o(),t.addLanguageSwitchAfterListener(o)}))},90:()=>{var e=jQuery,t=Object.freeze({QTX_URL_QUERY:1,QTX_URL_PATH:2,QTX_URL_DOMAIN:3,QTX_URL_DOMAINS:4});e(document).on("qtxLoadAdmin:post",(function(n,a){var i,o,r,s,l,d,c,u=function(e,n){switch(qTranslateConfig.url_mode){case t.QTX_URL_QUERY:e.search?e.search+="&lang="+n:e.search="?lang="+n;break;case t.QTX_URL_PATH:var a=qTranslateConfig.home_url_path,i=e.pathname;"/"!==i[0]&&(i="/"+i);var o=i.indexOf(a);o>=0&&(e.pathname=qTranslateConfig.homeinfo_path+n+i.substring(o+a.length-1));break;case t.QTX_URL_DOMAIN:e.host=n+"."+e.host;break;case t.QTX_URL_DOMAINS:e.host=qTranslateConfig.domains[n]}},g=function(n){if(!i){var a=document.getElementById("view-post-btn");if(!a||!a.children.length)return;if("A"!==(i=a.children[0]).tagName)return;o=i.href,r=qtranxj_ce("a",{}),o.search(/\?/)}r.href=o,u(r,n),i.href=r.href;var g=document.getElementById("preview-action");if(g&&g.children.length&&(g.children[0].href=r.href),qTranslateConfig.url_mode!==t.QTX_URL_QUERY){if(!s){var f=document.getElementById("sample-permalink");f&&f.offsetHeight>0&&f.childNodes.length&&(s=f.childNodes[0],l=s.nodeValue)}s&&(r.href=l,u(r,n),s.nodeValue=r.href)}else c||(e("#sample-permalink").append(''),c=e("#sample-permalink-lang-query")),c&&c.text((o.search(/\?/)<0?"/?lang=":"&lang=")+n);d||(d=document.getElementById("wp-admin-bar-view")),d&&d.children.length&&(d.children[0].href=i.href)},f=e("#title"),h=e("#title-prompt-text");function v(e){for(var t={},n=("?"===e[0]?e.substr(1):e).split("&"),a=0;a{var e=jQuery;e(document).on("qtxLoadAdmin:widgets",(function(t,n){if(window.wpWidgets){jQuery(document).on("tinymce-editor-init",(function(t,a){var i=e(a.settings.selector).parents(".widget"),o=i.find(".widget-id").val(),r="widget-"+o+"-title";i.find(".text-widget-fields input[id$='_title']").each((function(e,t){n.attachContentHook(t,r)}));var s="widget-"+o+"-text";n.attachEditorHook(a,s)}));var a=function(e,t){if("text"===t.find(".id_base").val()){var a=t.find(".widget-id").val(),i=t.find(".text-widget-fields input[id$='_title']");t.find(".widget-content input[id^='widget-text-'][id$='-title']").each((function(e,t){n.refreshContentHook(t),n.attachContentHook(i[0],t.id)}));var o=t.find(".text-widget-fields textarea[id$='_text']"),r=window.tinyMCE.get(o[0].id);t.find(".widget-content textarea[id^='widget-text-'][id$='-text']").each((function(e,a){if(n.refreshContentHook(a),r){n.attachEditorHook(r,a.id);var i=t.find(".sync-input.text");o.val(i.val()+"*")}})),a in wp.textWidgets.widgetControls&&wp.textWidgets.widgetControls[a].updateFields()}else t.find(".widget-content input[id^='widget-'][id$='-title']").each((function(e,t){n.refreshContentHook(t)}));wpWidgets.appendTitle(t)};e(document).on("widget-added",(function(e,t){a(0,t),n.setupLanguageSwitch()})),e(document).on("widget-updated",a),n.addLanguageSwitchAfterListener((function(){e("#widgets-right .widget").each((function(){wpWidgets.appendTitle(this)}))}))}}))}},t={};function n(a){var i=t[a];if(void 0!==i)return i.exports;var o=t[a]={exports:{}};return e[a](o,o.exports,n),o.exports}(()=>{n(303),n(769),n(90),n(403);var e=function(e,t,n,a){var i=document.createElement(e);if(t)for(var o in t)i[o]=t[o];return n&&(a&&n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i)),i},t=window.qTranslateConfig,a=function(e){var n="(\x3c!--:lang--\x3e|\x3c!--:--\x3e|\\[:lang]|\\[:]|{:lang}|{:})".replace(/lang/g,t.lang_code_format),a=new RegExp(n,"gi");if(3==="a~b".split(/(~)/).length)return e.split(a);for(var i,o=0,r=[];null!=(i=a.exec(e));)r.push(e.slice(o,i.index)),i.length>1&&r.push(i[1]),o=a.lastIndex;return oh&&(u+=f.name.substring(h,v)),g="[]"}var m=l(t).attr("form"),p=void 0!==m?l("#"+m):l(t).closest("form");if(p.length){var w,y=p[0],b=l(t).closest(p).length>0,C=function(e){b?t.parentNode.insertBefore(e,t):p.append(e)};if(f.fields={},!d.RAW){for(var L in w=i(t.value),t.value=w[f.lang],w){var k=w[L],x=u+"["+L+"]";g&&(x+=g);var _=e("input",{name:x,type:"hidden",className:"hidden",value:k});f.fields[L]=_,C(_)}p.find('input[name="qtranslate-edit-language"]').length||e("input",{type:"hidden",name:"qtranslate-edit-language",value:d.activeLanguage},y,!0)}switch(a){case"slug":case"term":d.RAW&&(w=i(t.value)),f.sepfield=e("input",{name:u+"[qtranslate-original-value]",type:"hidden",className:"hidden",value:w[d.default_language]});break;default:d.RAW||(f.sepfield=e("input",{name:u+"[qtranslate-separator]",type:"hidden",className:"hidden",value:a}))}return f.sepfield&&C(f.sepfield),f}console.error("No form found for translatable field id=",t.id)},this.addContentHookC=function(e){return n.addContentHook(e,"[")},this.addContentHookB=function(e){return n.addContentHook(e,"[")},this.addContentHookById=function(e,t,a){return n.addContentHook(document.getElementById(e),t,a)},this.addContentHookByIdName=function(e){var t;switch(e[0]){case"<":case"[":t=e.substring(0,1),e=e.substring(1)}return n.addContentHookById(e,t)},this.addContentHookByIdC=function(e){return n.addContentHookById(e,"[")},this.addContentHookByIdB=function(e){return n.addContentHookById(e,"[")},this.addContentHooks=function(e,t,a){for(var i=0;i=0;){var n=u[t];n.nd.parentNode?n.nd.nodeValue=n.contents[e]:u.splice(t,1)}for(var i=g.length;--i>=0;){var r=g[i];r.nd.parentNode?r.nd.setAttribute(r.attr,r.contents[e]):g.splice(i,1)}if(!d.RAW)for(var f in c){var h=c[f],v=h.mce&&!h.mce.hidden;v&&h.mce.save();var m=h.contentField.value.trim(),p=a(m);if(!p||p.length<=1){h.fields[h.lang].value=m,h.lang=e;var y=h.fields[h.lang].value;h.contentField.placeholder&&""!==y&&(h.contentField.placeholder=""),h.contentField.value=y,l(h.contentField).trigger("change"),v&&w(h)}else{var b=o(p);for(var C in h.fields)h.fields[C].value=b[C];h.lang=e}}};this.addDisplayHooks=function(e){for(var t=0;t=0){var h=n.createSetOfLSB();f.target.parentNode.insertBefore(h,f.target)}if(f.where&&f.where.indexOf("after")>=0){var v=n.createSetOfLSB();f.target.parentNode.insertBefore(v,f.target.nextSibling)}if(f.where&&f.where.indexOf("first")>=0){var m=n.createSetOfLSB();f.target.insertBefore(m,f.target.firstChild)}if(f.where&&f.where.indexOf("last")>=0){var p=n.createSetOfLSB();f.target.insertBefore(p,null)}}}(),n.addLanguageSwitchListener(y),t.onTabSwitch&&n.addLanguageSwitchListener(t.onTabSwitch),f=!0)},d.LSB?(d.activeLanguage=sessionStorage.getItem(r),d.activeLanguage&&n.isLanguageEnabled(d.activeLanguage)||(d.activeLanguage=d.language,n.isLanguageEnabled(d.activeLanguage)?s(d.activeLanguage):d.LSB=!1)):(d.activeLanguage=d.language,s(d.activeLanguage)),d.onTabSwitchFunctions||(d.onTabSwitchFunctions=[]),d.onTabSwitchFunctionsSave||(d.onTabSwitchFunctionsSave=[]),d.onTabSwitchFunctionsLoad||(d.onTabSwitchFunctionsLoad=[]),"function"==typeof t.addContentHooks&&t.addContentHooks(n),d.page_config&&d.page_config.forms&&function(e){for(var t in e){var a=e[t],i=void 0;if(a.form){if(a.form.id)i=document.getElementById(a.form.id);else if(a.form.jquery)i=l(a.form.jquery);else if(a.form.name){var o=document.getElementsByName(a.form.name);o&&o.length&&(i=o[0])}}else i=document.getElementById(t);for(var r in i||(i=b())||(i=document),a.fields){var s=a.fields[r],d=[];if(s.container_id){var c=document.getElementById(s.container_id);c&&d.push(c)}else s.container_jquery?d=l(s.container_jquery):s.container_class?d=document.getElementsByClassName(s.container_class):d.push(i);var u=s.encode;switch(u){case"none":break;case"display":if(s.jquery)for(var g=0;g