diff --git a/modules/createPage/ext.isekai.createPage.js b/modules/createPage/ext.isekai.createPage.js index 57aa834..eb08087 100644 --- a/modules/createPage/ext.isekai.createPage.js +++ b/modules/createPage/ext.isekai.createPage.js @@ -1 +1 @@ -(()=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(t,i){for(var a=0;a'),this.ignoreWarningsCheckbox=new OO.ui.CheckboxInputWidget({selected:!1}),this.ignoreWarningsCheckbox.on("change",this.refreshCreatePageBtnEnabled.bind(this)),this.ignoreWarningsCheckboxField=new OO.ui.FieldLayout(this.ignoreWarningsCheckbox,{align:"inline",label:mw.message("isekai-createpage-warning-ignore").parse(),helpInline:!0,help:mw.message("isekai-createpage-ignore-warnings-help").parse()}),this.ignoreWarningsCheckboxField.$element.addClass("isekai-createpage-ignore-warnings-field").hide(),this.cardContent=this.baseDom.find(".card-body .card-content"),this.cardContent.append(this.formGroup.$element),this.cardContent.append(this.errorsContainer),this.cardContent.append(this.ignoreWarningsCheckboxField.$element)}},{key:"createPage",value:function(){var e=this,t=this.pageNameInput.getValue(),i=this.selectPageTypeDropdown.getValue(),a=(i=JSON.parse(i||"{}")).id||"default",n=(i.prefix||"")+t;t.trim().length>0?(this.createButton.setDisabled(!0),this.hasWarnings&&this.ignoreWarningsCheckbox.isSelected()?this._doCreatePage(n):this.validateNewPageTitle(t,a).then((function(t){t&&e._doCreatePage(n)}))):this.setErrors([mw.message("isekai-createpage-title-empty").parse()])}},{key:"_doCreatePage",value:function(e){var t=mw.util.getUrl(e,{veaction:"edit"});window.open(t,"_blank"),this.pageNameInput.setValue(""),this.clearErrorWarnings()}},{key:"onPageNameChange",value:function(){this.clearErrorWarnings();var e=this.pageNameInput.getValue();if(-1!==e.indexOf(":")||-1!==e.indexOf("`")){var t=this.pageNameInput.getRange();e=e.replace(/:/g,":").replace(/`/g,"·"),this.pageNameInput.setValue(e),this.pageNameInput.selectRange(t.from,t.to)}}},{key:"onPageTypeChange",value:function(){var e=this.selectPageTypeDropdown.getValue();this.pageNameInput.setPagePrefix(e.prefix),this.clearErrorWarnings()}},{key:"makeMessageRaw",value:function(e,t){var i=new OO.ui.MessageWidget({type:e,inline:!0,label:t}).$element;return i.find(".oo-ui-labelElement-label").html(t),i}},{key:"setErrors",value:function(e){var t=this;e.forEach((function(e){var i=t.makeMessageRaw("error",e);t.errorsContainer.append(i)})),this.hasErrors=!0,this.refreshCreatePageBtnEnabled(),this.refreshIgnoreWarningsCheckbox()}},{key:"setWarnings",value:function(e){var t=this;e.forEach((function(e){var i=t.makeMessageRaw("warning",e);t.errorsContainer.append(i)})),this.hasWarnings=!0,this.refreshCreatePageBtnEnabled(),this.refreshIgnoreWarningsCheckbox()}},{key:"clearErrorWarnings",value:function(){(this.hasErrors||this.hasWarnings)&&(this.errorsContainer.empty(),this.hasErrors=!1,this.hasWarnings=!1,this.refreshCreatePageBtnEnabled(),this.refreshIgnoreWarningsCheckbox())}},{key:"refreshCreatePageBtnEnabled",value:function(){var e=this;this.createButtonEnabled=!e.hasErrors&&(!e.hasWarnings||e.ignoreWarningsCheckbox.isSelected()),this.createButton.setDisabled(!this.createButtonEnabled)}},{key:"refreshIgnoreWarningsCheckbox",value:function(){this.hasWarnings&&!this.hasErrors?this.ignoreWarningsCheckboxField.$element.show():this.ignoreWarningsCheckboxField.$element.hide(),this.hasWarnings||this.hasErrors||this.ignoreWarningsCheckbox.setSelected(!1)}},{key:"validateNewPageTitle",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default";return new Promise((function(a,n){t.api.get({action:"isekaiwidgets",method:"createpagevalidatetitle",iwnewpagetitle:e,iwnewpagetype:i}).done((function(e){if(e.isekaiwidget&&e.isekaiwidget.createpagevalidatetitle){var i=e.isekaiwidget.createpagevalidatetitle;if(!i.hasError&&!i.hasWarning)return void a(!0);i.hasError&&t.setErrors(i.errors.map((function(e){return e.message}))),i.hasWarning&&t.setWarnings(i.warnings.map((function(e){return e.message}))),a(!1)}else a(!1)})).fail(n)}))}}],a&&t(i.prototype,a),Object.defineProperty(i,"prototype",{writable:!1}),e}())})(); \ No newline at end of file +(()=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(t,i){for(var a=0;a'),this.ignoreWarningsCheckbox=new OO.ui.CheckboxInputWidget({selected:!1}),this.ignoreWarningsCheckbox.on("change",this.refreshCreatePageBtnEnabled.bind(this)),this.ignoreWarningsCheckboxField=new OO.ui.FieldLayout(this.ignoreWarningsCheckbox,{align:"inline",label:mw.message("isekai-createpage-warning-ignore").parse(),helpInline:!0,help:mw.message("isekai-createpage-ignore-warnings-help").parse()}),this.ignoreWarningsCheckboxField.$element.addClass("isekai-createpage-ignore-warnings-field").hide(),this.cardContent=this.baseDom.find(".card-body .card-content"),this.cardContent.append(this.formGroup.$element),this.cardContent.append(this.errorsContainer),this.cardContent.append(this.ignoreWarningsCheckboxField.$element)}},{key:"createPage",value:function(){var e=this,t=this.pageNameInput.getValue(),i=this.selectPageTypeDropdown.getValue(),a=(i=JSON.parse(i||"{}")).id||"default",n=(i.prefix||"")+t;t.trim().length>0?(this.createButton.setDisabled(!0),this.hasWarnings&&this.ignoreWarningsCheckbox.isSelected()?this._doCreatePage(n):this.validateNewPageTitle(t,a).then((function(t){t&&e._doCreatePage(n)}))):this.setErrors([mw.message("isekai-createpage-title-empty").parse()])}},{key:"_doCreatePage",value:function(e){var t=mw.util.getUrl(e,{veaction:"edit"});window.open(t,"_blank"),this.pageNameInput.setValue(""),this.createButton.setDisabled(!1),this.clearErrorWarnings()}},{key:"onPageNameChange",value:function(){this.clearErrorWarnings();var e=this.pageNameInput.getValue();if(-1!==e.indexOf(":")||-1!==e.indexOf("`")){var t=this.pageNameInput.getRange();e=e.replace(/:/g,":").replace(/`/g,"·"),this.pageNameInput.setValue(e),this.pageNameInput.selectRange(t.from,t.to)}}},{key:"onPageTypeChange",value:function(){var e=this.selectPageTypeDropdown.getValue();this.pageNameInput.setPagePrefix(e.prefix),this.clearErrorWarnings()}},{key:"makeMessageRaw",value:function(e,t){var i=new OO.ui.MessageWidget({type:e,inline:!0,label:t}).$element;return i.find(".oo-ui-labelElement-label").html(t),i}},{key:"setErrors",value:function(e){var t=this;e.forEach((function(e){var i=t.makeMessageRaw("error",e);t.errorsContainer.append(i)})),this.hasErrors=!0,this.refreshCreatePageBtnEnabled(),this.refreshIgnoreWarningsCheckbox()}},{key:"setWarnings",value:function(e){var t=this;e.forEach((function(e){var i=t.makeMessageRaw("warning",e);t.errorsContainer.append(i)})),this.hasWarnings=!0,this.refreshCreatePageBtnEnabled(),this.refreshIgnoreWarningsCheckbox()}},{key:"clearErrorWarnings",value:function(){(this.hasErrors||this.hasWarnings)&&(this.errorsContainer.empty(),this.hasErrors=!1,this.hasWarnings=!1,this.refreshCreatePageBtnEnabled(),this.refreshIgnoreWarningsCheckbox())}},{key:"refreshCreatePageBtnEnabled",value:function(){var e=this;this.createButtonEnabled=!e.hasErrors&&(!e.hasWarnings||e.ignoreWarningsCheckbox.isSelected()),this.createButton.setDisabled(!this.createButtonEnabled)}},{key:"refreshIgnoreWarningsCheckbox",value:function(){this.hasWarnings&&!this.hasErrors?this.ignoreWarningsCheckboxField.$element.show():this.ignoreWarningsCheckboxField.$element.hide(),this.hasWarnings||this.hasErrors||this.ignoreWarningsCheckbox.setSelected(!1)}},{key:"validateNewPageTitle",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default";return new Promise((function(a,n){t.api.get({action:"isekaiwidgets",method:"createpagevalidatetitle",iwnewpagetitle:e,iwnewpagetype:i}).done((function(e){if(e.isekaiwidget&&e.isekaiwidget.createpagevalidatetitle){var i=e.isekaiwidget.createpagevalidatetitle;if(!i.hasError&&!i.hasWarning)return void a(!0);i.hasError&&t.setErrors(i.errors.map((function(e){return e.message}))),i.hasWarning&&t.setWarnings(i.warnings.map((function(e){return e.message}))),a(!1)}else a(!1)})).fail(n)}))}}],a&&t(i.prototype,a),Object.defineProperty(i,"prototype",{writable:!1}),e}())})(); \ No newline at end of file diff --git a/src/createPage/ext.isekai.createPage.js b/src/createPage/ext.isekai.createPage.js index a980e3e..0552eb0 100644 --- a/src/createPage/ext.isekai.createPage.js +++ b/src/createPage/ext.isekai.createPage.js @@ -118,6 +118,7 @@ class CreatePageWidget { window.open(targetUrl, '_blank'); this.pageNameInput.setValue(''); + this.createButton.setDisabled(false); this.clearErrorWarnings(); }