var $previewHeader = null;
var $previewArea = null;
- var isDirty = null;
-
- var rePageName = /^[^ a-z.|#\[\]][^ .|#\[\]]*$/;
-
Rakka.editPage = function (pageName) {
var $area = Rakka.switchScreen();
var $page = $(pageXml).find("page");
var oldRevision = $page.attr("revision");
var defaultType
- = $page.attr("isBinary") == "yes" ? "binary"
- : $page.attr("type") == "text/x-rakka" ? "rakka"
- : $page.attr("type") == "text/css" ? "css"
- : $page.attr("redirect") != null ? "redirect"
- : "unknown"
+ = $page.attr("isBinary") == "yes" ? "binary"
+ : $page.attr("type") == "text/x-rakka" ? "rakka"
+ : $page.attr("type") == "text/css" ? "css"
+ : $page.attr("type") == "text/javascript" ? "js"
+ : $page.attr("redirect") != null ? "redirect"
+ : "unknown"
;
var lang = $page.attr("lang");
var isLocked = $page.attr("isLocked") == "yes";
$area.append($.H1({}, pageName == "" ? "Create page" : "Edit page"));
+ var isDirty = null;
var makeDirty = function () {
isDirty = true;
};
$(btnTypeCSS).change(makeDirty);
+ var btnTypeJS
+ = $.INPUT({type : "radio",
+ name : "type",
+ checked: (defaultType == "js" ? "checked" : "")});
+ $(btnTypeJS).change(makeDirty);
+
var btnTypeBinary
= $.INPUT({type : "radio",
name : "type",
$(fldCSSSource).change(makeDirty);
+ var fldJSSource
+ = $.TEXTAREA({className: "source"},
+ (defaultType == "js" && source != null ? source : ""));
+
+ $(fldJSSource).change(makeDirty);
+
var fldUploadFile
= $.INPUT({type: "file"});
fldSummary.value,
fldCSSSource.value);
}
+ else if (btnTypeJS.checked) {
+ submitTextPage(
+ pageName,
+ oldRevision,
+ fldPageName.value,
+ chkIsLocked.checked,
+ "text/javascript",
+ $(selPageLang).val(),
+ otherLangs,
+ fldSummary.value,
+ fldJSSource.value);
+ }
else if (btnTypeBinary.checked) {
if (fldUploadFile.value != "") {
submitBinaryPage(
$(trContent).find("td").empty().append(fldCSSSource);
$(btnPreview).hide();
}
+ else if (btnTypeJS.checked) {
+ $(trPageLang).show();
+ $(trOtherLangs).show();
+ $(trSummary).show();
+ $(trContent).find("th").text("JavaScript source");
+ $(trContent).find("td").empty().append(fldJSSource);
+ $(btnPreview).hide();
+ }
else if (btnTypeBinary.checked) {
$(trPageLang).show();
$(trOtherLangs).show();
};
$(btnTypeRakka ).change(updateTRContent);
$(btnTypeCSS ).change(updateTRContent);
+ $(btnTypeJS ).change(updateTRContent);
$(btnTypeBinary ).change(updateTRContent);
$(btnTypeRedirect).change(updateTRContent);
updateTRContent();
"Style sheet"
)
),
+ $.LI({},
+ $.LABEL({},
+ btnTypeJS,
+ "JavaScript"
+ )
+ ),
$.LI({},
$.LABEL({},
btnTypeBinary,
var validate = function () {
var isValid = (function () {
- if (fldPageName.value.match(rePageName) == null) {
+ if (fldPageName.value.match(Rakka.rePageName) == null) {
return false;
}
if (btnTypeRedirect.checked) {
- if (fldRedirect.value.match(rePageName) == null) {
+ if (fldRedirect.value.match(Rakka.rePageName) == null) {
return false;
}
}
else {
for (var tag in otherLangs) {
- if (otherLangs[tag].match(rePageName) == null) {
+ if (otherLangs[tag].match(Rakka.rePageName) == null) {
return false;
}
}
$(fldPageName)
.add(btnTypeRakka)
.add(btnTypeCSS)
+ .add(btnTypeJS)
.add(btnTypeBinary)
.add(btnTypeRedirect)
.add($(trOtherLangs).find("input"))
if (!Rakka.isLoggedIn() || Rakka.isGlobalLocked) {
$(trIsLocked).hide();
}
-
- isDirty = false;
};
var previewRakkaPage = function (pageName, source) {