]> gitweb @ CieloNegro.org - Rakka.git/blob - js/editPage.js
Wrote many
[Rakka.git] / js / editPage.js
1 Rakka.editPage = function (baseURI, pageName) {
2     var $body = $("div.body");
3
4     $body.text("Loading... please wait.");
5     
6     // XML 版のページを取得する。
7     $.ajax({
8         url    : baseURI + pageName + ".xml",
9         success: function (pageXml) {
10                      var $page         = $(pageXml).find("page");
11                      var oldRevision   = $page.attr("revision");
12                      var defaultAction = $page.attr("isBinary") == "yes"          ? "uploadFile"
13                                        : $page.attr("type")     == "text/x-rakka" ? "editAsWiki"
14                                        : $page.attr("type")     == "text/css"     ? "editAsCSS"
15                                        :                                            "unknown"
16                                        ;
17                      var source        = $page.find("source").text();
18                      Rakka.displayPageEditor($body, pageName, oldRevision, defaultAction, source);
19                  },
20         error  : function (req) {
21                      if (req.status == 404) {
22                          Rakka.displayPageEditor($body, pageName, null, "editAsWiki");
23                      }
24                      else {
25                          $body.text("Error: " + req.status + " " + req.statusText);
26                      }
27                  }
28         });
29 };
30
31 Rakka.displayPageEditor = function ($place, pageName, oldRevision, defaultAction, source) {
32     $place.empty();
33
34     var fldPageName
35       = $.INPUT({type : "text", value: pageName});
36
37     var btnEditAsWiki
38       = $.INPUT({type   : "radio",
39                  name   : "action",
40                  checked: (defaultAction == "editAsWiki" ? "checked" : "")});
41
42     var btnEditAsCSS
43       = $.INPUT({type   : "radio",
44                  name   : "action",
45                  checked: (defaultAction == "editAsCSS"  ? "checked" : "")});
46
47     var btnUploadFile
48       = $.INPUT({type   : "radio",
49                  name   : "action",
50                  checked: (defaultAction == "uploadFile" ? "checked" : "")});
51
52     var btnDelete
53       = $.INPUT({type   : "radio",
54                  name   : "action",
55                  checked: ""});
56
57     var pageEditor
58       = $.TABLE({className: "pageEditor"},
59           $.TBODY({},
60             $.TR({},
61               $.TH({}, "Name of the page"),
62               $.TD({}, fldPageName)
63             ),
64             $.TR({},
65               $.TH({}, "Action"),
66               $.TD({},
67                 $.UL({},
68                   $.LI({},
69                     $.LABEL({},
70                       btnEditAsWiki,
71                       "Edit as a Wiki page"
72                     )
73                   ),
74                   $.LI({},
75                     $.LABEL({},
76                       btnEditAsCSS,
77                       "Edit as a style sheet"
78                     )
79                   ),
80                   $.LI({},
81                     $.LABEL({},
82                       btnUploadFile,
83                       "Upload a file"
84                     )
85                   ),
86                   (oldRevision != "" && oldRevision != 0
87                      ? $.LI({},
88                          $.LABEL({},
89                            btnDelete,
90                            "Delete this page"
91                          )
92                        )
93                      : [])
94                 )
95               )
96             )
97           )
98         );
99
100     $place.append(pageEditor);
101 };