1 Rakka.editPage = function (baseURI, pageName) {
2 var $area = Rakka.switchScreen();
4 Rakka.displayWaitingMessage("Loading... please wait.");
8 url : baseURI + pageName + ".xml",
9 success: function (pageXml) {
10 Rakka.hideWaitingMessage();
12 var $page = $(pageXml).find("page");
13 var oldRevision = $page.attr("revision");
15 = $page.attr("isBinary") == "yes" ? "binary"
16 : $page.attr("type") == "text/x-rakka" ? "rakka"
17 : $page.attr("type") == "text/css" ? "css"
20 var source = $page.find("textData").text();
21 Rakka.displayPageEditor(baseURI, pageName, oldRevision, defaultType, source);
23 error : function (req) {
24 Rakka.hideWaitingMessage();
26 if (req.status == 404) {
27 Rakka.displayPageEditor(baseURI, pageName, null, "rakka", null);
30 $area.text("Error: " + req.status + " " + req.statusText);
36 Rakka.displayPageEditor = function (baseURI, pageName, oldRevision, defaultType, source) {
37 var $area = Rakka.switchScreen();
40 $area.append($.H1({}, "Edit page"));
43 = $.INPUT({type : "text", value: pageName});
46 = $.INPUT({type : "radio",
48 checked: (defaultType == "rakka" ? "checked" : "")});
51 = $.INPUT({type : "radio",
53 checked: (defaultType == "css" ? "checked" : "")});
56 = $.INPUT({type : "radio",
58 checked: (defaultType == "binary" ? "checked" : "")});
62 = $.TEXTAREA({}, (defaultType == "rakka" && source != null ? source : ""));
65 = $.TEXTAREA({}, (defaultType == "css" && source != null ? source : ""));
68 = $.INPUT({type: "file"});
77 = $.INPUT({type: "button", value: "Preview page"});
79 $(btnPreview).click(function () {
80 throw new Error("FIXME: not implemented yet");
84 = $.INPUT({type: "button", value: "Submit page"});
86 $(btnSubmit).click(function () {
87 if (btnTypeRakka.checked) {
94 fldRakkaSource.value);
96 else if (btnTypeCSS.checked) {
105 else if (btnTypeBinary.checked) {
106 Rakka.submitBinaryPage(
111 fldUploadFile.value);
116 = $.INPUT({type: "button", value: "Delete this page"});
118 $(btnDelete).click(function () {
119 throw new Error("FIXME: not implemented yet");
122 var updateTRContent = function () {
123 if (btnTypeRakka.checked) {
124 $(trContent).find("th").text("Wiki source");
125 $(trContent).find("td").empty().append(fldRakkaSource);
127 else if (btnTypeCSS.checked) {
128 $(trContent).find("th").text("CSS source");
129 $(trContent).find("td").empty().append(fldCSSSource);
131 else if (btnTypeBinary.checked) {
132 $(trContent).find("th").text("File");
133 $(trContent).find("td").empty().append(fldUploadFile);
136 $(btnTypeRakka ).change(updateTRContent);
137 $(btnTypeCSS ).change(updateTRContent);
138 $(btnTypeBinary).change(updateTRContent);
142 = $.TABLE({className: "pageEditor"},
145 $.TH({}, "Page name"),
146 $.TD({}, fldPageName)
149 $.TH({}, "Page type"),
176 $.TD({}, btnPreview, btnSubmit, btnDelete)
181 if (oldRevision == null || oldRevision == 0) {
186 $area.append(pageEditor);
189 Rakka.submitTextPage = function (baseURI, pageName, oldRevision, givenPageName, mimeType, text) {
190 var doc = document.implementation.createDocument(
191 "http://cielonegro.org/schema/Rakka/Page/1.0", "page", null);
193 var page = doc.documentElement;
195 if (oldRevision != null) {
197 var updateInfo = doc.createElement("updateInfo");
198 updateInfo.setAttribute("oldRevision", oldRevision);
200 if (pageName != givenPageName) {
201 var move = doc.createElement("move");
202 move.setAttribute("from", pageName);
203 updateInfo.appendChild(move);
206 page.appendChild(updateInfo);
213 page.setAttribute("type", mimeType);
215 var textData = doc.createElement("textData");
216 textData.appendChild(
217 doc.createTextNode(text));
219 page.appendChild(textData);
222 Rakka.displayWaitingMessage("Submitting... please wait.");
224 var url = baseURI + encodeURI(givenPageName);
228 contentType: "text/xml",
231 success : function () {
232 window.location.replace(url);
234 error : function (req) {
235 Rakka.hideWaitingMessage();
237 var $area = Rakka.switchScreen();
238 $area.text("Error: " + req.status + " " + req.statusText);