qwikdoc 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. data/.gitignore +5 -0
  2. data/.rspec +2 -0
  3. data/CHANGES +3 -0
  4. data/COPYING +340 -0
  5. data/Gemfile +3 -0
  6. data/README.md +10 -0
  7. data/Rakefile +10 -0
  8. data/TextFormattingRules +137 -0
  9. data/TextFormattingRules.ja +143 -0
  10. data/bin/qwikdoc +34 -0
  11. data/lib/qwik_doc.rb +15 -0
  12. data/lib/qwik_doc/hack.rb +184 -0
  13. data/qwikdoc.gemspec +26 -0
  14. data/spec/qwik_doc_spec.rb +305 -0
  15. data/spec/spec_helper.rb +12 -0
  16. data/vendor/qwik/Makefile +63 -0
  17. data/vendor/qwik/Rakefile +17 -0
  18. data/vendor/qwik/act-aa.rb +83 -0
  19. data/vendor/qwik/act-archive.rb +386 -0
  20. data/vendor/qwik/act-attach.rb +304 -0
  21. data/vendor/qwik/act-backup.rb +236 -0
  22. data/vendor/qwik/act-basic.rb +325 -0
  23. data/vendor/qwik/act-book.rb +161 -0
  24. data/vendor/qwik/act-calc.rb +371 -0
  25. data/vendor/qwik/act-charset.rb +251 -0
  26. data/vendor/qwik/act-christel.rb +112 -0
  27. data/vendor/qwik/act-chronology.rb +149 -0
  28. data/vendor/qwik/act-code.rb +155 -0
  29. data/vendor/qwik/act-comment.rb +554 -0
  30. data/vendor/qwik/act-config.rb +49 -0
  31. data/vendor/qwik/act-counter.rb +125 -0
  32. data/vendor/qwik/act-day.rb +96 -0
  33. data/vendor/qwik/act-describe.rb +135 -0
  34. data/vendor/qwik/act-diary.rb +109 -0
  35. data/vendor/qwik/act-edit.rb +317 -0
  36. data/vendor/qwik/act-embed-html.rb +296 -0
  37. data/vendor/qwik/act-emode.rb +150 -0
  38. data/vendor/qwik/act-event.rb +187 -0
  39. data/vendor/qwik/act-file.rb +303 -0
  40. data/vendor/qwik/act-files.rb +771 -0
  41. data/vendor/qwik/act-getpass.rb +295 -0
  42. data/vendor/qwik/act-history.rb +136 -0
  43. data/vendor/qwik/act-html.rb +204 -0
  44. data/vendor/qwik/act-httpauth.rb +147 -0
  45. data/vendor/qwik/act-include.rb +142 -0
  46. data/vendor/qwik/act-interwiki.rb +189 -0
  47. data/vendor/qwik/act-isearch.rb +109 -0
  48. data/vendor/qwik/act-keywords.rb +137 -0
  49. data/vendor/qwik/act-lang.rb +81 -0
  50. data/vendor/qwik/act-license.rb +63 -0
  51. data/vendor/qwik/act-list.rb +287 -0
  52. data/vendor/qwik/act-login.rb +410 -0
  53. data/vendor/qwik/act-logout.rb +60 -0
  54. data/vendor/qwik/act-mail.rb +159 -0
  55. data/vendor/qwik/act-map.rb +292 -0
  56. data/vendor/qwik/act-md5.rb +42 -0
  57. data/vendor/qwik/act-mdlb.rb +741 -0
  58. data/vendor/qwik/act-media.rb +416 -0
  59. data/vendor/qwik/act-member.rb +157 -0
  60. data/vendor/qwik/act-menu.rb +142 -0
  61. data/vendor/qwik/act-metadata.rb +323 -0
  62. data/vendor/qwik/act-mlsubmitform.rb +49 -0
  63. data/vendor/qwik/act-monitor.rb +167 -0
  64. data/vendor/qwik/act-new.rb +418 -0
  65. data/vendor/qwik/act-pagelist.rb +248 -0
  66. data/vendor/qwik/act-password.rb +145 -0
  67. data/vendor/qwik/act-plan.rb +210 -0
  68. data/vendor/qwik/act-povray.rb +230 -0
  69. data/vendor/qwik/act-presen.rb +380 -0
  70. data/vendor/qwik/act-redirect.rb +133 -0
  71. data/vendor/qwik/act-ring.rb +1071 -0
  72. data/vendor/qwik/act-rrefs.rb +255 -0
  73. data/vendor/qwik/act-ruby.rb +116 -0
  74. data/vendor/qwik/act-sample.rb +170 -0
  75. data/vendor/qwik/act-save.rb +295 -0
  76. data/vendor/qwik/act-schedule.rb +374 -0
  77. data/vendor/qwik/act-search.rb +180 -0
  78. data/vendor/qwik/act-searchwords.rb +51 -0
  79. data/vendor/qwik/act-sendpass.rb +83 -0
  80. data/vendor/qwik/act-site.rb +89 -0
  81. data/vendor/qwik/act-sitebackup.rb +419 -0
  82. data/vendor/qwik/act-sitelog.rb +118 -0
  83. data/vendor/qwik/act-smil.rb +299 -0
  84. data/vendor/qwik/act-status.rb +220 -0
  85. data/vendor/qwik/act-style.rb +608 -0
  86. data/vendor/qwik/act-table.rb +263 -0
  87. data/vendor/qwik/act-tableform.rb +241 -0
  88. data/vendor/qwik/act-tag.rb +103 -0
  89. data/vendor/qwik/act-text.rb +70 -0
  90. data/vendor/qwik/act-textarea.rb +164 -0
  91. data/vendor/qwik/act-theme.rb +346 -0
  92. data/vendor/qwik/act-toc.rb +112 -0
  93. data/vendor/qwik/act-typekey.rb +198 -0
  94. data/vendor/qwik/act-under-const.rb +94 -0
  95. data/vendor/qwik/act-webservice.rb +321 -0
  96. data/vendor/qwik/act-wema.rb +558 -0
  97. data/vendor/qwik/act-wysiwyg.rb +238 -0
  98. data/vendor/qwik/action.rb +325 -0
  99. data/vendor/qwik/autoreload.rb +98 -0
  100. data/vendor/qwik/bench-bench.rb +28 -0
  101. data/vendor/qwik/bench-emode.rb +47 -0
  102. data/vendor/qwik/bench-format-xml.rb +70 -0
  103. data/vendor/qwik/bench-large-table.rb +62 -0
  104. data/vendor/qwik/bench-md5.rb +14 -0
  105. data/vendor/qwik/bench-module-session.rb +19 -0
  106. data/vendor/qwik/bench-page.rb +50 -0
  107. data/vendor/qwik/bench-s-md5.rb +28 -0
  108. data/vendor/qwik/bench-session.rb +25 -0
  109. data/vendor/qwik/bench-textformat.rb +31 -0
  110. data/vendor/qwik/catalog-factory.rb +91 -0
  111. data/vendor/qwik/catalog-ja.rb +479 -0
  112. data/vendor/qwik/catalog-ml-ja.rb +145 -0
  113. data/vendor/qwik/check-act-monitor.rb +112 -0
  114. data/vendor/qwik/check-act-monitor2.rb +46 -0
  115. data/vendor/qwik/check-act-theme.rb +27 -0
  116. data/vendor/qwik/check-event.rb +112 -0
  117. data/vendor/qwik/check-event2.rb +55 -0
  118. data/vendor/qwik/check-htree-rexml.rb +77 -0
  119. data/vendor/qwik/check-htree.rb +51 -0
  120. data/vendor/qwik/check-libxml.rb +135 -0
  121. data/vendor/qwik/check-many-pages.rb +47 -0
  122. data/vendor/qwik/check-monitor.rb +33 -0
  123. data/vendor/qwik/check-observer.rb +67 -0
  124. data/vendor/qwik/check-server.rb +61 -0
  125. data/vendor/qwik/check-uuencode.rb +33 -0
  126. data/vendor/qwik/check-webdav.rb +65 -0
  127. data/vendor/qwik/check-xml-xpath.rb +27 -0
  128. data/vendor/qwik/common-backtrace.rb +94 -0
  129. data/vendor/qwik/common-basic.rb +111 -0
  130. data/vendor/qwik/common-condition.rb +142 -0
  131. data/vendor/qwik/common-error.rb +48 -0
  132. data/vendor/qwik/common-gettext.rb +50 -0
  133. data/vendor/qwik/common-javascript.rb +45 -0
  134. data/vendor/qwik/common-notice.rb +132 -0
  135. data/vendor/qwik/common-plain.rb +105 -0
  136. data/vendor/qwik/common-plugin.rb +111 -0
  137. data/vendor/qwik/common-res.rb +76 -0
  138. data/vendor/qwik/common-resolve.rb +92 -0
  139. data/vendor/qwik/common-send.rb +171 -0
  140. data/vendor/qwik/common-session.rb +139 -0
  141. data/vendor/qwik/common-surface.rb +261 -0
  142. data/vendor/qwik/common-url.rb +90 -0
  143. data/vendor/qwik/compat/Makefile +12 -0
  144. data/vendor/qwik/compat/add_load_path.rb +1 -0
  145. data/vendor/qwik/config.rb +299 -0
  146. data/vendor/qwik/db-b-backup.rb +142 -0
  147. data/vendor/qwik/db-backup.rb +184 -0
  148. data/vendor/qwik/db-berkeley.rb +306 -0
  149. data/vendor/qwik/db-filesystem.rb +305 -0
  150. data/vendor/qwik/db-indexer.rb +154 -0
  151. data/vendor/qwik/db-searchwords.rb +238 -0
  152. data/vendor/qwik/description-ja.rb +267 -0
  153. data/vendor/qwik/description.rb +256 -0
  154. data/vendor/qwik/dev-add-copyright.rb +23 -0
  155. data/vendor/qwik/dev-backup.rb +24 -0
  156. data/vendor/qwik/dev-bench.rb +175 -0
  157. data/vendor/qwik/dev-calctime.rb +52 -0
  158. data/vendor/qwik/dev-css-compressor.rb +60 -0
  159. data/vendor/qwik/dev-extract-catalog.rb +102 -0
  160. data/vendor/qwik/dev-js-compressor.rb +73 -0
  161. data/vendor/qwik/dev-release.rb +235 -0
  162. data/vendor/qwik/dev-replace.rb +353 -0
  163. data/vendor/qwik/dev-sendmail.rb +25 -0
  164. data/vendor/qwik/farm.rb +283 -0
  165. data/vendor/qwik/gettext.rb +56 -0
  166. data/vendor/qwik/group-cond.rb +157 -0
  167. data/vendor/qwik/group-config.rb +247 -0
  168. data/vendor/qwik/group-confirm.rb +147 -0
  169. data/vendor/qwik/group-db.rb +326 -0
  170. data/vendor/qwik/group-mail.rb +195 -0
  171. data/vendor/qwik/group-member.rb +307 -0
  172. data/vendor/qwik/group-sendmail.rb +231 -0
  173. data/vendor/qwik/group-site.rb +374 -0
  174. data/vendor/qwik/group-sweep.rb +63 -0
  175. data/vendor/qwik/group.rb +157 -0
  176. data/vendor/qwik/helper.rb +6 -0
  177. data/vendor/qwik/html-generator.rb +104 -0
  178. data/vendor/qwik/html-to-wabisabi.rb +149 -0
  179. data/vendor/qwik/htree-diff.rb +87 -0
  180. data/vendor/qwik/htree-format-xml.rb +57 -0
  181. data/vendor/qwik/htree-generator.rb +144 -0
  182. data/vendor/qwik/htree-get.rb +251 -0
  183. data/vendor/qwik/htree-html-generator.rb +179 -0
  184. data/vendor/qwik/htree-template.rb +263 -0
  185. data/vendor/qwik/htree-to-wabisabi.rb +171 -0
  186. data/vendor/qwik/loadlib.rb +79 -0
  187. data/vendor/qwik/logger.rb +115 -0
  188. data/vendor/qwik/mail-body.rb +171 -0
  189. data/vendor/qwik/mail-header.rb +474 -0
  190. data/vendor/qwik/mail-multipart.rb +193 -0
  191. data/vendor/qwik/mail-parse.rb +147 -0
  192. data/vendor/qwik/mail.rb +341 -0
  193. data/vendor/qwik/mailaddress.rb +83 -0
  194. data/vendor/qwik/mdlb-model.rb +81 -0
  195. data/vendor/qwik/mdlb-sample.rb +324 -0
  196. data/vendor/qwik/ml-catalog-factory.rb +27 -0
  197. data/vendor/qwik/ml-exception.rb +15 -0
  198. data/vendor/qwik/ml-generator.rb +28 -0
  199. data/vendor/qwik/ml-gettext.rb +137 -0
  200. data/vendor/qwik/ml-logger.rb +82 -0
  201. data/vendor/qwik/ml-memory.rb +65 -0
  202. data/vendor/qwik/ml-msg-validator.rb +86 -0
  203. data/vendor/qwik/ml-processor.rb +609 -0
  204. data/vendor/qwik/ml-quickml-server.rb +122 -0
  205. data/vendor/qwik/ml-sendmail.rb +0 -0
  206. data/vendor/qwik/ml-server.rb +107 -0
  207. data/vendor/qwik/ml-session.rb +348 -0
  208. data/vendor/qwik/ml-sweeper.rb +101 -0
  209. data/vendor/qwik/mock-logger.rb +65 -0
  210. data/vendor/qwik/mock-sendmail.rb +78 -0
  211. data/vendor/qwik/mock-socket.rb +82 -0
  212. data/vendor/qwik/modulobe.rb +406 -0
  213. data/vendor/qwik/mongrel-server.rb +72 -0
  214. data/vendor/qwik/page-files.rb +249 -0
  215. data/vendor/qwik/page-generate.rb +82 -0
  216. data/vendor/qwik/page-get.rb +262 -0
  217. data/vendor/qwik/page-images.rb +168 -0
  218. data/vendor/qwik/page-put.rb +128 -0
  219. data/vendor/qwik/page-rrefs.rb +154 -0
  220. data/vendor/qwik/page-title.rb +0 -0
  221. data/vendor/qwik/page-wikidb.rb +234 -0
  222. data/vendor/qwik/page.rb +67 -0
  223. data/vendor/qwik/pages.rb +444 -0
  224. data/vendor/qwik/parse-plugin.rb +249 -0
  225. data/vendor/qwik/parser-emode.rb +116 -0
  226. data/vendor/qwik/parser-inline.rb +273 -0
  227. data/vendor/qwik/parser.rb +350 -0
  228. data/vendor/qwik/password.rb +183 -0
  229. data/vendor/qwik/periodic.rb +79 -0
  230. data/vendor/qwik/qp.rb +56 -0
  231. data/vendor/qwik/qwik-service.rb +341 -0
  232. data/vendor/qwik/qwik.rb +5 -0
  233. data/vendor/qwik/qwikweb-adduser.rb +34 -0
  234. data/vendor/qwik/qwikweb-catalog-validator.rb +110 -0
  235. data/vendor/qwik/qwikweb-incgen.rb +28 -0
  236. data/vendor/qwik/qwikweb-makesite.rb +41 -0
  237. data/vendor/qwik/qwikweb-server.rb +44 -0
  238. data/vendor/qwik/qwikweb-showpassword.rb +26 -0
  239. data/vendor/qwik/qwikweb-watchlog.rb +67 -0
  240. data/vendor/qwik/request-path.rb +304 -0
  241. data/vendor/qwik/request-ua.rb +76 -0
  242. data/vendor/qwik/request-webrick.rb +81 -0
  243. data/vendor/qwik/request.rb +91 -0
  244. data/vendor/qwik/resolve-tdiary.rb +292 -0
  245. data/vendor/qwik/resolve.rb +121 -0
  246. data/vendor/qwik/response.rb +228 -0
  247. data/vendor/qwik/server-memory.rb +57 -0
  248. data/vendor/qwik/server-webrick.rb +102 -0
  249. data/vendor/qwik/server.rb +252 -0
  250. data/vendor/qwik/site-config.rb +149 -0
  251. data/vendor/qwik/site-db.rb +136 -0
  252. data/vendor/qwik/site-event.rb +162 -0
  253. data/vendor/qwik/site-files.rb +86 -0
  254. data/vendor/qwik/site-group.rb +103 -0
  255. data/vendor/qwik/site-index.rb +47 -0
  256. data/vendor/qwik/site-log.rb +64 -0
  257. data/vendor/qwik/site-member.rb +230 -0
  258. data/vendor/qwik/site-monitor.rb +97 -0
  259. data/vendor/qwik/site-pages.rb +62 -0
  260. data/vendor/qwik/site-plan.rb +139 -0
  261. data/vendor/qwik/site-report.rb +282 -0
  262. data/vendor/qwik/site-resolve.rb +230 -0
  263. data/vendor/qwik/site-rrefs.rb +18 -0
  264. data/vendor/qwik/site-search.rb +180 -0
  265. data/vendor/qwik/site-timeline.rb +153 -0
  266. data/vendor/qwik/site-url.rb +189 -0
  267. data/vendor/qwik/site.rb +76 -0
  268. data/vendor/qwik/smil-time.rb +105 -0
  269. data/vendor/qwik/smtp-session.rb +331 -0
  270. data/vendor/qwik/template-generator.rb +149 -0
  271. data/vendor/qwik/template.rb +85 -0
  272. data/vendor/qwik/test-common.rb +10 -0
  273. data/vendor/qwik/test-ml-info.rb +225 -0
  274. data/vendor/qwik/test-module-ml.rb +142 -0
  275. data/vendor/qwik/test-module-path.rb +110 -0
  276. data/vendor/qwik/test-module-public.rb +70 -0
  277. data/vendor/qwik/test-module-server.rb +98 -0
  278. data/vendor/qwik/test-module-session.rb +264 -0
  279. data/vendor/qwik/test-module-suite.rb +91 -0
  280. data/vendor/qwik/test-ms-applemail.rb +59 -0
  281. data/vendor/qwik/test-ms-attach.rb +174 -0
  282. data/vendor/qwik/test-ms-basic.rb +40 -0
  283. data/vendor/qwik/test-ms-close.rb +35 -0
  284. data/vendor/qwik/test-ms-confirm.rb +75 -0
  285. data/vendor/qwik/test-ms-ignore-spam.rb +57 -0
  286. data/vendor/qwik/test-ms-japanese.rb +97 -0
  287. data/vendor/qwik/test-ms-jfilename.rb +82 -0
  288. data/vendor/qwik/test-ms-large.rb +58 -0
  289. data/vendor/qwik/test-ms-member.rb +103 -0
  290. data/vendor/qwik/test-ms-multipart.rb +84 -0
  291. data/vendor/qwik/test-ms-org.rb +129 -0
  292. data/vendor/qwik/test-ms-plan.rb +130 -0
  293. data/vendor/qwik/test-ms-post.rb +53 -0
  294. data/vendor/qwik/test-ms-quopri.rb +76 -0
  295. data/vendor/qwik/test-sub-quopri.rb +45 -0
  296. data/vendor/qwik/test-submit-base64.rb +59 -0
  297. data/vendor/qwik/test-submit-forward.rb +61 -0
  298. data/vendor/qwik/test-submit-html-mail.rb +52 -0
  299. data/vendor/qwik/test-submit-japanese.rb +135 -0
  300. data/vendor/qwik/test-submit-jfilename.rb +144 -0
  301. data/vendor/qwik/test-submit-uuencode.rb +71 -0
  302. data/vendor/qwik/test-suite-all.rb +8 -0
  303. data/vendor/qwik/test-suite-basic.rb +9 -0
  304. data/vendor/qwik/test-suite-ml.rb +9 -0
  305. data/vendor/qwik/test-typekey.rb +64 -0
  306. data/vendor/qwik/testunit.rb +45 -0
  307. data/vendor/qwik/tokenizer-inline.rb +294 -0
  308. data/vendor/qwik/tokenizer.rb +332 -0
  309. data/vendor/qwik/typekey.rb +160 -0
  310. data/vendor/qwik/util-basic.rb +135 -0
  311. data/vendor/qwik/util-charset.rb +332 -0
  312. data/vendor/qwik/util-css.rb +56 -0
  313. data/vendor/qwik/util-csv-tokenizer.rb +113 -0
  314. data/vendor/qwik/util-filename.rb +112 -0
  315. data/vendor/qwik/util-pathname.rb +202 -0
  316. data/vendor/qwik/util-pid.rb +58 -0
  317. data/vendor/qwik/util-safe.rb +67 -0
  318. data/vendor/qwik/util-sendmail.rb +273 -0
  319. data/vendor/qwik/util-string.rb +203 -0
  320. data/vendor/qwik/util-time.rb +125 -0
  321. data/vendor/qwik/util-webrick.rb +176 -0
  322. data/vendor/qwik/version.rb +11 -0
  323. data/vendor/qwik/wabisabi-basic.rb +163 -0
  324. data/vendor/qwik/wabisabi-diff.rb +130 -0
  325. data/vendor/qwik/wabisabi-format-xml.rb +310 -0
  326. data/vendor/qwik/wabisabi-generator.rb +262 -0
  327. data/vendor/qwik/wabisabi-index.rb +174 -0
  328. data/vendor/qwik/wabisabi-table.rb +212 -0
  329. data/vendor/qwik/wabisabi-template.rb +295 -0
  330. data/vendor/qwik/wabisabi-to-htree.rb +111 -0
  331. data/vendor/qwik/wabisabi-to-wiki.rb +690 -0
  332. data/vendor/qwik/wabisabi-traverse.rb +207 -0
  333. data/vendor/qwik/wabisabi-validator.rb +116 -0
  334. data/vendor/qwik/wabisabi.rb +5 -0
  335. metadata +416 -0
@@ -0,0 +1,317 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
6
+ require 'qwik/act-save'
7
+ require 'qwik/act-files' # files_form
8
+
9
+ module Qwik
10
+ class Action
11
+ def ext_edit
12
+ c_require_login
13
+ c_require_page_exist
14
+ generate_edit_page
15
+ end
16
+
17
+ def generate_edit_page(contents=nil, message=nil)
18
+ #c_monitor('startedit')
19
+ c_editor(@site, @req.base, contents, message)
20
+ end
21
+
22
+ # only for check design
23
+ def act_test_editor
24
+ w = c_page_res('TextFormatSimple')
25
+ generate_editor_page('act_test_editor', 'h1', w, w, w)
26
+ end
27
+
28
+ def c_editor(site, pagename, contents=nil, message=[''])
29
+ page = site[pagename]
30
+
31
+ page_title = page.get_title
32
+
33
+ title = _('Edit')+' | '+page_title
34
+
35
+ h1 = [_('Edit'), ' | ', [:a, {:href=>page.url}, page_title]]
36
+
37
+ str = contents
38
+ str = page.load if contents.nil?
39
+
40
+ md5hex = str.md5hex
41
+
42
+ edit_form = editor_edit_form(pagename, str, md5hex)
43
+
44
+ attach_form, attach_list = editor_attach_form(pagename)
45
+
46
+ main = editor_main(edit_form, attach_form, attach_list, pagename)
47
+
48
+ ar = []
49
+ ar << editor_help_qwikweb
50
+ ar << editor_help_edit
51
+ ar << editor_page_functions(pagename)
52
+ ar << editor_site_admin
53
+ sidebar = editor_sidebar(*ar)
54
+
55
+ generate_editor_page(title, h1, message, main, sidebar)
56
+ end
57
+
58
+ def editor_edit_form(pagename, str, md5hex)
59
+ form = [:form, {:method=>'POST', :action=>"#{pagename}.save"},
60
+ [:textarea, {:name=>'contents', :id=>'contents',
61
+ :cols=>'70', :rows=>'20', :class=>'focus'}, str],
62
+ [:div, {:class=>'right'},
63
+ [:input, {:type=>'hidden', :name=>'md5hex', :value=>md5hex}],
64
+ [:input, {:class=>'submit', :type=>'submit',
65
+ :name=>'save', :value=>_('Save')}]]]
66
+ return form
67
+ end
68
+
69
+ def editor_attach_form(pagename)
70
+ form = files_form(pagename)
71
+ list = files_list
72
+ return form, list
73
+ end
74
+
75
+ def editor_main(edit_form, attach_form, attach_list, pagename)
76
+ divs = [
77
+ [:div, {:class=>'day edit'},
78
+ [:h2, _('Edit')],
79
+ [:div, {:class=>'section section_edit'}, edit_form]],
80
+ [:div, {:class=>'day attach'},
81
+ [:h2, _('Attach Files')],
82
+ [:div, {:class=>'section section_attach'},
83
+ attach_form,
84
+ [:div, {:class=>'right attach_many'},
85
+ [:a, {:href=>"#{pagename}.files"}, _('Attach many files')]]]]
86
+ ]
87
+
88
+ if attach_list
89
+ divs << [:div, {:class=>'day attach'},
90
+ [:h2, _('Files')],
91
+ [:div, {:class=>'section'},
92
+ [:ul, *attach_list]]]
93
+ end
94
+
95
+ return divs
96
+ end
97
+
98
+ def editor_help_qwikweb
99
+ return [:div, {:class=>'section edithistory'},
100
+ [:h2, _('Help')],
101
+ [:ul,
102
+ [:li, [:a, {:href=>'.describe'}, _('How to qwikWeb')]]
103
+ ]]
104
+ end
105
+
106
+ def editor_help_edit
107
+ return [:div, {:class=>'section edithelp'},
108
+ [:h2, _('Text Format')],
109
+ [:ul,
110
+ [:li, [:tt, '*'], ' ', _('Header')],
111
+ [:li, [:tt, '-'], ' ', _('List')],
112
+ [:li, [:tt, '+'], ' ', _('Ordered list')],
113
+ [:li, [:tt, '>'], ' ', _('Block quote')],
114
+ [:li, [:tt, ':'], ' ', _('Word'), ': ', _('Definition')],
115
+ [:li, [:tt, ','], ' ', _('Table')],
116
+ [:li, [:tt, "''"], _('Emphasis'), [:tt, "''"]],
117
+ [:li, [:tt, "'''"], _('Stronger'), [:tt, "'''"]],
118
+ [:li, [:tt, '[['], 'FrontPage', [:tt, ']]'], ' ', _('Link')]],
119
+ [:p, [:a, {:href=>'TextFormat.describe'}, _('more help')]]]
120
+ end
121
+
122
+ def editor_page_functions(pagename)
123
+ return [:div, {:class=>'section edithistory'},
124
+ [:h2, _('Page functions')],
125
+ [:ul,
126
+ [:li, [:a, {:href=>"#{pagename}.backup"}, _('Backup')]],
127
+ [:li, [:a, {:href=>"#{pagename}.history"}, _('Time machine')]],
128
+ [:li, [:a, {:href=>"#{pagename}.presen"}, _('Presentation mode')]],
129
+ [:li, [:a, {:href=>"#{pagename}.wysiwyg"}, _('Edit in this page')]],
130
+ [:li, [:a, {:href=>"PluginWema.describe"}, _('How to use post-its')]],
131
+ ]]
132
+ end
133
+
134
+ def editor_site_admin
135
+ return [:div, {:class=>'section edithistory'},
136
+ [:h2, _('Site administration')],
137
+ [:ul,
138
+ [:li, [:a, {:href=>'SiteManagement.describe'}, _('Site Menu')]],
139
+ [:li, [:a, {:href=>'_SiteConfig.html'}, _('Site Configuration')]],
140
+ [:li, [:a, {:href=>'.plan'}, _('Create a new plan')]],
141
+ [:li, [:a, {:href=>'.chronology'}, _('Chronology')]],
142
+ [:li, [:a, {:href=>'_GroupMembers.html'}, _('Group members')]],
143
+ [:li, [:a, {:href=>"#{@site.sitename}.zip"}, _('Site Archive')]],
144
+ [:li, [:a, {:href=>"#{@site.sitename}.sitebackup"}, _('Site backup')]],
145
+ [:li, [:a, {:href=>"_GroupConfig.html"}, _('Mailing List Configuration')]],
146
+ [:li, [:a, {:href=>".sendpass"}, _('Send Password')]],
147
+ ]]
148
+ end
149
+
150
+ def editor_sidebar(*a)
151
+ return a
152
+ end
153
+
154
+ def generate_editor_page(title, h1, message, main, sidebar)
155
+ @res.status = 200
156
+ template = @memory.template.get('editor')
157
+ @res.body = Action.editor_generate(template, title, h1,
158
+ message, main, sidebar)
159
+ c_set_html
160
+ c_set_no_cache
161
+ return nil
162
+ end
163
+
164
+ def self.editor_generate(template, title, h1, message, main, sidebar)
165
+ w = template.get_tag('head')
166
+
167
+ # insert title
168
+ w.insert(1, [:title, title])
169
+
170
+ # insert JavaScript
171
+ js = generate_js
172
+ w.insert(w.length, *js)
173
+
174
+ # insert meta
175
+ w << [:meta, {:name=>'ROBOTS', :content=>'NOINDEX,NOFOLLOW'}]
176
+
177
+ # insert h1
178
+ w = template.get_tag('h1')
179
+ #w << title
180
+ w << h1
181
+
182
+ # insert message
183
+ w = template.get_by_class('message')
184
+ w << message
185
+
186
+ # insert main
187
+ w = template.get_by_class('main')
188
+ w.insert(2, *main)
189
+
190
+ # insert sidebar
191
+ w = template.get_by_class('sidebar')
192
+ w.insert(2, *sidebar)
193
+
194
+ return template
195
+ end
196
+ end
197
+ end
198
+
199
+ if $0 == __FILE__
200
+ require 'qwik/test-common'
201
+ $test = true
202
+ end
203
+
204
+ if defined?($test) && $test
205
+ class TestActEdit < Test::Unit::TestCase
206
+ include TestSession
207
+
208
+ def test_generator
209
+ res = session
210
+
211
+ template = @memory.template.get('editor')
212
+ eq [:h1], template.get_tag('h1')
213
+ eq [:div, {:class=>'main'}], template.get_by_class('main')
214
+
215
+ res = Qwik::Action.editor_generate(template, 'title', 'h1',
216
+ 'msg', ['m'], ['s'])
217
+
218
+ eq [:title, 'title'], res.get_tag('title')
219
+ # eq [:script, {:src=>'.theme/js/base.js',
220
+ # :type=>'text/javascript'}, ''], res.get_tag('script')
221
+ eq [:link, {:href=>'.theme/css/base.css', :rel=>'stylesheet',
222
+ :media=>'screen,tv', :type=>'text/css'}],
223
+ res.get_tag('link')
224
+ eq [:link, {:media=>'screen,tv', :type=>'text/css',
225
+ :href=>'.theme/qwikeditor/qwikeditor.css',
226
+ :rel=>'stylesheet'}],
227
+ res.get_tag('link[2]')
228
+ eq [:meta, {:content=>'NOINDEX,NOFOLLOW', :name=>'ROBOTS'}],
229
+ res.get_tag('meta')
230
+ eq [:h1, 'h1'], res.get_tag('h1')
231
+ eq [:div, {:class=>'message'}, 'msg'],
232
+ res.get_path("//div[@class='message']")
233
+ eq [:div, {:class=>'main'}, 'm'],
234
+ res.get_path("//div[@class='main']")
235
+ eq [:div, {:class=>'sidebar'}, 's'],
236
+ res.get_path("//div[@class='sidebar']")
237
+ end
238
+
239
+ def test_all
240
+ res = session
241
+
242
+ @action.generate_editor_page('title', 'h1', 'msg', ['ma'], ['si'])
243
+ eq 200, res.status
244
+ ok_title 'title'
245
+ ok_xp [:div, {:class=>'message'}, 'msg'], "//div[@class='message']"
246
+ ok_xp [:div, {:class=>'main'}, 'ma'], "//div[@class='main']"
247
+ ok_xp [:div, {:class=>'sidebar'}, 'si'], "//div[@class='sidebar']"
248
+
249
+ t_add_user
250
+
251
+ res = session '/test/.test_editor'
252
+ #ok_xp [:title, 'Edit | 1'], 'title', res
253
+ #ok_xp [:title, 'act_test_editor'], 'title', res
254
+
255
+ page = @site.create_new
256
+ page.store 't'
257
+ @action.c_editor(@site, '1')
258
+ ok_title 'Edit | 1'
259
+ ok_xp [:div, {:class=>'message'}, ['']],
260
+ "//div[@class='message']"
261
+
262
+ # edit form
263
+ assert_rattr({:action=>'1.save', :method=>'POST'},
264
+ "//div[@class='day edit']/form")
265
+ ok_xp [:textarea, {:id=>'contents', :name=>'contents',
266
+ :cols=>'70', :rows=>'20', :class=>'focus'}, 't'],
267
+ "//div[@class='day edit']/form/textarea"
268
+ ok_xp [:input, {:value=>'e358efa489f58062f10dd7316b65649e',
269
+ :type=>'hidden', :name=>'md5hex'}],
270
+ "//div[@class='day edit']/form/input"
271
+ ok_xp [:input, {:value=>'Save', :type=>'submit',
272
+ :class=>'submit', :name=>'save'}],
273
+ "//div[@class='day edit']/form/input[2]"
274
+
275
+ # attach form
276
+ assert_rattr({:enctype=>'multipart/form-data',
277
+ :action=>'1.files', :method=>'POST'},
278
+ "//div[@class='day attach']/form")
279
+ ok_xp [:input, {:type=>'file', :name=>'content'}],
280
+ "//div[@class='day attach']/form/input"
281
+ ok_xp [:input, {:value=>'Attach', :type=>'submit', :class=>'submit'}],
282
+ "//div[@class='day attach']/form/input[2]"
283
+ ok_in [:a, {:href=>'1.files'}, 'Attach many files'],
284
+ "//div[@class='day attach']//div[@class='right attach_many']"
285
+ # ok_xp [:a, {:href=>'_SiteMenu.html'}, 'SiteMenu'],
286
+ # "//div[@class='sidebar']//a"
287
+ end
288
+
289
+ def test_editor
290
+ res = session
291
+
292
+ # test_edit_page_generator
293
+ page = @site.create_new
294
+ page.store "* test\ntestbody\n** h3\nh3body\n* h2\nh2body\n"
295
+ side = @site['_SideMenu']
296
+ side.store '* side\nsidebody [[1]]'
297
+
298
+ res = session
299
+ @action.c_editor(@site, '1', 'contents', 'msg')
300
+ ok_title 'Edit | test'
301
+ assert_text 'Edit | test', 'h1'
302
+ ok_xp [:meta, {:content=>'NOINDEX,NOFOLLOW', :name=>'ROBOTS'}],
303
+ '//meta'
304
+ ok_in ['msg'], "//div[@class='message']"
305
+ assert_attr({:action=>'1.save', :method=>'POST'}, 'form')
306
+ assert_text 'contents', 'textarea'
307
+ ok_xp [:input, {:value=>'98bf7d8c15784f0a3d63204441e1e2aa',
308
+ :type=>'hidden', :name=>'md5hex'}], '//input'
309
+ ok_xp [:input, {:value=>'Save', :type=>'submit', :class=>'submit',
310
+ :class=>'submit', :name=>'save'}], '//input[2]'
311
+ # ok_xp [:a, {:href=>'_SiteMenu.html'}, 'SiteMenu'],
312
+ # '//div[@class='sidebar']//a'
313
+ # ok_xp [:a, {:href=>'1.presen'}, 'Presentation mode'],
314
+ # "//div[@class='sidebar']//a"
315
+ end
316
+ end
317
+ end
@@ -0,0 +1,296 @@
1
+ # Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
2
+ # This is free software with ABSOLUTELY NO WARRANTY.
3
+ # You can redistribute it and/or modify it under the terms of the GNU GPL 2.
4
+
5
+ $LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
6
+ require 'qwik/html-to-wabisabi'
7
+
8
+ module Qwik
9
+ class Action
10
+ D_PluginEmbedHtml = {
11
+ :dt => 'Embed HTML plugin',
12
+ :dd => 'You can embed bare HTML in the page.',
13
+ :dc => "* Example
14
+ {{html
15
+ This is <font color='red'>red</font>.
16
+ }}
17
+ {{html
18
+ This is <font color='red'>red</font>.
19
+ }}
20
+ * Allowed elements
21
+ You can input allowed elements only.
22
+ ** valid tags
23
+ #{WabisabiValidator::VALID_TAGS.join(' ')}
24
+ ** valid attributes
25
+ #{WabisabiValidator::VALID_ATTR.join(' ')}
26
+
27
+ * HTML�̒��ւ̃v���O�C���̖��ߍ���
28
+ You can also embed plugins like this.
29
+ {{html
30
+ <plugin param=\"1\" method=\"recent\"></plugin>
31
+ }}
32
+ {{html
33
+ <plugin param=\"1\" method=\"recent\"></plugin>
34
+ }}
35
+
36
+ * Example
37
+ <html>
38
+ <H3>Header 2</H3>
39
+ <H4>Header 3</H4>
40
+ <H5>Header 4</H5>
41
+ <H6>Header 5</H6>
42
+ <UL>
43
+ <LI>List 1
44
+ <UL>
45
+ <LI>List 2
46
+ <UL>
47
+ <LI>List 3</LI></UL></LI></UL></LI></UL>
48
+ <OL>
49
+ <LI>Ordered List 1
50
+ <OL>
51
+ <LI>Ordered List 2
52
+ <OL>
53
+ <LI>Ordered List 3</LI></OL></LI></OL></LI></OL>
54
+ <PRE>Pre-formatted text.</PRE>
55
+ <BLOCKQUOTE>
56
+ <P>This is a quoted text.</P>
57
+ </BLOCKQUOTE>
58
+ <DL>
59
+ <DT>Wiki
60
+ <DD>A writable Web system.
61
+ <DT>QuickML
62
+ <DD>An easy-to-use mailing list management system.</DD></DL>
63
+ <TABLE>
64
+ <TBODY>
65
+ <TR>
66
+ <TD>Table 1-1</TD>
67
+ <TD>Table 1-2</TD>
68
+ <TD>Table 1-3</TD></TR>
69
+ <TR>
70
+ <TD>Table 2-1</TD>
71
+ <TD>Table 2-2</TD>
72
+ <TD>Table 2-3</TD></TR></TBODY></TABLE>
73
+ <P><EM>Emphasis</EM>�A
74
+ <STRONG>Strong</STRONG>�A
75
+ <DEL>Delete</DEL>
76
+ <A href=\"http://qwik.jp/.theme/new.png\">new</A>
77
+ <A href=\"FrontPage.html\">FrontPage</A>
78
+ <A href=\"http://www.yahoo.co.jp/\">Yahoo!</A>
79
+ </P>
80
+
81
+ <PLUGIN param=\"1\" method=\"recent\"></PLUGIN>
82
+ </html>
83
+ "
84
+ }
85
+
86
+ D_PluginEmbedHtml_ja = {
87
+ :dt => 'HTML���ߍ��݋@�\ ',
88
+ :dd => 'HTML�����̂܂ܖ����ނ��Ƃ��ł��܂��B',
89
+ :dc => "* ��
90
+ {{html
91
+ This is <font color='red'>red</font>.
92
+ }}
93
+ {{html
94
+ This is <font color='red'>red</font>.
95
+ }}
96
+ * �g����v�f
97
+ �C�ӂ̃^�O���g����킯�ł͂Ȃ��C�g����v�f�͌����Ă��܂��D
98
+ ** �g����^�O
99
+ #{WabisabiValidator::VALID_TAGS.join(' ')}
100
+ ** �g����A�g���r���[�g
101
+ #{WabisabiValidator::VALID_ATTR.join(' ')}
102
+
103
+ * HTML�̒��ւ̃v���O�C���̖��ߍ���
104
+ HTML�L�q�̒���qwikWeb�̃v���O�C���𖄍��ނ��Ƃ��ł��܂��B
105
+ {{html
106
+ <plugin param=\"1\" method=\"recent\"></plugin>
107
+ }}
108
+ {{html
109
+ <plugin param=\"1\" method=\"recent\"></plugin>
110
+ }}
111
+
112
+ * ��
113
+ <html>
114
+ <H3>���o��2</H3>
115
+ <H4>���o��3</H4>
116
+ <H5>���o��4</H5>
117
+ <H6>���o��5</H6>
118
+ <UL>
119
+ <LI>�ӏ������x��1
120
+ <UL>
121
+ <LI>�ӏ������x��2
122
+ <UL>
123
+ <LI>�ӏ������x��3</LI></UL></LI></UL></LI></UL>
124
+ <OL>
125
+ <LI>�������X�g1
126
+ <OL>
127
+ <LI>�������X�g2
128
+ <OL>
129
+ <LI>�������X�g3</LI></OL></LI></OL></LI></OL><PRE>���`�ς݃e�L�X�g�B</PRE>
130
+ <BLOCKQUOTE>
131
+ <P>���p�B</P></BLOCKQUOTE>
132
+ <DL>
133
+ <DT>Wiki
134
+ <DD>�������݉”\��Web�y�[�W
135
+ <DT>QuickML
136
+ <DD>�ȒP�ɍ��郁�[�����O���X�g�V�X�e��</DD></DL>
137
+ <TABLE>
138
+ <TBODY>
139
+ <TR>
140
+ <TD>����1-1</TD>
141
+ <TD>����1-2</TD>
142
+ <TD>����1-3</TD></TR>
143
+ <TR>
144
+ <TD>����2-1</TD>
145
+ <TD>����2-2</TD>
146
+ <TD>����2-3</TD></TR></TBODY></TABLE>
147
+ <P><EM>����</EM>�A<STRONG>����ɋ���</STRONG>�A<DEL>��������</DEL> <A href=\"http://qwik.jp/.theme/new.png\">new</A> <A href=\"FrontPage.html\">FrontPage</A> <A href=\"http://www.yahoo.co.jp/\">Yahoo!</A></P>
148
+
149
+ <PLUGIN param=\"1\" method=\"recent\"></PLUGIN>
150
+ </html>
151
+ "
152
+ }
153
+
154
+ def plg_html
155
+ return unless block_given?
156
+ str = yield
157
+
158
+ wabisabi = HtmlToWabisabi.parse(str)
159
+
160
+ v = WabisabiValidator.valid?(wabisabi)
161
+ if v == true
162
+ return wabisabi
163
+ else
164
+ return "can not use [#{v}]"
165
+ end
166
+ end
167
+ end
168
+ end
169
+
170
+ if $0 == __FILE__
171
+ require 'qwik/test-common'
172
+ $test = true
173
+ end
174
+
175
+ if defined?($test) && $test
176
+ class TestActEmbedHtml < Test::Unit::TestCase
177
+ include TestSession
178
+
179
+ def test_all
180
+ ok_wi(['a
181
+ '], '{{html
182
+ a
183
+ }}')
184
+
185
+ # div can contain another div
186
+ ok_wi([:div, 't1', [:div, 't2
187
+ ']],
188
+ '{{html
189
+ <div>t1<div>t2
190
+ }}')
191
+
192
+ # span can not contain div
193
+ ok_wi([[:span, 't1'], [:div, 't2
194
+ ']],
195
+ '{{html
196
+ <span>t1<div>t2
197
+ }}')
198
+
199
+ # fix the order
200
+ ok_wi([[:b, [:i, 't']], '
201
+ '],
202
+ '{{html
203
+ <b><i>t</i></b>
204
+ }}')
205
+
206
+ # incomplete html maybe ok.
207
+ ok_wi([:ul, [:li, 't1'], [:li, 't2
208
+ ']],
209
+ '{{html
210
+ <ul><li>t1<li>t2
211
+ }}')
212
+
213
+ # test_longer_html
214
+ html = <<"EOT"
215
+ <H2>�����ꗗ�ȈՔ�</H2>
216
+ <P>�ڍׂȐ�����<A href="TextFormat.html">TextFormat</A>������񂭂������B</P>
217
+ <H3>���o��2</H3>
218
+ <H4>���o��3</H4>
219
+ <H5>���o��4</H5>
220
+ <H6>���o��5</H6>
221
+ <UL>
222
+ <LI>�ӏ������x��1
223
+ <UL>
224
+ <LI>�ӏ������x��2
225
+ <UL>
226
+ <LI>�ӏ������x��3</LI></UL></LI></UL></LI></UL>
227
+ <OL>
228
+ <LI>�������X�g1
229
+ <OL>
230
+ <LI>�������X�g2
231
+ <OL>
232
+ <LI>�������X�g3</LI></OL></LI></OL></LI></OL><PRE>���`�ς݃e�L�X�g�B</PRE>
233
+ <BLOCKQUOTE>
234
+ <P>���p�B</P></BLOCKQUOTE>
235
+ <DL>
236
+ <DT>Wiki
237
+ <DD>�������݉”\��Web�y�[�W
238
+ <DT>QuickML
239
+ <DD>�ȒP�ɍ��郁�[�����O���X�g�V�X�e��</DD></DL>
240
+ <TABLE>
241
+ <TBODY>
242
+ <TR>
243
+ <TD>����1-1</TD>
244
+ <TD>����1-2</TD>
245
+ <TD>����1-3</TD></TR>
246
+ <TR>
247
+ <TD>����2-1</TD>
248
+ <TD>����2-2</TD>
249
+ <TD>����2-3</TD></TR></TBODY></TABLE>
250
+ <P><EM>����</EM>�A<STRONG>����ɋ���</STRONG>�A<DEL>��������</DEL> <IMG alt=new src="http://example.com/.theme/new.png"> <A href="FrontPage.html">FrontPage</A> <A href="http://www.yahoo.co.jp/">Yahoo!</A></P><PLUGIN param="1" method="recent"></PLUGIN>
251
+ EOT
252
+
253
+ result = <<"EOT"
254
+
255
+ <p>�ڍׂȐ�����<a href="TextFormat.html">TextFormat</a>������񂭂������B</p>
256
+ <h3>���o��2</h3>
257
+ <h4>���o��3</h4>
258
+ <h5>���o��4</h5>
259
+ <h6>���o��5</h6>
260
+ <ul>
261
+ <li>�ӏ������x��1
262
+ <ul>
263
+ <li>�ӏ������x��2
264
+ <ul>
265
+ <li>�ӏ������x��3</li></ul></li></ul></li></ul>
266
+ <ol>
267
+ <li>�������X�g1
268
+ <ol>
269
+ <li>�������X�g2
270
+ <ol>
271
+ <li>�������X�g3</li></ol></li></ol></li></ol><pre>���`�ς݃e�L�X�g�B</pre>
272
+ <blockquote>
273
+ <p>���p�B</p></blockquote>
274
+ <dl>
275
+ <dt>Wiki
276
+ </dt><dd>�������݉”\��Web�y�[�W
277
+ </dd><dt>QuickML
278
+ </dt><dd>�ȒP�ɍ��郁�[�����O���X�g�V�X�e��</dd></dl>
279
+ <table>
280
+ <tbody>
281
+ <tr>
282
+ <td>����1-1</td>
283
+ <td>����1-2</td>
284
+ <td>����1-3</td></tr>
285
+ <tr>
286
+ <td>����2-1</td>
287
+ <td>����2-2</td>
288
+ <td>����2-3</td></tr></tbody></table>
289
+ <p><em>����</em>�A<strong>����ɋ���</strong>�A<del>��������</del> <img alt="new" src="http://example.com/.theme/new.png"/> <a href="FrontPage.html">FrontPage</a> <a href="http://www.yahoo.co.jp/">Yahoo!</a></p><plugin method="recent" param="1"/>
290
+ EOT
291
+ ok_wi(result, '{{html
292
+ '+html+'
293
+ }}')
294
+ end
295
+ end
296
+ end