]> gitweb @ CieloNegro.org - Rakka.git/commitdiff
implemented validator on page editor
authorpho <pho@cielonegro.org>
Sun, 17 Feb 2008 05:20:11 +0000 (14:20 +0900)
committerpho <pho@cielonegro.org>
Sun, 17 Feb 2008 05:20:11 +0000 (14:20 +0900)
darcs-hash:20080217052011-62b54-feaf495da39095839fcc95e1eec183280306efc1.gz

js/editPage.js
schemas/rakka-page-1.0.rng

index e390a1949ec67a7cf8c7e2b8f8b698887409f82e..705f47adbb1f5351a929defeab96f6be25b74af6 100644 (file)
@@ -5,6 +5,8 @@
 
     var isDirty = null;
 
+    var rePageName = /^[^ a-z.|#\[\]][^ .|#\[\]]*$/;
+
     Rakka.editPage = function (pageName) {
         var $area = Rakka.switchScreen();
 
                     fldPageName.value, fldRakkaSource.value);
             }
             else if (btnTypeBinary.checked) {
-                previewBinaryPage(
-                    fldPageName.value, fldUploadFile.value);
+                if (fldUploadFile.value != "") {
+                    previewBinaryPage(
+                        fldPageName.value, fldUploadFile.value);
+                }
             }
         });
 
                     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(
                              )
                      );
 
+        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();
index 6e4a545db3c0a624c750ef5132b2939c690ebb10..70e63a8f99e8c3bd42facec47bb5af81a2734f5c 100644 (file)
@@ -54,7 +54,7 @@
 
   <define name="pageName">
     <data type="string">
-      <param name="pattern">^[^ a-z|#\[\]][^ |#\[\]]*$</param>
+      <param name="pattern">^[^ a-z.|#\[\]][^ .|#\[\]]*$</param>
     </data>
   </define>