-> True
, entityRevision = pageRev
, entityLastMod = zonedTimeToUTC lastMod
- , entitySummary = lookup "rakka:summary" props
+ , entitySummary = fmap decodeString (lookup "rakka:summary" props)
, entityOtherLang = fromMaybe M.empty
$ fmap
- (M.fromList . fromJust . deserializeStringPairs)
+ (M.fromList . fromJust . deserializeStringPairs . decodeString)
(lookup "rakka:otherLang" props)
, entityContent = content
, entityUpdateInfo = undefined
setNodeProp path "rakka:isFeed" (encodeFlag $ entityIsFeed page)
setNodeProp path "rakka:isLocked" (encodeFlag $ entityIsLocked page)
setNodeProp path "rakka:isBinary" (encodeFlag $ entityIsBinary page)
- setNodeProp path "rakka:summary" (entitySummary page)
+ setNodeProp path "rakka:summary" (fmap encodeString $ entitySummary page)
setNodeProp path "rakka:otherLang" (let otherLang = entityOtherLang page
in
if M.null otherLang then
Nothing
else
- Just (serializeStringPairs $ M.toList otherLang))
+ Just (encodeString $ serializeStringPairs $ M.toList otherLang))
applyTextLBS path Nothing (entityContent page)
encodeFlag :: Bool -> Maybe String
path = mkAttachmentPath pName aName
loadAttachment' :: Rev a
- loadAttachment' = getFileContents path >>= return . deserializeFromString
+ loadAttachment' = getFileContents path >>= return . deserializeFromString . decodeString
putAttachmentIntoRepository :: Attachment a =>
;
var lang = $page.attr("lang");
var isLocked = $page.attr("isLocked") == "yes";
+ var otherLangs = (function () {
+ var obj = {};
+ $page.find("otherLang > link").each(function () {
+ obj[this.getAttribute("lang")] = this.getAttribute("page");
+ });
+ return obj;
+ })();
var source
= $page.attr("redirect") != null ? $page.attr("redirect")
: $page.find("textData").text()
;
var summary = $page.find("summary").text();
- displayPageEditor(pageName, oldRevision, defaultType, lang, isLocked, source, summary);
+ displayPageEditor(pageName, oldRevision, defaultType, lang, isLocked, otherLangs, source, summary);
}
else {
- displayPageEditor(pageName, null, "rakka", null, false, null, "");
+ displayPageEditor(pageName, null, "rakka", null, false, {}, null, "");
}
},
error : function (req) {
Rakka.hideWaitingMessage();
if (req.status == 404) {
- displayPageEditor(pageName, null, "rakka", null, false, null, "");
+ displayPageEditor(pageName, null, "rakka", null, false, {}, null, "");
}
else {
$area.text("Error: " + req.status + " " + req.statusText);
};
Rakka.newPage = function () {
- displayPageEditor("", null, "rakka", null, false, null, "");
+ displayPageEditor("", null, "rakka", null, false, {}, null, "");
};
- var displayPageEditor = function (pageName, oldRevision, defaultType, lang, isLocked, source, summary) {
+ var displayPageEditor = function (pageName, oldRevision, defaultType, lang, isLocked, otherLangs, source, summary) {
var $area = Rakka.switchScreen();
$previewHeader = $( $.H1({}, "Preview") );
$.TH({}, "Page language"),
$.TD({}, selPageLang));
+ var trOtherLangs = (function () {
+ var options = [];
+
+ $.each(Rakka.getSystemConfig().languages, function (tag, name) {
+ options.push(
+ $.OPTION({value: tag}, name));
+ });
+
+ var selLang = $.SELECT({}, options);
+ var fldLink = $.INPUT({type: "text", className: "smallField"});
+
+ $(selLang).change(function () {
+ var pageName = otherLangs[$(selLang).val()];
+ $(fldLink).val(
+ pageName == null ? "" : pageName
+ );
+ }).trigger("change");
+
+ var onLinkChanged = function () {
+ isDirty = true;
+
+ var lang = $(selLang).val();
+ var pageName = $(this).val();
+
+ if (pageName == "") {
+ delete otherLangs[lang];
+ }
+ else {
+ otherLangs[lang] = pageName;
+ }
+ };
+ $(fldLink).change(onLinkChanged).keyup(onLinkChanged);
+
+ return $.TR({},
+ $.TH({}, "Language links"),
+ $.TD({}, selLang, fldLink));
+ })();
+
var fldSummary
= $.TEXTAREA({className: "summary"}, summary);
chkIsLocked.checked,
"text/x-rakka",
$(selPageLang).val(),
+ otherLangs,
fldSummary.value,
fldRakkaSource.value);
}
chkIsLocked.checked,
"text/css",
$(selPageLang).val(),
+ otherLangs,
fldSummary.value,
fldCSSSource.value);
}
fldPageName.value,
chkIsLocked.checked,
$(selPageLang).val(),
+ otherLangs,
fldSummary.value,
fldUploadFile.value);
}
var updateTRContent = function () {
if (btnTypeRakka.checked) {
$(trPageLang).show();
+ $(trOtherLangs).show();
$(trSummary).show();
$(trContent).find("th").text("Wiki source");
$(trContent).find("td").empty().append(fldRakkaSource);
}
else if (btnTypeCSS.checked) {
$(trPageLang).show();
+ $(trOtherLangs).show();
$(trSummary).show();
$(trContent).find("th").text("CSS source");
$(trContent).find("td").empty().append(fldCSSSource);
}
else if (btnTypeBinary.checked) {
$(trPageLang).show();
+ $(trOtherLangs).show();
$(trSummary).show();
$(trContent).find("th").text("File");
$(trContent).find("td").empty().append(fldUploadFile);
}
else if (btnTypeRedirect.checked) {
$(trPageLang).hide();
+ $(trOtherLangs).hide();
$(trSummary).hide();
$(trContent).find("th").text("Destination Page");
$(trContent).find("td").empty().append(fldRedirect);
)
),
trPageLang,
+ trOtherLangs,
trSummary,
trContent,
$.TR({},
Rakka.scrollToTopLeft();
};
- var submitTextPage = function (pageName, oldRevision, givenPageName, isLocked, mimeType, lang, summary, text) {
+ var submitTextPage = function (pageName, oldRevision, givenPageName, isLocked, mimeType, lang, otherLangs, summary, text) {
var doc = document.implementation.createDocument(
"http://cielonegro.org/schema/Rakka/Page/1.0", "page", null);
page.appendChild(s);
}
+ var oLang = doc.createElement("otherLang");
+ for (var tag in otherLangs) {
+ var link = doc.createElement("link");
+ link.setAttribute("lang", tag);
+ link.setAttribute("page", otherLangs[tag]);
+ oLang.appendChild(link);
+ }
+ page.appendChild(oLang);
+
var textData = doc.createElement("textData");
textData.appendChild(
doc.createTextNode(text));
});
};
- var submitBinaryPage = function (pageName, oldRevision, givenPageName, isLocked, lang, summary, path) {
+ var submitBinaryPage = function (pageName, oldRevision, givenPageName, isLocked, lang, otherLangs, summary, path) {
var doc = document.implementation.createDocument(
"http://cielonegro.org/schema/Rakka/Page/1.0", "page", null);
page.appendChild(s);
}
+ var oLang = doc.createElement("otherLang");
+ for (var tag in otherLangs) {
+ var link = doc.createElement("link");
+ link.setAttribute("lang", tag);
+ link.setAttribute("page", otherLangs[tag]);
+ oLang.appendChild(link);
+ }
+ page.appendChild(oLang);
+
var bin = Rakka.loadLocalBinaryFile(path);
var b64 = Rakka.encodeBase64(bin);