From 2ff55c9709fde69968ef97f61b8f395e58b3ec8c Mon Sep 17 00:00:00 2001 From: pho Date: Sun, 17 Feb 2008 14:20:11 +0900 Subject: [PATCH] implemented validator on page editor darcs-hash:20080217052011-62b54-feaf495da39095839fcc95e1eec183280306efc1.gz --- js/editPage.js | 70 ++++++++++++++++++++++++++++++++------ schemas/rakka-page-1.0.rng | 2 +- 2 files changed, 60 insertions(+), 12 deletions(-) diff --git a/js/editPage.js b/js/editPage.js index e390a19..705f47a 100644 --- a/js/editPage.js +++ b/js/editPage.js @@ -5,6 +5,8 @@ var isDirty = null; + var rePageName = /^[^ a-z.|#\[\]][^ .|#\[\]]*$/; + Rakka.editPage = function (pageName) { var $area = Rakka.switchScreen(); @@ -241,8 +243,10 @@ fldPageName.value, fldRakkaSource.value); } else if (btnTypeBinary.checked) { - previewBinaryPage( - fldPageName.value, fldUploadFile.value); + if (fldUploadFile.value != "") { + previewBinaryPage( + fldPageName.value, fldUploadFile.value); + } } }); @@ -275,15 +279,17 @@ fldCSSSource.value); } else if (btnTypeBinary.checked) { - submitBinaryPage( - pageName, - oldRevision, - fldPageName.value, - chkIsLocked.checked, - $(selPageLang).val(), - otherLangs, - fldSummary.value, - fldUploadFile.value); + if (fldUploadFile.value != "") { + submitBinaryPage( + pageName, + oldRevision, + fldPageName.value, + chkIsLocked.checked, + $(selPageLang).val(), + otherLangs, + fldSummary.value, + fldUploadFile.value); + } } else if (btnTypeRedirect.checked) { submitRedirection( @@ -408,6 +414,48 @@ ) ); + var validate = function () { + var isValid = (function () { + if (fldPageName.value.match(rePageName) == null) { + return false; + } + + if (btnTypeRedirect.checked) { + if (fldRedirect.value.match(rePageName) == null) { + return false; + } + } + else { + for (var tag in otherLangs) { + if (otherLangs[tag].match(rePageName) == null) { + return false; + } + } + + if (btnTypeBinary.checked) { + if (fldUploadFile.value == "") { + return false; + } + } + } + + return true; + })(); + + $(btnSubmit).attr({disabled: (isValid ? "" : "disabled")}); + }; + $(fldPageName) + .add(btnTypeRakka) + .add(btnTypeCSS) + .add(btnTypeBinary) + .add(btnTypeRedirect) + .add($(trOtherLangs).find("input")) + .add(fldUploadFile) + .add(fldRedirect) + .change(validate) + .keyup(validate); + validate(); + if (oldRevision == null || oldRevision == 0) { // 削除不可 $(btnDelete).hide(); diff --git a/schemas/rakka-page-1.0.rng b/schemas/rakka-page-1.0.rng index 6e4a545..70e63a8 100644 --- a/schemas/rakka-page-1.0.rng +++ b/schemas/rakka-page-1.0.rng @@ -54,7 +54,7 @@ - ^[^ a-z|#\[\]][^ |#\[\]]*$ + ^[^ a-z.|#\[\]][^ .|#\[\]]*$ -- 2.40.0