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,295 @@
|
|
|
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/mail'
|
|
8
|
+
require 'qwik/util-sendmail'
|
|
9
|
+
|
|
10
|
+
module Qwik
|
|
11
|
+
class Action
|
|
12
|
+
# Send password by e-mail.
|
|
13
|
+
def pre_act_getpass
|
|
14
|
+
mail = @req.query['mail']
|
|
15
|
+
|
|
16
|
+
if mail.nil?
|
|
17
|
+
user = @req.user
|
|
18
|
+
if ! @site.is_open? && user && ! @site.member.exist?(user)
|
|
19
|
+
raise RequireMember
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
return getpass_show_form
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
if ! MailAddress.valid?(mail)
|
|
26
|
+
return c_nerror(_('Invalid mail address')) {
|
|
27
|
+
[[:p, [:em, mail], [:br],
|
|
28
|
+
_('The mail address format is wrong.'), [:br],
|
|
29
|
+
_('Please confirm the input again.')],
|
|
30
|
+
[:p, [:a, {:href=>'.getpass'}, _('Please access again.')]]]
|
|
31
|
+
}
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
if ! @site.is_open? && ! @site.member.exist?(mail)
|
|
35
|
+
ml = @site.ml_address
|
|
36
|
+
return getpass_not_member(mail, ml)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
passmail = generate_password_mail(mail)
|
|
40
|
+
sendmail = Sendmail.new(@config.smtp_host, @config.smtp_port,
|
|
41
|
+
@config.test)
|
|
42
|
+
begin
|
|
43
|
+
sendmail.send(passmail)
|
|
44
|
+
rescue
|
|
45
|
+
return c_nerror(_('Send Password Error')) {
|
|
46
|
+
[[:p, _('Send failed because of system error.')],
|
|
47
|
+
[:p, _('Please contact the administrator.')],
|
|
48
|
+
[:p, [:a, {:href=>'.login'}, _('Go back to Login screen')]]]
|
|
49
|
+
}
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
return c_notice(_('Send Password done')) {
|
|
53
|
+
[[:p, {:style=>'margin: 1.5em 0'},
|
|
54
|
+
_('I send the password to this mail address.'), [:br],
|
|
55
|
+
_('Please check your mailbox.')],
|
|
56
|
+
[:p, {:style=>'margin: 1.5em 0'}, [:em, mail]],
|
|
57
|
+
[:hr],
|
|
58
|
+
[:p, [:a, {:href=>'.login'}, _('Go back to Login screen')]]]
|
|
59
|
+
}
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def getpass_show_form
|
|
63
|
+
c_notice(_('Get Password')) {
|
|
64
|
+
[[:h2, _('You will receive the password by e-mail.')],
|
|
65
|
+
[:p, _('Please input your mail address.')],
|
|
66
|
+
getpass_form,
|
|
67
|
+
[:p, [:a, {:href=>'.login'}, _('Go back to Login screen')]]]
|
|
68
|
+
}
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def getpass_form(form_style='text-align: center; margin: 32px 0 48px;',
|
|
72
|
+
div_style='margin: 16px 0 8px', klass='focus')
|
|
73
|
+
return [:form, {:action=>'.getpass',
|
|
74
|
+
:style=>form_style},
|
|
75
|
+
[:div, {:style=>div_style},
|
|
76
|
+
[:em, _('Mail address'), ': '],
|
|
77
|
+
[:input,
|
|
78
|
+
{:name=>'mail', :size=>'40', :istyle=>'3', :class=>klass}]],
|
|
79
|
+
[:div, {:class=>'rightbutton'},
|
|
80
|
+
[:input, {:type=>'submit', :value=>_('Send')}]]]
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def getpass_not_member(user, ml)
|
|
84
|
+
c_nerror(_('Members Only')) {
|
|
85
|
+
[[:p, _('You input this e-mail address as user ID.'), [:br],
|
|
86
|
+
[:strong, user]],
|
|
87
|
+
[:p, _('This user with this ID is not a member of this group.'), [:br],
|
|
88
|
+
[:strong, ml]],
|
|
89
|
+
[:p, _('Only the member of this group can get a password.')],
|
|
90
|
+
[:p, [:a, {:href=>'.getpass'}, _('Go back')]]]
|
|
91
|
+
}
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
private
|
|
95
|
+
|
|
96
|
+
def generate_password_mail(user)
|
|
97
|
+
password = @memory.passgen.generate(user)
|
|
98
|
+
|
|
99
|
+
msg = ''
|
|
100
|
+
msg << _('This is your user name and password: ')+"#{@site.host_url}\n"
|
|
101
|
+
msg << "\n"
|
|
102
|
+
msg << _('Username')+": #{user}\n"
|
|
103
|
+
msg << _('Password')+": #{password}\n"
|
|
104
|
+
msg << "\n"
|
|
105
|
+
msg << _('Please access login page')+" #{@site.site_url}.login\n"
|
|
106
|
+
msg << "\n"
|
|
107
|
+
msg << _('You can input the user name and password from this URL automatically.')+"\n"
|
|
108
|
+
msg << "#{@site.site_url}.login?user=#{user}&pass=#{password}\n"
|
|
109
|
+
|
|
110
|
+
mail = {
|
|
111
|
+
:from => @site.ml_address,
|
|
112
|
+
:to => user,
|
|
113
|
+
:subject => _('Your password:')+" #{@site.host_url}",
|
|
114
|
+
:content => msg,
|
|
115
|
+
}
|
|
116
|
+
return mail
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
if $0 == __FILE__
|
|
122
|
+
require 'qwik/test-common'
|
|
123
|
+
require 'qwik/test-module-public'
|
|
124
|
+
$test = true
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
if defined?($test) && $test
|
|
128
|
+
class TestActGetPass < Test::Unit::TestCase
|
|
129
|
+
include TestSession
|
|
130
|
+
|
|
131
|
+
def test_private_site
|
|
132
|
+
# Try to see a get password page, but you can't.
|
|
133
|
+
res = session '/test/.getpass'
|
|
134
|
+
ok_title 'Members Only'
|
|
135
|
+
|
|
136
|
+
# But you can see the page without login.
|
|
137
|
+
res = session('/test/.getpass') {|req|
|
|
138
|
+
req.cookies.clear
|
|
139
|
+
}
|
|
140
|
+
ok_title 'Get Password'
|
|
141
|
+
|
|
142
|
+
t_add_user
|
|
143
|
+
eq ",user@e.com,\n", @site['_SiteMember'].load
|
|
144
|
+
eq false, @site.is_open?
|
|
145
|
+
|
|
146
|
+
# See get password page.
|
|
147
|
+
res = session '/test/.getpass'
|
|
148
|
+
ok_title 'Get Password'
|
|
149
|
+
ok_in ['Get Password'], 'h1'
|
|
150
|
+
ok_xp [:input, {:istyle=>'3', :size=>'40', :class=>'focus',
|
|
151
|
+
:name=>'mail'}], '//input'
|
|
152
|
+
ok_xp [:input, {:value=>'Send', :type=>'submit'}], '//input[2]'
|
|
153
|
+
|
|
154
|
+
# Invalid mail address
|
|
155
|
+
res = session '/test/.getpass?mail=wrong@mail@address'
|
|
156
|
+
ok_title 'Invalid mail address'
|
|
157
|
+
|
|
158
|
+
# You can not get pass if you are not a member.
|
|
159
|
+
res = session '/test/.getpass?mail=guest@example.com'
|
|
160
|
+
ok_title 'Members Only'
|
|
161
|
+
|
|
162
|
+
# Input your mail address
|
|
163
|
+
res = session '/test/.getpass?mail=user@e.com'
|
|
164
|
+
ok_title 'Send Password done'
|
|
165
|
+
ok_in ['user@e.com'], 'em'
|
|
166
|
+
eq ['test@q.example.com', 'user@e.com'], $smtp_sendmail[2..3]
|
|
167
|
+
assert_match /user@e.com/, $smtp_sendmail[4]
|
|
168
|
+
assert_match /95988593/, $smtp_sendmail[4]
|
|
169
|
+
header =
|
|
170
|
+
"From: test@q.example.com
|
|
171
|
+
To: user@e.com
|
|
172
|
+
Subject: Your password: http://example.com
|
|
173
|
+
Content-Type: text/plain; charset=\"ISO-2022-JP\"
|
|
174
|
+
|
|
175
|
+
"
|
|
176
|
+
body = 'This is your user name and password: http://example.com
|
|
177
|
+
|
|
178
|
+
Username: user@e.com
|
|
179
|
+
Password: 95988593
|
|
180
|
+
|
|
181
|
+
Please access login page http://example.com/test/.login
|
|
182
|
+
|
|
183
|
+
You can input the user name and password from this URL automatically.
|
|
184
|
+
http://example.com/test/.login?user=user@e.com&pass=95988593
|
|
185
|
+
|
|
186
|
+
'.set_sourcecode_charset
|
|
187
|
+
eq header+body.to_mail_charset, $smtp_sendmail[4]
|
|
188
|
+
|
|
189
|
+
# Input your mail address in Japanese mode.
|
|
190
|
+
res = session('/test/.getpass?mail=user@e.com') {|req|
|
|
191
|
+
req.accept_language = ['ja']
|
|
192
|
+
}
|
|
193
|
+
ok_title '�p�X���[�h���M����'
|
|
194
|
+
ok_in ['user@e.com'], 'em'
|
|
195
|
+
eq ['test@q.example.com', 'user@e.com'], $smtp_sendmail[2..3]
|
|
196
|
+
assert_match /user@e.com/, $smtp_sendmail[4]
|
|
197
|
+
assert_match /95988593/, $smtp_sendmail[4]
|
|
198
|
+
header =
|
|
199
|
+
"From: test@q.example.com
|
|
200
|
+
To: user@e.com
|
|
201
|
+
Subject: =?ISO-2022-JP?B?GyRCJVElOSVvITwlSRsoQiA=?=: http://example.com
|
|
202
|
+
Content-Type: text/plain; charset=\"ISO-2022-JP\"
|
|
203
|
+
|
|
204
|
+
"
|
|
205
|
+
body =
|
|
206
|
+
'���̃T�C�g�ɂ����郆�[�U���ƃp�X���[�h�ł� : http://example.com
|
|
207
|
+
|
|
208
|
+
���[�U��: user@e.com
|
|
209
|
+
�p�X���[�h: 95988593
|
|
210
|
+
|
|
211
|
+
���O�C���y�[�W�ɃA�N�Z�X���Ă������� : http://example.com/test/.login
|
|
212
|
+
|
|
213
|
+
���LURL�ɃA�N�Z�X����ƁA�����I�Ƀ��[�U�[���ƃp�X���[�h����͂��܂��B
|
|
214
|
+
http://example.com/test/.login?user=user@e.com&pass=95988593
|
|
215
|
+
|
|
216
|
+
'.set_sourcecode_charset
|
|
217
|
+
str = header+body.to_mail_charset
|
|
218
|
+
eq str, $smtp_sendmail[4]
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
def nu_test_obsolete_format
|
|
222
|
+
t_add_user
|
|
223
|
+
res = session '/test/GetPass.html'
|
|
224
|
+
ok_in ['Get Password'], 'title'
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def test_open_site
|
|
228
|
+
t_site_open
|
|
229
|
+
|
|
230
|
+
# You can see the page.
|
|
231
|
+
res = session '/test/.getpass'
|
|
232
|
+
ok_title 'Get Password'
|
|
233
|
+
|
|
234
|
+
# You can get any pass.
|
|
235
|
+
res = session '/test/.getpass?mail=user@e.com'
|
|
236
|
+
ok_title 'Send Password done'
|
|
237
|
+
|
|
238
|
+
res = session '/test/.getpass?mail=guest@example.com'
|
|
239
|
+
ok_title 'Send Password done'
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
class TestPasswordMailGenerator < Test::Unit::TestCase
|
|
244
|
+
include TestSession
|
|
245
|
+
include TestModulePublic
|
|
246
|
+
|
|
247
|
+
def test_getpass_mail
|
|
248
|
+
res = session '/test/'
|
|
249
|
+
|
|
250
|
+
# test_generate_password_mail
|
|
251
|
+
t_make_public(Qwik::Action, :generate_password_mail)
|
|
252
|
+
mail = @action.generate_password_mail 'user@e.com'
|
|
253
|
+
eq({:from=>"test@q.example.com", :to=>"user@e.com",
|
|
254
|
+
:subject=>"Your password: http://example.com",
|
|
255
|
+
:content=>"This is your user name and password: http://example.com\n\nUsername:\tuser@e.com\nPassword:\t95988593\n\nPlease access login page http://example.com/test/.login\n\nYou can input the user name and password from this URL automatically.\nhttp://example.com/test/.login?user=user@e.com&pass=95988593\n"
|
|
256
|
+
}, mail)
|
|
257
|
+
|
|
258
|
+
@action.instance_eval {
|
|
259
|
+
cf = @memory.catalog
|
|
260
|
+
catalog = cf.get_catalog('ja')
|
|
261
|
+
set_catalog(catalog)
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
mail = @action.generate_password_mail 'user@e.com'
|
|
265
|
+
$KCODE = "s"
|
|
266
|
+
eq({:from=>"test@q.example.com", :to=>"user@e.com",
|
|
267
|
+
:subject=>"�p�X���[�h : http://example.com",
|
|
268
|
+
:content=>"���̃T�C�g�ɂ����郆�[�U���ƃp�X���[�h�ł� : http://example.com\n\n���[�U��:\tuser@e.com\n�p�X���[�h:\t95988593\n\n���O�C���y�[�W�ɃA�N�Z�X���Ă������� : http://example.com/test/.login\n\n���LURL�ɃA�N�Z�X����ƁA�����I�Ƀ��[�U�[���ƃp�X���[�h����͂��܂��B\nhttp://example.com/test/.login?user=user@e.com&pass=95988593\n"
|
|
269
|
+
}, mail)
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
def test_mail_example_org
|
|
273
|
+
site = @site
|
|
274
|
+
page = site.create '_SiteConfig'
|
|
275
|
+
page.store(':siteurl: http://example.org/
|
|
276
|
+
:siteml: info@example.org
|
|
277
|
+
')
|
|
278
|
+
|
|
279
|
+
res = session '/test/'
|
|
280
|
+
ok_title 'Members Only'
|
|
281
|
+
|
|
282
|
+
t_add_user
|
|
283
|
+
res = session '/test/'
|
|
284
|
+
ok_title 'FrontPage'
|
|
285
|
+
|
|
286
|
+
t_make_public Qwik::Action, :generate_password_mail
|
|
287
|
+
mail = @action.generate_password_mail 'user@e.com'
|
|
288
|
+
eq({:from=>"info@example.org",
|
|
289
|
+
:to=>"user@e.com",
|
|
290
|
+
:subject=>"Your password: http://example.org",
|
|
291
|
+
:content=>"This is your user name and password: http://example.org\n\nUsername:\tuser@e.com\nPassword:\t95988593\n\nPlease access login page http://example.org/.login\n\nYou can input the user name and password from this URL automatically.\nhttp://example.org/.login?user=user@e.com&pass=95988593\n"}, mail)
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
end
|
|
295
|
+
end
|
|
@@ -0,0 +1,136 @@
|
|
|
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-backup'
|
|
7
|
+
|
|
8
|
+
module Qwik
|
|
9
|
+
class Action
|
|
10
|
+
D_ExtHistory = {
|
|
11
|
+
:dt => 'History mode',
|
|
12
|
+
:dd => 'You can see the history of the page interactively.',
|
|
13
|
+
:dc => "* How to
|
|
14
|
+
Go edit page, follow 'Time machine' link in the right side.
|
|
15
|
+
You see the interactive history of the page.
|
|
16
|
+
"
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
D_ExtHistory_ja = {
|
|
20
|
+
:dt => '�y�[�W�̗��j���[�h',
|
|
21
|
+
:dd => '�y�[�W�̗��j���C���^���N�e�B�u�Ɍ��邱�Ƃ��ł��܂��B',
|
|
22
|
+
:dc => "* �g����
|
|
23
|
+
�ҏW��ʂ̉E���Ɂu�^�C���}�V�[���v�Ƃ��������N������܂��B
|
|
24
|
+
���̃����N���A�y�[�W�̕ҏW�������C���^���N�e�B�u�Ɍ��邱�Ƃ��ł��܂��B
|
|
25
|
+
"
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def plg_show_history
|
|
31
|
+
return if @req.user.nil?
|
|
32
|
+
return if ! defined?(@req.base) || @req.base.nil?
|
|
33
|
+
return page_attribute('history', _('Show history'))
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def ext_history
|
|
37
|
+
c_require_pagename
|
|
38
|
+
c_require_member
|
|
39
|
+
return c_notice(_('Announcement')) {
|
|
40
|
+
[[:h2, _('Announcement')],
|
|
41
|
+
[:p, "TimeMachine function is disabled for server issue."]]
|
|
42
|
+
}
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def nu_ext_history
|
|
46
|
+
c_require_pagename
|
|
47
|
+
c_require_member
|
|
48
|
+
#c_require_page_exist
|
|
49
|
+
# You can see the history of the deleted page.
|
|
50
|
+
|
|
51
|
+
return c_nerror('no path args') if 0 < @req.path_args.length
|
|
52
|
+
return c_nerror('no ext args') if 0 < @req.ext_args.length
|
|
53
|
+
|
|
54
|
+
=begin
|
|
55
|
+
divs = []
|
|
56
|
+
key = @req.base
|
|
57
|
+
@site.backupdb.each_by_key(key) {|v, time|
|
|
58
|
+
res = [:div, {:class=>'period'}, c_res(v)]
|
|
59
|
+
divs << [:div, {:class=>'era', :id=>time.to_i.to_s}, res]
|
|
60
|
+
}
|
|
61
|
+
=end
|
|
62
|
+
|
|
63
|
+
key = @req.base
|
|
64
|
+
list = backup_list(@site, key)
|
|
65
|
+
|
|
66
|
+
divs = list.map {|v, time|
|
|
67
|
+
v = @site.backupdb.get(key, time)
|
|
68
|
+
[:div, {:class=>'era', :id=>time.to_s},
|
|
69
|
+
[:div, {:class=>'period'}, c_res(v)]]
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return history_show(@req.base, divs)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def history_show(pagename, divs)
|
|
76
|
+
ar = []
|
|
77
|
+
|
|
78
|
+
ar << [:style, "@import '.theme/css/wema.css';"]
|
|
79
|
+
|
|
80
|
+
handle = [:div, {:class=>'wema', :id=>'curosr',
|
|
81
|
+
:style=>'left:0px;top:0px;'},
|
|
82
|
+
[:div, {:class=>'menubar'},
|
|
83
|
+
[:span, {:class=>'handle'}, 'handle'],
|
|
84
|
+
[:span, {:class=>'close'}, [:a, {:href=>'#'}, ' X ']]], # noop
|
|
85
|
+
[:div, {:class=>'cont'},
|
|
86
|
+
[:span, {:id=>'indicator'}, _('Move this')]]]
|
|
87
|
+
ar << handle
|
|
88
|
+
|
|
89
|
+
section = []
|
|
90
|
+
section << [:div, {:id=>'eratable'}, '']
|
|
91
|
+
section << divs
|
|
92
|
+
section << [:div, {:id=>'lines'}, '']
|
|
93
|
+
ar << [:div, {:class=>'day'},
|
|
94
|
+
[:div, {:class=>'section'},
|
|
95
|
+
section]]
|
|
96
|
+
|
|
97
|
+
ar << [:script,
|
|
98
|
+
{:type=>'text/javascript', :src=>'.theme/js/wema.js'}, '']
|
|
99
|
+
ar << [:script,
|
|
100
|
+
{:type=>'text/javascript',:src=>'.theme/js/history.js'}, '']
|
|
101
|
+
|
|
102
|
+
title = _('Time machine')+" | #{pagename}"
|
|
103
|
+
|
|
104
|
+
return c_plain(title) { ar }
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
if $0 == __FILE__
|
|
110
|
+
require 'qwik/test-common'
|
|
111
|
+
$test = true
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
if defined?($test) && $test
|
|
115
|
+
class TestActHistory < Test::Unit::TestCase
|
|
116
|
+
include TestSession
|
|
117
|
+
|
|
118
|
+
def test_act_history
|
|
119
|
+
t_add_user
|
|
120
|
+
|
|
121
|
+
ok_wi [:span, {:class=>'attribute'},
|
|
122
|
+
[:a, {:href=>'1.history'}, 'Show history']],
|
|
123
|
+
'{{show_history}}'
|
|
124
|
+
|
|
125
|
+
page = @site['1']
|
|
126
|
+
page.store('* t1') # store the first
|
|
127
|
+
page.store('* t2') # store the second
|
|
128
|
+
|
|
129
|
+
res = session '/test/1.html'
|
|
130
|
+
ok_in ['t2'], '//title'
|
|
131
|
+
|
|
132
|
+
res = session '/test/1.history'
|
|
133
|
+
# ok_in ['Time machine | 1'], '//title'
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
@@ -0,0 +1,204 @@
|
|
|
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
|
+
MAX_PAGE_SIZE = 100 * 1024
|
|
10
|
+
|
|
11
|
+
def ext_html
|
|
12
|
+
c_require_page_exist
|
|
13
|
+
c_require_member if Action.private_page?(@req.base)
|
|
14
|
+
|
|
15
|
+
page = @site[@req.base]
|
|
16
|
+
if MAX_PAGE_SIZE < page.size
|
|
17
|
+
return c_nerror(_('Page too big.')) {
|
|
18
|
+
[:div,
|
|
19
|
+
[:p, _('The page is too big to show.')],
|
|
20
|
+
[:p, _('Max is 100K bytes. Please truncate it.')],
|
|
21
|
+
[:p, [:a, {:href=>"#{@req.base}.edit"}, _('Edit')]]]
|
|
22
|
+
}
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
if ! c_login?
|
|
26
|
+
c_set_html
|
|
27
|
+
|
|
28
|
+
if @config.test # Only for test.
|
|
29
|
+
@res.body = view_page_cache_generate(@req.base)
|
|
30
|
+
return
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
pagename = @req.base
|
|
34
|
+
dirpath = @site.cache_path
|
|
35
|
+
file = Action.html_page_cache_path(dirpath, pagename)
|
|
36
|
+
|
|
37
|
+
if view_page_cache_need_generate?(file)
|
|
38
|
+
view_page_cache_generate(pagename)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
c_simple_send(file.to_s, 'text/html; charset=Shift_JIS')
|
|
42
|
+
return
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
#c_make_log('view') # do not check.
|
|
46
|
+
#c_monitor('view')
|
|
47
|
+
surface_view(@req.base) # common-surface.rb
|
|
48
|
+
|
|
49
|
+
users = @config[:wysiwyg_users]
|
|
50
|
+
if users && users.split(/,\s/).include?(@req.user)
|
|
51
|
+
head = @res.body.get_path('//head')
|
|
52
|
+
head << [:meta, {'http-equiv'=>'Refresh',
|
|
53
|
+
:content=>"0; url=#{@req.base}.wysiwyg"}]
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def self.private_page?(pagename)
|
|
58
|
+
return pagename[0] == ?_
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def view_page_cache_need_generate?(file)
|
|
62
|
+
return true if ! file.exist?
|
|
63
|
+
return true if file.mtime < @site.last_page_time
|
|
64
|
+
return true if @req.header['cache-control'] == ['no-cache']
|
|
65
|
+
return false
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# called from act-archive
|
|
69
|
+
def view_page_cache_generate(pagename)
|
|
70
|
+
w = surface_view_generate(pagename)
|
|
71
|
+
str = w.format_xml # format xml with "\n"
|
|
72
|
+
dirpath = @site.cache_path
|
|
73
|
+
Action.html_page_cache_store(dirpath, pagename, str)
|
|
74
|
+
return w
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def self.html_page_cache_store(dirpath, pagename, str)
|
|
78
|
+
Action.html_page_cache_path(dirpath, pagename).write(str) # Write to file.
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def self.html_page_cache_path(dirpath, pagename)
|
|
82
|
+
return (dirpath+"#{pagename}.html").cleanpath
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
if $0 == __FILE__
|
|
88
|
+
require 'qwik/test-common'
|
|
89
|
+
$test = true
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
if defined?($test) && $test
|
|
93
|
+
class TestActHtml < Test::Unit::TestCase
|
|
94
|
+
include TestSession
|
|
95
|
+
|
|
96
|
+
def test_private_page?
|
|
97
|
+
eq false, Qwik::Action.private_page?('t')
|
|
98
|
+
eq true, Qwik::Action.private_page?('_t')
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_protect_underbar
|
|
102
|
+
t_add_user
|
|
103
|
+
|
|
104
|
+
page = @site.create '_t'
|
|
105
|
+
page.store '*t'
|
|
106
|
+
|
|
107
|
+
res = session '/test/_t.html' # with login
|
|
108
|
+
ok_title 't'
|
|
109
|
+
|
|
110
|
+
res = session('/test/_t.html') {|req|
|
|
111
|
+
req.cookies.clear
|
|
112
|
+
}
|
|
113
|
+
ok_title 'Login'
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def test_ext_html
|
|
117
|
+
t_add_user
|
|
118
|
+
t_site_open
|
|
119
|
+
|
|
120
|
+
page = @site['1']
|
|
121
|
+
eq nil, page
|
|
122
|
+
|
|
123
|
+
res = session '/test/1.html'
|
|
124
|
+
eq 404, @res.status
|
|
125
|
+
ok_title 'Page not found.'
|
|
126
|
+
|
|
127
|
+
page = @site.create_new
|
|
128
|
+
page.store 't'
|
|
129
|
+
|
|
130
|
+
res = session '/test/1.html'
|
|
131
|
+
ok_in ['t'], "//div[@class='section']/p"
|
|
132
|
+
|
|
133
|
+
# test_cache
|
|
134
|
+
res = session('/test/') {|req|
|
|
135
|
+
req.cookies.clear
|
|
136
|
+
}
|
|
137
|
+
# You can see the page.
|
|
138
|
+
ok_title 'FrontPage'
|
|
139
|
+
# But you are not logged in.
|
|
140
|
+
ok_in ['Login'], "//div[@class='adminmenu']//a"
|
|
141
|
+
eq 'text/html; charset=Shift_JIS', @res.headers['Content-Type']
|
|
142
|
+
|
|
143
|
+
t_without_testmode {
|
|
144
|
+
res = session('/test/') {|req| # Do it again
|
|
145
|
+
req.cookies.clear
|
|
146
|
+
}
|
|
147
|
+
assert_instance_of(File, res.body) # The body is a cached content.
|
|
148
|
+
str = res.body.read
|
|
149
|
+
res.body.close # Important.
|
|
150
|
+
assert_match(/FrontPage/, str)
|
|
151
|
+
eq 'text/html; charset=Shift_JIS', res.headers['Content-Type']
|
|
152
|
+
}
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def test_wysiwyg_users
|
|
156
|
+
t_add_user
|
|
157
|
+
t_site_open
|
|
158
|
+
|
|
159
|
+
page = @site.create_new
|
|
160
|
+
|
|
161
|
+
res = session '/test/1.html'
|
|
162
|
+
ok_xp nil, '//meta'
|
|
163
|
+
|
|
164
|
+
@config[:wysiwyg_users] = "a@e.com, #{DEFAULT_USER}, b@e.com"
|
|
165
|
+
|
|
166
|
+
res = session('/test/1.html')
|
|
167
|
+
ok_xp [:meta, {:content=>'0; url=1.wysiwyg', 'http-equiv'=>'Refresh'}],
|
|
168
|
+
'//meta'
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def test_guest_in_public_mode
|
|
172
|
+
t_site_open
|
|
173
|
+
|
|
174
|
+
page = @site.create_new
|
|
175
|
+
|
|
176
|
+
res = session('/test/1.html') {|req| req.cookies.clear }
|
|
177
|
+
ok_title '1'
|
|
178
|
+
|
|
179
|
+
res = session('/test/1.html') {|req| req.cookies.clear }
|
|
180
|
+
ok_title '1'
|
|
181
|
+
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def test_big_page
|
|
185
|
+
t_site_open
|
|
186
|
+
|
|
187
|
+
page = @site.create_new
|
|
188
|
+
page.store("a" * (100 * 1024 + 1))
|
|
189
|
+
|
|
190
|
+
res = session('/test/1.html') {|req| req.cookies.clear }
|
|
191
|
+
ok_title "Page too big."
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def test_superpre_sharp_mark
|
|
195
|
+
t_add_user
|
|
196
|
+
page = @site.create_new
|
|
197
|
+
page.store '{{{
|
|
198
|
+
#t
|
|
199
|
+
}}}'
|
|
200
|
+
session '/test/1.html'
|
|
201
|
+
ok_in ["#t\n"], "//div[@class='section']/pre"
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
end
|