ramaze 0.3.9.1 → 2023.01.06
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.
- checksums.yaml +7 -0
- data/Gemfile +3 -0
- data/README.md +125 -0
- data/Rakefile +13 -186
- data/bin/ramaze +4 -149
- data/examples/app/auth/layout/auth.xhtml +25 -0
- data/examples/app/auth/start.rb +25 -0
- data/examples/app/auth/view/index.xhtml +4 -0
- data/examples/app/auth/view/login.xhtml +20 -0
- data/examples/app/auth/view/secret.xhtml +1 -0
- data/examples/app/blog/app.rb +23 -0
- data/examples/app/blog/config.ru +19 -0
- data/examples/app/blog/controller/init.rb +30 -0
- data/examples/app/blog/controller/posts.rb +223 -0
- data/examples/app/blog/controller/users.rb +152 -0
- data/examples/app/blog/layout/default.xhtml +61 -0
- data/examples/app/blog/migrations/01_create_schema.rb +50 -0
- data/examples/app/blog/model/comment.rb +42 -0
- data/examples/app/blog/model/init.rb +44 -0
- data/examples/app/blog/model/post.rb +33 -0
- data/examples/app/blog/model/user.rb +100 -0
- data/examples/app/blog/public/css/grid.css +107 -0
- data/examples/app/blog/public/css/layout.css +203 -0
- data/examples/app/blog/public/css/reset.css +123 -0
- data/examples/app/blog/public/css/text.css +109 -0
- data/examples/app/blog/public/dispatch.fcgi +11 -0
- data/examples/app/blog/public/favicon.ico +0 -0
- data/examples/app/blog/public/images/bg.png +0 -0
- data/examples/app/blog/start.rb +20 -0
- data/examples/app/blog/view/feed.xhtml +23 -0
- data/examples/app/blog/view/form.xhtml +11 -0
- data/examples/app/blog/view/index.xhtml +44 -0
- data/examples/app/blog/view/users/form.xhtml +12 -0
- data/examples/app/blog/view/users/index.xhtml +30 -0
- data/examples/app/blog/view/users/login.xhtml +8 -0
- data/examples/app/blog/view/view.xhtml +68 -0
- data/examples/app/chat/layout/default.xhtml +13 -0
- data/examples/app/chat/model/history.rb +38 -0
- data/examples/app/chat/model/message.rb +7 -0
- data/examples/app/chat/public/css/chat.css +9 -0
- data/examples/app/chat/public/js/chat.js +28 -0
- data/{lib/proto → examples/app/chat}/public/js/jquery.js +75 -15
- data/examples/app/chat/start.rb +39 -0
- data/examples/app/chat/view/chat.xhtml +9 -0
- data/examples/app/chat/view/index.xhtml +7 -0
- data/examples/app/localization/locale/de.yaml +5 -0
- data/examples/app/localization/locale/en.yaml +5 -0
- data/examples/app/localization/locale/ja.yaml +5 -0
- data/examples/app/localization/start.rb +48 -0
- data/examples/app/todolist/controller/init.rb +11 -0
- data/examples/app/todolist/controller/task.rb +39 -0
- data/examples/app/todolist/layout/default.xhtml +14 -0
- data/examples/app/todolist/model/init.rb +14 -0
- data/examples/app/todolist/model/task.rb +39 -0
- data/examples/app/todolist/public/css/screen.css +63 -0
- data/examples/app/todolist/start.rb +7 -0
- data/examples/app/todolist/view/index.xhtml +29 -0
- data/examples/{upload → app/upload}/start.rb +7 -3
- data/examples/app/whywiki/spec/whywiki.rb +56 -0
- data/examples/{whywiki → app/whywiki}/start.rb +10 -9
- data/examples/{whywiki/template → app/whywiki/view}/edit.xhtml +2 -2
- data/examples/app/whywiki/view/show.xhtml +20 -0
- data/examples/{wikore → app/wikore}/spec/wikore.rb +7 -9
- data/examples/{wikore → app/wikore}/src/controller.rb +9 -11
- data/examples/{wikore → app/wikore}/src/model.rb +11 -13
- data/examples/app/wikore/start.rb +9 -0
- data/examples/{wiktacular/template/html_layout.xhtml → app/wiktacular/layout/application.xhtml} +1 -1
- data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_19-21-12.mkd +1 -1
- data/examples/app/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +2 -0
- data/examples/app/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +2 -0
- data/examples/app/wiktacular/mkd/main/current.mkd +2 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/markdown/current.mkd +2 -2
- data/examples/app/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +2 -0
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-20_19-43-50.mkd +2 -2
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-46-01.mkd +11 -11
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-46-32.mkd +12 -12
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-47-08.mkd +16 -16
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-47-54.mkd +16 -16
- data/examples/{wiktacular → app/wiktacular}/mkd/testing/current.mkd +16 -16
- data/examples/{wiktacular → app/wiktacular}/spec/wiktacular.rb +39 -40
- data/examples/{wiktacular → app/wiktacular}/src/controller.rb +18 -18
- data/examples/{wiktacular → app/wiktacular}/src/model.rb +30 -14
- data/examples/{wiktacular → app/wiktacular}/start.rb +1 -1
- data/examples/{wiktacular/template → app/wiktacular/view}/edit.xhtml +2 -2
- data/examples/{wiktacular/template → app/wiktacular/view}/new.xhtml +1 -1
- data/examples/{element.rb → basic/element.rb} +5 -3
- data/examples/basic/gestalt.rb +26 -0
- data/examples/basic/hello.rb +14 -0
- data/examples/{layout.rb → basic/layout.rb} +2 -2
- data/examples/basic/linking.rb +29 -0
- data/examples/basic/partial.rb +26 -0
- data/examples/{simple.rb → basic/simple.rb} +9 -12
- data/examples/{caching.rb → helpers/cache.rb} +9 -7
- data/examples/helpers/paginate.rb +71 -0
- data/examples/helpers/rest.rb +28 -0
- data/examples/helpers/simple_captcha.rb +29 -0
- data/examples/{css.rb → misc/css.rb} +6 -12
- data/examples/misc/memleak_detector.rb +37 -0
- data/examples/misc/nagoro_element.rb +43 -0
- data/examples/{ramaise.rb → misc/ramaise.rb} +2 -2
- data/examples/misc/rapp.rb +56 -0
- data/examples/misc/sequel_scaffolding.rb +45 -0
- data/examples/misc/serve_directory.rb +6 -0
- data/examples/templates/template_erubis.rb +9 -10
- data/examples/templates/template_ezamar.rb +8 -7
- data/examples/templates/template_haml.rb +7 -8
- data/examples/templates/template_liquid.rb +20 -19
- data/examples/templates/template_markaby.rb +6 -7
- data/examples/templates/template_mustache.rb +70 -0
- data/examples/templates/template_nagoro.rb +6 -7
- data/examples/templates/template_redcloth.rb +8 -9
- data/examples/templates/template_remarkably.rb +8 -9
- data/examples/templates/template_tenjin.rb +10 -15
- data/examples/templates/{template → view}/external.haml +4 -4
- data/examples/templates/{template → view}/external.mab +4 -4
- data/examples/templates/view/external.mt +29 -0
- data/examples/templates/{template → view}/external.nag +4 -4
- data/examples/templates/{template → view}/external.redcloth +4 -4
- data/examples/templates/{template → view}/external.rem +4 -4
- data/examples/templates/{template → view}/external.rhtml +6 -6
- data/examples/templates/{template → view}/external.tenjin +4 -4
- data/examples/templates/{template → view}/external.zmr +6 -6
- data/guide/AUTHORS +80 -0
- data/guide/CHANGELOG +20210 -0
- data/guide/LICENSE +19 -0
- data/guide/_static/logo.png +0 -0
- data/guide/_static/logo.svg +49 -0
- data/guide/css/common.css +20 -0
- data/guide/general/cache.md +168 -0
- data/guide/general/configuration.md +169 -0
- data/guide/general/contributing.md +182 -0
- data/guide/general/controllers.md +210 -0
- data/guide/general/helpers.md +89 -0
- data/guide/general/installation.md +59 -0
- data/guide/general/logging.md +96 -0
- data/guide/general/middlewares.md +111 -0
- data/guide/general/models.md +79 -0
- data/{doc/readme_chunks/principles.txt → guide/general/principles.md} +15 -17
- data/guide/general/ramaze_command.md +110 -0
- data/guide/general/routes.md +82 -0
- data/guide/general/sessions.md +210 -0
- data/guide/general/special_thanks.md +69 -0
- data/guide/general/testing.md +228 -0
- data/guide/general/upgrading.md +85 -0
- data/guide/general/views.md +335 -0
- data/lib/proto/Gemfile +4 -0
- data/lib/proto/README.md +35 -0
- data/lib/proto/Rakefile +1 -0
- data/lib/proto/app.rb +9 -0
- data/lib/proto/config.ru +19 -0
- data/lib/proto/controller/init.rb +18 -0
- data/lib/proto/controller/main.rb +13 -10
- data/lib/proto/layout/default.xhtml +57 -0
- data/lib/proto/public/css/grid.css +107 -0
- data/lib/proto/public/css/layout.css +81 -0
- data/lib/proto/public/css/reset.css +123 -0
- data/lib/proto/public/css/text.css +109 -0
- data/lib/proto/public/favicon.ico +0 -0
- data/lib/proto/public/images/bg.png +0 -0
- data/lib/proto/spec/helper.rb +39 -0
- data/lib/proto/task/ramaze.rake +57 -0
- data/lib/proto/view/index.xhtml +36 -25
- data/lib/ramaze/app.rb +198 -0
- data/lib/ramaze/bin/create.rb +92 -0
- data/lib/ramaze/bin/runner.rb +127 -0
- data/lib/ramaze/cache/lru.rb +88 -0
- data/lib/ramaze/cache/memcache.rb +219 -0
- data/lib/ramaze/cache/moneta.rb +143 -0
- data/lib/ramaze/cache/redis.rb +163 -0
- data/lib/ramaze/cache/sequel.rb +373 -0
- data/lib/ramaze/cache.rb +42 -82
- data/lib/ramaze/controller/default.rb +25 -0
- data/lib/ramaze/controller.rb +184 -224
- data/lib/ramaze/current.rb +17 -68
- data/lib/ramaze/default_middleware.rb +24 -0
- data/lib/ramaze/files.rb +59 -0
- data/lib/ramaze/gestalt.rb +95 -63
- data/lib/ramaze/helper/auth.rb +107 -107
- data/lib/ramaze/helper/bench.rb +51 -0
- data/lib/ramaze/helper/blue_form.rb +683 -0
- data/lib/ramaze/helper/cache.rb +108 -130
- data/lib/ramaze/helper/csrf.rb +191 -0
- data/lib/ramaze/helper/email.rb +116 -0
- data/lib/ramaze/helper/erector.rb +113 -0
- data/lib/ramaze/helper/flash.rb +42 -39
- data/lib/ramaze/helper/formatting.rb +200 -35
- data/lib/ramaze/helper/gestalt.rb +49 -0
- data/lib/ramaze/helper/gravatar.rb +75 -0
- data/lib/ramaze/helper/identity.rb +93 -68
- data/lib/ramaze/helper/layout.rb +128 -0
- data/lib/ramaze/helper/link.rb +52 -119
- data/lib/ramaze/helper/localize.rb +143 -0
- data/lib/ramaze/helper/markaby.rb +26 -24
- data/lib/ramaze/helper/maruku.rb +15 -6
- data/lib/ramaze/helper/paginate.rb +315 -0
- data/lib/ramaze/helper/remarkably.rb +14 -0
- data/lib/ramaze/helper/request_accessor.rb +20 -0
- data/lib/ramaze/helper/send_file.rb +34 -0
- data/lib/ramaze/helper/simple_captcha.rb +61 -0
- data/lib/ramaze/helper/stack.rb +72 -62
- data/lib/ramaze/helper/tagz.rb +13 -12
- data/lib/ramaze/helper/thread.rb +25 -0
- data/lib/ramaze/helper/upload.rb +525 -0
- data/lib/ramaze/helper/user.rb +260 -39
- data/lib/ramaze/helper/xhtml.rb +122 -0
- data/lib/ramaze/helper.rb +8 -79
- data/lib/ramaze/log/hub.rb +41 -32
- data/lib/ramaze/log/informer.rb +128 -104
- data/lib/ramaze/log/logger.rb +25 -15
- data/lib/ramaze/log/logging.rb +46 -27
- data/lib/ramaze/log/rotatinginformer.rb +237 -0
- data/lib/ramaze/log/syslog.rb +57 -31
- data/lib/ramaze/log.rb +16 -15
- data/lib/ramaze/reloader/watch_inotify.rb +84 -0
- data/lib/ramaze/reloader/watch_stat.rb +58 -0
- data/lib/ramaze/reloader.rb +212 -0
- data/lib/ramaze/request.rb +126 -0
- data/lib/ramaze/response.rb +67 -0
- data/lib/ramaze/snippets/object/__dir__.rb +25 -0
- data/lib/ramaze/snippets/ramaze/deprecated.rb +23 -0
- data/lib/ramaze/snippets/string/camel_case.rb +17 -14
- data/lib/ramaze/snippets/string/color.rb +27 -24
- data/lib/ramaze/snippets/string/esc.rb +25 -25
- data/lib/ramaze/snippets/string/snake_case.rb +16 -13
- data/lib/ramaze/snippets/string/unindent.rb +24 -11
- data/lib/ramaze/snippets.rb +21 -6
- data/lib/ramaze/spec/bacon.rb +44 -0
- data/lib/ramaze/spec/helper/bacon.rb +4 -4
- data/lib/ramaze/spec/helper/pretty_output.rb +9 -1
- data/lib/ramaze/spec/helper/snippets.rb +11 -1
- data/lib/ramaze/spec/helper/template_examples.rb +22 -0
- data/lib/ramaze/version.rb +4 -13
- data/lib/ramaze/view/erector.rb +116 -0
- data/lib/ramaze/view/erubis.rb +26 -0
- data/lib/ramaze/view/ezamar.rb +27 -0
- data/lib/ramaze/view/gestalt.rb +20 -0
- data/lib/ramaze/view/haml.rb +27 -0
- data/lib/ramaze/view/liquid.rb +99 -0
- data/lib/ramaze/view/lokar.rb +18 -0
- data/lib/ramaze/view/mustache.rb +46 -0
- data/lib/ramaze/view/nagoro/render_partial.rb +32 -0
- data/lib/ramaze/view/nagoro.rb +44 -0
- data/lib/ramaze/view/remarkably.rb +22 -0
- data/lib/ramaze/view/sass.rb +22 -0
- data/lib/ramaze/view/slim.rb +43 -0
- data/lib/ramaze/view/slippers.rb +51 -0
- data/lib/ramaze/view/tagz.rb +67 -0
- data/lib/ramaze/view/tenjin.rb +32 -0
- data/lib/ramaze/view.rb +35 -0
- data/lib/ramaze.rb +60 -100
- data/lib/vendor/route_exceptions.rb +42 -0
- data/ramaze.gemspec +61 -0
- data/spec/examples/caching.rb +5 -8
- data/spec/examples/css.rb +3 -4
- data/spec/examples/element.rb +4 -4
- data/spec/examples/hello.rb +4 -5
- data/spec/examples/linking.rb +3 -4
- data/spec/examples/misc/sequel_scaffolding.rb +18 -0
- data/spec/examples/simple.rb +3 -8
- data/spec/examples/templates/template_erubis.rb +8 -18
- data/spec/examples/templates/template_ezamar.rb +9 -19
- data/spec/examples/templates/template_haml.rb +8 -20
- data/spec/examples/templates/template_liquid.rb +8 -24
- data/spec/examples/templates/template_markaby.rb +10 -19
- data/spec/examples/templates/template_mustache.rb +13 -0
- data/spec/examples/templates/template_nagoro.rb +13 -0
- data/spec/examples/templates/template_remarkably.rb +8 -18
- data/spec/examples/templates/template_tenjin.rb +8 -23
- data/spec/examples/todolist.rb +33 -0
- data/spec/helper.rb +14 -3
- data/spec/ramaze/action/render.rb +9 -17
- data/spec/ramaze/action/view/other_wrapper.erb +1 -0
- data/spec/ramaze/action/view/sub/sub_wrapper.xhtml +1 -0
- data/spec/ramaze/app/location.rb +43 -0
- data/spec/ramaze/app.rb +50 -0
- data/spec/ramaze/bin/app/config.ru +11 -0
- data/spec/ramaze/bin/create.rb +28 -0
- data/spec/ramaze/bin/runner.rb +30 -0
- data/spec/ramaze/cache/lru.rb +48 -0
- data/spec/ramaze/cache/memcache.rb +69 -0
- data/spec/ramaze/cache/moneta.rb +53 -0
- data/spec/ramaze/cache/redis.rb +58 -0
- data/spec/ramaze/cache/sequel.rb +60 -0
- data/spec/ramaze/controller/actionless_templates.rb +16 -12
- data/spec/ramaze/controller/lonely_mapping.rb +18 -0
- data/spec/ramaze/controller/mapping.rb +63 -0
- data/spec/ramaze/controller/provide_inheritance.rb +40 -0
- data/spec/ramaze/controller/resolve.rb +9 -11
- data/spec/ramaze/controller/subclass.rb +22 -7
- data/spec/ramaze/controller/template_resolving.rb +23 -61
- data/spec/ramaze/controller/view/bar.xhtml +1 -0
- data/spec/ramaze/controller/view/base/another.xhtml +1 -0
- data/spec/ramaze/dispatcher/directory.rb +61 -33
- data/spec/ramaze/dispatcher/file.rb +65 -47
- data/spec/ramaze/error.rb +54 -64
- data/spec/ramaze/files/public_1/plain.txt +1 -0
- data/spec/ramaze/files/public_2/rich.txt +1 -0
- data/spec/ramaze/files.rb +30 -0
- data/spec/ramaze/gestalt.rb +28 -21
- data/spec/ramaze/helper/auth.rb +47 -29
- data/spec/ramaze/helper/bench.rb +21 -0
- data/spec/ramaze/helper/blue_form.rb +807 -0
- data/spec/ramaze/helper/cache.rb +65 -84
- data/spec/ramaze/helper/csrf.rb +64 -0
- data/spec/ramaze/helper/email.rb +69 -0
- data/spec/ramaze/helper/flash.rb +22 -101
- data/spec/ramaze/helper/formatting.rb +100 -6
- data/spec/ramaze/helper/gestalt.rb +18 -0
- data/spec/ramaze/helper/gravatar.rb +43 -0
- data/spec/ramaze/helper/layout/alternative.xhtml +5 -0
- data/spec/ramaze/helper/layout/default.xhtml +5 -0
- data/spec/ramaze/helper/layout.rb +109 -0
- data/spec/ramaze/helper/link.rb +48 -102
- data/spec/ramaze/helper/localize.rb +65 -0
- data/spec/ramaze/helper/maruku.rb +22 -0
- data/spec/ramaze/helper/paginate.rb +304 -0
- data/spec/ramaze/helper/request_accessor.rb +22 -0
- data/spec/ramaze/helper/simple_captcha.rb +45 -0
- data/spec/ramaze/helper/stack.rb +54 -41
- data/spec/ramaze/helper/upload.rb +150 -0
- data/spec/ramaze/helper/uploads/text_1.txt +1 -0
- data/spec/ramaze/helper/uploads/text_2.txt +1 -0
- data/spec/ramaze/helper/user.rb +63 -20
- data/spec/ramaze/helper/xhtml.rb +54 -0
- data/spec/ramaze/log/informer.rb +30 -28
- data/spec/ramaze/log/logging.rb +66 -0
- data/spec/ramaze/log/syslog.rb +89 -4
- data/spec/ramaze/params.rb +12 -16
- data/spec/ramaze/request.rb +51 -160
- data/spec/ramaze/rewrite/file.css +1 -0
- data/spec/ramaze/session/lru.rb +58 -0
- data/spec/ramaze/session/memcache.rb +66 -0
- data/spec/ramaze/session/redis.rb +63 -0
- data/spec/ramaze/session/sequel.rb +62 -0
- data/spec/ramaze/view/erector/external_view.erector +5 -0
- data/spec/ramaze/view/erector/index.erector +5 -0
- data/spec/ramaze/view/erector/layout.erector +13 -0
- data/spec/ramaze/view/erector/tables.erector +23 -0
- data/spec/ramaze/view/erector/view.erector +6 -0
- data/spec/ramaze/view/erector.rb +68 -0
- data/spec/ramaze/view/erubis/external.rhtml +8 -0
- data/spec/ramaze/view/erubis/sum.rhtml +1 -0
- data/spec/ramaze/view/erubis.rb +73 -0
- data/spec/ramaze/view/ezamar/external.zmr +8 -0
- data/spec/ramaze/view/ezamar/sum.zmr +1 -0
- data/spec/ramaze/view/ezamar.rb +73 -0
- data/spec/ramaze/view/gestalt/external.ges +8 -0
- data/spec/ramaze/view/gestalt.rb +94 -0
- data/spec/ramaze/view/haml/external.haml +5 -0
- data/spec/ramaze/view/haml/sum.haml +2 -0
- data/spec/ramaze/view/haml.rb +114 -0
- data/spec/ramaze/view/liquid/external.liquid +8 -0
- data/spec/ramaze/view/liquid/sum.liquid +1 -0
- data/spec/ramaze/view/liquid.rb +73 -0
- data/spec/ramaze/view/lokar/external.lok +8 -0
- data/spec/ramaze/view/lokar/sum.lok +1 -0
- data/spec/ramaze/view/lokar.rb +78 -0
- data/spec/ramaze/view/mustache/external.mt +8 -0
- data/spec/ramaze/view/mustache/sum.mt +1 -0
- data/spec/ramaze/view/mustache.rb +77 -0
- data/spec/ramaze/view/nagoro/external.nag +8 -0
- data/spec/ramaze/view/nagoro/sum.nag +1 -0
- data/spec/ramaze/view/nagoro.rb +78 -0
- data/spec/ramaze/view/remarkably.rb +49 -0
- data/spec/ramaze/view/sass.rb +73 -0
- data/spec/ramaze/view/slim/external.slim +5 -0
- data/spec/ramaze/view/slim/external_vars.slim +5 -0
- data/spec/ramaze/view/slim.rb +49 -0
- data/spec/ramaze/view/slippers/external.st +8 -0
- data/spec/ramaze/view/slippers/sum.st +1 -0
- data/spec/ramaze/view/slippers.rb +49 -0
- data/spec/ramaze/{template → view}/tagz.rb +20 -31
- data/spec/ramaze/view/tenjin/external.rbhtml +8 -0
- data/spec/ramaze/view/tenjin/sum.rbhtml +1 -0
- data/spec/ramaze/view/tenjin.rb +57 -0
- data/spec/ramaze/view.rb +36 -0
- data/spec/snippets/object/__dir__.rb +17 -0
- data/spec/snippets/ramaze/lru_hash.rb +88 -0
- data/spec/snippets/string/camel_case.rb +4 -1
- data/spec/snippets/string/color.rb +4 -1
- data/spec/snippets/string/snake_case.rb +4 -1
- data/spec/snippets/string/unindent.rb +10 -1
- data/tasks/authors.rake +17 -0
- data/tasks/bacon.rake +81 -0
- data/tasks/changelog.rake +20 -0
- data/tasks/gems.rake +15 -0
- data/tasks/release.rake +38 -0
- data/tasks/todo.rake +31 -0
- data/tasks/yard.rake +13 -0
- metadata +813 -714
- data/doc/AUTHORS +0 -25
- data/doc/CHANGELOG +0 -5757
- data/doc/COPYING +0 -56
- data/doc/FAQ +0 -92
- data/doc/GPL +0 -339
- data/doc/INSTALL +0 -34
- data/doc/LEGAL +0 -26
- data/doc/ProjectInfo +0 -53
- data/doc/README +0 -435
- data/doc/TODO +0 -29
- data/doc/meta/announcement.txt +0 -126
- data/doc/meta/configuration.txt +0 -162
- data/doc/meta/internals.txt +0 -278
- data/doc/meta/users.kml +0 -64
- data/doc/migrate/1110_to_1111.txt +0 -131
- data/doc/readme_chunks/appendix.txt +0 -10
- data/doc/readme_chunks/examples.txt +0 -38
- data/doc/readme_chunks/features.txt +0 -148
- data/doc/readme_chunks/getting_help.txt +0 -5
- data/doc/readme_chunks/getting_started.txt +0 -18
- data/doc/readme_chunks/installing.txt +0 -46
- data/doc/readme_chunks/introduction.txt +0 -18
- data/doc/readme_chunks/thanks.txt +0 -59
- data/doc/tutorial/todolist.html +0 -816
- data/doc/tutorial/todolist.mkd +0 -736
- data/examples/auth/auth.rb +0 -54
- data/examples/auth/template/layout.haml +0 -20
- data/examples/auth/template/login.haml +0 -16
- data/examples/blog/README +0 -3
- data/examples/blog/controller/main.rb +0 -29
- data/examples/blog/model/entry.rb +0 -30
- data/examples/blog/public/styles/blog.css +0 -132
- data/examples/blog/spec/blog.rb +0 -87
- data/examples/blog/start.rb +0 -7
- data/examples/blog/view/edit.xhtml +0 -17
- data/examples/blog/view/index.xhtml +0 -17
- data/examples/blog/view/layout.xhtml +0 -11
- data/examples/blog/view/new.xhtml +0 -16
- data/examples/hello.rb +0 -15
- data/examples/linking.rb +0 -29
- data/examples/memleak_detector.rb +0 -32
- data/examples/nitro_form.rb +0 -23
- data/examples/rammit/spec/rammit.rb +0 -30
- data/examples/rammit/src/controller/main.rb +0 -3
- data/examples/rammit/src/controller/page.rb +0 -16
- data/examples/rammit/src/model.rb +0 -33
- data/examples/rammit/start.rb +0 -8
- data/examples/rammit/template/index.xhtml +0 -14
- data/examples/rammit/template/page/view.xhtml +0 -4
- data/examples/rapaste/Rakefile +0 -35
- data/examples/rapaste/controller/paste.rb +0 -94
- data/examples/rapaste/model/paste.rb +0 -55
- data/examples/rapaste/public/css/active4d.css +0 -114
- data/examples/rapaste/public/css/all_hallows_eve.css +0 -72
- data/examples/rapaste/public/css/amy.css +0 -147
- data/examples/rapaste/public/css/blackboard.css +0 -88
- data/examples/rapaste/public/css/brilliance_black.css +0 -605
- data/examples/rapaste/public/css/brilliance_dull.css +0 -599
- data/examples/rapaste/public/css/cobalt.css +0 -149
- data/examples/rapaste/public/css/dawn.css +0 -121
- data/examples/rapaste/public/css/display.css +0 -197
- data/examples/rapaste/public/css/eiffel.css +0 -121
- data/examples/rapaste/public/css/espresso_libre.css +0 -109
- data/examples/rapaste/public/css/idle.css +0 -62
- data/examples/rapaste/public/css/iplastic.css +0 -80
- data/examples/rapaste/public/css/lazy.css +0 -73
- data/examples/rapaste/public/css/mac_classic.css +0 -123
- data/examples/rapaste/public/css/magicwb_amiga.css +0 -104
- data/examples/rapaste/public/css/pastels_on_dark.css +0 -188
- data/examples/rapaste/public/css/slush_poppies.css +0 -85
- data/examples/rapaste/public/css/spacecadet.css +0 -51
- data/examples/rapaste/public/css/sunburst.css +0 -180
- data/examples/rapaste/public/css/twilight.css +0 -137
- data/examples/rapaste/public/css/zenburnesque.css +0 -91
- data/examples/rapaste/public/js/jquery.js +0 -11
- data/examples/rapaste/spec/rapaste.rb +0 -49
- data/examples/rapaste/start.rb +0 -24
- data/examples/rapaste/view/copy.xhtml +0 -10
- data/examples/rapaste/view/index.xhtml +0 -9
- data/examples/rapaste/view/layout.xhtml +0 -25
- data/examples/rapaste/view/list.xhtml +0 -29
- data/examples/rapaste/view/search.xhtml +0 -41
- data/examples/rapaste/view/view.xhtml +0 -37
- data/examples/simple_auth.rb +0 -23
- data/examples/sourceview/public/coderay.css +0 -104
- data/examples/sourceview/public/images/file.gif +0 -0
- data/examples/sourceview/public/images/folder.gif +0 -0
- data/examples/sourceview/public/images/tv-collapsable-last.gif +0 -0
- data/examples/sourceview/public/images/tv-collapsable.gif +0 -0
- data/examples/sourceview/public/images/tv-expandable-last.gif +0 -0
- data/examples/sourceview/public/images/tv-expandable.gif +0 -0
- data/examples/sourceview/public/images/tv-item-last.gif +0 -0
- data/examples/sourceview/public/images/tv-item.gif +0 -0
- data/examples/sourceview/public/jquery.js +0 -11
- data/examples/sourceview/public/jquery.treeview.css +0 -48
- data/examples/sourceview/public/jquery.treeview.js +0 -223
- data/examples/sourceview/public/sourceview.js +0 -52
- data/examples/sourceview/sourceview.rb +0 -77
- data/examples/sourceview/template/index.haml +0 -59
- data/examples/templates/template/external.amrita +0 -19
- data/examples/templates/template/external.xsl +0 -57
- data/examples/templates/template_amrita2.rb +0 -74
- data/examples/templates/template_xslt.rb +0 -49
- data/examples/todolist/README +0 -1
- data/examples/todolist/public/js/jquery.js +0 -1923
- data/examples/todolist/public/ramaze.png +0 -0
- data/examples/todolist/spec/todolist.rb +0 -132
- data/examples/todolist/src/controller/main.rb +0 -70
- data/examples/todolist/src/element/page.rb +0 -31
- data/examples/todolist/src/model.rb +0 -14
- data/examples/todolist/start.rb +0 -11
- data/examples/todolist/template/index.xhtml +0 -17
- data/examples/todolist/template/new.xhtml +0 -7
- data/examples/whywiki/spec/whywiki.rb +0 -58
- data/examples/whywiki/template/show.xhtml +0 -18
- data/examples/wikore/start.rb +0 -9
- data/examples/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +0 -2
- data/examples/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +0 -2
- data/examples/wiktacular/mkd/main/current.mkd +0 -2
- data/examples/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +0 -2
- data/lib/proto/public/css/ramaze_error.css +0 -90
- data/lib/proto/public/dispatch.fcgi +0 -11
- data/lib/proto/public/ramaze.png +0 -0
- data/lib/proto/spec/main.rb +0 -24
- data/lib/proto/start.rb +0 -8
- data/lib/proto/start.ru +0 -8
- data/lib/proto/view/error.xhtml +0 -64
- data/lib/proto/view/page.xhtml +0 -15
- data/lib/ramaze/action/render.rb +0 -163
- data/lib/ramaze/action.rb +0 -136
- data/lib/ramaze/adapter/base.rb +0 -59
- data/lib/ramaze/adapter/cgi.rb +0 -24
- data/lib/ramaze/adapter/ebb.rb +0 -32
- data/lib/ramaze/adapter/evented_mongrel.rb +0 -7
- data/lib/ramaze/adapter/fcgi.rb +0 -24
- data/lib/ramaze/adapter/lsws.rb +0 -23
- data/lib/ramaze/adapter/mongrel.rb +0 -25
- data/lib/ramaze/adapter/scgi.rb +0 -22
- data/lib/ramaze/adapter/swiftiplied_mongrel.rb +0 -7
- data/lib/ramaze/adapter/thin.rb +0 -22
- data/lib/ramaze/adapter/webrick.rb +0 -52
- data/lib/ramaze/adapter.rb +0 -101
- data/lib/ramaze/cache/memcached.rb +0 -70
- data/lib/ramaze/cache/memory.rb +0 -6
- data/lib/ramaze/cache/yaml_store.rb +0 -68
- data/lib/ramaze/contrib/auto_params/get_args.rb +0 -57
- data/lib/ramaze/contrib/auto_params.rb +0 -135
- data/lib/ramaze/contrib/email.rb +0 -84
- data/lib/ramaze/contrib/facebook/facebook.rb +0 -171
- data/lib/ramaze/contrib/facebook.rb +0 -23
- data/lib/ramaze/contrib/file_cache.rb +0 -65
- data/lib/ramaze/contrib/gettext/mo.rb +0 -155
- data/lib/ramaze/contrib/gettext/parser.rb +0 -46
- data/lib/ramaze/contrib/gettext/po.rb +0 -109
- data/lib/ramaze/contrib/gettext.rb +0 -113
- data/lib/ramaze/contrib/gzip_filter.rb +0 -56
- data/lib/ramaze/contrib/profiling.rb +0 -36
- data/lib/ramaze/contrib/route.rb +0 -22
- data/lib/ramaze/contrib/sequel/fill.rb +0 -12
- data/lib/ramaze/contrib/sequel_cache.rb +0 -92
- data/lib/ramaze/contrib.rb +0 -82
- data/lib/ramaze/controller/error.rb +0 -46
- data/lib/ramaze/controller/main.rb +0 -2
- data/lib/ramaze/controller/resolve.rb +0 -234
- data/lib/ramaze/current/request.rb +0 -181
- data/lib/ramaze/current/response.rb +0 -19
- data/lib/ramaze/current/session/flash.rb +0 -67
- data/lib/ramaze/current/session/hash.rb +0 -65
- data/lib/ramaze/current/session.rb +0 -153
- data/lib/ramaze/dispatcher/action.rb +0 -40
- data/lib/ramaze/dispatcher/directory.rb +0 -116
- data/lib/ramaze/dispatcher/error.rb +0 -108
- data/lib/ramaze/dispatcher/file.rb +0 -87
- data/lib/ramaze/dispatcher.rb +0 -124
- data/lib/ramaze/error.rb +0 -24
- data/lib/ramaze/global/dsl.rb +0 -39
- data/lib/ramaze/global/globalstruct.rb +0 -147
- data/lib/ramaze/global.rb +0 -116
- data/lib/ramaze/helper/aspect.rb +0 -100
- data/lib/ramaze/helper/cgi.rb +0 -43
- data/lib/ramaze/helper/inform.rb +0 -40
- data/lib/ramaze/helper/nitroform.rb +0 -14
- data/lib/ramaze/helper/pager.rb +0 -366
- data/lib/ramaze/helper/partial.rb +0 -96
- data/lib/ramaze/helper/redirect.rb +0 -73
- data/lib/ramaze/helper/sendfile.rb +0 -18
- data/lib/ramaze/helper/sequel.rb +0 -52
- data/lib/ramaze/inform.rb +0 -4
- data/lib/ramaze/log/analogger.rb +0 -37
- data/lib/ramaze/log/growl.rb +0 -35
- data/lib/ramaze/log/knotify.rb +0 -25
- data/lib/ramaze/log/xosd.rb +0 -88
- data/lib/ramaze/route.rb +0 -84
- data/lib/ramaze/snippets/array/put_within.rb +0 -37
- data/lib/ramaze/snippets/binding/locals.rb +0 -13
- data/lib/ramaze/snippets/dictionary.rb +0 -504
- data/lib/ramaze/snippets/divide.rb +0 -20
- data/lib/ramaze/snippets/kernel/__dir__.rb +0 -23
- data/lib/ramaze/snippets/kernel/acquire.rb +0 -39
- data/lib/ramaze/snippets/kernel/aquire.rb +0 -1
- data/lib/ramaze/snippets/kernel/constant.rb +0 -26
- data/lib/ramaze/snippets/kernel/pretty_inspect.rb +0 -15
- data/lib/ramaze/snippets/metaid.rb +0 -17
- data/lib/ramaze/snippets/numeric/filesize_format.rb +0 -19
- data/lib/ramaze/snippets/object/pretty.rb +0 -6
- data/lib/ramaze/snippets/object/scope.rb +0 -11
- data/lib/ramaze/snippets/object/thread_accessor.rb +0 -5
- data/lib/ramaze/snippets/object/traits.rb +0 -76
- data/lib/ramaze/snippets/ordered_set.rb +0 -36
- data/lib/ramaze/snippets/proc/locals.rb +0 -11
- data/lib/ramaze/snippets/ramaze/caller_info.rb +0 -30
- data/lib/ramaze/snippets/ramaze/caller_lines.rb +0 -51
- data/lib/ramaze/snippets/ramaze/thread_accessor.rb +0 -44
- data/lib/ramaze/snippets/string/each.rb +0 -8
- data/lib/ramaze/snippets/string/ord.rb +0 -15
- data/lib/ramaze/snippets/string/start_with.rb +0 -7
- data/lib/ramaze/snippets/struct/fill.rb +0 -23
- data/lib/ramaze/snippets/struct/values_at.rb +0 -23
- data/lib/ramaze/snippets/symbol/to_proc.rb +0 -24
- data/lib/ramaze/snippets/thread/into.rb +0 -18
- data/lib/ramaze/sourcereload.rb +0 -169
- data/lib/ramaze/spec/helper/browser.rb +0 -88
- data/lib/ramaze/spec/helper/mock_http.rb +0 -69
- data/lib/ramaze/spec/helper/requester.rb +0 -49
- data/lib/ramaze/spec/helper/simple_http.rb +0 -434
- data/lib/ramaze/spec/helper.rb +0 -122
- data/lib/ramaze/spec.rb +0 -1
- data/lib/ramaze/store/default.rb +0 -109
- data/lib/ramaze/template/amrita2.rb +0 -44
- data/lib/ramaze/template/builder.rb +0 -28
- data/lib/ramaze/template/erubis.rb +0 -35
- data/lib/ramaze/template/ezamar/element.rb +0 -169
- data/lib/ramaze/template/ezamar/engine.rb +0 -76
- data/lib/ramaze/template/ezamar/morpher.rb +0 -135
- data/lib/ramaze/template/ezamar/render_partial.rb +0 -31
- data/lib/ramaze/template/ezamar.rb +0 -42
- data/lib/ramaze/template/haml.rb +0 -37
- data/lib/ramaze/template/liquid.rb +0 -36
- data/lib/ramaze/template/markaby.rb +0 -52
- data/lib/ramaze/template/nagoro.rb +0 -51
- data/lib/ramaze/template/none.rb +0 -14
- data/lib/ramaze/template/redcloth.rb +0 -24
- data/lib/ramaze/template/remarkably.rb +0 -38
- data/lib/ramaze/template/sass.rb +0 -37
- data/lib/ramaze/template/tagz.rb +0 -79
- data/lib/ramaze/template/tenjin.rb +0 -34
- data/lib/ramaze/template/xslt.rb +0 -96
- data/lib/ramaze/template.rb +0 -81
- data/lib/ramaze/tool/create.rb +0 -74
- data/lib/ramaze/tool/localize.rb +0 -162
- data/lib/ramaze/tool/mime.rb +0 -25
- data/lib/ramaze/tool/mime_types.yaml +0 -615
- data/lib/ramaze/tool/record.rb +0 -6
- data/lib/ramaze/tool.rb +0 -9
- data/lib/ramaze/trinity.rb +0 -13
- data/lib/vendor/bacon.rb +0 -323
- data/rake_tasks/conf.rake +0 -73
- data/rake_tasks/coverage.rake +0 -46
- data/rake_tasks/darcs.rake +0 -5
- data/rake_tasks/gem.rake +0 -43
- data/rake_tasks/maintenance.rake +0 -384
- data/rake_tasks/spec.rake +0 -62
- data/spec/contrib/auto_params.rb +0 -121
- data/spec/contrib/profiling.rb +0 -26
- data/spec/contrib/route.rb +0 -36
- data/spec/contrib/sequel/fill.rb +0 -47
- data/spec/examples/simple_auth.rb +0 -32
- data/spec/examples/templates/template_amrita2.rb +0 -16
- data/spec/examples/templates/template_redcloth.rb +0 -28
- data/spec/ramaze/action/basics.rb +0 -36
- data/spec/ramaze/action/cache.rb +0 -43
- data/spec/ramaze/action/layout.rb +0 -190
- data/spec/ramaze/adapter/mongrel.rb +0 -12
- data/spec/ramaze/adapter/record.rb +0 -31
- data/spec/ramaze/adapter/webrick.rb +0 -12
- data/spec/ramaze/adapter.rb +0 -22
- data/spec/ramaze/cache.rb +0 -73
- data/spec/ramaze/controller.rb +0 -177
- data/spec/ramaze/current/request.rb +0 -30
- data/spec/ramaze/current/session.rb +0 -97
- data/spec/ramaze/dispatcher.rb +0 -31
- data/spec/ramaze/element.rb +0 -107
- data/spec/ramaze/helper/aspect.rb +0 -92
- data/spec/ramaze/helper/cgi.rb +0 -43
- data/spec/ramaze/helper/file.rb +0 -18
- data/spec/ramaze/helper/pager.rb +0 -99
- data/spec/ramaze/helper/partial.rb +0 -76
- data/spec/ramaze/helper/redirect.rb +0 -112
- data/spec/ramaze/localize.rb +0 -67
- data/spec/ramaze/morpher.rb +0 -111
- data/spec/ramaze/public/error404.xhtml +0 -1
- data/spec/ramaze/request/mongrel.rb +0 -9
- data/spec/ramaze/request/thin.rb +0 -9
- data/spec/ramaze/request/webrick.rb +0 -5
- data/spec/ramaze/route.rb +0 -130
- data/spec/ramaze/session.rb +0 -94
- data/spec/ramaze/store/default.rb +0 -71
- data/spec/ramaze/template/amrita2/external.amrita +0 -6
- data/spec/ramaze/template/amrita2/sum.amrita +0 -1
- data/spec/ramaze/template/amrita2.rb +0 -50
- data/spec/ramaze/template/builder/external.rxml +0 -3
- data/spec/ramaze/template/builder.rb +0 -55
- data/spec/ramaze/template/erubis/sum.rhtml +0 -1
- data/spec/ramaze/template/erubis.rb +0 -41
- data/spec/ramaze/template/ezamar/another/long/action.zmr +0 -1
- data/spec/ramaze/template/ezamar/combined.zmr +0 -1
- data/spec/ramaze/template/ezamar/file_only.zmr +0 -1
- data/spec/ramaze/template/ezamar/index.zmr +0 -1
- data/spec/ramaze/template/ezamar/nested.zmr +0 -1
- data/spec/ramaze/template/ezamar/other__index.xhtml +0 -1
- data/spec/ramaze/template/ezamar/some__long__action.zmr +0 -1
- data/spec/ramaze/template/ezamar/sum.zmr +0 -1
- data/spec/ramaze/template/ezamar.rb +0 -63
- data/spec/ramaze/template/haml/index.haml +0 -5
- data/spec/ramaze/template/haml/locals.haml +0 -2
- data/spec/ramaze/template/haml/with_vars.haml +0 -4
- data/spec/ramaze/template/haml.rb +0 -66
- data/spec/ramaze/template/liquid/index.liquid +0 -1
- data/spec/ramaze/template/liquid/products.liquid +0 -45
- data/spec/ramaze/template/liquid.rb +0 -99
- data/spec/ramaze/template/markaby/external.mab +0 -8
- data/spec/ramaze/template/markaby/sum.mab +0 -1
- data/spec/ramaze/template/markaby.rb +0 -61
- data/spec/ramaze/template/nagoro/another/long/action.nag +0 -1
- data/spec/ramaze/template/nagoro/combined.nag +0 -1
- data/spec/ramaze/template/nagoro/file_only.nag +0 -1
- data/spec/ramaze/template/nagoro/index.nag +0 -1
- data/spec/ramaze/template/nagoro/nested.nag +0 -1
- data/spec/ramaze/template/nagoro/some__long__action.nag +0 -1
- data/spec/ramaze/template/nagoro/sum.nag +0 -1
- data/spec/ramaze/template/nagoro.rb +0 -64
- data/spec/ramaze/template/redcloth/external.redcloth +0 -1
- data/spec/ramaze/template/redcloth.rb +0 -38
- data/spec/ramaze/template/remarkably.rb +0 -58
- data/spec/ramaze/template/sass.rb +0 -69
- data/spec/ramaze/template/tenjin/external.tenjin +0 -1
- data/spec/ramaze/template/tenjin.rb +0 -49
- data/spec/ramaze/template/xslt/concat_words.xsl +0 -16
- data/spec/ramaze/template/xslt/index.xsl +0 -14
- data/spec/ramaze/template/xslt/products.xsl +0 -32
- data/spec/ramaze/template/xslt/ruby_version.xsl +0 -14
- data/spec/ramaze/template/xslt.rb +0 -90
- data/spec/ramaze/template.rb +0 -128
- data/spec/snippets/array/put_within.rb +0 -33
- data/spec/snippets/divide.rb +0 -19
- data/spec/snippets/kernel/__dir__.rb +0 -8
- data/spec/snippets/kernel/acquire.rb +0 -71
- data/spec/snippets/kernel/constant.rb +0 -23
- data/spec/snippets/numeric/filesize_format.rb +0 -12
- data/spec/snippets/ordered_set.rb +0 -63
- data/spec/snippets/ramaze/caller_info.rb +0 -39
- data/spec/snippets/ramaze/caller_lines.rb +0 -30
- data/spec/snippets/struct/fill.rb +0 -26
- data/spec/snippets/struct/values_at.rb +0 -44
- data/spec/snippets/symbol/to_proc.rb +0 -13
- data/spec/snippets/thread/into.rb +0 -20
- /data/examples/{todolist → app/todolist}/public/favicon.ico +0 -0
- /data/examples/{upload → app/upload}/view/index.xhtml +0 -0
- /data/examples/{wikore/template → app/wikore/view}/index.xhtml +0 -0
- /data/examples/{wiktacular → app/wiktacular}/README +0 -0
- /data/examples/{wiktacular → app/wiktacular}/mkd/link/2007-07-20_19-45-51.mkd +0 -0
- /data/examples/{wiktacular → app/wiktacular}/mkd/link/current.mkd +0 -0
- /data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_16-31-33.mkd +0 -0
- /data/examples/{wiktacular → app/wiktacular}/public/favicon.ico +0 -0
- /data/examples/{wiktacular → app/wiktacular}/public/screen.css +0 -0
- /data/examples/{wiktacular/template → app/wiktacular/view}/index.xhtml +0 -0
- /data/examples/{identity.rb → helpers/identity.rb} +0 -0
- /data/examples/{facebook.rb → misc/facebook.rb} +0 -0
- /data/examples/templates/{template → view}/external.liquid +0 -0
- /data/spec/ramaze/action/{template → view}/bar.xhtml +0 -0
- /data/spec/ramaze/action/{template → view}/instancevars/layout.xhtml +0 -0
- /data/spec/ramaze/action/{template → view}/other_wrapper.xhtml +0 -0
- /data/spec/ramaze/action/{template → view}/single_wrapper.xhtml +0 -0
- /data/spec/ramaze/action/{template/sub/sub_wrapper.xhtml → view/sub/sub_wrapper.erb} +0 -0
- /data/spec/ramaze/controller/{template → view}/greet.xhtml +0 -0
- /data/spec/ramaze/controller/{template → view}/list.xhtml +0 -0
- /data/spec/ramaze/controller/{template → view}/other/greet/other.xhtml +0 -0
- /data/spec/ramaze/controller/{template → view}/other_wrapper.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/locals.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/loop.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/num.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/partial.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/recursive.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/recursive_local_ivars.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/recursive_locals.xhtml +0 -0
- /data/spec/ramaze/helper/{template → view}/test_template.xhtml +0 -0
- /data/spec/ramaze/{template → view}/remarkably/external.rem +0 -0
- /data/spec/ramaze/{template → view}/remarkably/sum.rem +0 -0
- /data/spec/ramaze/{template → view}/sass/file.css.sass +0 -0
- /data/spec/ramaze/{template → view}/tagz/external.tagz +0 -0
- /data/spec/ramaze/{template → view}/tagz/sum.tagz +0 -0
data/lib/ramaze/helper/flash.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
|
2
|
-
# All files in this distribution are subject to the terms of the
|
2
|
+
# All files in this distribution are subject to the terms of the MIT license.
|
3
3
|
|
4
4
|
module Ramaze
|
5
5
|
|
@@ -9,51 +9,54 @@ module Ramaze
|
|
9
9
|
# Flash is a way to keep a temporary pairs of keys and values for the duration
|
10
10
|
# of two requests, the current and following.
|
11
11
|
#
|
12
|
-
#
|
12
|
+
# Time for an example. On the first request, for example on registering:
|
13
13
|
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
# flash[:error] = "You should reconsider your username, it's taken already"
|
17
|
-
# redirect R(self, :register)
|
14
|
+
# flash[:error] = "You should reconsider your username, it's taken already"
|
15
|
+
# redirect r(:register)
|
18
16
|
#
|
19
17
|
# This is the request from the redirect:
|
20
18
|
#
|
21
|
-
#
|
19
|
+
# do_stuff if flash[:error]
|
22
20
|
#
|
23
21
|
# On the request after this, flash[:error] is gone.
|
24
22
|
|
25
|
-
module Helper
|
26
|
-
|
27
|
-
|
23
|
+
module Helper
|
24
|
+
module Flash
|
25
|
+
include Innate::Traited
|
28
26
|
|
29
|
-
|
30
|
-
Session.current.flash
|
31
|
-
end
|
27
|
+
trait :flashbox => "<div class='flash' id='flash_%key'>%value</div>"
|
32
28
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
# Then a flashbox would display:
|
40
|
-
#
|
41
|
-
# <div class='flash' id='flash_error'>Please enter your name</div>
|
42
|
-
# <div class='flash' id='flash_info'>Do you see the fnords?</div>
|
43
|
-
#
|
44
|
-
# This is designed to be customized permanently or per usage:
|
45
|
-
#
|
46
|
-
# flashbox("<div class='flash_%key'>%value</div>")
|
47
|
-
#
|
48
|
-
# Where any occurrence of %key and %value will be replaced by the actual
|
49
|
-
# contents of each element of flash
|
29
|
+
##
|
30
|
+
# Return the current value of Current.session.flash
|
31
|
+
#
|
32
|
+
def flash
|
33
|
+
Current.session.flash
|
34
|
+
end
|
50
35
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
36
|
+
# Use in your template to display all flash messages that may be stored.
|
37
|
+
# For example, given you stored:
|
38
|
+
#
|
39
|
+
# flash # => { :error => 'Please enter your name'
|
40
|
+
# :info => 'Do you see the fnords?' }
|
41
|
+
#
|
42
|
+
# Then a flashbox would display:
|
43
|
+
#
|
44
|
+
# <div class='flash' id='flash_error'>Please enter your name</div>
|
45
|
+
# <div class='flash' id='flash_info'>Do you see the fnords?</div>
|
46
|
+
#
|
47
|
+
# This is designed to be customized permanently or per usage:
|
48
|
+
#
|
49
|
+
# flashbox("<div class='flash_%key'>%value</div>")
|
50
|
+
#
|
51
|
+
# Where any occurrence of %key and %value will be replaced by the actual
|
52
|
+
# contents of each element of flash
|
53
|
+
def flashbox(tag = ancestral_trait[:flashbox])
|
54
|
+
flash.map{|key, *values|
|
55
|
+
values.flatten.map do |value|
|
56
|
+
tag.gsub(/%key/, key.to_s).gsub(/%value/, value.to_s)
|
57
|
+
end
|
58
|
+
}.flatten.join("\n")
|
59
|
+
end
|
60
|
+
end # Flash
|
61
|
+
end # Helper
|
62
|
+
end # Ramaze
|
@@ -1,42 +1,207 @@
|
|
1
1
|
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
|
2
|
-
# All files in this distribution are subject to the terms of the
|
2
|
+
# All files in this distribution are subject to the terms of the MIT license.
|
3
3
|
|
4
4
|
module Ramaze
|
5
|
-
module Helper
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
5
|
+
module Helper
|
6
|
+
module Formatting
|
7
|
+
module_function
|
8
|
+
|
9
|
+
FORMATTING_NUMBER_COUNTER = {
|
10
|
+
0 => 'no',
|
11
|
+
2 => 'two',
|
12
|
+
3 => 'three',
|
13
|
+
4 => 'four',
|
14
|
+
5 => 'five',
|
15
|
+
6 => 'six',
|
16
|
+
7 => 'seven',
|
17
|
+
8 => 'eight',
|
18
|
+
9 => 'nine',
|
19
|
+
10 => 'ten'
|
20
|
+
}
|
21
|
+
|
22
|
+
# Answers with a representation of given +count+ with correct grammar. If
|
23
|
+
# no +items+ argument is given, and the +count+ argument is not 1, then we
|
24
|
+
# first check whether the +item+ argument responds to ``#pluralize`` (for
|
25
|
+
# example if you are using Sequel). If this doesn't work we append 's'
|
26
|
+
# to the +item+ argument.
|
27
|
+
#
|
28
|
+
# @example usage
|
29
|
+
# number_counter(0, 'comment') # => 'no comments'
|
30
|
+
# number_counter(1, 'comment') # => 'one comment'
|
31
|
+
# number_counter(2, 'comment') # => '2 comments'
|
32
|
+
#
|
33
|
+
def number_counter(count, item, items = nil)
|
34
|
+
count, item = count.to_i, item.to_s
|
35
|
+
|
36
|
+
if count == 1
|
37
|
+
"one #{item}"
|
38
|
+
else
|
39
|
+
items ||= item.respond_to?(:pluralize) ? item.pluralize : "#{item}s"
|
40
|
+
prefix = FORMATTING_NUMBER_COUNTER[count] || count
|
41
|
+
"#{prefix} #{items}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Format a floating number nicely for display.
|
46
|
+
#
|
47
|
+
# @example
|
48
|
+
# number_format(123.123) # => '123.123'
|
49
|
+
# number_format(123456.12345) # => '123,456.12345'
|
50
|
+
# number_format(123456.12345, '.') # => '123.456,12345'
|
51
|
+
#
|
52
|
+
def number_format(n, delimiter = ',')
|
53
|
+
delim_l, delim_r = delimiter == ',' ? %w[, .] : %w[. ,]
|
54
|
+
h, r = n.to_s.split('.')
|
55
|
+
[h.reverse.scan(/\d{1,3}/).join(delim_l).reverse, r].compact.join(delim_r)
|
56
|
+
end
|
57
|
+
|
58
|
+
# Answer with the ordinal version of a number.
|
59
|
+
#
|
60
|
+
# @example
|
61
|
+
# ordinal(1) # => "1st"
|
62
|
+
# ordinal(2) # => "2nd"
|
63
|
+
# ordinal(3) # => "3rd"
|
64
|
+
# ordinal(13) # => "13th"
|
65
|
+
# ordinal(33) # => "33rd"
|
66
|
+
# ordinal(100) # => "100th"
|
67
|
+
# ordinal(133) # => "133rd"
|
68
|
+
#
|
69
|
+
def ordinal(number)
|
70
|
+
number = number.to_i
|
71
|
+
|
72
|
+
case number % 100
|
73
|
+
when 11..13; "#{number}th"
|
74
|
+
else
|
75
|
+
case number % 10
|
76
|
+
when 1; "#{number}st"
|
77
|
+
when 2; "#{number}nd"
|
78
|
+
when 3; "#{number}rd"
|
79
|
+
else "#{number}th"
|
27
80
|
end
|
81
|
+
end
|
82
|
+
end
|
28
83
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
84
|
+
# stolen and adapted from rails
|
85
|
+
def time_diff(from_time, to_time = Time.now, include_seconds = false)
|
86
|
+
distance_in_minutes = (((to_time - from_time).abs)/60).round
|
87
|
+
distance_in_seconds = ((to_time - from_time).abs).round if include_seconds
|
88
|
+
|
89
|
+
case distance_in_minutes
|
90
|
+
when 0..1
|
91
|
+
return (distance_in_minutes == 0) ? 'less than a minute' : '1 minute' unless include_seconds
|
92
|
+
case distance_in_seconds
|
93
|
+
when 0..4 then 'less than 5 seconds'
|
94
|
+
when 5..9 then 'less than 10 seconds'
|
95
|
+
when 10..19 then 'less than 20 seconds'
|
96
|
+
when 20..39 then 'half a minute'
|
97
|
+
when 40..59 then 'less than a minute'
|
98
|
+
else '1 minute'
|
99
|
+
end
|
100
|
+
|
101
|
+
when 2..44 then "#{distance_in_minutes} minutes"
|
102
|
+
when 45..89 then 'about 1 hour'
|
103
|
+
when 90..1439 then "about #{(distance_in_minutes.to_f / 60.0).round} hours"
|
104
|
+
when 1440..2879 then '1 day'
|
105
|
+
when 2880..43199 then "#{(distance_in_minutes / 1440).round} days"
|
106
|
+
when 43200..86399 then 'about 1 month'
|
107
|
+
when 86400..525959 then "#{(distance_in_minutes / 43200).round} months"
|
108
|
+
when 525960..1051919 then 'about 1 year'
|
109
|
+
else "over #{(distance_in_minutes / 525960).round} years"
|
110
|
+
end
|
38
111
|
end
|
39
|
-
end
|
40
112
|
|
41
|
-
|
42
|
-
|
113
|
+
# Copied from actionpack, and revised by insane-dreamer to fix a bug
|
114
|
+
# (original fails on some URLs)
|
115
|
+
AUTO_LINK_RE = %r{
|
116
|
+
( # leading text
|
117
|
+
<\w+.*?>| # leading HTML tag, or
|
118
|
+
[^=!:'"/]| # leading punctuation, or
|
119
|
+
^ # beginning of line
|
120
|
+
)
|
121
|
+
(
|
122
|
+
(?:https?://)| # protocol spec, or
|
123
|
+
(?:www\.) # www.*
|
124
|
+
)
|
125
|
+
(
|
126
|
+
[-\w]+ # subdomain or domain
|
127
|
+
(?:\.[-\w]+)* # remaining subdomains or domain
|
128
|
+
(?::\d+)? # port
|
129
|
+
(?:/(?:[~\w\+@%=\(\)-]|(?:[,.;:'][^\s<$]))*)* # path
|
130
|
+
(?:\?[\w\+@%&=.;:-]+)? # query string
|
131
|
+
(?:\#[\w\-]*)? # trailing anchor
|
132
|
+
)
|
133
|
+
([[:punct:]]|<|$|) # trailing text
|
134
|
+
}x unless defined? AUTO_LINK_RE
|
135
|
+
|
136
|
+
# Turns all urls into clickable links. If a block is given, each url
|
137
|
+
# is yielded and the result is used as the link text.
|
138
|
+
def auto_link(text, opts = {})
|
139
|
+
html_options = ' ' + opts.map{|k,v| "#{k}='#{v}'"}.join(' ') if opts.any?
|
140
|
+
text.gsub(AUTO_LINK_RE) do
|
141
|
+
all, a, b, c, d = $&, $1, $2, $3, $4
|
142
|
+
if a =~ /<a\s/i # don't replace URL's that are already linked
|
143
|
+
all
|
144
|
+
else
|
145
|
+
text = b + c
|
146
|
+
text = yield(text) if block_given?
|
147
|
+
%(#{a}<a href="#{b=="www."?"http://www.":b}#{c}"#{html_options}>#{text}</a>#{d})
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
alias autolink auto_link
|
152
|
+
|
153
|
+
# takes a string and optional argument for outputting compliance HTML
|
154
|
+
# instead of XHTML.
|
155
|
+
#
|
156
|
+
# @example
|
157
|
+
# nl2br "a\nb\n\c" #=> 'a<br />b<br />c'
|
158
|
+
#
|
159
|
+
def nl2br(string, xhtml = true)
|
160
|
+
br = xhtml ? '<br />' : '<br>'
|
161
|
+
string.gsub(/\n/, br)
|
162
|
+
end
|
163
|
+
|
164
|
+
def obfuscate_email(email, text = nil)
|
165
|
+
obfuscated = []
|
166
|
+
email.to_s.each_byte{|c| obfuscated << "&#%03d" % c }
|
167
|
+
joined = obfuscated.join
|
168
|
+
|
169
|
+
%(<a href="mailto:#{joined}">#{text || joined}</a>)
|
170
|
+
end
|
171
|
+
|
172
|
+
# Returns Hash with tags as keys and their weight as value.
|
173
|
+
#
|
174
|
+
# Example:
|
175
|
+
# tags = %w[ruby ruby code ramaze]
|
176
|
+
# tagcloud(tags)
|
177
|
+
# # => {"code"=>0.75, "ramaze"=>0.75, "ruby"=>1.0}
|
178
|
+
#
|
179
|
+
# The weight can be influenced by adjusting the +min+ and +max+
|
180
|
+
# parameters, please make sure that +max+ is larger than +min+ to get
|
181
|
+
# meaningful output.
|
182
|
+
#
|
183
|
+
# This is not thought as immediate output to your template but rather to
|
184
|
+
# help either implementing your own algorithm or using the result as input
|
185
|
+
# for your tagcloud.
|
186
|
+
#
|
187
|
+
# @example
|
188
|
+
# tagcloud(tags).each do |tag, weight|
|
189
|
+
# style = "font-size: %0.2fem" % weight
|
190
|
+
# %a{:style => style, :href => Rs(tag)}= h(tag)
|
191
|
+
# end
|
192
|
+
#
|
193
|
+
def tagcloud(tags, min = 0.5, max = 1.5)
|
194
|
+
result = {}
|
195
|
+
total = tags.size.to_f
|
196
|
+
diff = max - min
|
197
|
+
|
198
|
+
tags.uniq.each do |tag|
|
199
|
+
count = tags.respond_to?(:count) ? tags.count(tag) : tags.select{|t| t==tag }.size
|
200
|
+
result[tag] = ((count / total) * diff) + min
|
201
|
+
end
|
202
|
+
|
203
|
+
result
|
204
|
+
end
|
205
|
+
end # Formatting
|
206
|
+
end # Helper
|
207
|
+
end # Ramaze
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'ramaze/gestalt'
|
2
|
+
|
3
|
+
module Ramaze
|
4
|
+
module Helper
|
5
|
+
# Gestalt is the custom HTML/XML builder for Ramaze, based on a very simple
|
6
|
+
# DSL it will build your markup.
|
7
|
+
module Gestalt
|
8
|
+
CACHE_G = {}
|
9
|
+
|
10
|
+
def gestalt(&block)
|
11
|
+
Ramaze::Gestalt.new(&block)
|
12
|
+
end
|
13
|
+
|
14
|
+
def build(&block)
|
15
|
+
Ramaze::Gestalt.build(&block)
|
16
|
+
end
|
17
|
+
|
18
|
+
def g(meth = nil, view = nil)
|
19
|
+
meth ||= caller[0].slice(/`(.*)'?/).gsub(/[\`\']/, '')
|
20
|
+
view_name = (self.class.to_s.sub('Controller', '') + 'View').split('::')
|
21
|
+
view ||= view_name.inject(Object){ |ns, name| ns.const_get(name) }
|
22
|
+
|
23
|
+
gestalt_class = CACHE_G[view] ||= g_class
|
24
|
+
gestalt = gestalt_class.new
|
25
|
+
gestalt.extend(view)
|
26
|
+
instance_variables.each do |iv|
|
27
|
+
gestalt.instance_variable_set(iv, instance_variable_get(iv))
|
28
|
+
end
|
29
|
+
gestalt.__send__(meth)
|
30
|
+
gestalt.to_s
|
31
|
+
end
|
32
|
+
|
33
|
+
def g_class
|
34
|
+
ancs = self.class.ancestors
|
35
|
+
helpers = Ramaze::Helper.constants.map{ |c| Ramaze::Helper.const_get(c)}
|
36
|
+
our_helpers = ancs & helpers
|
37
|
+
our_helpers.delete(Ramaze::Helper::Gestalt)
|
38
|
+
gestalt_class = Class.new(Ramaze::Gestalt){ include(*our_helpers) }
|
39
|
+
end
|
40
|
+
|
41
|
+
def method_missing(sym, *args, &block)
|
42
|
+
@gestalt ||= gestalt
|
43
|
+
@gestalt.send(sym, *args, &block)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
module Ramaze::Helper::Link; undef :a end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
module Ramaze
|
2
|
+
module Helper
|
3
|
+
# Helps you building Gravatar URIs from an email address.
|
4
|
+
#
|
5
|
+
# For more information about gravatars, please see: http://gravatar.com
|
6
|
+
#
|
7
|
+
# The implementation of the gravatar method changed significantly, it does
|
8
|
+
# less hand-holding but is more flexible so you can simply put your own
|
9
|
+
# helper on top.
|
10
|
+
#
|
11
|
+
# It might not know about all the secret parameters (like 'force'), if you
|
12
|
+
# find out more of these please consider contributing a patch.
|
13
|
+
module Gravatar
|
14
|
+
# API to build gravatar URIs from an email address (or any other String).
|
15
|
+
#
|
16
|
+
# @example Simple usage
|
17
|
+
# class Gravatars < Ramaze::Controller
|
18
|
+
# helper :gravatar
|
19
|
+
#
|
20
|
+
# def index
|
21
|
+
# %q(
|
22
|
+
# Input your email address and I'll show you your Gravatar
|
23
|
+
# <form>
|
24
|
+
# <input type="text" name="email" />
|
25
|
+
# <input type="submit" />
|
26
|
+
# </form>
|
27
|
+
# <?r if email = request[:email] ?>
|
28
|
+
# Your gravatar is:
|
29
|
+
# <img src="#{gravatar(email)}" />
|
30
|
+
# <?r end ?>
|
31
|
+
# )
|
32
|
+
# end
|
33
|
+
# end
|
34
|
+
#
|
35
|
+
# @option opts [#to_s] :ext (nil)
|
36
|
+
# append a filename extension for the image, like '.jpg'
|
37
|
+
#
|
38
|
+
# @option opts [#to_i] :size (80)
|
39
|
+
# The size of the gravatar, square, so 80 is 80x80.
|
40
|
+
# Allowed range is from 1 to 512.
|
41
|
+
#
|
42
|
+
# @option opts [#to_s] :rating ('g')
|
43
|
+
# Only serve a gravatar if it has a content rating equal or below the
|
44
|
+
# one specified. Ratings, in order are: 'g', 'pg', 'r', or 'x'
|
45
|
+
#
|
46
|
+
# @option opts [#to_s] :default (nil)
|
47
|
+
# Fall back to default if the given +email+ doesn't have an gravatar;
|
48
|
+
# may be an absolute url, 'identicon', 'monsterid', or 'wavatar'
|
49
|
+
#
|
50
|
+
# @option opts [true, false] :force (false)
|
51
|
+
# Force use of the default avatar, useful if you want to use only
|
52
|
+
# identicons or the like
|
53
|
+
#
|
54
|
+
# @param [#to_str] email
|
55
|
+
# @return [URI]
|
56
|
+
# @see http://en.gravatar.com/site/implement/url
|
57
|
+
# @author manveru
|
58
|
+
#
|
59
|
+
def gravatar(email, opts = {})
|
60
|
+
uri = URI("http://www.gravatar.com/")
|
61
|
+
ext = opts[:ext]
|
62
|
+
uri.path = "/avatar/#{Digest::MD5.hexdigest(email.to_str)}#{ext}"
|
63
|
+
|
64
|
+
query = {}
|
65
|
+
query[:size] = opts[:size].to_i.to_s if opts.key?(:size)
|
66
|
+
query[:rating] = opts[:rating].to_s if opts.key?(:rating)
|
67
|
+
query[:default] = opts[:default].to_s if opts.key?(:default)
|
68
|
+
query[:force] = '1' if opts[:force]
|
69
|
+
|
70
|
+
uri.query = Rack::Utils.build_query(query) if query.any?
|
71
|
+
uri
|
72
|
+
end
|
73
|
+
end # Gravatar
|
74
|
+
end # Helper
|
75
|
+
end # Ramaze
|
@@ -1,13 +1,14 @@
|
|
1
1
|
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
|
2
|
-
# All files in this distribution are subject to the terms of the
|
2
|
+
# All files in this distribution are subject to the terms of the MIT license.
|
3
3
|
|
4
4
|
require 'openid'
|
5
5
|
require 'openid/store/filesystem'
|
6
6
|
require 'openid/extensions/pape'
|
7
|
+
require 'openid/extensions/sreg'
|
7
8
|
|
8
9
|
module Ramaze
|
9
10
|
|
10
|
-
openid_store_file = ::File.join(
|
11
|
+
openid_store_file = ::File.join(Ramaze.options.roots[0], '/tmp', 'openid-store')
|
11
12
|
|
12
13
|
# Constant for storing meta-information persistent
|
13
14
|
OpenIDStore = OpenID::Store::Filesystem.new(openid_store_file)
|
@@ -16,79 +17,103 @@ module Ramaze
|
|
16
17
|
# It provides a nice and simple way to provide and control access over the
|
17
18
|
# OpenID authentication model.
|
18
19
|
|
19
|
-
module Helper
|
20
|
+
module Helper
|
21
|
+
module Identity
|
22
|
+
LOOKUP << self
|
20
23
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
<form method="GET" action="#{
|
24
|
+
# Simple form for use or overwriting.
|
25
|
+
# Has to provide the same functionality when overwritten or directly
|
26
|
+
# embedded into a page.
|
27
|
+
def openid_login_form(caption="login")
|
28
|
+
%{
|
29
|
+
<form method="GET" action="#{rs(:openid_begin)}">
|
27
30
|
Identity URL: <input type="text" name="url" />
|
28
31
|
<input type="submit" value="#{caption}"/>
|
29
32
|
</form>
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
# We land here from the openid_login_form and if we can find a matching
|
34
|
-
# OpenID server we redirect the user to it, the browser will return to
|
35
|
-
# openid_complete when the authentication is complete.
|
36
|
-
def openid_begin
|
37
|
-
url = request['url']
|
38
|
-
redirect_referrer if url.to_s.empty?
|
39
|
-
session[:openid_entry] = request.referrer
|
40
|
-
|
41
|
-
openid_request = openid_consumer.begin(url)
|
42
|
-
|
43
|
-
papereq = OpenID::PAPE::Request.new
|
44
|
-
papereq.add_policy_uri(OpenID::PAPE::AUTH_PHISHING_RESISTANT)
|
45
|
-
papereq.max_auth_age = 2*60*60
|
46
|
-
openid_request.add_extension(papereq)
|
47
|
-
openid_request.return_to_args['did_pape'] = 'y'
|
48
|
-
|
49
|
-
root = "http://#{request.http_host}/"
|
50
|
-
return_to = root[0..-2] + Rs(:openid_complete)
|
51
|
-
immediate = false
|
52
|
-
if openid_request.send_redirect?(root, return_to, immediate)
|
53
|
-
redirect_url = openid_request.redirect_url(root, return_to, immediate)
|
54
|
-
raw_redirect redirect_url
|
55
|
-
else
|
56
|
-
# what the hell is @form_text ?
|
33
|
+
}
|
57
34
|
end
|
58
35
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
36
|
+
# We land here from the openid_login_form and if we can find a matching
|
37
|
+
# OpenID server we redirect the user to it, the browser will return to
|
38
|
+
# openid_complete when the authentication is complete.
|
39
|
+
def openid_begin
|
40
|
+
# The OpenID URL pointing to a user's OpenID page,
|
41
|
+
# for example: http://username.myopenid.com)
|
42
|
+
url = request['url']
|
43
|
+
redirect_referrer if url.to_s.empty?
|
44
|
+
session[:openid] ||= {}
|
45
|
+
session[:openid][:entry] = request.referrer
|
46
|
+
|
47
|
+
openid_request = openid_consumer.begin(url)
|
48
|
+
|
49
|
+
# We want these communications to be a secure as the server can
|
50
|
+
# support!
|
51
|
+
papereq = OpenID::PAPE::Request.new
|
52
|
+
papereq.add_policy_uri(OpenID::PAPE::AUTH_PHISHING_RESISTANT)
|
53
|
+
papereq.max_auth_age = 2*60*60
|
54
|
+
openid_request.add_extension(papereq)
|
55
|
+
|
56
|
+
# Request information about the person
|
57
|
+
sregreq = OpenID::SReg::Request.new
|
58
|
+
sregreq.request_fields(['fullname', 'nickname', 'dob', 'email',
|
59
|
+
'gender', 'postcode', 'country', 'language',
|
60
|
+
'timezone'])
|
61
|
+
openid_request.add_extension(sregreq)
|
62
|
+
openid_request.return_to_args['did_pape'] = 'y'
|
63
|
+
|
64
|
+
root = "http://#{request.http_host}/"
|
65
|
+
return_to = request.domain(rs(:openid_complete)).to_s
|
66
|
+
immediate = false
|
67
|
+
|
68
|
+
if openid_request.send_redirect?(root, return_to, immediate)
|
69
|
+
redirect_url =
|
70
|
+
openid_request.redirect_url(root, return_to, immediate)
|
71
|
+
raw_redirect redirect_url
|
72
|
+
else
|
73
|
+
# what the hell is @form_text ?
|
74
|
+
end
|
75
|
+
|
76
|
+
rescue OpenID::OpenIDError => ex
|
77
|
+
flash[:error] = "Discovery failed for #{url}: #{ex}"
|
78
|
+
raw_redirect rs(:/)
|
80
79
|
end
|
81
80
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
81
|
+
# After having authenticated at the OpenID server browsers are redirected
|
82
|
+
# back here and on success we set the session[:openid][:identity] and a little
|
83
|
+
# default flash message. Then we redirect to wherever session[:openid][:entry]
|
84
|
+
# points us to, which was set on openid_begin to the referrer
|
85
|
+
#
|
86
|
+
# TODO:
|
87
|
+
# - maybe using StackHelper, but this is a really minimal overlap?
|
88
|
+
def openid_complete
|
89
|
+
openid_response = openid_consumer.complete(request.params, request.url)
|
90
|
+
|
91
|
+
case openid_response.status
|
92
|
+
when OpenID::Consumer::FAILURE
|
93
|
+
flash[:error] = "OpenID - Verification failed: #{openid_response.message}"
|
94
|
+
when OpenID::Consumer::SUCCESS
|
95
|
+
# Backwards compatibility
|
96
|
+
session[:openid][:identity] = openid_response.identity_url
|
97
|
+
session[:openid][:sreg] = OpenID::SReg::Response.from_success_response(openid_response)
|
98
|
+
|
99
|
+
# Forward compatibility :)
|
100
|
+
session[:openid_identity] = openid_response.identity_url
|
101
|
+
session[:openid_sreg] = OpenID::SReg::Response.from_success_response(openid_response)
|
102
|
+
|
103
|
+
flash[:success] = 'OpenID - Verification done.'
|
104
|
+
end
|
105
|
+
|
106
|
+
session.delete(:_openid_consumer_service)
|
107
|
+
|
108
|
+
raw_redirect session[:openid][:entry]
|
109
|
+
end
|
86
110
|
|
87
|
-
|
111
|
+
private
|
88
112
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
end
|
113
|
+
# Fetch/Create a OpenID::Consumer for current session.
|
114
|
+
def openid_consumer
|
115
|
+
OpenID::Consumer.new(session, Ramaze::OpenIDStore)
|
116
|
+
end
|
117
|
+
end # Identity
|
118
|
+
end # Helper
|
119
|
+
end # Ramaze
|