1 Rakka.editPage = function (baseURI, pageName) {
2 var $area = Rakka.switchScreen();
3 $area.text("Loading... please wait.");
7 url : baseURI + pageName + ".xml",
8 success: function (pageXml) {
9 var $page = $(pageXml).find("page");
10 var oldRevision = $page.attr("revision");
12 = $page.attr("isBinary") == "yes" ? "binary"
13 : $page.attr("type") == "text/x-rakka" ? "rakka"
14 : $page.attr("type") == "text/css" ? "css"
17 var source = $page.find("textData").text();
18 Rakka.displayPageEditor(baseURI, pageName, oldRevision, defaultType, source);
20 error : function (req) {
21 if (req.status == 404) {
22 Rakka.displayPageEditor(baseURI, pageName, null, "rakka", null);
25 $area.text("Error: " + req.status + " " + req.statusText);
31 Rakka.displayPageEditor = function (baseURI, pageName, oldRevision, defaultType, source) {
32 var $area = Rakka.switchScreen();
35 $area.append($.H1({}, "Edit page"));
38 = $.INPUT({type : "text", value: pageName});
41 = $.INPUT({type : "radio",
43 checked: (defaultType == "rakka" ? "checked" : "")});
46 = $.INPUT({type : "radio",
48 checked: (defaultType == "css" ? "checked" : "")});
51 = $.INPUT({type : "radio",
53 checked: (defaultType == "binary" ? "checked" : "")});
57 = $.TEXTAREA({}, (defaultType == "rakka" && source != null ? source : ""));
60 = $.TEXTAREA({}, (defaultType == "css" && source != null ? source : ""));
63 = $.INPUT({type: "file"});
72 = $.INPUT({type: "button", value: "Preview page"});
74 $(btnPreview).click(function () {
75 throw new Error("FIXME: not implemented yet");
79 = $.INPUT({type: "button", value: "Submit page"});
81 $(btnSubmit).click(function () {
82 if (btnTypeRakka.checked) {
89 fldRakkaSource.value);
91 else if (btnTypeCSS.checked) {
100 else if (btnTypeBinary.checked) {
101 Rakka.submitBinaryPage(
106 fldUploadFile.value);
111 = $.INPUT({type: "button", value: "Delete this page"});
113 $(btnDelete).click(function () {
114 throw new Error("FIXME: not implemented yet");
117 var updateTRContent = function () {
118 if (btnTypeRakka.checked) {
119 $(trContent).find("th").text("Wiki source");
120 $(trContent).find("td").empty().append(fldRakkaSource);
122 else if (btnTypeCSS.checked) {
123 $(trContent).find("th").text("CSS source");
124 $(trContent).find("td").empty().append(fldCSSSource);
126 else if (btnTypeBinary.checked) {
127 $(trContent).find("th").text("File");
128 $(trContent).find("td").empty().append(fldUploadFile);
131 $(btnTypeRakka ).change(updateTRContent);
132 $(btnTypeCSS ).change(updateTRContent);
133 $(btnTypeBinary).change(updateTRContent);
137 = $.TABLE({className: "pageEditor"},
140 $.TH({}, "Page name"),
141 $.TD({}, fldPageName)
144 $.TH({}, "Page type"),
171 $.TD({}, btnPreview, btnSubmit, btnDelete)
176 if (oldRevision == null || oldRevision == 0) {
181 $area.append(pageEditor);
184 Rakka.submitTextPage = function (baseURI, pageName, oldRevision, givenPageName, mimeType, text) {
185 var doc = document.implementation.createDocument(
186 "http://cielonegro.org/schema/Rakka/Page/1.0", "page", null);
188 var page = doc.documentElement;
190 if (oldRevision != null) {
192 var updateInfo = doc.createElement("updateInfo");
193 updateInfo.setAttribute("oldRevision", oldRevision);
195 if (pageName != givenPageName) {
196 var move = doc.createElement("move");
197 move.setAttribute("from", pageName);
198 updateInfo.appendChild(move);
201 page.appendChild(updateInfo);
208 page.setAttribute("type", mimeType);
210 var textData = doc.createElement("textData");
211 textData.appendChild(
212 doc.createTextNode(text));
214 page.appendChild(textData);
219 url : baseURI + encodeURI(givenPageName),
220 contentType: "text/xml",