spiderfw 0.5
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/README +4 -0
- data/Rakefile +74 -0
- data/apps/cas_server/_init.rb +23 -0
- data/apps/cas_server/config/options.rb +9 -0
- data/apps/cas_server/controllers/mixins/cas_login_mixin.rb +353 -0
- data/apps/cas_server/lib/cas.rb +329 -0
- data/apps/cas_server/lib/utils.rb +30 -0
- data/apps/cas_server/models/login_ticket.rb +11 -0
- data/apps/cas_server/models/mixins/consumable.rb +10 -0
- data/apps/cas_server/models/proxy_granting_ticket.rb +12 -0
- data/apps/cas_server/models/proxy_ticket.rb +12 -0
- data/apps/cas_server/models/service_ticket.rb +22 -0
- data/apps/cas_server/models/ticket.rb +20 -0
- data/apps/cas_server/models/ticket_granting_ticket.rb +15 -0
- data/apps/cas_server/views/logout.shtml +3 -0
- data/apps/core/admin/_init.rb +23 -0
- data/apps/core/admin/admin.rb +17 -0
- data/apps/core/admin/controllers/admin_controller.rb +15 -0
- data/apps/core/admin/views/index.shtml +1 -0
- data/apps/core/admin/views/spider_admin.layout.shtml +23 -0
- data/apps/core/admin/widgets/admin_menu/admin_menu.rb +17 -0
- data/apps/core/auth/_init.rb +42 -0
- data/apps/core/auth/controllers/login_controller.rb +94 -0
- data/apps/core/auth/controllers/mixins/auth_helper.rb +114 -0
- data/apps/core/auth/controllers/mixins/http_basic_auth.rb +24 -0
- data/apps/core/auth/controllers/mixins/http_digest_auth.rb +26 -0
- data/apps/core/auth/lib/authenticable.rb +86 -0
- data/apps/core/auth/lib/authenticator.rb +11 -0
- data/apps/core/auth/lib/digest_authenticator.rb +44 -0
- data/apps/core/auth/lib/login_authenticator.rb +27 -0
- data/apps/core/auth/models/digest_user.rb +34 -0
- data/apps/core/auth/models/group.rb +22 -0
- data/apps/core/auth/models/login_user.rb +15 -0
- data/apps/core/auth/models/mixins/access_control.rb +71 -0
- data/apps/core/auth/models/mixins/authentication_tracking.rb +19 -0
- data/apps/core/auth/models/super_user.rb +8 -0
- data/apps/core/auth/models/user.rb +15 -0
- data/apps/core/auth/po/it/spider_auth.po +33 -0
- data/apps/core/auth/po/spider_auth.pot +31 -0
- data/apps/core/auth/views/login.shtml +25 -0
- data/apps/core/components/_init.rb +21 -0
- data/apps/core/components/po/it/spider_components.po +52 -0
- data/apps/core/components/po/spider_components.pot +53 -0
- data/apps/core/components/public/css/admin.css +73 -0
- data/apps/core/components/public/css/crud.css +58 -0
- data/apps/core/components/public/css/img/add.gif +0 -0
- data/apps/core/components/public/css/img/ajax-loader.gif +0 -0
- data/apps/core/components/public/css/img/back.gif +0 -0
- data/apps/core/components/public/css/img/bg_header.png +0 -0
- data/apps/core/components/public/css/img/body_bg.jpg +0 -0
- data/apps/core/components/public/css/img/gray_gradient.gif +0 -0
- data/apps/core/components/public/css/img/li_bg.png +0 -0
- data/apps/core/components/public/css/img/li_bg_active.png +0 -0
- data/apps/core/components/public/css/img/li_bg_hover.png +0 -0
- data/apps/core/components/public/css/img/logo.png +0 -0
- data/apps/core/components/public/css/img/menu_bg.png +0 -0
- data/apps/core/components/public/css/img/menu_bottom.png +0 -0
- data/apps/core/components/public/css/img/menu_top.png +0 -0
- data/apps/core/components/public/css/img/section-bottom.jpg +0 -0
- data/apps/core/components/public/css/list.css +7 -0
- data/apps/core/components/public/css/menu.css +47 -0
- data/apps/core/components/public/css/spider.css +9 -0
- data/apps/core/components/public/css/switcher.css +13 -0
- data/apps/core/components/public/css/table.css +99 -0
- data/apps/core/components/public/js/inheritance.js +71 -0
- data/apps/core/components/public/js/jquery/jquery-1.3.2.js +4376 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/smoothness/jquery-ui-1.7.2.custom.css +406 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/css/ui-lightness/jquery-ui-1.7.2.custom.css +406 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/AUTHORS.txt +30 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/GPL-LICENSE.txt +278 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/MIT-LICENSE.txt +25 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/external/bgiframe/ChangeLog.txt +20 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/external/bgiframe/META.json +32 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/external/bgiframe/jquery.bgiframe.js +100 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/external/bgiframe/jquery.bgiframe.min.js +10 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/external/bgiframe/jquery.bgiframe.pack.js +10 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/external/bgiframe/test/index.html +197 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/external/cookie/jquery.cookie.js +97 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/external/cookie/jquery.cookie.min.js +10 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/external/cookie/jquery.cookie.pack.js +10 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/external/cookie/jquery.cookie.zip +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/external/jsdiff/jsdiff.js +159 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/external/qunit/testrunner.js +780 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/external/qunit/testsuite.css +120 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/external/simulate/jquery.simulate.js +152 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/jquery-1.3.2.js +4376 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/images/ui-icons_222222_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/images/ui-icons_2e83ff_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/images/ui-icons_454545_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/images/ui-icons_888888_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/ui.accordion.css +9 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/ui.all.css +2 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/ui.base.css +8 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/ui.core.css +37 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/ui.datepicker.css +62 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/ui.dialog.css +13 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/ui.progressbar.css +4 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/ui.resizable.css +13 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/ui.slider.css +17 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/ui.tabs.css +11 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/base/ui.theme.css +245 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/jquery-ui-1.7.2.custom.css +406 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/ui.accordion.css +9 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/ui.all.css +2 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/ui.base.css +8 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/ui.core.css +37 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/ui.datepicker.css +62 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/ui.dialog.css +13 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/ui.progressbar.css +4 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/ui.resizable.css +13 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/ui.slider.css +17 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/ui.tabs.css +11 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/themes/ui-lightness/ui.theme.css +247 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/effects.blind.js +49 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/effects.bounce.js +78 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/effects.clip.js +54 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/effects.core.js +545 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/effects.drop.js +50 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/effects.explode.js +79 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/effects.fold.js +56 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/effects.highlight.js +48 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/effects.pulsate.js +56 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/effects.scale.js +180 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/effects.shake.js +57 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/effects.slide.js +50 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/effects.transfer.js +45 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/jquery-ui-i18n.js +771 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-ar.js +20 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-bg.js +20 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-ca.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-cs.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-da.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-de.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-el.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-eo.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-es.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-fa.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-fi.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-fr.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-he.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-hr.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-hu.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-hy.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-id.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-is.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-it.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-ja.js +20 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-ko.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-lt.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-lv.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-ms.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-nl.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-no.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-pl.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-pt-BR.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-ro.js +22 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-ru.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-sk.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-sl.js +20 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-sq.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-sr-SR.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-sr.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-sv.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-th.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-tr.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-uk.js +25 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-zh-CN.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/i18n/ui.datepicker-zh-TW.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/jquery-ui-1.7.2.custom.js +9133 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/ui.accordion.js +477 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/ui.core.js +519 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/ui.datepicker.js +1636 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/ui.dialog.js +671 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/ui.draggable.js +766 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/ui.droppable.js +282 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/ui.progressbar.js +116 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/ui.resizable.js +800 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/ui.selectable.js +257 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/ui.slider.js +558 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/ui.sortable.js +1019 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/ui/ui.tabs.js +685 -0
- data/apps/core/components/public/js/jquery/jquery-ui/development-bundle/version.txt +1 -0
- data/apps/core/components/public/js/jquery/jquery-ui/index.html +367 -0
- data/apps/core/components/public/js/jquery/jquery-ui/js/jquery-1.3.2.min.js +19 -0
- data/apps/core/components/public/js/jquery/jquery-ui/js/jquery-ui-1.7.2.custom.min.js +298 -0
- data/apps/core/components/public/js/jquery/plugins/jquery-autocomplete/changelog.txt +27 -0
- data/apps/core/components/public/js/jquery/plugins/jquery-autocomplete/jquery.autocomplete.css +48 -0
- data/apps/core/components/public/js/jquery/plugins/jquery-autocomplete/jquery.autocomplete.js +808 -0
- data/apps/core/components/public/js/jquery/plugins/jquery-autocomplete/jquery.autocomplete.min.js +13 -0
- data/apps/core/components/public/js/jquery/plugins/jquery-autocomplete/jquery.autocomplete.pack.js +12 -0
- data/apps/core/components/public/js/jquery/plugins/jquery-autocomplete/lib/jquery.ajaxQueue.js +116 -0
- data/apps/core/components/public/js/jquery/plugins/jquery-autocomplete/lib/jquery.bgiframe.min.js +10 -0
- data/apps/core/components/public/js/jquery/plugins/jquery-autocomplete/lib/jquery.js +3558 -0
- data/apps/core/components/public/js/jquery/plugins/jquery-autocomplete/lib/thickbox-compressed.js +10 -0
- data/apps/core/components/public/js/jquery/plugins/jquery-autocomplete/lib/thickbox.css +163 -0
- data/apps/core/components/public/js/jquery/plugins/jquery-autocomplete/todo +166 -0
- data/apps/core/components/public/js/jquery/plugins/jquery.form.js +653 -0
- data/apps/core/components/public/js/jquery/plugins/jquery.query-2.1.6.js +224 -0
- data/apps/core/components/public/js/jquery/plugins/jquery.url.js +214 -0
- data/apps/core/components/public/js/jquery/plugins/jtree/jquery.jtree.1.0.js +187 -0
- data/apps/core/components/public/js/jquery/plugins/jtree/jquery.jtree.1.0.min.js +1 -0
- data/apps/core/components/public/js/jquery/plugins/jtree/jquery.jtree.spider.1.0.js +193 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/changelog.txt +35 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/ajax-loader.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/file.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/folder-closed.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/folder.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/minus.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/plus.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/treeview-black-line.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/treeview-black.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/treeview-default-line.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/treeview-default.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/treeview-famfamfam-line.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/treeview-famfamfam.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/treeview-gray-line.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/treeview-gray.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/treeview-red-line.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/images/treeview-red.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/jquery.treeview.async.js +110 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/jquery.treeview.css +74 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/jquery.treeview.edit.js +37 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/jquery.treeview.js +256 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/jquery.treeview.min.js +15 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/jquery.treeview.pack.js +16 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/jquery.treeview.sortable.js +386 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/lib/jquery.cookie.js +92 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/lib/jquery.js +3534 -0
- data/apps/core/components/public/js/jquery/plugins/treeview/todo +8 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/LICENSE +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/README +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/jquery.timepickr.css +34 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/jquery.timepickr.js +1413 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/jquery.timepickr.min.js +10 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/images/222222_256x240_icons_icons.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/images/2e83ff_256x240_icons_icons.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/images/454545_256x240_icons_icons.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/images/888888_256x240_icons_icons.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/images/aaaaaa_40x100_textures_01_flat_0.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/images/cccccc_40x100_textures_03_highlight_soft_75.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/images/cd0a0a_256x240_icons_icons.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/images/dadada_40x100_textures_02_glass_75.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/images/e6e6e6_40x100_textures_02_glass_75.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/images/fbf9ee_40x100_textures_02_glass_55.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/images/fef1ec_40x100_textures_05_inset_soft_95.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/images/ffffff_40x100_textures_02_glass_65.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/images/ffffff_40x100_textures_02_glass_75.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/ui.accordion.css +9 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/ui.all.css +4 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/ui.allplugins.css +7 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/ui.core.css +37 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/ui.datepicker.css +60 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/ui.dialog.css +13 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/ui.progressbar.css +4 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/ui.resizable.css +13 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/ui.slider.css +13 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/ui.tabs.css +9 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/ui.theme.css +238 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/themes/default/ui.timepickr.css +44 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/ui.timepickr.js +2307 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/dist/ui.timepickr.min.js +10 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/body-bg.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/btn-hover.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/btn.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/buttons.psd +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/index.html +326 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/jquery.anchorHandler.js +44 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/jquery.strings.js +290 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/jquery.ui.all.js +518 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/jquery.utils.js +255 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/jquery.utils.ui.min.js +26 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/logo-ff.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/logo-ie.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/logo.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/logo.psd +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/package.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/reset.css +48 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/script_code.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/styles.css +308 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/themeroller_ready_black_200px.gif +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/page/weather_sun.png +0 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/src/css/ui.dropslide.css +26 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/src/css/ui.timepickr.css +18 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/src/ui.dropslide.js +132 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/src/ui.timepickr.js +217 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/test/data/testrunner.js +1 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/test/index.html +34 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/test/otherlibs/jquery/1.2.1/jquery.js +11 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/test/otherlibs/jquery/1.2.3/jquery.js +11 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/test/qunit/testrunner.js +780 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/test/qunit/testsuite.css +120 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/test/styles.css +201 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/test/test.js +41 -0
- data/apps/core/components/public/js/jquery/plugins/ui-timepickr/test/unit/ui.timepickr.js +154 -0
- data/apps/core/components/public/js/list.js +234 -0
- data/apps/core/components/public/js/spider.js +484 -0
- data/apps/core/components/public/widgets/search_table.js +10 -0
- data/apps/core/components/public/widgets/table.js +9 -0
- data/apps/core/components/widgets/admin/admin.rb +75 -0
- data/apps/core/components/widgets/admin/admin.shtml +16 -0
- data/apps/core/components/widgets/confirm/confirm.rb +37 -0
- data/apps/core/components/widgets/confirm/confirm.shtml +9 -0
- data/apps/core/components/widgets/crud/crud.rb +119 -0
- data/apps/core/components/widgets/crud/crud.shtml +59 -0
- data/apps/core/components/widgets/crud/form_table/form_table.rb +13 -0
- data/apps/core/components/widgets/crud/form_table/form_table.shtml +3 -0
- data/apps/core/components/widgets/list/list.rb +294 -0
- data/apps/core/components/widgets/list/list.shtml +38 -0
- data/apps/core/components/widgets/list/plugins/exportable/exportable_list.rb +19 -0
- data/apps/core/components/widgets/list/plugins/exportable/exportable_list.shtml +5 -0
- data/apps/core/components/widgets/menu/menu.rb +20 -0
- data/apps/core/components/widgets/menu/menu.shtml +13 -0
- data/apps/core/components/widgets/search_table/search_table.rb +22 -0
- data/apps/core/components/widgets/search_table/search_table.shtml +11 -0
- data/apps/core/components/widgets/switcher/switcher.rb +68 -0
- data/apps/core/components/widgets/switcher/switcher.shtml +17 -0
- data/apps/core/components/widgets/table/table.rb +153 -0
- data/apps/core/components/widgets/table/table.shtml +41 -0
- data/apps/core/components/widgets/tabs/tabs.rb +38 -0
- data/apps/core/components/widgets/tabs/tabs.shtml +2 -0
- data/apps/core/forms/_init.rb +22 -0
- data/apps/core/forms/po/it/spider_forms.po +36 -0
- data/apps/core/forms/po/spider_forms.pot +37 -0
- data/apps/core/forms/public/date_time.js +23 -0
- data/apps/core/forms/public/form.css +81 -0
- data/apps/core/forms/public/form.js +19 -0
- data/apps/core/forms/public/input.js +30 -0
- data/apps/core/forms/public/search_select.js +123 -0
- data/apps/core/forms/public/select.js +11 -0
- data/apps/core/forms/tags/element_label.erb +1 -0
- data/apps/core/forms/tags/element_row.erb +4 -0
- data/apps/core/forms/tags/row.erb +4 -0
- data/apps/core/forms/widgets/form/form.rb +430 -0
- data/apps/core/forms/widgets/form/form.shtml +47 -0
- data/apps/core/forms/widgets/inputs/checkbox/checkbox.rb +13 -0
- data/apps/core/forms/widgets/inputs/checkbox/checkbox.shtml +3 -0
- data/apps/core/forms/widgets/inputs/date_time/date_time.rb +48 -0
- data/apps/core/forms/widgets/inputs/date_time/date_time.shtml +4 -0
- data/apps/core/forms/widgets/inputs/hidden/hidden.rb +8 -0
- data/apps/core/forms/widgets/inputs/hidden/hidden.shtml +3 -0
- data/apps/core/forms/widgets/inputs/input/input.rb +105 -0
- data/apps/core/forms/widgets/inputs/input/input.shtml +3 -0
- data/apps/core/forms/widgets/inputs/input/readonly.shtml +6 -0
- data/apps/core/forms/widgets/inputs/password/password.rb +24 -0
- data/apps/core/forms/widgets/inputs/password/password.shtml +5 -0
- data/apps/core/forms/widgets/inputs/search_select/search_select.rb +168 -0
- data/apps/core/forms/widgets/inputs/search_select/search_select.shtml +42 -0
- data/apps/core/forms/widgets/inputs/select/select.rb +126 -0
- data/apps/core/forms/widgets/inputs/select/select.shtml +8 -0
- data/apps/core/forms/widgets/inputs/subform/subform.rb +10 -0
- data/apps/core/forms/widgets/inputs/subform/subform.shtml +5 -0
- data/apps/core/forms/widgets/inputs/text/text.rb +9 -0
- data/apps/core/forms/widgets/inputs/text/text.shtml +3 -0
- data/apps/core/forms/widgets/inputs/text_area/text_area.rb +10 -0
- data/apps/core/forms/widgets/inputs/text_area/text_area.shtml +1 -0
- data/apps/drb_server/_init.rb +8 -0
- data/apps/drb_server/lib/model_server.rb +41 -0
- data/apps/drb_server/script/start_server.rb +19 -0
- data/apps/hippo/_init.rb +10 -0
- data/apps/hippo/models/mixins/hippo_struct.rb +210 -0
- data/apps/hippo/models/security_group.rb +21 -0
- data/apps/hippo/models/security_user.rb +29 -0
- data/apps/messenger/_init.rb +24 -0
- data/apps/messenger/config/options.rb +15 -0
- data/apps/messenger/config/worker.rb +3 -0
- data/apps/messenger/controllers/messenger_controller.rb +80 -0
- data/apps/messenger/controllers/mixins/messenger_controller_mixin.rb +54 -0
- data/apps/messenger/lib/backends/email/smtp.rb +0 -0
- data/apps/messenger/messenger.rb +94 -0
- data/apps/messenger/models/email.rb +22 -0
- data/apps/messenger/models/message.rb +44 -0
- data/apps/messenger/po/it/spider_messenger.po +77 -0
- data/apps/messenger/po/spider_messenger.pot +77 -0
- data/apps/messenger/views/index.shtml +13 -0
- data/apps/messenger/views/list.shtml +5 -0
- data/apps/messenger/views/messenger.layout.shtml +4 -0
- data/apps/messenger/views/queue.shtml +8 -0
- data/apps/messenger/views/tags/sent_messages.shtml +1 -0
- data/apps/soap/_init.rb +16 -0
- data/apps/soap/controllers/soap_controller.rb +334 -0
- data/apps/soap/doc/examples/example.rb +28 -0
- data/apps/soap/lib/soap.rb +217 -0
- data/apps/sso/_init.rb +16 -0
- data/apps/sso/config/options.rb +13 -0
- data/apps/sso/controllers/mixins/saml2_mixin.rb +149 -0
- data/apps/sso/lib/saml2/backend.rb +16 -0
- data/apps/sso/lib/saml2/lasso_backend.rb +88 -0
- data/apps/sso/lib/saml2.rb +112 -0
- data/apps/sso/views/saml2_post.shtml +19 -0
- data/apps/webdav/_init.rb +15 -0
- data/apps/webdav/controllers/webdav_controller.rb +862 -0
- data/apps/webdav/lib/locking.rb +193 -0
- data/apps/webdav/lib/vfs/abstract.rb +78 -0
- data/apps/webdav/lib/vfs/local.rb +126 -0
- data/apps/webdav/lib/vfs/mapped.rb +235 -0
- data/apps/webdav/lib/vfs/properties.rb +41 -0
- data/apps/worker/_init.rb +13 -0
- data/apps/worker/cmd.rb +65 -0
- data/apps/worker/config/options.rb +9 -0
- data/apps/worker/lib/runner.rb +43 -0
- data/apps/worker/lib/task.rb +9 -0
- data/apps/worker/models/job.rb +20 -0
- data/apps/worker/worker.rb +168 -0
- data/bin/spider +9 -0
- data/blueprints/app/_init.rb +10 -0
- data/blueprints/app/controllers/__APP___controller.rb +14 -0
- data/blueprints/app/views/__APP__.layout.shtml +8 -0
- data/blueprints/app/views/index.shtml +3 -0
- data/blueprints/install/config/config.yml +14 -0
- data/blueprints/install/init.rb +3 -0
- data/data/locale/it/LC_MESSAGES/spider.mo +0 -0
- data/data/locale/it/LC_MESSAGES/spider_auth.mo +0 -0
- data/data/locale/it/LC_MESSAGES/spider_components.mo +0 -0
- data/data/locale/it/LC_MESSAGES/spider_forms.mo +0 -0
- data/data/locale/it/LC_MESSAGES/spider_messenger.mo +0 -0
- data/lib/spiderfw/app.rb +186 -0
- data/lib/spiderfw/autoload.rb +12 -0
- data/lib/spiderfw/cache/template_cache.rb +136 -0
- data/lib/spiderfw/cmd/cmd.rb +72 -0
- data/lib/spiderfw/cmd/commands/cert.rb +427 -0
- data/lib/spiderfw/cmd/commands/console.rb +27 -0
- data/lib/spiderfw/cmd/commands/init.rb +52 -0
- data/lib/spiderfw/cmd/commands/model.rb +131 -0
- data/lib/spiderfw/cmd/commands/setup.rb +54 -0
- data/lib/spiderfw/cmd/commands/test.rb +61 -0
- data/lib/spiderfw/cmd/commands/webserver.rb +93 -0
- data/lib/spiderfw/config/configurable.rb +38 -0
- data/lib/spiderfw/config/configuration.rb +281 -0
- data/lib/spiderfw/config/options/spider.rb +122 -0
- data/lib/spiderfw/controller/app_controller.rb +14 -0
- data/lib/spiderfw/controller/controller.rb +321 -0
- data/lib/spiderfw/controller/controller_exceptions.rb +27 -0
- data/lib/spiderfw/controller/controller_io.rb +26 -0
- data/lib/spiderfw/controller/controller_mixin.rb +12 -0
- data/lib/spiderfw/controller/cookie.rb +20 -0
- data/lib/spiderfw/controller/cookies.rb +17 -0
- data/lib/spiderfw/controller/dispatcher.rb +269 -0
- data/lib/spiderfw/controller/first_responder.rb +59 -0
- data/lib/spiderfw/controller/formats/html.rb +90 -0
- data/lib/spiderfw/controller/helpers/widget_helper.rb +73 -0
- data/lib/spiderfw/controller/home_controller.rb +26 -0
- data/lib/spiderfw/controller/http_controller.rb +112 -0
- data/lib/spiderfw/controller/mixins/http_mixin.rb +228 -0
- data/lib/spiderfw/controller/mixins/static_content.rb +90 -0
- data/lib/spiderfw/controller/mixins/visual.rb +489 -0
- data/lib/spiderfw/controller/page_controller.rb +39 -0
- data/lib/spiderfw/controller/request.rb +48 -0
- data/lib/spiderfw/controller/response.rb +50 -0
- data/lib/spiderfw/controller/router.rb +9 -0
- data/lib/spiderfw/controller/scene.rb +27 -0
- data/lib/spiderfw/controller/session/file_session.rb +83 -0
- data/lib/spiderfw/controller/session/flash_hash.rb +56 -0
- data/lib/spiderfw/controller/session/memory_session.rb +62 -0
- data/lib/spiderfw/controller/session/transient_hash.rb +18 -0
- data/lib/spiderfw/controller/session.rb +106 -0
- data/lib/spiderfw/controller/spider_controller.rb +20 -0
- data/lib/spiderfw/create.rb +64 -0
- data/lib/spiderfw/env.rb +17 -0
- data/lib/spiderfw/exceptions.rb +2 -0
- data/lib/spiderfw/home.rb +26 -0
- data/lib/spiderfw/http/adapters/cgi.rb +62 -0
- data/lib/spiderfw/http/adapters/cgi_io.rb +27 -0
- data/lib/spiderfw/http/adapters/fcgi.rb +62 -0
- data/lib/spiderfw/http/adapters/mongrel.rb +207 -0
- data/lib/spiderfw/http/adapters/rack.rb +152 -0
- data/lib/spiderfw/http/adapters/thin.rb +38 -0
- data/lib/spiderfw/http/adapters/webrick.rb +176 -0
- data/lib/spiderfw/http/http.rb +297 -0
- data/lib/spiderfw/http/server.rb +40 -0
- data/lib/spiderfw/i18n/cldr.rb +114 -0
- data/lib/spiderfw/i18n/gettext.rb +8 -0
- data/lib/spiderfw/i18n/i18n.rb +120 -0
- data/lib/spiderfw/i18n/provider.rb +12 -0
- data/lib/spiderfw/i18n/rails.rb +89 -0
- data/lib/spiderfw/i18n/shtml_parser.rb +41 -0
- data/lib/spiderfw/model/active_record.rb +335 -0
- data/lib/spiderfw/model/base_model.rb +2068 -0
- data/lib/spiderfw/model/condition.rb +416 -0
- data/lib/spiderfw/model/data_type.rb +75 -0
- data/lib/spiderfw/model/datatypes/binary.rb +10 -0
- data/lib/spiderfw/model/datatypes/bool.rb +10 -0
- data/lib/spiderfw/model/datatypes/decimal.rb +22 -0
- data/lib/spiderfw/model/datatypes/email.rb +13 -0
- data/lib/spiderfw/model/datatypes/password.rb +63 -0
- data/lib/spiderfw/model/datatypes/serialized_object.rb +32 -0
- data/lib/spiderfw/model/datatypes/text.rb +10 -0
- data/lib/spiderfw/model/datatypes/uuid.rb +29 -0
- data/lib/spiderfw/model/datatypes.rb +19 -0
- data/lib/spiderfw/model/element.rb +250 -0
- data/lib/spiderfw/model/extended_models/managed.rb +43 -0
- data/lib/spiderfw/model/identity_mapper.rb +89 -0
- data/lib/spiderfw/model/inline_model.rb +37 -0
- data/lib/spiderfw/model/mappers/db_mapper.rb +1126 -0
- data/lib/spiderfw/model/mappers/hash_mapper.rb +114 -0
- data/lib/spiderfw/model/mappers/mapper.rb +926 -0
- data/lib/spiderfw/model/mappers/mappers.rb +7 -0
- data/lib/spiderfw/model/mappers/proxy_mapper.rb +25 -0
- data/lib/spiderfw/model/mappers/vfs/flat_file.rb +31 -0
- data/lib/spiderfw/model/mixins/converted.rb +110 -0
- data/lib/spiderfw/model/mixins/list.rb +135 -0
- data/lib/spiderfw/model/mixins/mixins.rb +7 -0
- data/lib/spiderfw/model/mixins/state_machine.rb +81 -0
- data/lib/spiderfw/model/mixins/synchronized.rb +88 -0
- data/lib/spiderfw/model/mixins/tree.rb +296 -0
- data/lib/spiderfw/model/mixins/versioned.rb +147 -0
- data/lib/spiderfw/model/model.rb +226 -0
- data/lib/spiderfw/model/model_hash.rb +50 -0
- data/lib/spiderfw/model/proxy_model.rb +37 -0
- data/lib/spiderfw/model/query.rb +147 -0
- data/lib/spiderfw/model/query_funcs.rb +99 -0
- data/lib/spiderfw/model/query_set.rb +700 -0
- data/lib/spiderfw/model/request.rb +80 -0
- data/lib/spiderfw/model/storage/base_storage.rb +110 -0
- data/lib/spiderfw/model/storage/db/adapters/mssql.rb +129 -0
- data/lib/spiderfw/model/storage/db/adapters/mysql.rb +436 -0
- data/lib/spiderfw/model/storage/db/adapters/oci8.rb +533 -0
- data/lib/spiderfw/model/storage/db/adapters/sqlite.rb +163 -0
- data/lib/spiderfw/model/storage/db/connectors/odbc.rb +213 -0
- data/lib/spiderfw/model/storage/db/db.rb +13 -0
- data/lib/spiderfw/model/storage/db/db_connection_pool.rb +126 -0
- data/lib/spiderfw/model/storage/db/db_connector.rb +9 -0
- data/lib/spiderfw/model/storage/db/db_schema.rb +233 -0
- data/lib/spiderfw/model/storage/db/db_storage.rb +872 -0
- data/lib/spiderfw/model/storage/db/dialects/no_total_rows.rb +18 -0
- data/lib/spiderfw/model/storage/db/reflector.rb +36 -0
- data/lib/spiderfw/model/storage/null_storage.rb +18 -0
- data/lib/spiderfw/model/storage/schema.rb +19 -0
- data/lib/spiderfw/model/storage.rb +72 -0
- data/lib/spiderfw/model/sync.rb +94 -0
- data/lib/spiderfw/model/type.rb +13 -0
- data/lib/spiderfw/model/unit_of_work.rb +75 -0
- data/lib/spiderfw/requires.rb +21 -0
- data/lib/spiderfw/resource.rb +18 -0
- data/lib/spiderfw/setup/setup_task.rb +44 -0
- data/lib/spiderfw/tag/tag.rb +28 -0
- data/lib/spiderfw/templates/blocks/attr_if.rb +32 -0
- data/lib/spiderfw/templates/blocks/comment.rb +38 -0
- data/lib/spiderfw/templates/blocks/debugger.rb +16 -0
- data/lib/spiderfw/templates/blocks/each.rb +51 -0
- data/lib/spiderfw/templates/blocks/html.rb +70 -0
- data/lib/spiderfw/templates/blocks/if.rb +35 -0
- data/lib/spiderfw/templates/blocks/pass.rb +16 -0
- data/lib/spiderfw/templates/blocks/render.rb +23 -0
- data/lib/spiderfw/templates/blocks/run.rb +30 -0
- data/lib/spiderfw/templates/blocks/tag.rb +21 -0
- data/lib/spiderfw/templates/blocks/tag_if.rb +29 -0
- data/lib/spiderfw/templates/blocks/text.rb +43 -0
- data/lib/spiderfw/templates/blocks/widget.rb +58 -0
- data/lib/spiderfw/templates/blocks/yield.rb +18 -0
- data/lib/spiderfw/templates/layout.rb +44 -0
- data/lib/spiderfw/templates/resources/less.rb +14 -0
- data/lib/spiderfw/templates/template.rb +625 -0
- data/lib/spiderfw/templates/template_blocks.rb +185 -0
- data/lib/spiderfw/utils/annotations.rb +201 -0
- data/lib/spiderfw/utils/fork.rb +75 -0
- data/lib/spiderfw/utils/hash_comparison.rb +8 -0
- data/lib/spiderfw/utils/inflector.rb +42 -0
- data/lib/spiderfw/utils/logger.rb +92 -0
- data/lib/spiderfw/utils/monkey/class.rb +59 -0
- data/lib/spiderfw/utils/monkey/date_time.rb +34 -0
- data/lib/spiderfw/utils/monkey/debugger.rb +25 -0
- data/lib/spiderfw/utils/monkey/exception.rb +23 -0
- data/lib/spiderfw/utils/monkey/kernel.rb +12 -0
- data/lib/spiderfw/utils/monkey/module.rb +12 -0
- data/lib/spiderfw/utils/monkey/symbol.rb +7 -0
- data/lib/spiderfw/utils/monkey/time.rb +17 -0
- data/lib/spiderfw/utils/multi_level_hash.rb +33 -0
- data/lib/spiderfw/utils/periodic_runner.rb +50 -0
- data/lib/spiderfw/utils/rails.rb +78 -0
- data/lib/spiderfw/utils/rails_app.rb +53 -0
- data/lib/spiderfw/utils/sanitizer.rb +178 -0
- data/lib/spiderfw/utils/setup_task.rb +35 -0
- data/lib/spiderfw/utils/shared_store/file_shared_store.rb +73 -0
- data/lib/spiderfw/utils/shared_store/memory_shared_store.rb +46 -0
- data/lib/spiderfw/utils/shared_store.rb +47 -0
- data/lib/spiderfw/utils/test_case.rb +24 -0
- data/lib/spiderfw/utils/thread_out.rb +24 -0
- data/lib/spiderfw/version.rb +3 -0
- data/lib/spiderfw/widget/rest_model.rb +20 -0
- data/lib/spiderfw/widget/widget.rb +671 -0
- data/lib/spiderfw/widget/widget_attributes.rb +54 -0
- data/lib/spiderfw/widget/widget_plugin.rb +37 -0
- data/lib/spiderfw.rb +509 -0
- data/spider.gemspec +43 -0
- data/views/errors/404.shtml +6 -0
- data/views/errors/error.layout.shtml +70 -0
- data/views/errors/error_generic.shtml +6 -0
- metadata +800 -0
|
@@ -0,0 +1,489 @@
|
|
|
1
|
+
require 'spiderfw/templates/template'
|
|
2
|
+
require 'spiderfw/templates/layout'
|
|
3
|
+
|
|
4
|
+
module Spider; module ControllerMixins
|
|
5
|
+
|
|
6
|
+
# Mixin for objects using templates
|
|
7
|
+
module Visual
|
|
8
|
+
|
|
9
|
+
attr_accessor :layout, :dispatcher_layout
|
|
10
|
+
|
|
11
|
+
def self.included(klass)
|
|
12
|
+
klass.extend(ClassMethods)
|
|
13
|
+
klass.define_annotation(:html) { |k, m, params| k.output_format(m, :html, params) }
|
|
14
|
+
klass.define_annotation(:xml) { |k, m, params| k.output_format(m, :xml, params) }
|
|
15
|
+
klass.define_annotation(:json) { |k, m, params| k.output_format(m, :json, params) }
|
|
16
|
+
klass.define_annotation(:text) { |k, m, params| k.output_format(m, :text, params) }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def before(action='', *params)
|
|
20
|
+
@layout ||= self.class.get_layout(action)
|
|
21
|
+
@layout ||= @dispatcher_layout
|
|
22
|
+
format = nil
|
|
23
|
+
req_format = self.is_a?(Widget) && @is_target && @request.params['_wf'] ? @request.params['_wf'].to_sym : @request.format
|
|
24
|
+
if (req_format)
|
|
25
|
+
format = req_format if self.class.output_format?(@executed_method, req_format)
|
|
26
|
+
if (format)
|
|
27
|
+
format_params = self.class.output_format_params(@executed_method, format)
|
|
28
|
+
end
|
|
29
|
+
if @executed_method && !format || (format_params && format_params[:widgets] && !@request.params['_wt'])
|
|
30
|
+
raise Spider::Controller::NotFound.new("#{action}.#{@request.format}")
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
format ||= self.class.output_format(@executed_method)
|
|
34
|
+
format_params ||= self.class.output_format_params(@executed_method, format)
|
|
35
|
+
output_format_headers(format)
|
|
36
|
+
@executed_format = format
|
|
37
|
+
@executed_format_params = format_params
|
|
38
|
+
super
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def output_format_headers(format)
|
|
42
|
+
case format
|
|
43
|
+
when :text
|
|
44
|
+
content_type('text/plain')
|
|
45
|
+
when :json
|
|
46
|
+
if (Spider.runmode == 'devel' && @request.params['_text'])
|
|
47
|
+
content_type('text/plain')
|
|
48
|
+
else
|
|
49
|
+
content_type('application/json')
|
|
50
|
+
end
|
|
51
|
+
when :js
|
|
52
|
+
content_type('application/x-javascript')
|
|
53
|
+
when :html
|
|
54
|
+
content_type('text/html')
|
|
55
|
+
when :xml
|
|
56
|
+
content_type('text/xml')
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def execute(action='', *params)
|
|
61
|
+
format_params = @executed_format_params
|
|
62
|
+
if (self.is_a?(Widget) && @is_target && @request.params['_wp'])
|
|
63
|
+
params = @request.params['_wp']
|
|
64
|
+
elsif (format_params.is_a?(Hash) && format_params[:params])
|
|
65
|
+
p_first, p_rest = action.split('/')
|
|
66
|
+
params = format_params[:params].call(p_rest) if p_rest
|
|
67
|
+
end
|
|
68
|
+
super(action, *params)
|
|
69
|
+
return unless format_params.is_a?(Hash)
|
|
70
|
+
if (format_params.is_a?(Hash) && format_params[:template])
|
|
71
|
+
@template ||= init_template
|
|
72
|
+
widget_target = @request.params['_wt']
|
|
73
|
+
widget_execute = @request.params['_we']
|
|
74
|
+
if (widget_target)
|
|
75
|
+
first, rest = widget_target.split('/', 2)
|
|
76
|
+
@_widget = find_widget(first)
|
|
77
|
+
raise Spider::Controller::NotFound.new("Widget #{widget_target}") unless @_widget
|
|
78
|
+
@_widget.is_target = true unless rest
|
|
79
|
+
@_widget.set_action(widget_execute) if widget_execute
|
|
80
|
+
@_widget.target_mode = true
|
|
81
|
+
@_widget.widget_target = rest
|
|
82
|
+
@template.do_widgets_before
|
|
83
|
+
@_widget.execute
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
if (format_params.is_a?(Hash) && format_params[:template] && !@_widget)
|
|
87
|
+
if (@template)
|
|
88
|
+
render(@template, format_params) # has been init'ed in before method
|
|
89
|
+
else
|
|
90
|
+
render(format_params[:template], format_params)
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
return unless format_params.is_a?(Hash)
|
|
94
|
+
if (format_params[:redirect])
|
|
95
|
+
# red = format_params[:redirect] == true ? request_url : format_params[:redirect]
|
|
96
|
+
# red = owner_controller.request_url if (self.is_a?(Widget))
|
|
97
|
+
redirect(format_params[:redirect])
|
|
98
|
+
end
|
|
99
|
+
if (@executed_format == :json && format_params[:scene] || format_params[:return]) # FIXME: move in JSON mixin?
|
|
100
|
+
if (format_params[:return])
|
|
101
|
+
$out << format_params[:return].to_json
|
|
102
|
+
elsif (format_params[:scene].is_a?(Array))
|
|
103
|
+
h = @scene.to_hash
|
|
104
|
+
res = {}
|
|
105
|
+
format_params[:scene].each{ |k| res[k] = h[k] }
|
|
106
|
+
$out << res.to_json
|
|
107
|
+
else
|
|
108
|
+
$out << @scene.to_json
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def load_template(path, cur_path=nil, owner=nil, search_paths=nil)
|
|
114
|
+
template = self.class.load_template(path, cur_path, owner, search_paths)
|
|
115
|
+
template.owner = self
|
|
116
|
+
template.request = request
|
|
117
|
+
template.response = response
|
|
118
|
+
@template = template
|
|
119
|
+
return template
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def template_exists?(name)
|
|
123
|
+
self.class.template_exists?(name)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def init_template(path=nil, scene=nil, options={})
|
|
128
|
+
return @template if @template && @loaded_template_path == path
|
|
129
|
+
scene ||= @scene
|
|
130
|
+
scene ||= get_scene
|
|
131
|
+
if (!path)
|
|
132
|
+
format_params = self.class.output_format_params(@executed_method, @executed_format)
|
|
133
|
+
return unless format_params && format_params[:template]
|
|
134
|
+
path = format_params[:template]
|
|
135
|
+
options = format_params.merge(options)
|
|
136
|
+
end
|
|
137
|
+
template = load_template(path)
|
|
138
|
+
template.init(scene)
|
|
139
|
+
@template = template
|
|
140
|
+
@loaded_template_path = path
|
|
141
|
+
if (@request.params['_action'])
|
|
142
|
+
template._widget_action = @request.params['_action']
|
|
143
|
+
else
|
|
144
|
+
template._action_to = options[:action_to]
|
|
145
|
+
template._action = @controller_action
|
|
146
|
+
end
|
|
147
|
+
return template
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def render_layout(path, content={})
|
|
151
|
+
layout = self.class.load_layout(path)
|
|
152
|
+
layout.request = @request
|
|
153
|
+
layout.render(content)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def init_layout(layout)
|
|
157
|
+
l = layout.is_a?(Layout) ? layout : self.class.load_layout(layout)
|
|
158
|
+
l.owner = self
|
|
159
|
+
l.request = request
|
|
160
|
+
return l
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def render(path=nil, options={})
|
|
164
|
+
scene = options[:scene] || @scene
|
|
165
|
+
scene ||= get_scene
|
|
166
|
+
scene = prepare_scene(scene)
|
|
167
|
+
request = options[:request] || @request
|
|
168
|
+
response = options[:response] || @response
|
|
169
|
+
if (path.is_a?(Spider::Template))
|
|
170
|
+
template = path
|
|
171
|
+
else
|
|
172
|
+
template = init_template(path, scene, options)
|
|
173
|
+
end
|
|
174
|
+
template.do_widgets_before
|
|
175
|
+
unless (@_partial_render) # TODO: implement or remove
|
|
176
|
+
chosen_layouts = options[:layout] || @layout
|
|
177
|
+
chosen_layouts = [chosen_layouts] if chosen_layouts && !chosen_layouts.is_a?(Array)
|
|
178
|
+
if (chosen_layouts)
|
|
179
|
+
t = template
|
|
180
|
+
l = nil
|
|
181
|
+
(chosen_layouts.length-1).downto(0) do |i|
|
|
182
|
+
l = init_layout(chosen_layouts[i])
|
|
183
|
+
l.template = t
|
|
184
|
+
t = l
|
|
185
|
+
end
|
|
186
|
+
l.render(scene)
|
|
187
|
+
else
|
|
188
|
+
template.render(scene)
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
return template
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def find_widget(name)
|
|
195
|
+
@template.find_widget(name)
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
# Callback executed after child widgets are run. Useful to postprocess widgets data.
|
|
199
|
+
# id is the child widget id, as a symbol.
|
|
200
|
+
def after_widget(id)
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def dispatched_object(route)
|
|
206
|
+
obj = super
|
|
207
|
+
if (obj.is_a?(Visual))
|
|
208
|
+
set_layout = @layout || @dispatcher_layout
|
|
209
|
+
if set_layout
|
|
210
|
+
set_layout = [set_layout] unless set_layout.is_a?(Array)
|
|
211
|
+
set_layout.map{ |l| self.class.load_layout(l) }
|
|
212
|
+
obj.dispatcher_layout = set_layout
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
return obj
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
def try_rescue(exc)
|
|
219
|
+
exc.uuid = UUID.new.generate if exc.respond_to?(:uuid=)
|
|
220
|
+
format = self.class.output_format(:error) || :html
|
|
221
|
+
return super unless @executed_format == :html
|
|
222
|
+
return super unless action_target?
|
|
223
|
+
output_format_headers(format)
|
|
224
|
+
if (exc.is_a?(Spider::Controller::NotFound))
|
|
225
|
+
error_page = '404'
|
|
226
|
+
@scene.error_msg = _("Page not found")
|
|
227
|
+
@scene.email_subject = @scene.error_msg
|
|
228
|
+
else
|
|
229
|
+
error_page = 'error_generic'
|
|
230
|
+
if (exc.is_a?(HTTPMixin::HTTPStatus))
|
|
231
|
+
@scene.error_msg = exc.status_message
|
|
232
|
+
end
|
|
233
|
+
@scene.error_msg = _("An error occurred")
|
|
234
|
+
@scene.email_subject = @scene.error_msg
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
if (exc.respond_to?(:uuid))
|
|
238
|
+
exc.extend(UUIDExceptionMessage)
|
|
239
|
+
@scene.exception_uuid = exc.uuid
|
|
240
|
+
@scene.email_subject += " (#{exc.uuid})"
|
|
241
|
+
end
|
|
242
|
+
@scene.admin_email = Spider.conf.get('site.admin.email')
|
|
243
|
+
if (Spider.runmode == 'devel')
|
|
244
|
+
begin
|
|
245
|
+
@scene.devel = true
|
|
246
|
+
@scene.backtrace = build_backtrace(exc)
|
|
247
|
+
client_editor = Spider.conf.get('client.text_editor')
|
|
248
|
+
prefix = 'txmt://open?url=' if client_editor == 'textmate'
|
|
249
|
+
@scene.exception = "#{exc.class.name}: #{exc.message}"
|
|
250
|
+
cnt = 0
|
|
251
|
+
@scene.backtrace.each do |tr|
|
|
252
|
+
tr[:index] = cnt
|
|
253
|
+
cnt += 1
|
|
254
|
+
suffix = ''
|
|
255
|
+
suffix = "&line=#{tr[:line]}" if (client_editor == 'textmate')
|
|
256
|
+
tr[:link] = "#{prefix}file://#{tr[:path]}#{suffix}"
|
|
257
|
+
end
|
|
258
|
+
@scene.request_params = @request.params.inspect
|
|
259
|
+
@scene.session = @request.session.inspect
|
|
260
|
+
rescue => exc2
|
|
261
|
+
super(exc)
|
|
262
|
+
end
|
|
263
|
+
end
|
|
264
|
+
render "errors/#{error_page}", :layout => "errors/error"
|
|
265
|
+
super
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
def build_backtrace(exc)
|
|
269
|
+
bt = []
|
|
270
|
+
if Debugger && Debugger.started? && Debugger.post_mortem?
|
|
271
|
+
use_debugger = true
|
|
272
|
+
context = exc.__debug_context
|
|
273
|
+
ct_first_file = context.frame_file(0)
|
|
274
|
+
ct_first_line = context.frame_line(0)
|
|
275
|
+
e_file, e_line, e_method = exc.backtrace[0].split(':')
|
|
276
|
+
if (e_file != ct_first_file || e_line.to_i != ct_first_line)
|
|
277
|
+
use_debugger = false
|
|
278
|
+
end
|
|
279
|
+
end
|
|
280
|
+
if (!use_debugger)
|
|
281
|
+
exc.backtrace.each do |trace_line|
|
|
282
|
+
str = trace_line
|
|
283
|
+
file_path, line, method = trace_line.split(':')
|
|
284
|
+
bt << {:text => str, :path => file_path, :line => line, :method => method}
|
|
285
|
+
end
|
|
286
|
+
return bt
|
|
287
|
+
end
|
|
288
|
+
context = exc.__debug_context
|
|
289
|
+
0.upto(Debugger.current_context.stack_size - 2) do |i|
|
|
290
|
+
file = context.frame_file(i)
|
|
291
|
+
line = context.frame_line(i)
|
|
292
|
+
klass = context.frame_class(i)
|
|
293
|
+
method = context.frame_method(i)
|
|
294
|
+
args = context.frame_args(i)
|
|
295
|
+
locals = context.frame_locals(i)
|
|
296
|
+
frame_self = context.frame_self(i)
|
|
297
|
+
dest = context.frame_self(i-1) unless i == 0
|
|
298
|
+
ex_method = context.frame_method(i-1) unless i == 0
|
|
299
|
+
in_method = context.frame_method(i)
|
|
300
|
+
#s ex_args = context.frame_args(i+1)
|
|
301
|
+
str = "#{file}:#{line}: in #{in_method}"
|
|
302
|
+
#str = exc.backtrace[i]
|
|
303
|
+
|
|
304
|
+
self_str = frame_self
|
|
305
|
+
# self_str = "#<#{frame_self.class}:#{frame_self.object_id}>"
|
|
306
|
+
if (dest)
|
|
307
|
+
dest_str = dest.is_a?(Class) ? dest.inspect : "#<#{dest.class}:#{dest.object_id}>"
|
|
308
|
+
else
|
|
309
|
+
dest_str = ""
|
|
310
|
+
end
|
|
311
|
+
self_str = frame_self.is_a?(Class) ? frame_self.inspect : "#<#{frame_self.class}:#{frame_self.object_id}>"
|
|
312
|
+
if (i == -1)
|
|
313
|
+
info = ""
|
|
314
|
+
else
|
|
315
|
+
# if (frame_self == dest)
|
|
316
|
+
# info = "#{dest_str}"
|
|
317
|
+
# else
|
|
318
|
+
# info = "#{self_str}: #{dest_str}"
|
|
319
|
+
# end
|
|
320
|
+
info = "#{self_str}: #{dest_str}"
|
|
321
|
+
info += ".#{ex_method}("
|
|
322
|
+
info += args.map{ |arg|
|
|
323
|
+
val = locals[arg]
|
|
324
|
+
arg_str = "#{arg}##{val.class}"
|
|
325
|
+
val_str = nil
|
|
326
|
+
if (val.is_a?(String))
|
|
327
|
+
if (val.length > 20)
|
|
328
|
+
val_str = (val[0..20]+'...').inspect
|
|
329
|
+
else
|
|
330
|
+
val_str = val.inspect
|
|
331
|
+
end
|
|
332
|
+
elsif (val.is_a?(Symbol) || val.is_a?(Fixnum) || val.is_a?(Float) || val.is_a?(BigDecimal) || val.is_a?(Date) || val.is_a?(Time))
|
|
333
|
+
val_str = val.inspect
|
|
334
|
+
end
|
|
335
|
+
arg_str += "=#{val_str}" if val_str
|
|
336
|
+
arg_str
|
|
337
|
+
}.join(', ')
|
|
338
|
+
info += ")"
|
|
339
|
+
end
|
|
340
|
+
if (Spider.conf.get('devel.trace.show_instance_variables'))
|
|
341
|
+
iv = {}
|
|
342
|
+
frame_self.instance_variables.each{ |var| iv[var] = frame_self.instance_variable_get(var) }
|
|
343
|
+
iv.reject{ |k, v| v.nil? }
|
|
344
|
+
end
|
|
345
|
+
locals = nil unless Spider.conf.get('devel.trace.show_locals')
|
|
346
|
+
bt << {
|
|
347
|
+
:text => str, :info => info,
|
|
348
|
+
:path => File.expand_path(file), :line => line, :method => method, :klass => klass, :locals => locals,
|
|
349
|
+
:instance_variables => iv
|
|
350
|
+
}
|
|
351
|
+
end
|
|
352
|
+
return bt
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
module ClassMethods
|
|
357
|
+
|
|
358
|
+
def output_format(method=nil, format=nil, params={})
|
|
359
|
+
return @default_output_format unless method
|
|
360
|
+
@output_formats ||= {}
|
|
361
|
+
@output_format_params ||= {}
|
|
362
|
+
if format
|
|
363
|
+
@output_formats[method] ||= []
|
|
364
|
+
@output_formats[method] << format
|
|
365
|
+
@output_format_params[method] ||= {}
|
|
366
|
+
@output_format_params[method][format] = params
|
|
367
|
+
controller_actions(method)
|
|
368
|
+
return format
|
|
369
|
+
end
|
|
370
|
+
return @default_output_format unless @output_formats[method] && @output_formats[method][0]
|
|
371
|
+
return @output_formats[method][0]
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
def output_format?(method, format)
|
|
375
|
+
return false unless @output_formats
|
|
376
|
+
@output_formats[method] && @output_formats[method].include?(format)
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
def output_format_params(method, format)
|
|
380
|
+
return nil unless @output_format_params && @output_format_params[method]
|
|
381
|
+
fp = @output_format_params[method][format]
|
|
382
|
+
return nil if fp == true
|
|
383
|
+
return fp
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
def default_output_format(format)
|
|
387
|
+
@default_output_format = format if format
|
|
388
|
+
@default_output_format
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
def layouts
|
|
393
|
+
@layouts ||= []
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
def layout(name, params={})
|
|
397
|
+
@layouts ||= []
|
|
398
|
+
@layouts << [name, params]
|
|
399
|
+
end
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
def no_layout(check)
|
|
403
|
+
@no_layout ||= []
|
|
404
|
+
@no_layout << check
|
|
405
|
+
end
|
|
406
|
+
|
|
407
|
+
def get_layout(action)
|
|
408
|
+
if (@no_layout)
|
|
409
|
+
@no_layout.each do |check|
|
|
410
|
+
return nil if check_action(action, check)
|
|
411
|
+
end
|
|
412
|
+
end
|
|
413
|
+
action = (action && !action.empty?) ? action.to_sym : self.default_action
|
|
414
|
+
layouts.each do |try|
|
|
415
|
+
name, params = try
|
|
416
|
+
if (params[:for])
|
|
417
|
+
next unless check_action(action, params[:for])
|
|
418
|
+
end
|
|
419
|
+
if (params[:except])
|
|
420
|
+
next if check_action(action, params[:except])
|
|
421
|
+
end
|
|
422
|
+
return name
|
|
423
|
+
end
|
|
424
|
+
return nil
|
|
425
|
+
end
|
|
426
|
+
|
|
427
|
+
def template_paths
|
|
428
|
+
unless respond_to?(:template_path)
|
|
429
|
+
raise NotImplementedError, "The template_path class method must be implemented by object using the Visual mixin, but #{self} does not"
|
|
430
|
+
end
|
|
431
|
+
paths = [template_path]
|
|
432
|
+
s = self.superclass
|
|
433
|
+
while (s && s.subclass_of?(Visual) && s.app && s.respond_to?(:template_path))
|
|
434
|
+
paths << s.template_path
|
|
435
|
+
s = s.superclass
|
|
436
|
+
end
|
|
437
|
+
return paths
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
def load_template(name, cur_path=nil, owner=nil, search_paths=nil)
|
|
442
|
+
owner ||= self
|
|
443
|
+
search_paths ||= template_paths
|
|
444
|
+
resource = Spider::Template.find_resource(name, cur_path, owner, search_paths)
|
|
445
|
+
raise "Template #{name} not found" unless resource && resource.path
|
|
446
|
+
t = Spider::Template.new(resource.path)
|
|
447
|
+
t.owner_class = self
|
|
448
|
+
t.definer_class = resource.definer
|
|
449
|
+
return t
|
|
450
|
+
|
|
451
|
+
end
|
|
452
|
+
|
|
453
|
+
def template_exists?(name, paths=nil)
|
|
454
|
+
if (name[0..5] == 'SPIDER' || name[0..3] == 'ROOT')
|
|
455
|
+
name.sub!('SPIDER', $SPIDER_PATH).sub!('ROOT', Spider.paths[:root])
|
|
456
|
+
return true if File.exist?(name)
|
|
457
|
+
end
|
|
458
|
+
paths ||= template_paths
|
|
459
|
+
paths.each do |path|
|
|
460
|
+
full = path+'/'+name+'.shtml'
|
|
461
|
+
return true if File.exist?(full)
|
|
462
|
+
end
|
|
463
|
+
return false
|
|
464
|
+
end
|
|
465
|
+
|
|
466
|
+
def load_layout(path)
|
|
467
|
+
unless respond_to?(:layout_path)
|
|
468
|
+
raise NotImplementedError, "The layout_path class method must be implemented by object using the Visual mixin, but #{self} does not"
|
|
469
|
+
end
|
|
470
|
+
if (path.is_a?(Symbol))
|
|
471
|
+
path = Spider::Layout.named_layouts[path]
|
|
472
|
+
end
|
|
473
|
+
resource = Spider::Template.find_resource(path+'.layout', layout_path, self)
|
|
474
|
+
layout = Spider::Layout.new(resource.path)
|
|
475
|
+
layout.definer_class = resource.definer
|
|
476
|
+
layout
|
|
477
|
+
end
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
def current_default_template
|
|
481
|
+
Spider::Inflector.underscore(self.to_s.split('::')[-1])
|
|
482
|
+
end
|
|
483
|
+
|
|
484
|
+
end
|
|
485
|
+
|
|
486
|
+
end
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
end; end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'spiderfw/controller/controller'
|
|
2
|
+
|
|
3
|
+
module Spider
|
|
4
|
+
|
|
5
|
+
class PageController < Controller
|
|
6
|
+
include Visual
|
|
7
|
+
include WidgetHelper
|
|
8
|
+
include HTTPMixin
|
|
9
|
+
include StaticContent
|
|
10
|
+
|
|
11
|
+
def initialize(request, response, scene=nil)
|
|
12
|
+
super
|
|
13
|
+
@widgets = {}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def get_route(path)
|
|
18
|
+
if (path =~ /^[^:]+:([^:\/]+)[:\/]?(.*)$/) # route to widgets
|
|
19
|
+
if (@widgets[$1])
|
|
20
|
+
return Route.new(:path => path, :dest => @widgets[$1], :action => $2)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
return super
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
#
|
|
27
|
+
# def render(path=nil, scene=nil)
|
|
28
|
+
# scene ||= @scene
|
|
29
|
+
# scene[:widgets] = @widgets
|
|
30
|
+
# super(path, scene)
|
|
31
|
+
# end
|
|
32
|
+
#
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module Spider
|
|
2
|
+
|
|
3
|
+
class Request
|
|
4
|
+
attr_accessor :action, :params, :cookies, :env, :protocol,
|
|
5
|
+
:format, :extension, :session, :user_id, :server, :request_time, :controller_path,
|
|
6
|
+
:locale, :misc
|
|
7
|
+
|
|
8
|
+
BUFSIZE = 1024*4
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def initialize(env)
|
|
12
|
+
Spider::Logger.debug("REQUEST:")
|
|
13
|
+
Spider::Logger.debug(env)
|
|
14
|
+
@env = env
|
|
15
|
+
@locale = Locale.current[0]
|
|
16
|
+
@misc = {}
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def body=(b)
|
|
20
|
+
@body = b
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def body(&proc)
|
|
24
|
+
b = @body.is_a?(String) ? StringIO.new(@body) : @body
|
|
25
|
+
return nil unless b
|
|
26
|
+
while (buf = b.read(BUFSIZE))
|
|
27
|
+
yield buf
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def read_body
|
|
32
|
+
return @body if @body.is_a?(String)
|
|
33
|
+
b = ''
|
|
34
|
+
self.body do |buf|
|
|
35
|
+
b += buf
|
|
36
|
+
end
|
|
37
|
+
@body = b
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Original request path
|
|
41
|
+
def path
|
|
42
|
+
@action
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'spiderfw/controller/cookies'
|
|
2
|
+
|
|
3
|
+
module Spider
|
|
4
|
+
|
|
5
|
+
class Response
|
|
6
|
+
attr_reader :status
|
|
7
|
+
attr_accessor :headers, :server_output, :cookies
|
|
8
|
+
|
|
9
|
+
def initialize()
|
|
10
|
+
@headers = {}
|
|
11
|
+
@cookies = Cookies.new
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def body=(io)
|
|
15
|
+
@server_output.set_body_io(io)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def register(key, val)
|
|
19
|
+
instance_variable_set("@#{key}", val)
|
|
20
|
+
self.class.send(:attr_accessor, key) # FIXME: threadsafety
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def prepare_headers
|
|
24
|
+
@headers['Set-Cookie'] ||= []
|
|
25
|
+
@cookies.each do |k, v|
|
|
26
|
+
h = "#{k}=#{v}"
|
|
27
|
+
h += '; expires='+v.expires.strftime("%a, %b %d %Y %H:%M:%S %Z") if (v.expires.respond_to?(:strftime))
|
|
28
|
+
h += "; path=#{v.path}" if (v.path)
|
|
29
|
+
h += "; domain=#{v.domain}" if (v.domain)
|
|
30
|
+
h += "; secure" if (v.secure)
|
|
31
|
+
@headers['Set-Cookie'] << h
|
|
32
|
+
end
|
|
33
|
+
Spider::Logger.debug("HEADERS:")
|
|
34
|
+
Spider::Logger.debug(@headers)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def status=(code)
|
|
38
|
+
@status = code
|
|
39
|
+
# if (Spider::HTTP.status_messages[code])
|
|
40
|
+
# @status = code.to_s+' '+Spider::HTTP.status_messages[code]
|
|
41
|
+
# else
|
|
42
|
+
# @status = code
|
|
43
|
+
# end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'ostruct'
|
|
2
|
+
|
|
3
|
+
module Spider
|
|
4
|
+
|
|
5
|
+
class Scene < OpenStruct
|
|
6
|
+
|
|
7
|
+
def []=(key, val)
|
|
8
|
+
self.send("#{key}=", val)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def [](key)
|
|
12
|
+
#self.send(key)
|
|
13
|
+
@table[key]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def to_json
|
|
17
|
+
@table.to_json
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def to_hash
|
|
21
|
+
@table
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
end
|