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.
- data/.gitignore +5 -0
- data/.rspec +2 -0
- data/CHANGES +3 -0
- data/COPYING +340 -0
- data/Gemfile +3 -0
- data/README.md +10 -0
- data/Rakefile +10 -0
- data/TextFormattingRules +137 -0
- data/TextFormattingRules.ja +143 -0
- data/bin/qwikdoc +34 -0
- data/lib/qwik_doc.rb +15 -0
- data/lib/qwik_doc/hack.rb +184 -0
- data/qwikdoc.gemspec +26 -0
- data/spec/qwik_doc_spec.rb +305 -0
- data/spec/spec_helper.rb +12 -0
- data/vendor/qwik/Makefile +63 -0
- data/vendor/qwik/Rakefile +17 -0
- data/vendor/qwik/act-aa.rb +83 -0
- data/vendor/qwik/act-archive.rb +386 -0
- data/vendor/qwik/act-attach.rb +304 -0
- data/vendor/qwik/act-backup.rb +236 -0
- data/vendor/qwik/act-basic.rb +325 -0
- data/vendor/qwik/act-book.rb +161 -0
- data/vendor/qwik/act-calc.rb +371 -0
- data/vendor/qwik/act-charset.rb +251 -0
- data/vendor/qwik/act-christel.rb +112 -0
- data/vendor/qwik/act-chronology.rb +149 -0
- data/vendor/qwik/act-code.rb +155 -0
- data/vendor/qwik/act-comment.rb +554 -0
- data/vendor/qwik/act-config.rb +49 -0
- data/vendor/qwik/act-counter.rb +125 -0
- data/vendor/qwik/act-day.rb +96 -0
- data/vendor/qwik/act-describe.rb +135 -0
- data/vendor/qwik/act-diary.rb +109 -0
- data/vendor/qwik/act-edit.rb +317 -0
- data/vendor/qwik/act-embed-html.rb +296 -0
- data/vendor/qwik/act-emode.rb +150 -0
- data/vendor/qwik/act-event.rb +187 -0
- data/vendor/qwik/act-file.rb +303 -0
- data/vendor/qwik/act-files.rb +771 -0
- data/vendor/qwik/act-getpass.rb +295 -0
- data/vendor/qwik/act-history.rb +136 -0
- data/vendor/qwik/act-html.rb +204 -0
- data/vendor/qwik/act-httpauth.rb +147 -0
- data/vendor/qwik/act-include.rb +142 -0
- data/vendor/qwik/act-interwiki.rb +189 -0
- data/vendor/qwik/act-isearch.rb +109 -0
- data/vendor/qwik/act-keywords.rb +137 -0
- data/vendor/qwik/act-lang.rb +81 -0
- data/vendor/qwik/act-license.rb +63 -0
- data/vendor/qwik/act-list.rb +287 -0
- data/vendor/qwik/act-login.rb +410 -0
- data/vendor/qwik/act-logout.rb +60 -0
- data/vendor/qwik/act-mail.rb +159 -0
- data/vendor/qwik/act-map.rb +292 -0
- data/vendor/qwik/act-md5.rb +42 -0
- data/vendor/qwik/act-mdlb.rb +741 -0
- data/vendor/qwik/act-media.rb +416 -0
- data/vendor/qwik/act-member.rb +157 -0
- data/vendor/qwik/act-menu.rb +142 -0
- data/vendor/qwik/act-metadata.rb +323 -0
- data/vendor/qwik/act-mlsubmitform.rb +49 -0
- data/vendor/qwik/act-monitor.rb +167 -0
- data/vendor/qwik/act-new.rb +418 -0
- data/vendor/qwik/act-pagelist.rb +248 -0
- data/vendor/qwik/act-password.rb +145 -0
- data/vendor/qwik/act-plan.rb +210 -0
- data/vendor/qwik/act-povray.rb +230 -0
- data/vendor/qwik/act-presen.rb +380 -0
- data/vendor/qwik/act-redirect.rb +133 -0
- data/vendor/qwik/act-ring.rb +1071 -0
- data/vendor/qwik/act-rrefs.rb +255 -0
- data/vendor/qwik/act-ruby.rb +116 -0
- data/vendor/qwik/act-sample.rb +170 -0
- data/vendor/qwik/act-save.rb +295 -0
- data/vendor/qwik/act-schedule.rb +374 -0
- data/vendor/qwik/act-search.rb +180 -0
- data/vendor/qwik/act-searchwords.rb +51 -0
- data/vendor/qwik/act-sendpass.rb +83 -0
- data/vendor/qwik/act-site.rb +89 -0
- data/vendor/qwik/act-sitebackup.rb +419 -0
- data/vendor/qwik/act-sitelog.rb +118 -0
- data/vendor/qwik/act-smil.rb +299 -0
- data/vendor/qwik/act-status.rb +220 -0
- data/vendor/qwik/act-style.rb +608 -0
- data/vendor/qwik/act-table.rb +263 -0
- data/vendor/qwik/act-tableform.rb +241 -0
- data/vendor/qwik/act-tag.rb +103 -0
- data/vendor/qwik/act-text.rb +70 -0
- data/vendor/qwik/act-textarea.rb +164 -0
- data/vendor/qwik/act-theme.rb +346 -0
- data/vendor/qwik/act-toc.rb +112 -0
- data/vendor/qwik/act-typekey.rb +198 -0
- data/vendor/qwik/act-under-const.rb +94 -0
- data/vendor/qwik/act-webservice.rb +321 -0
- data/vendor/qwik/act-wema.rb +558 -0
- data/vendor/qwik/act-wysiwyg.rb +238 -0
- data/vendor/qwik/action.rb +325 -0
- data/vendor/qwik/autoreload.rb +98 -0
- data/vendor/qwik/bench-bench.rb +28 -0
- data/vendor/qwik/bench-emode.rb +47 -0
- data/vendor/qwik/bench-format-xml.rb +70 -0
- data/vendor/qwik/bench-large-table.rb +62 -0
- data/vendor/qwik/bench-md5.rb +14 -0
- data/vendor/qwik/bench-module-session.rb +19 -0
- data/vendor/qwik/bench-page.rb +50 -0
- data/vendor/qwik/bench-s-md5.rb +28 -0
- data/vendor/qwik/bench-session.rb +25 -0
- data/vendor/qwik/bench-textformat.rb +31 -0
- data/vendor/qwik/catalog-factory.rb +91 -0
- data/vendor/qwik/catalog-ja.rb +479 -0
- data/vendor/qwik/catalog-ml-ja.rb +145 -0
- data/vendor/qwik/check-act-monitor.rb +112 -0
- data/vendor/qwik/check-act-monitor2.rb +46 -0
- data/vendor/qwik/check-act-theme.rb +27 -0
- data/vendor/qwik/check-event.rb +112 -0
- data/vendor/qwik/check-event2.rb +55 -0
- data/vendor/qwik/check-htree-rexml.rb +77 -0
- data/vendor/qwik/check-htree.rb +51 -0
- data/vendor/qwik/check-libxml.rb +135 -0
- data/vendor/qwik/check-many-pages.rb +47 -0
- data/vendor/qwik/check-monitor.rb +33 -0
- data/vendor/qwik/check-observer.rb +67 -0
- data/vendor/qwik/check-server.rb +61 -0
- data/vendor/qwik/check-uuencode.rb +33 -0
- data/vendor/qwik/check-webdav.rb +65 -0
- data/vendor/qwik/check-xml-xpath.rb +27 -0
- data/vendor/qwik/common-backtrace.rb +94 -0
- data/vendor/qwik/common-basic.rb +111 -0
- data/vendor/qwik/common-condition.rb +142 -0
- data/vendor/qwik/common-error.rb +48 -0
- data/vendor/qwik/common-gettext.rb +50 -0
- data/vendor/qwik/common-javascript.rb +45 -0
- data/vendor/qwik/common-notice.rb +132 -0
- data/vendor/qwik/common-plain.rb +105 -0
- data/vendor/qwik/common-plugin.rb +111 -0
- data/vendor/qwik/common-res.rb +76 -0
- data/vendor/qwik/common-resolve.rb +92 -0
- data/vendor/qwik/common-send.rb +171 -0
- data/vendor/qwik/common-session.rb +139 -0
- data/vendor/qwik/common-surface.rb +261 -0
- data/vendor/qwik/common-url.rb +90 -0
- data/vendor/qwik/compat/Makefile +12 -0
- data/vendor/qwik/compat/add_load_path.rb +1 -0
- data/vendor/qwik/config.rb +299 -0
- data/vendor/qwik/db-b-backup.rb +142 -0
- data/vendor/qwik/db-backup.rb +184 -0
- data/vendor/qwik/db-berkeley.rb +306 -0
- data/vendor/qwik/db-filesystem.rb +305 -0
- data/vendor/qwik/db-indexer.rb +154 -0
- data/vendor/qwik/db-searchwords.rb +238 -0
- data/vendor/qwik/description-ja.rb +267 -0
- data/vendor/qwik/description.rb +256 -0
- data/vendor/qwik/dev-add-copyright.rb +23 -0
- data/vendor/qwik/dev-backup.rb +24 -0
- data/vendor/qwik/dev-bench.rb +175 -0
- data/vendor/qwik/dev-calctime.rb +52 -0
- data/vendor/qwik/dev-css-compressor.rb +60 -0
- data/vendor/qwik/dev-extract-catalog.rb +102 -0
- data/vendor/qwik/dev-js-compressor.rb +73 -0
- data/vendor/qwik/dev-release.rb +235 -0
- data/vendor/qwik/dev-replace.rb +353 -0
- data/vendor/qwik/dev-sendmail.rb +25 -0
- data/vendor/qwik/farm.rb +283 -0
- data/vendor/qwik/gettext.rb +56 -0
- data/vendor/qwik/group-cond.rb +157 -0
- data/vendor/qwik/group-config.rb +247 -0
- data/vendor/qwik/group-confirm.rb +147 -0
- data/vendor/qwik/group-db.rb +326 -0
- data/vendor/qwik/group-mail.rb +195 -0
- data/vendor/qwik/group-member.rb +307 -0
- data/vendor/qwik/group-sendmail.rb +231 -0
- data/vendor/qwik/group-site.rb +374 -0
- data/vendor/qwik/group-sweep.rb +63 -0
- data/vendor/qwik/group.rb +157 -0
- data/vendor/qwik/helper.rb +6 -0
- data/vendor/qwik/html-generator.rb +104 -0
- data/vendor/qwik/html-to-wabisabi.rb +149 -0
- data/vendor/qwik/htree-diff.rb +87 -0
- data/vendor/qwik/htree-format-xml.rb +57 -0
- data/vendor/qwik/htree-generator.rb +144 -0
- data/vendor/qwik/htree-get.rb +251 -0
- data/vendor/qwik/htree-html-generator.rb +179 -0
- data/vendor/qwik/htree-template.rb +263 -0
- data/vendor/qwik/htree-to-wabisabi.rb +171 -0
- data/vendor/qwik/loadlib.rb +79 -0
- data/vendor/qwik/logger.rb +115 -0
- data/vendor/qwik/mail-body.rb +171 -0
- data/vendor/qwik/mail-header.rb +474 -0
- data/vendor/qwik/mail-multipart.rb +193 -0
- data/vendor/qwik/mail-parse.rb +147 -0
- data/vendor/qwik/mail.rb +341 -0
- data/vendor/qwik/mailaddress.rb +83 -0
- data/vendor/qwik/mdlb-model.rb +81 -0
- data/vendor/qwik/mdlb-sample.rb +324 -0
- data/vendor/qwik/ml-catalog-factory.rb +27 -0
- data/vendor/qwik/ml-exception.rb +15 -0
- data/vendor/qwik/ml-generator.rb +28 -0
- data/vendor/qwik/ml-gettext.rb +137 -0
- data/vendor/qwik/ml-logger.rb +82 -0
- data/vendor/qwik/ml-memory.rb +65 -0
- data/vendor/qwik/ml-msg-validator.rb +86 -0
- data/vendor/qwik/ml-processor.rb +609 -0
- data/vendor/qwik/ml-quickml-server.rb +122 -0
- data/vendor/qwik/ml-sendmail.rb +0 -0
- data/vendor/qwik/ml-server.rb +107 -0
- data/vendor/qwik/ml-session.rb +348 -0
- data/vendor/qwik/ml-sweeper.rb +101 -0
- data/vendor/qwik/mock-logger.rb +65 -0
- data/vendor/qwik/mock-sendmail.rb +78 -0
- data/vendor/qwik/mock-socket.rb +82 -0
- data/vendor/qwik/modulobe.rb +406 -0
- data/vendor/qwik/mongrel-server.rb +72 -0
- data/vendor/qwik/page-files.rb +249 -0
- data/vendor/qwik/page-generate.rb +82 -0
- data/vendor/qwik/page-get.rb +262 -0
- data/vendor/qwik/page-images.rb +168 -0
- data/vendor/qwik/page-put.rb +128 -0
- data/vendor/qwik/page-rrefs.rb +154 -0
- data/vendor/qwik/page-title.rb +0 -0
- data/vendor/qwik/page-wikidb.rb +234 -0
- data/vendor/qwik/page.rb +67 -0
- data/vendor/qwik/pages.rb +444 -0
- data/vendor/qwik/parse-plugin.rb +249 -0
- data/vendor/qwik/parser-emode.rb +116 -0
- data/vendor/qwik/parser-inline.rb +273 -0
- data/vendor/qwik/parser.rb +350 -0
- data/vendor/qwik/password.rb +183 -0
- data/vendor/qwik/periodic.rb +79 -0
- data/vendor/qwik/qp.rb +56 -0
- data/vendor/qwik/qwik-service.rb +341 -0
- data/vendor/qwik/qwik.rb +5 -0
- data/vendor/qwik/qwikweb-adduser.rb +34 -0
- data/vendor/qwik/qwikweb-catalog-validator.rb +110 -0
- data/vendor/qwik/qwikweb-incgen.rb +28 -0
- data/vendor/qwik/qwikweb-makesite.rb +41 -0
- data/vendor/qwik/qwikweb-server.rb +44 -0
- data/vendor/qwik/qwikweb-showpassword.rb +26 -0
- data/vendor/qwik/qwikweb-watchlog.rb +67 -0
- data/vendor/qwik/request-path.rb +304 -0
- data/vendor/qwik/request-ua.rb +76 -0
- data/vendor/qwik/request-webrick.rb +81 -0
- data/vendor/qwik/request.rb +91 -0
- data/vendor/qwik/resolve-tdiary.rb +292 -0
- data/vendor/qwik/resolve.rb +121 -0
- data/vendor/qwik/response.rb +228 -0
- data/vendor/qwik/server-memory.rb +57 -0
- data/vendor/qwik/server-webrick.rb +102 -0
- data/vendor/qwik/server.rb +252 -0
- data/vendor/qwik/site-config.rb +149 -0
- data/vendor/qwik/site-db.rb +136 -0
- data/vendor/qwik/site-event.rb +162 -0
- data/vendor/qwik/site-files.rb +86 -0
- data/vendor/qwik/site-group.rb +103 -0
- data/vendor/qwik/site-index.rb +47 -0
- data/vendor/qwik/site-log.rb +64 -0
- data/vendor/qwik/site-member.rb +230 -0
- data/vendor/qwik/site-monitor.rb +97 -0
- data/vendor/qwik/site-pages.rb +62 -0
- data/vendor/qwik/site-plan.rb +139 -0
- data/vendor/qwik/site-report.rb +282 -0
- data/vendor/qwik/site-resolve.rb +230 -0
- data/vendor/qwik/site-rrefs.rb +18 -0
- data/vendor/qwik/site-search.rb +180 -0
- data/vendor/qwik/site-timeline.rb +153 -0
- data/vendor/qwik/site-url.rb +189 -0
- data/vendor/qwik/site.rb +76 -0
- data/vendor/qwik/smil-time.rb +105 -0
- data/vendor/qwik/smtp-session.rb +331 -0
- data/vendor/qwik/template-generator.rb +149 -0
- data/vendor/qwik/template.rb +85 -0
- data/vendor/qwik/test-common.rb +10 -0
- data/vendor/qwik/test-ml-info.rb +225 -0
- data/vendor/qwik/test-module-ml.rb +142 -0
- data/vendor/qwik/test-module-path.rb +110 -0
- data/vendor/qwik/test-module-public.rb +70 -0
- data/vendor/qwik/test-module-server.rb +98 -0
- data/vendor/qwik/test-module-session.rb +264 -0
- data/vendor/qwik/test-module-suite.rb +91 -0
- data/vendor/qwik/test-ms-applemail.rb +59 -0
- data/vendor/qwik/test-ms-attach.rb +174 -0
- data/vendor/qwik/test-ms-basic.rb +40 -0
- data/vendor/qwik/test-ms-close.rb +35 -0
- data/vendor/qwik/test-ms-confirm.rb +75 -0
- data/vendor/qwik/test-ms-ignore-spam.rb +57 -0
- data/vendor/qwik/test-ms-japanese.rb +97 -0
- data/vendor/qwik/test-ms-jfilename.rb +82 -0
- data/vendor/qwik/test-ms-large.rb +58 -0
- data/vendor/qwik/test-ms-member.rb +103 -0
- data/vendor/qwik/test-ms-multipart.rb +84 -0
- data/vendor/qwik/test-ms-org.rb +129 -0
- data/vendor/qwik/test-ms-plan.rb +130 -0
- data/vendor/qwik/test-ms-post.rb +53 -0
- data/vendor/qwik/test-ms-quopri.rb +76 -0
- data/vendor/qwik/test-sub-quopri.rb +45 -0
- data/vendor/qwik/test-submit-base64.rb +59 -0
- data/vendor/qwik/test-submit-forward.rb +61 -0
- data/vendor/qwik/test-submit-html-mail.rb +52 -0
- data/vendor/qwik/test-submit-japanese.rb +135 -0
- data/vendor/qwik/test-submit-jfilename.rb +144 -0
- data/vendor/qwik/test-submit-uuencode.rb +71 -0
- data/vendor/qwik/test-suite-all.rb +8 -0
- data/vendor/qwik/test-suite-basic.rb +9 -0
- data/vendor/qwik/test-suite-ml.rb +9 -0
- data/vendor/qwik/test-typekey.rb +64 -0
- data/vendor/qwik/testunit.rb +45 -0
- data/vendor/qwik/tokenizer-inline.rb +294 -0
- data/vendor/qwik/tokenizer.rb +332 -0
- data/vendor/qwik/typekey.rb +160 -0
- data/vendor/qwik/util-basic.rb +135 -0
- data/vendor/qwik/util-charset.rb +332 -0
- data/vendor/qwik/util-css.rb +56 -0
- data/vendor/qwik/util-csv-tokenizer.rb +113 -0
- data/vendor/qwik/util-filename.rb +112 -0
- data/vendor/qwik/util-pathname.rb +202 -0
- data/vendor/qwik/util-pid.rb +58 -0
- data/vendor/qwik/util-safe.rb +67 -0
- data/vendor/qwik/util-sendmail.rb +273 -0
- data/vendor/qwik/util-string.rb +203 -0
- data/vendor/qwik/util-time.rb +125 -0
- data/vendor/qwik/util-webrick.rb +176 -0
- data/vendor/qwik/version.rb +11 -0
- data/vendor/qwik/wabisabi-basic.rb +163 -0
- data/vendor/qwik/wabisabi-diff.rb +130 -0
- data/vendor/qwik/wabisabi-format-xml.rb +310 -0
- data/vendor/qwik/wabisabi-generator.rb +262 -0
- data/vendor/qwik/wabisabi-index.rb +174 -0
- data/vendor/qwik/wabisabi-table.rb +212 -0
- data/vendor/qwik/wabisabi-template.rb +295 -0
- data/vendor/qwik/wabisabi-to-htree.rb +111 -0
- data/vendor/qwik/wabisabi-to-wiki.rb +690 -0
- data/vendor/qwik/wabisabi-traverse.rb +207 -0
- data/vendor/qwik/wabisabi-validator.rb +116 -0
- data/vendor/qwik/wabisabi.rb +5 -0
- metadata +416 -0
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
|
|
7
|
+
module Qwik
|
|
8
|
+
class Action
|
|
9
|
+
def plg_thissitename
|
|
10
|
+
return @site.title
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def plg_thislist
|
|
14
|
+
return @site.ml_address
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Thanks to Mr. Shuhei Yamamoto.
|
|
18
|
+
def plg_ml_submit_form
|
|
19
|
+
href = "/formmail.php?user=#{@req.user}&site=#{@site.sitename}"
|
|
20
|
+
return [:a, {:href=>href, :target=>'_new'}, _('Mlcommit')]
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
if $0 == __FILE__
|
|
26
|
+
require 'qwik/test-common'
|
|
27
|
+
$test = true
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
if defined?($test) && $test
|
|
31
|
+
class TestActMLSubmitForm < Test::Unit::TestCase
|
|
32
|
+
include TestSession
|
|
33
|
+
|
|
34
|
+
def test_all
|
|
35
|
+
res = session
|
|
36
|
+
|
|
37
|
+
# test_plg_thissitename
|
|
38
|
+
eq '', @action.plg_thissitename
|
|
39
|
+
|
|
40
|
+
# test_plg_thislist
|
|
41
|
+
eq 'test@q.example.com', @action.plg_thislist
|
|
42
|
+
|
|
43
|
+
# test_plg_ml_submit_form
|
|
44
|
+
eq [:a, {:href=>"/formmail.php?user=user@e.com&site=test",
|
|
45
|
+
:target=>'_new'}, 'Mlcommit'],
|
|
46
|
+
@action.plg_ml_submit_form
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,167 @@
|
|
|
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/site-monitor'
|
|
7
|
+
|
|
8
|
+
module Qwik
|
|
9
|
+
class Action
|
|
10
|
+
# ============================== shout to monitor
|
|
11
|
+
def c_monitor(cmd)
|
|
12
|
+
ev = {}
|
|
13
|
+
ev[:title] = 'Event occured.'
|
|
14
|
+
ev[:cmd] = cmd.to_s
|
|
15
|
+
ev[:pagename] = @req.base
|
|
16
|
+
@site.sitemonitor.shout(ev)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# ============================== monitor plugin
|
|
20
|
+
def plg_monitor(pagename=@req.base)
|
|
21
|
+
return if defined?(@monitor_defined)
|
|
22
|
+
@monitor_defined = true
|
|
23
|
+
script = "
|
|
24
|
+
g_monitor_env.add('#{pagename}');
|
|
25
|
+
g_monitor_env.start();
|
|
26
|
+
"
|
|
27
|
+
div = [:div, {:id=>'monitor'}]
|
|
28
|
+
div << "monitor(#{pagename})" if defined?($test) && $test
|
|
29
|
+
div << [:script, {:type=>'text/javascript',
|
|
30
|
+
:src=>'.theme/js/monitor.js'}, '']
|
|
31
|
+
div << [:script, {:type=>'text/javascript'}, script]
|
|
32
|
+
return div
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# ============================== monitor connection
|
|
36
|
+
def ext_monitor
|
|
37
|
+
mon = @site.sitemonitor # Connect to site monitor.
|
|
38
|
+
mon.listen(self) {|ev| # Wait for update.
|
|
39
|
+
next if ev[:pagename] != @req.base
|
|
40
|
+
if ev[:cmd] == 'save'
|
|
41
|
+
return monitor_save
|
|
42
|
+
end
|
|
43
|
+
}
|
|
44
|
+
return monitor_disconnect
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def monitor_save
|
|
48
|
+
c_set_status
|
|
49
|
+
c_set_html
|
|
50
|
+
c_set_no_cache('no-cache', 'no-cache, must-revalidate')
|
|
51
|
+
page = @site[@req.base]
|
|
52
|
+
str = page.get_body
|
|
53
|
+
w = c_res(str)
|
|
54
|
+
w = c_tdiary_resolve(w)
|
|
55
|
+
w = w.format_xml.page_to_xml if ! $test
|
|
56
|
+
c_set_body(w)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def monitor_disconnect
|
|
60
|
+
monitor_message('disconnect')
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def monitor_message(title)
|
|
64
|
+
c_set_status
|
|
65
|
+
c_set_html
|
|
66
|
+
c_set_no_cache('no-cache', 'no-cache, must-revalidate')
|
|
67
|
+
w = [:msg, title]
|
|
68
|
+
w = w.format_xml.page_to_xml if ! $test
|
|
69
|
+
c_set_body(w)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
if $0 == __FILE__
|
|
76
|
+
require 'qwik/test-common'
|
|
77
|
+
$test = true
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
if defined?($test) && $test
|
|
81
|
+
#class TestActMonitor < Test::Unit::TestCase
|
|
82
|
+
class TestActMonitor
|
|
83
|
+
include TestSession
|
|
84
|
+
|
|
85
|
+
def setup_monitor
|
|
86
|
+
#Thread.abort_on_exception = true
|
|
87
|
+
t_add_user
|
|
88
|
+
page = @site.create_new
|
|
89
|
+
page.store('*t')
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_act_monitor_1st
|
|
93
|
+
setup_monitor
|
|
94
|
+
|
|
95
|
+
t = Thread.new {
|
|
96
|
+
tres = session('/test/1.save?contents=t2')
|
|
97
|
+
ok_in(['Page is saved.'], 'title', tres)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
res = session('/test/1.monitor') # Wait for update.
|
|
101
|
+
ok_in([:p, 't2'], "//div[@class='section']", res)
|
|
102
|
+
|
|
103
|
+
t.join # Wait for the thread.
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def test_act_monitor
|
|
107
|
+
setup_monitor
|
|
108
|
+
|
|
109
|
+
t = Thread.new {
|
|
110
|
+
res = session('/test/1.monitor') # Wait for update.
|
|
111
|
+
ok_in([:p, 't2'], "//div[@class='section']", res)
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
tres = session('/test/1.save?contents=t2')
|
|
115
|
+
ok_in(['Page is saved.'], 'title', tres)
|
|
116
|
+
|
|
117
|
+
t.join # Wait for the thread.
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def test_several_monitors
|
|
121
|
+
setup_monitor
|
|
122
|
+
|
|
123
|
+
# FIXME: This test sometimes fails.
|
|
124
|
+
t1 = Thread.new {
|
|
125
|
+
t1res = session('/test/1.monitor') # Wait for update.
|
|
126
|
+
ok_in([:p, 't3'], "//div[@class='section']", t1res)
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
# FIXME: Sometimes fails.
|
|
130
|
+
t2 = Thread.new {
|
|
131
|
+
t2res = session('/test/1.monitor') # Wait for update.
|
|
132
|
+
ok_in([:p, 't3'], "//div[@class='section']", t2res)
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
#sleep 0.5
|
|
136
|
+
#sleep 0.1
|
|
137
|
+
tres = session('/test/1.save?contents=t3')
|
|
138
|
+
ok_in(['Page is saved.'], 'title', tres)
|
|
139
|
+
|
|
140
|
+
t1.join # Wait for the thread.
|
|
141
|
+
t2.join # Wait for the thread.
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def nutest_many_monitors
|
|
145
|
+
setup_monitor
|
|
146
|
+
|
|
147
|
+
ts = []
|
|
148
|
+
res = []
|
|
149
|
+
max = 15
|
|
150
|
+
|
|
151
|
+
(0..max).each {|i|
|
|
152
|
+
ts[i] = Thread.new {
|
|
153
|
+
res[i] = session('/test/1.monitor') # Wait for update.
|
|
154
|
+
ok_in([:p, 't3'], "//div[@class='section']", res[i])
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
#sleep 0.1
|
|
159
|
+
tres = session('/test/1.save?contents=t3')
|
|
160
|
+
assert_text('Page is saved.', 'title', tres)
|
|
161
|
+
|
|
162
|
+
(0..max).each {|i|
|
|
163
|
+
ts[i].join # Wait for the thread.
|
|
164
|
+
}
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
# -*- coding: shift_jis -*-
|
|
2
|
+
# Copyright (C) 2003-2006 Kouichirou Eto, All rights reserved.
|
|
3
|
+
# This is free software with ABSOLUTELY NO WARRANTY.
|
|
4
|
+
# You can redistribute it and/or modify it under the terms of the GNU GPL 2.
|
|
5
|
+
|
|
6
|
+
$LOAD_PATH.unshift '..' unless $LOAD_PATH.include? '..'
|
|
7
|
+
require 'qwik/act-monitor'
|
|
8
|
+
#require 'qwik/act-rrefs'
|
|
9
|
+
require 'qwik/page-title'
|
|
10
|
+
|
|
11
|
+
module Qwik
|
|
12
|
+
class Action
|
|
13
|
+
def act_new
|
|
14
|
+
c_require_login
|
|
15
|
+
|
|
16
|
+
# Check if the title is specified.
|
|
17
|
+
title = @req.query['t']
|
|
18
|
+
return new_input_title if title.nil? || title.empty?
|
|
19
|
+
|
|
20
|
+
# Parse page title.
|
|
21
|
+
page_title, tags = Page.parse_title(title)
|
|
22
|
+
|
|
23
|
+
# Check if the page title is here.
|
|
24
|
+
return new_input_title if page_title.nil? || page_title.empty?
|
|
25
|
+
|
|
26
|
+
# Check if the title is already exist.
|
|
27
|
+
page = @site.get_by_title(page_title)
|
|
28
|
+
return new_already_exist(page_title, page.key) if page
|
|
29
|
+
|
|
30
|
+
# Check if the request is GET.
|
|
31
|
+
return new_confirm(title) if ! @req.is_post?
|
|
32
|
+
|
|
33
|
+
if Page.valid_as_pagekey?(page_title)
|
|
34
|
+
key = page_title
|
|
35
|
+
else
|
|
36
|
+
key = @site.get_new_id
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
begin
|
|
40
|
+
page = @site.create(key) # CREATE
|
|
41
|
+
rescue PageExistError
|
|
42
|
+
# FIXME: should retry?
|
|
43
|
+
return new_already_exist(page_title, key)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
c_make_log('create', key) # CREATE
|
|
47
|
+
c_monitor("create#{key}") # CREATE
|
|
48
|
+
|
|
49
|
+
page.store("* #{title}\n") # with tag
|
|
50
|
+
|
|
51
|
+
url = "#{key}.edit"
|
|
52
|
+
|
|
53
|
+
# create_rrefs(key)
|
|
54
|
+
site_updated
|
|
55
|
+
|
|
56
|
+
return c_notice(_('New page'), url, 201) { # 201, Created
|
|
57
|
+
[[:h2, _('Created.')],
|
|
58
|
+
[:p, [:a, {:href=>url}, _('Edit new page')]]]
|
|
59
|
+
}
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def new_input_title
|
|
63
|
+
ar = []
|
|
64
|
+
form = new_form
|
|
65
|
+
return new_tail(ar, form)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def new_already_exist(title, key)
|
|
69
|
+
ar = []
|
|
70
|
+
ar << [:h2, _('Already exists')]
|
|
71
|
+
form = new_form(title) {
|
|
72
|
+
[:p, [:a, {:href=>key+'.html'}, [:strong, title]],
|
|
73
|
+
_(' already exists.'), [:br],
|
|
74
|
+
_('Please specify another title.')]
|
|
75
|
+
}
|
|
76
|
+
return new_tail(ar, form)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def new_confirm(title)
|
|
80
|
+
ar = []
|
|
81
|
+
ar << [:h2, _('Confirm')]
|
|
82
|
+
form = new_form(title) {
|
|
83
|
+
[:p, _('Push create.')]
|
|
84
|
+
}
|
|
85
|
+
return new_tail(ar, form)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def new_form(title=nil)
|
|
89
|
+
form = [:form, {:action=>'.new', :method=>'POST'},
|
|
90
|
+
[:dl, [:dt, _('Title')],
|
|
91
|
+
[:dd, [:input, {:name=>'t', :value=>title, :class=>'focus'}]]]]
|
|
92
|
+
form << yield if block_given?
|
|
93
|
+
form << [:p, [:input, {:type=>'submit', :value=>_("New page")}]]
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def new_tail(ar, form)
|
|
97
|
+
ar << [:div, {:class=>'form'}, form]
|
|
98
|
+
ar << [:hr]
|
|
99
|
+
ar << [:p, [:a, {:href=>"FrontPage.html"}, _("Go back")]]
|
|
100
|
+
return c_notice(_('New page')) { ar }
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def action_page_not_found
|
|
104
|
+
# Assert that the title is encoded in UTF8.
|
|
105
|
+
# @req.base.charset is already set to 'UTF-8' in request-path.rb
|
|
106
|
+
title = @req.base.to_page_charset
|
|
107
|
+
c_notfound(_('Page not found.')) {
|
|
108
|
+
[[:h2, _('Page not found.')],
|
|
109
|
+
[:p, [:a, {:href=>'FrontPage.html'}, _('Go back')]],
|
|
110
|
+
[:hr],
|
|
111
|
+
new_form(title) {
|
|
112
|
+
[:p, _('Push create if you would like to create the page.')]
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
if $0 == __FILE__
|
|
121
|
+
require 'qwik/test-common'
|
|
122
|
+
$test = true
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
if defined?($test) && $test
|
|
126
|
+
class TestActNew < Test::Unit::TestCase
|
|
127
|
+
include TestSession
|
|
128
|
+
|
|
129
|
+
def test_create_new
|
|
130
|
+
t_add_user
|
|
131
|
+
|
|
132
|
+
# See .new page
|
|
133
|
+
res = session('/test/.new')
|
|
134
|
+
assert_attr({:action=>'.new', :method=>'POST'}, 'form')
|
|
135
|
+
ok_xp([:input, {:value=>nil, :class=>'focus', :name=>'t'}], '//input')
|
|
136
|
+
ok_xp([:input, {:value=>'New page', :type=>'submit'}], "//input[2]")
|
|
137
|
+
|
|
138
|
+
# Create a new page.
|
|
139
|
+
res = session("POST /test/.new?t=FirstPage")
|
|
140
|
+
ok_title('New page')
|
|
141
|
+
ok_in(['Edit new page'], "//div[@class='section']//a")
|
|
142
|
+
ok_xp([:a, {:href=>'FirstPage.edit'}, 'Edit new page'],
|
|
143
|
+
"//div[@class='section']//a")
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def test_with_tag
|
|
147
|
+
t_add_user
|
|
148
|
+
|
|
149
|
+
res = session("POST /test/.new?t=[tag] t")
|
|
150
|
+
ok_xp([:a, {:href=>'t.edit'}, 'Edit new page'],
|
|
151
|
+
"//div[@class='section']//a")
|
|
152
|
+
page = @site['t']
|
|
153
|
+
ok_eq("* [tag] t\n", page.load)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def test_opensite_new
|
|
157
|
+
t_add_user
|
|
158
|
+
t_site_open # OPEN site
|
|
159
|
+
|
|
160
|
+
res = session('/test/') {|req|
|
|
161
|
+
req.cookies.clear
|
|
162
|
+
}
|
|
163
|
+
ok_title('FrontPage') # You can see the FrontPage.
|
|
164
|
+
ok_in(['Login'], "//div[@class='adminmenu']//a") # But, not logged in.
|
|
165
|
+
|
|
166
|
+
# Try to see the .new page
|
|
167
|
+
res = session('/test/.new') {|req|
|
|
168
|
+
req.cookies.clear
|
|
169
|
+
}
|
|
170
|
+
ok_title('Please log in.') # You can't see the form.
|
|
171
|
+
ok_in(['You need to log in to use this function.'], 'p')
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
class TestActNewWithEmbed < Test::Unit::TestCase
|
|
176
|
+
include TestSession
|
|
177
|
+
|
|
178
|
+
def test_embeded_new
|
|
179
|
+
t_add_user
|
|
180
|
+
page = @site['FrontPage']
|
|
181
|
+
page.store("[[FirstPage]]")
|
|
182
|
+
|
|
183
|
+
# See FrontPage
|
|
184
|
+
res = session('/test/')
|
|
185
|
+
ok_title('FrontPage')
|
|
186
|
+
ok_in([:span, {:class=>'new'}, 'FirstPage',
|
|
187
|
+
[:a, {:href=>".new?t=FirstPage"},
|
|
188
|
+
[:img, {:src=>'.theme/i/new.png', :alt=>'create'}]]],
|
|
189
|
+
"//div[@class='section']/p")
|
|
190
|
+
|
|
191
|
+
# To confirm
|
|
192
|
+
res = session("/test/.new?t=FirstPage")
|
|
193
|
+
ok_title('New page')
|
|
194
|
+
ok_in(['New page'], 'h1')
|
|
195
|
+
ok_in(['Confirm'], 'h2')
|
|
196
|
+
assert_attr({:action=>'.new', :method=>'POST'}, 'form')
|
|
197
|
+
ok_xp([:input, {:value=>'FirstPage', :class=>'focus', :name=>'t'}],
|
|
198
|
+
'//input')
|
|
199
|
+
ok_xp([:input, {:value=>'New page', :type=>'submit'}],
|
|
200
|
+
"//input[2]")
|
|
201
|
+
|
|
202
|
+
# Create a new page.
|
|
203
|
+
res = session("POST /test/.new?t=FirstPage")
|
|
204
|
+
ok_in(['Edit new page'], "//div[@class='section']//a")
|
|
205
|
+
ok_xp([:a, {:href=>'FirstPage.edit'}, 'Edit new page'],
|
|
206
|
+
"//div[@class='section']//a")
|
|
207
|
+
|
|
208
|
+
# Check the new page
|
|
209
|
+
ok_eq("* FirstPage\n", @site['FirstPage'].load)
|
|
210
|
+
|
|
211
|
+
# Try to create with the same key.
|
|
212
|
+
res = session("/test/.new?t=FirstPage")
|
|
213
|
+
ok_in(['Already exists'], '//h2')
|
|
214
|
+
ok_xp([:a, {:href=>'FirstPage.html'}, [:strong, 'FirstPage']],
|
|
215
|
+
"//div[@class='section']/a")
|
|
216
|
+
|
|
217
|
+
# Try to create with the same key.
|
|
218
|
+
res = session("POST /test/.new?t=FirstPage")
|
|
219
|
+
ok_in(['Already exists'], '//h2')
|
|
220
|
+
ok_xp([:a, {:href=>'FirstPage.html'}, [:strong, 'FirstPage']],
|
|
221
|
+
"//div[@class='section']/a")
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
def test_embeded_new_with_space
|
|
225
|
+
t_add_user
|
|
226
|
+
page = @site['FrontPage']
|
|
227
|
+
page.store("[[First Page]]")
|
|
228
|
+
ok_eq('FrontPage', page.get_title)
|
|
229
|
+
|
|
230
|
+
# see a page
|
|
231
|
+
res = session('/test/')
|
|
232
|
+
ok_in(['First Page', [:a, {:href=>".new?t=First+Page"},
|
|
233
|
+
[:img, {:src=>'.theme/i/new.png', :alt=>'create'}]]],
|
|
234
|
+
"//span[@class='new']")
|
|
235
|
+
|
|
236
|
+
# Please input corresponding page key
|
|
237
|
+
res = session("/test/.new?t=First+Page")
|
|
238
|
+
ok_in(['New page'], 'h1')
|
|
239
|
+
ok_in(['Confirm'], 'h2')
|
|
240
|
+
assert_attr({:action=>'.new', :method=>'POST'}, 'form')
|
|
241
|
+
ok_xp([:input, {:value=>'First Page',
|
|
242
|
+
:class=>'focus', :name=>'t'}], '//input')
|
|
243
|
+
ok_xp([:input, {:value=>'New page', :type=>'submit'}], "//input[2]")
|
|
244
|
+
|
|
245
|
+
# POST
|
|
246
|
+
res = session("POST /test/.new?t=First Page")
|
|
247
|
+
ok_in(['New page'], 'h1')
|
|
248
|
+
ok_in(['Edit new page'], "//div[@class='section']//a")
|
|
249
|
+
ok_xp([:a, {:href=>'1.edit'}, 'Edit new page'],
|
|
250
|
+
"//div[@class='section']//a")
|
|
251
|
+
|
|
252
|
+
# check the new page
|
|
253
|
+
ok_eq("* First Page\n", @site['1'].load)
|
|
254
|
+
page = @site.get_by_title('First Page')
|
|
255
|
+
ok_eq('1', page.key)
|
|
256
|
+
|
|
257
|
+
# check title
|
|
258
|
+
page = @site['1']
|
|
259
|
+
ok_eq('First Page', page.get_title)
|
|
260
|
+
ok_eq('1', @site.get_by_title('First Page').key.to_s)
|
|
261
|
+
ok_eq(false, @site.exist?('First Page'))
|
|
262
|
+
ok_eq(true, @site.exist?('1'))
|
|
263
|
+
|
|
264
|
+
# check the source page
|
|
265
|
+
res = session('/test/')
|
|
266
|
+
ok_in(['First Page'], "//div[@class='section']//a")
|
|
267
|
+
ok_xp([:a, {:href=>'1.html'}, 'First Page'],
|
|
268
|
+
"//div[@class='section']//a")
|
|
269
|
+
ok_eq("[[First Page]]", @site['FrontPage'].load)
|
|
270
|
+
|
|
271
|
+
# Try to create with the same key.
|
|
272
|
+
res = session("/test/.new?t=First+Page")
|
|
273
|
+
ok_in(['Already exists'], '//h2')
|
|
274
|
+
ok_xp([:a, {:href=>'1.html'}, [:strong, 'First Page']],
|
|
275
|
+
"//div[@class='section']/a")
|
|
276
|
+
|
|
277
|
+
# Try to create with the same key.
|
|
278
|
+
res = session("POST /test/.new?t=First+Page")
|
|
279
|
+
ok_in(['Already exists'], '//h2')
|
|
280
|
+
ok_xp([:a, {:href=>'1.html'}, [:strong, 'First Page']],
|
|
281
|
+
"//div[@class='section']/a")
|
|
282
|
+
|
|
283
|
+
# Let's create a page again. At the first, embed the title.
|
|
284
|
+
page = @site['FrontPage']
|
|
285
|
+
page.store("[[2nd Page]]")
|
|
286
|
+
|
|
287
|
+
# See the page
|
|
288
|
+
res = session('/test/')
|
|
289
|
+
ok_in(['2nd Page', [:a, {:href=>".new?t=2nd+Page"},
|
|
290
|
+
[:img, {:src=>'.theme/i/new.png', :alt=>'create'}]]],
|
|
291
|
+
"//div[@class='section']//span")
|
|
292
|
+
|
|
293
|
+
# please input a corresponding page key
|
|
294
|
+
res = session("/test/.new?t=2nd+Page")
|
|
295
|
+
ok_xp([:input, {:value=>'2nd Page', :class=>'focus', :name=>'t'}],
|
|
296
|
+
'//input')
|
|
297
|
+
|
|
298
|
+
# try again
|
|
299
|
+
res = session("POST /test/.new?t=2nd+Page")
|
|
300
|
+
ok_in(['Edit new page'], "//div[@class='section']//a")
|
|
301
|
+
ok_xp([:a, {:href=>'2.edit'}, 'Edit new page'],
|
|
302
|
+
"//div[@class='section']//a")
|
|
303
|
+
|
|
304
|
+
page = @site['2']
|
|
305
|
+
ok_eq("* 2nd Page\n", page.load)
|
|
306
|
+
|
|
307
|
+
# check the source page again
|
|
308
|
+
res = session('/test/')
|
|
309
|
+
ok_in(['2nd Page'], "//div[@class='section']//a")
|
|
310
|
+
ok_xp([:a, {:href=>'2.html'}, '2nd Page'],
|
|
311
|
+
"//div[@class='section']//a")
|
|
312
|
+
ok_eq("[[2nd Page]]", @site['FrontPage'].load)
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
def test_new_sjis
|
|
316
|
+
t_add_user
|
|
317
|
+
page = @site['FrontPage']
|
|
318
|
+
page.store("[[�|�X]]")
|
|
319
|
+
|
|
320
|
+
# See FrontPage
|
|
321
|
+
res = session('/test/')
|
|
322
|
+
ok_title('FrontPage')
|
|
323
|
+
ok_in([:span, {:class=>'new'}, "�|�X",
|
|
324
|
+
[:a, {:href=>".new?t=%83%7C%83X"},
|
|
325
|
+
[:img, {:src=>'.theme/i/new.png', :alt=>'create'}]]],
|
|
326
|
+
"//div[@class='section']/p")
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
def test_embeded_new_with_japanese_name
|
|
330
|
+
t_add_user
|
|
331
|
+
|
|
332
|
+
page = @site['FrontPage']
|
|
333
|
+
page.store("[[�ŏ��̃y�[�W]]")
|
|
334
|
+
ok_eq('FrontPage', page.get_title)
|
|
335
|
+
|
|
336
|
+
# See a page
|
|
337
|
+
res = session('/test/')
|
|
338
|
+
ok_in(["�ŏ��̃y�[�W",
|
|
339
|
+
[:a, {:href=>".new?t=%8D%C5%8F%89%82%CC%83y%81%5B%83W"},
|
|
340
|
+
[:img, {:src=>'.theme/i/new.png', :alt=>'create'}]]],
|
|
341
|
+
"//span[@class='new']")
|
|
342
|
+
|
|
343
|
+
# Please input corresponding page key
|
|
344
|
+
res = session("/test/.new?t=�ŏ��̃y�[�W")
|
|
345
|
+
ok_in(['New page'], 'h1')
|
|
346
|
+
ok_in(['Confirm'], 'h2')
|
|
347
|
+
assert_attr({:action=>'.new', :method=>'POST'}, 'form')
|
|
348
|
+
ok_xp([:input, {:value=>"�ŏ��̃y�[�W",
|
|
349
|
+
:class=>'focus', :name=>'t'}], '//input')
|
|
350
|
+
ok_xp([:input, {:value=>'New page', :type=>'submit'}],
|
|
351
|
+
"//input[2]")
|
|
352
|
+
|
|
353
|
+
# POST
|
|
354
|
+
res = session("POST /test/.new?t=�ŏ��̃y�[�W")
|
|
355
|
+
ok_in(['New page'], 'h1')
|
|
356
|
+
ok_in(['Edit new page'], "//div[@class='section']//a")
|
|
357
|
+
ok_xp([:a, {:href=>'1.edit'}, 'Edit new page'],
|
|
358
|
+
"//div[@class='section']//a")
|
|
359
|
+
|
|
360
|
+
# Check the new page.
|
|
361
|
+
ok_eq("* �ŏ��̃y�[�W\n", @site['1'].load)
|
|
362
|
+
page = @site.get_by_title("�ŏ��̃y�[�W")
|
|
363
|
+
ok_eq('1', page.key)
|
|
364
|
+
|
|
365
|
+
# Check title.
|
|
366
|
+
page = @site['1']
|
|
367
|
+
ok_eq("�ŏ��̃y�[�W", page.get_title)
|
|
368
|
+
ok_eq('1', @site.get_by_title("�ŏ��̃y�[�W").key.to_s)
|
|
369
|
+
ok_eq(false, @site.exist?("�ŏ��̃y�[�W"))
|
|
370
|
+
ok_eq(true, @site.exist?('1'))
|
|
371
|
+
|
|
372
|
+
# Check the source page.
|
|
373
|
+
res = session('/test/')
|
|
374
|
+
ok_in(["�ŏ��̃y�[�W"], "//div[@class='section']//a")
|
|
375
|
+
ok_xp([:a, {:href=>'1.html'}, "�ŏ��̃y�[�W"],
|
|
376
|
+
"//div[@class='section']//a")
|
|
377
|
+
ok_eq("[[�ŏ��̃y�[�W]]", @site['FrontPage'].load)
|
|
378
|
+
|
|
379
|
+
# Try to create with the same key.
|
|
380
|
+
res = session("/test/.new?t=�ŏ��̃y�[�W")
|
|
381
|
+
|
|
382
|
+
# Try to create with the same key.
|
|
383
|
+
res = session("POST /test/.new?t=�ŏ��̃y�[�W")
|
|
384
|
+
ok_in(['Already exists'], '//h2')
|
|
385
|
+
|
|
386
|
+
# Let's create a page again. At the first, embed the title.
|
|
387
|
+
page = @site['FrontPage']
|
|
388
|
+
page.store("[[���]]")
|
|
389
|
+
|
|
390
|
+
# See the page
|
|
391
|
+
res = session('/test/')
|
|
392
|
+
ok_in(["���",
|
|
393
|
+
[:a, {:href=>".new?t=%93%F1%95%C5"},
|
|
394
|
+
[:img, {:src=>'.theme/i/new.png', :alt=>'create'}]]],
|
|
395
|
+
"//div[@class='section']//span")
|
|
396
|
+
|
|
397
|
+
# please input a corresponding page key
|
|
398
|
+
res = session("/test/.new?t=���")
|
|
399
|
+
ok_xp([:input, {:value=>"���", :class=>'focus', :name=>'t'}], '//input')
|
|
400
|
+
|
|
401
|
+
# try again
|
|
402
|
+
res = session("POST /test/.new?t=���")
|
|
403
|
+
ok_in(['Edit new page'], "//div[@class='section']//a")
|
|
404
|
+
ok_xp([:a, {:href=>'2.edit'}, 'Edit new page'],
|
|
405
|
+
"//div[@class='section']//a")
|
|
406
|
+
|
|
407
|
+
page = @site['2']
|
|
408
|
+
ok_eq("* ���\n", page.load)
|
|
409
|
+
|
|
410
|
+
# check the source page again
|
|
411
|
+
res = session('/test/')
|
|
412
|
+
ok_in(["���"], "//div[@class='section']//a")
|
|
413
|
+
ok_xp([:a, {:href=>'2.html'}, "���"],
|
|
414
|
+
"//div[@class='section']//a")
|
|
415
|
+
ok_eq("[[���]]", @site['FrontPage'].load)
|
|
416
|
+
end
|
|
417
|
+
end
|
|
418
|
+
end
|