six-updater-web 0.10.8 → 0.11.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +8 -6
- data/bin/six-updater-web +1 -1
- data/lib/README +243 -0
- data/lib/Rakefile +10 -0
- data/lib/app/controllers/actions_controller.rb +23 -0
- data/lib/app/controllers/application_controller.rb +20 -0
- data/lib/app/controllers/appsettings_controller.rb +40 -0
- data/lib/app/controllers/logs_controller.rb +5 -0
- data/lib/app/controllers/logsessions_controller.rb +5 -0
- data/lib/app/controllers/logviews_controller.rb +52 -0
- data/lib/app/controllers/main_controller.rb +432 -0
- data/lib/app/controllers/mods_controller.rb +48 -0
- data/lib/app/controllers/queryservers_controller.rb +42 -0
- data/lib/app/controllers/repositories_controller.rb +16 -0
- data/lib/app/controllers/servers_controller.rb +34 -0
- data/lib/app/controllers/sixconfigs_controller.rb +33 -0
- data/lib/app/controllers/system_settings_controller.rb +5 -0
- data/lib/app/helpers/actions_helper.rb +2 -0
- data/lib/app/helpers/application_helper.rb +13 -0
- data/lib/app/helpers/appsettings_helper.rb +17 -0
- data/lib/app/helpers/logs_helper.rb +2 -0
- data/lib/app/helpers/logsessions_helper.rb +2 -0
- data/lib/app/helpers/logviews_helper.rb +5 -0
- data/lib/app/helpers/main_helper.rb +2 -0
- data/lib/app/helpers/mods_helper.rb +5 -0
- data/lib/app/helpers/queryservers_helper.rb +8 -0
- data/lib/app/helpers/repositories_helper.rb +2 -0
- data/lib/app/helpers/servers_helper.rb +13 -0
- data/lib/app/helpers/sixconfigs_helper.rb +5 -0
- data/lib/app/helpers/system_settings_helper.rb +2 -0
- data/lib/app/models/action.rb +5 -0
- data/lib/app/models/appsetting.rb +18 -0
- data/lib/app/models/log.rb +3 -0
- data/lib/app/models/log_observer.rb +23 -0
- data/lib/app/models/logsession.rb +3 -0
- data/lib/app/models/mod.rb +96 -0
- data/lib/app/models/queryserver.rb +167 -0
- data/lib/app/models/repository.rb +11 -0
- data/lib/app/models/server.rb +25 -0
- data/lib/app/models/sixconfig.rb +185 -0
- data/lib/app/models/system_setting.rb +77 -0
- data/lib/app/views/Repositories/imp.erb +1 -0
- data/lib/app/views/appsettings/manage.erb +4 -0
- data/lib/app/views/layouts/application.haml +48 -0
- data/lib/app/views/layouts/empty.haml +2 -0
- data/lib/app/views/logviews/_logs.erb +1 -0
- data/lib/app/views/logviews/upd.rjs +1 -0
- data/lib/app/views/main/_check.haml +18 -0
- data/lib/app/views/main/execute.haml +24 -0
- data/lib/app/views/main/fetch.haml +2 -0
- data/lib/app/views/main/index.haml +100 -0
- data/lib/app/views/main/logoutput.erb +6 -0
- data/lib/app/views/main/modlogs.erb +5 -0
- data/lib/app/views/main/reset.erb +40 -0
- data/lib/app/views/main/reset_act.haml +1 -0
- data/lib/app/views/mods/imp.haml +1 -0
- data/lib/app/views/servers/imp.erb +1 -0
- data/lib/config/GeoIP.dat +0 -0
- data/lib/config/boot.rb +110 -0
- data/lib/config/database.yml +34 -0
- data/lib/config/database.yml.sample +34 -0
- data/lib/config/environment.rb +59 -0
- data/lib/config/environments/development.rb +17 -0
- data/lib/config/environments/production.rb +28 -0
- data/lib/config/environments/test.rb +28 -0
- data/lib/config/gslist.cfg +3229 -0
- data/lib/config/initializers/backtrace_silencers.rb +7 -0
- data/lib/config/initializers/inflections.rb +10 -0
- data/lib/config/initializers/mime_types.rb +5 -0
- data/lib/config/initializers/new_rails_defaults.rb +19 -0
- data/lib/config/initializers/session_store.rb +15 -0
- data/lib/config/locales/en.yml +5 -0
- data/lib/config/routes.rb +43 -0
- data/lib/config/six-updater-web.rb +221 -0
- data/lib/db/migrate/20090826185820_create_repositories.rb +18 -0
- data/lib/db/migrate/20090826185836_create_mods.rb +23 -0
- data/lib/db/migrate/20090826185847_create_servers.rb +22 -0
- data/lib/db/migrate/20090826185930_create_appsettings.rb +21 -0
- data/lib/db/migrate/20090826190008_create_sixconfigs.rb +16 -0
- data/lib/db/migrate/20090829165545_create_actions.rb +18 -0
- data/lib/db/migrate/20090829165546_add_logpath_to_appsetting.rb +9 -0
- data/lib/db/migrate/20090829165547_change_columns_appsettings.rb +10 -0
- data/lib/db/migrate/20090916174120_create_logs.rb +14 -0
- data/lib/db/migrate/20090916174333_create_logsessions.rb +13 -0
- data/lib/db/migrate/20090921092253_create_sessions.rb +16 -0
- data/lib/db/migrate/20090921165547_change_columns.rb +46 -0
- data/lib/db/migrate/20090928163554_create_system_settings.rb +14 -0
- data/lib/db/migrate/20090928163555_change_columns_mods.rb +11 -0
- data/lib/db/migrate/20090928163556_change2_columns_mods.rb +11 -0
- data/lib/db/migrate/20090928163558_change_columns_repositories.rb +11 -0
- data/lib/db/migrate/20090928163559_change_columns_system_settings.rb +9 -0
- data/lib/db/migrate/20090928163560_change2_columns_system_settings.rb +9 -0
- data/lib/db/migrate/20090928163561_change2_columns.rb +46 -0
- data/lib/db/migrate/20090928163562_change3_columns_system_settings.rb +17 -0
- data/lib/db/migrate/20090928163563_change2_columns_appsettings.rb +9 -0
- data/lib/db/migrate/20100327164004_create_queryservers.rb +18 -0
- data/lib/db/migrate/20100404150547_add_fields_to_queryservers.rb +35 -0
- data/lib/db/migrate/20100404152436_create_mods_queryservers.rb +11 -0
- data/lib/db/migrate/20100405142958_add_saved_password_to_queryservers.rb +9 -0
- data/lib/db/migrate/20100405142959_change_mods_queryservers_id.rb +9 -0
- data/lib/db/migrate/20100405142960_add_gamespied_at_to_system_settings.rb +9 -0
- data/lib/db/migrate/20100409114653_add_priority_and_path_to_mods.rb +11 -0
- data/lib/db/schema.rb +289 -0
- data/lib/doc/README_FOR_APP +2 -0
- data/lib/init.rb +74 -0
- data/lib/lib/tasks/fixtures.rake +33 -0
- data/lib/lib/tasks/sync.rake +51 -0
- data/lib/log/production.log +1 -0
- data/lib/public/404.html +30 -0
- data/lib/public/422.html +30 -0
- data/lib/public/500.html +30 -0
- data/lib/public/blank.html +33 -0
- data/lib/public/favicon.ico +0 -0
- data/lib/public/goldberg/images/action.png +0 -0
- data/lib/public/goldberg/images/add.png +0 -0
- data/lib/public/goldberg/images/blockquote-bg.gif +0 -0
- data/lib/public/goldberg/images/body-bg.jpg +0 -0
- data/lib/public/goldberg/images/centerColumn-bg.jpg +0 -0
- data/lib/public/goldberg/images/daddy_leftarrow.gif +0 -0
- data/lib/public/goldberg/images/delete.png +0 -0
- data/lib/public/goldberg/images/down.png +0 -0
- data/lib/public/goldberg/images/h2-bg.gif +0 -0
- data/lib/public/goldberg/images/h3-bg.gif +0 -0
- data/lib/public/goldberg/images/header-bg.jpg +0 -0
- data/lib/public/goldberg/images/hr-bg.jpg +0 -0
- data/lib/public/goldberg/images/logo.jpg +0 -0
- data/lib/public/goldberg/images/page.png +0 -0
- data/lib/public/goldberg/images/permission.png +0 -0
- data/lib/public/goldberg/images/role.png +0 -0
- data/lib/public/goldberg/images/up.png +0 -0
- data/lib/public/goldberg/javascripts/suckerfish.js +12 -0
- data/lib/public/goldberg/stylesheets/goldberg.css +142 -0
- data/lib/public/goldberg/stylesheets/layout.css +433 -0
- data/lib/public/goldberg/stylesheets/suckerfish.css +124 -0
- data/lib/public/images/active_scaffold/DO_NOT_EDIT +2 -0
- data/lib/public/images/active_scaffold/default/add.gif +0 -0
- data/lib/public/images/active_scaffold/default/arrow_down.gif +0 -0
- data/lib/public/images/active_scaffold/default/arrow_refresh.png +0 -0
- data/lib/public/images/active_scaffold/default/arrow_up.gif +0 -0
- data/lib/public/images/active_scaffold/default/close.gif +0 -0
- data/lib/public/images/active_scaffold/default/cross.png +0 -0
- data/lib/public/images/active_scaffold/default/customize_tool.png +0 -0
- data/lib/public/images/active_scaffold/default/export_tool.png +0 -0
- data/lib/public/images/active_scaffold/default/indicator-small.gif +0 -0
- data/lib/public/images/active_scaffold/default/indicator.gif +0 -0
- data/lib/public/images/active_scaffold/default/magnifier.png +0 -0
- data/lib/public/images/active_scaffold/default/printer_tool.png +0 -0
- data/lib/public/images/rails.png +0 -0
- data/lib/public/images/record_select/cross.gif +0 -0
- data/lib/public/images/record_select/next.gif +0 -0
- data/lib/public/images/record_select/previous.gif +0 -0
- data/lib/public/images/top.png +0 -0
- data/lib/public/javascripts/active_scaffold/DO_NOT_EDIT +2 -0
- data/lib/public/javascripts/active_scaffold/default/active_scaffold.js +517 -0
- data/lib/public/javascripts/active_scaffold/default/advanced_search.js +54 -0
- data/lib/public/javascripts/active_scaffold/default/dhtml_history.js +867 -0
- data/lib/public/javascripts/active_scaffold/default/form_enhancements.js +117 -0
- data/lib/public/javascripts/active_scaffold/default/number_formats.js +167 -0
- data/lib/public/javascripts/active_scaffold/default/rico_corner.js +370 -0
- data/lib/public/javascripts/application.js +2 -0
- data/lib/public/javascripts/controls.js +963 -0
- data/lib/public/javascripts/dragdrop.js +973 -0
- data/lib/public/javascripts/effects.js +1128 -0
- data/lib/public/javascripts/prototype.js +4320 -0
- data/lib/public/javascripts/record_select/record_select.js +352 -0
- data/lib/public/robots.txt +5 -0
- data/lib/public/stylesheets/active_scaffold/DO_NOT_EDIT +2 -0
- data/lib/public/stylesheets/active_scaffold/default/advanced_search.css +11 -0
- data/lib/public/stylesheets/active_scaffold/default/stylesheet-ie.css +50 -0
- data/lib/public/stylesheets/active_scaffold/default/stylesheet.css +1059 -0
- data/lib/public/stylesheets/active_scaffold/default/tools-left-handed-stylesheet-ie.css +11 -0
- data/lib/public/stylesheets/active_scaffold/default/tools-left-handed-stylesheet.css +68 -0
- data/lib/public/stylesheets/record_select/record_select.css +129 -0
- data/lib/script/about +4 -0
- data/lib/script/console +3 -0
- data/lib/script/dbconsole +3 -0
- data/lib/script/destroy +3 -0
- data/lib/script/generate +3 -0
- data/lib/script/performance/benchmarker +3 -0
- data/lib/script/performance/profiler +3 -0
- data/lib/script/plugin +3 -0
- data/lib/script/runner +3 -0
- data/lib/script/server +3 -0
- data/lib/test/functional/actions_controller_test.rb +8 -0
- data/lib/test/functional/configs_controller_test.rb +8 -0
- data/lib/test/functional/logs_controller_test.rb +8 -0
- data/lib/test/functional/logsessions_controller_test.rb +8 -0
- data/lib/test/functional/logviews_controller_test.rb +8 -0
- data/lib/test/functional/main_controller_test.rb +8 -0
- data/lib/test/functional/mods_controller_test.rb +8 -0
- data/lib/test/functional/queryservers_controller_test.rb +8 -0
- data/lib/test/functional/repositories_controller_test.rb +8 -0
- data/lib/test/functional/servers_controller_test.rb +8 -0
- data/lib/test/functional/settings_controller_test.rb +8 -0
- data/lib/test/functional/system_settings_controller_test.rb +8 -0
- data/lib/test/performance/browsing_test.rb +9 -0
- data/lib/test/test_helper.rb +38 -0
- data/lib/test/unit/action_test.rb +8 -0
- data/lib/test/unit/config_test.rb +8 -0
- data/lib/test/unit/helpers/actions_helper_test.rb +4 -0
- data/lib/test/unit/helpers/configs_helper_test.rb +4 -0
- data/lib/test/unit/helpers/logs_helper_test.rb +4 -0
- data/lib/test/unit/helpers/logsessions_helper_test.rb +4 -0
- data/lib/test/unit/helpers/logviews_helper_test.rb +4 -0
- data/lib/test/unit/helpers/main_helper_test.rb +4 -0
- data/lib/test/unit/helpers/mods_helper_test.rb +4 -0
- data/lib/test/unit/helpers/queryservers_helper_test.rb +4 -0
- data/lib/test/unit/helpers/repositories_helper_test.rb +4 -0
- data/lib/test/unit/helpers/servers_helper_test.rb +4 -0
- data/lib/test/unit/helpers/settings_helper_test.rb +4 -0
- data/lib/test/unit/helpers/system_settings_helper_test.rb +4 -0
- data/lib/test/unit/log_test.rb +8 -0
- data/lib/test/unit/logsession_test.rb +8 -0
- data/lib/test/unit/mod_test.rb +8 -0
- data/lib/test/unit/queryserver_test.rb +8 -0
- data/lib/test/unit/repository_test.rb +8 -0
- data/lib/test/unit/server_test.rb +8 -0
- data/lib/test/unit/setting_test.rb +8 -0
- data/lib/test/unit/system_setting_test.rb +8 -0
- data/lib/vendor/plugins/active_scaffold/CHANGELOG +152 -0
- data/lib/vendor/plugins/active_scaffold/MIT-LICENSE +20 -0
- data/lib/vendor/plugins/active_scaffold/README +128 -0
- data/lib/vendor/plugins/active_scaffold/Rakefile +24 -0
- data/lib/vendor/plugins/active_scaffold/environment.rb +20 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/images/add.gif +0 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/images/arrow_down.gif +0 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/images/arrow_refresh.png +0 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/images/arrow_up.gif +0 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/images/close.gif +0 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/images/cross.png +0 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/images/customize_tool.png +0 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/images/export_tool.png +0 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/images/indicator-small.gif +0 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/images/indicator.gif +0 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/images/magnifier.png +0 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/images/printer_tool.png +0 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/javascripts/active_scaffold.js +517 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/javascripts/dhtml_history.js +867 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/javascripts/form_enhancements.js +117 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/javascripts/number_formats.js +167 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/javascripts/rico_corner.js +370 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/stylesheets/stylesheet-ie.css +50 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/stylesheets/stylesheet.css +1059 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/stylesheets/tools-left-handed-stylesheet-ie.css +11 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/stylesheets/tools-left-handed-stylesheet.css +68 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_add_existing_form.html.erb +36 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_create_form.html.erb +57 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_create_form_on_list.html.erb +45 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_create_form_submit.html.erb +2 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_export_csv.html.erb +20 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_field_search.html.erb +58 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_form.html.erb +23 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_form_association.html.erb +12 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_form_association_footer.html.erb +43 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_form_attribute.html.erb +24 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_form_hidden_attribute.html.erb +1 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_form_messages.html.erb +5 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_horizontal_subform.html.erb +19 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_horizontal_subform_header.html.erb +10 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_horizontal_subform_record.html.erb +29 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list.html.erb +43 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_actions.html.erb +29 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_calculations.html.erb +43 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_column_headings.html.erb +64 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_header.html.erb +29 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_inline_adapter.html.erb +11 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_pagination_links.html.erb +30 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_record.html.erb +32 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_record_actions.html.erb +5 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_record_columns.html.erb +20 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_live_search.html.erb +23 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_messages.html.erb +10 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_nested.html.erb +45 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_print_list.html.erb +22 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_revision.html.erb +11 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_revision_columns.html.erb +62 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_search.html.erb +21 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_show.html.erb +8 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_show_columns.html.erb +19 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_show_customize.html.erb +27 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_show_export_tool.html.erb +17 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_update_actions.html.erb +9 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_update_form.html.erb +61 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_update_form_submit.html.erb +2 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_vertical_subform.html.erb +12 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/_vertical_subform_record.html.erb +31 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/add_existing.js.rjs +16 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/add_existing_form.html.erb +5 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/copy.rjs +4 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/create.html.erb +5 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/delete.html.erb +13 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/destroy.js.rjs +10 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/edit_associated.js.rjs +14 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/field_search.html.erb +5 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/form_messages.js.rjs +1 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/form_messages_on_save.js.rjs +10 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/latest.rjs +2 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/list.html.erb +48 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/on_create.js.rjs +25 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/on_update.js.rjs +11 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/print_list.prawn +26 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/refresh_list.js.rjs +6 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/refresh_record.js.rjs +2 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/render_field.js.rjs +9 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/revision.html.erb +5 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/search.html.erb +5 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/show.html.erb +5 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/show_customize.html.erb +5 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/show_export_tool.html.erb +5 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/update.html.erb +8 -0
- data/lib/vendor/plugins/active_scaffold/frontends/default/views/update_column.js.rjs +12 -0
- data/lib/vendor/plugins/active_scaffold/init.rb +18 -0
- data/lib/vendor/plugins/active_scaffold/install.rb +39 -0
- data/lib/vendor/plugins/active_scaffold/install_assets.rb +36 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_record_permissions.rb +136 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold.rb +215 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/core.rb +142 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/create.rb +160 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/customize.rb +59 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/delete.rb +72 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/export_tool.rb +49 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/field_search.rb +82 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/list.rb +119 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/live_search.rb +59 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/nested.rb +219 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/print_base.rb +23 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/print_list.rb +44 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/refresh.rb +31 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/revision.rb +51 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/search.rb +50 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/show.rb +54 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/subform.rb +17 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/update.rb +128 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/attribute_params.rb +196 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/base.rb +45 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/core.rb +263 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/create.rb +43 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/customize.rb +34 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/delete.rb +25 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/export_tool.rb +52 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/field_search.rb +53 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/form.rb +49 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/list.rb +142 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/live_search.rb +52 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/nested.rb +34 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/print_base.rb +40 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/print_list.rb +52 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/refresh.rb +22 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/revision.rb +39 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/search.rb +52 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/show.rb +36 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/subform.rb +40 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/update.rb +32 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/configurable.rb +29 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/constraints.rb +181 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/action_columns.rb +97 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/action_link.rb +140 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/action_links.rb +47 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/actions.rb +45 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/column.rb +343 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/columns.rb +75 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/error_message.rb +24 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/set.rb +62 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/sorting.rb +159 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/finder.rb +331 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/active_scaffold_generator.rb +348 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/controller_methods.rb +36 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/controller_scaffolding.rhtml +10 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/fixtures.yml +5 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/form.rhtml +3 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/form_scaffolding.rhtml +1 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/functional_test.rb +45 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/helper.rb +2 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/model.rb +3 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/model_scaffolding.rhtml +90 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/show.rhtml +8 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/show_scaffolding.rhtml +1 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/unit_test.rb +5 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/association_helpers.rb +40 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/controller_helpers.rb +41 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/country_helpers.rb +365 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/form_column_helpers.rb +484 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/id_helpers.rb +152 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/list_column_helpers.rb +397 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/number_helpers.rb +143 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/pagination_helpers.rb +39 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/search_column_helpers.rb +279 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/show_column_helpers.rb +46 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/view_helpers.rb +227 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/locale/en-countries.yml +247 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/locale/en.rb +68 -0
- data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/search.rb +21 -0
- data/lib/vendor/plugins/active_scaffold/lib/bridges/bridge.rb +52 -0
- data/lib/vendor/plugins/active_scaffold/lib/bridges/calendar_date_select/bridge.rb +11 -0
- data/lib/vendor/plugins/active_scaffold/lib/bridges/calendar_date_select/lib/as_cds_bridge.rb +135 -0
- data/lib/vendor/plugins/active_scaffold/lib/bridges/checkbox.rb +21 -0
- data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/bridge.rb +12 -0
- data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/as_file_column_bridge.rb +75 -0
- data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/file_column_helpers.rb +51 -0
- data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/form_ui.rb +33 -0
- data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/list_ui.rb +42 -0
- data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/test/functional/file_column_keep_test.rb +43 -0
- data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/test/mock_model.rb +9 -0
- data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/test/test_helper.rb +15 -0
- data/lib/vendor/plugins/active_scaffold/lib/bridges/tiny_mce/bridge.rb +5 -0
- data/lib/vendor/plugins/active_scaffold/lib/bridges/tiny_mce/lib/tiny_mce_bridge.rb +45 -0
- data/lib/vendor/plugins/active_scaffold/lib/dhtml_confirm.rb +54 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/action_controller_rendering.rb +20 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/action_view_rendering.rb +88 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/array.rb +7 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/component_response_with_namespacing.rb +17 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/generic_view_paths.rb +33 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/java_script_macros_helper.rb +152 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/localize.rb +11 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/name_option_for_datetime.rb +12 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/nil_id_in_url_params.rb +7 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/resources.rb +27 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/reverse_associations.rb +56 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/schema_definitions.rb +15 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/to_label.rb +8 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/unsaved_associated.rb +61 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/unsaved_record.rb +20 -0
- data/lib/vendor/plugins/active_scaffold/lib/extensions/usa_state.rb +46 -0
- data/lib/vendor/plugins/active_scaffold/lib/paginator.rb +136 -0
- data/lib/vendor/plugins/active_scaffold/lib/responds_to_parent.rb +68 -0
- data/lib/vendor/plugins/active_scaffold/public/blank.html +33 -0
- data/lib/vendor/plugins/active_scaffold/test/bridges/bridge_test.rb +47 -0
- data/lib/vendor/plugins/active_scaffold/test/config/create_test.rb +55 -0
- data/lib/vendor/plugins/active_scaffold/test/config/list_test.rb +74 -0
- data/lib/vendor/plugins/active_scaffold/test/config/update_test.rb +17 -0
- data/lib/vendor/plugins/active_scaffold/test/const_mocker.rb +36 -0
- data/lib/vendor/plugins/active_scaffold/test/data_structures/action_columns_test.rb +119 -0
- data/lib/vendor/plugins/active_scaffold/test/data_structures/action_link_test.rb +78 -0
- data/lib/vendor/plugins/active_scaffold/test/data_structures/action_links_test.rb +78 -0
- data/lib/vendor/plugins/active_scaffold/test/data_structures/actions_test.rb +25 -0
- data/lib/vendor/plugins/active_scaffold/test/data_structures/association_column_test.rb +41 -0
- data/lib/vendor/plugins/active_scaffold/test/data_structures/column_test.rb +161 -0
- data/lib/vendor/plugins/active_scaffold/test/data_structures/columns_test.rb +69 -0
- data/lib/vendor/plugins/active_scaffold/test/data_structures/error_message_test.rb +28 -0
- data/lib/vendor/plugins/active_scaffold/test/data_structures/set_test.rb +86 -0
- data/lib/vendor/plugins/active_scaffold/test/data_structures/sorting_test.rb +96 -0
- data/lib/vendor/plugins/active_scaffold/test/data_structures/standard_column_test.rb +34 -0
- data/lib/vendor/plugins/active_scaffold/test/data_structures/virtual_column_test.rb +34 -0
- data/lib/vendor/plugins/active_scaffold/test/extensions/active_record_test.rb +45 -0
- data/lib/vendor/plugins/active_scaffold/test/extensions/array.rb +12 -0
- data/lib/vendor/plugins/active_scaffold/test/misc/active_record_permissions.rb +154 -0
- data/lib/vendor/plugins/active_scaffold/test/misc/configurable_test.rb +96 -0
- data/lib/vendor/plugins/active_scaffold/test/misc/constraints_test.rb +175 -0
- data/lib/vendor/plugins/active_scaffold/test/misc/finder_test.rb +70 -0
- data/lib/vendor/plugins/active_scaffold/test/misc/lang_test.rb +12 -0
- data/lib/vendor/plugins/active_scaffold/test/model_stub.rb +39 -0
- data/lib/vendor/plugins/active_scaffold/test/render_component/abstract_unit.rb +8 -0
- data/lib/vendor/plugins/active_scaffold/test/render_component/components_test.rb +140 -0
- data/lib/vendor/plugins/active_scaffold/test/run_all.rb +8 -0
- data/lib/vendor/plugins/active_scaffold/test/test_helper.rb +13 -0
- data/lib/vendor/plugins/active_scaffold/things.todo +55 -0
- data/lib/vendor/plugins/active_scaffold/uninstall.rb +13 -0
- data/lib/vendor/plugins/activescaffold_advanced_search/README +1 -0
- data/lib/vendor/plugins/activescaffold_advanced_search/README.markdown +39 -0
- data/lib/vendor/plugins/activescaffold_advanced_search/app/views/active_scaffold_overrides/_advanced_search.rhtml +41 -0
- data/lib/vendor/plugins/activescaffold_advanced_search/frontends/default/javascripts/advanced_search.js +54 -0
- data/lib/vendor/plugins/activescaffold_advanced_search/frontends/default/stylesheets/advanced_search.css +11 -0
- data/lib/vendor/plugins/activescaffold_advanced_search/init.rb +22 -0
- data/lib/vendor/plugins/activescaffold_advanced_search/install.rb +50 -0
- data/lib/vendor/plugins/activescaffold_advanced_search/lib/actions/advanced_search.rb +62 -0
- data/lib/vendor/plugins/activescaffold_advanced_search/lib/advanced_finder.rb +101 -0
- data/lib/vendor/plugins/activescaffold_advanced_search/lib/config/advanced_search.rb +48 -0
- data/lib/vendor/plugins/activescaffold_advanced_search/lib/config/core.rb +23 -0
- data/lib/vendor/plugins/activescaffold_advanced_search/lib/helpers/advanced_search_helpers.rb +19 -0
- data/lib/vendor/plugins/activescaffold_advanced_search/lib/helpers/view_helpers.rb +20 -0
- data/lib/vendor/plugins/activescaffold_advanced_search/uninstall.rb.rb +2 -0
- data/lib/vendor/plugins/goldberg/README.rdoc +36 -0
- data/lib/vendor/plugins/goldberg/app/controllers/goldberg/auth_controller.rb +97 -0
- data/lib/vendor/plugins/goldberg/app/controllers/goldberg/content_pages_controller.rb +197 -0
- data/lib/vendor/plugins/goldberg/app/controllers/goldberg/controller_actions_controller.rb +130 -0
- data/lib/vendor/plugins/goldberg/app/controllers/goldberg/menu_items_controller.rb +184 -0
- data/lib/vendor/plugins/goldberg/app/controllers/goldberg/permissions_controller.rb +60 -0
- data/lib/vendor/plugins/goldberg/app/controllers/goldberg/roles_controller.rb +85 -0
- data/lib/vendor/plugins/goldberg/app/controllers/goldberg/roles_permissions_controller.rb +65 -0
- data/lib/vendor/plugins/goldberg/app/controllers/goldberg/site_controllers_controller.rb +157 -0
- data/lib/vendor/plugins/goldberg/app/controllers/goldberg/system_settings_controller.rb +75 -0
- data/lib/vendor/plugins/goldberg/app/controllers/goldberg/users_controller.rb +293 -0
- data/lib/vendor/plugins/goldberg/app/helpers/goldberg/auth_helper.rb +4 -0
- data/lib/vendor/plugins/goldberg/app/helpers/goldberg/content_pages_helper.rb +23 -0
- data/lib/vendor/plugins/goldberg/app/helpers/goldberg/controller_actions_helper.rb +5 -0
- data/lib/vendor/plugins/goldberg/app/helpers/goldberg/menu_items_helper.rb +4 -0
- data/lib/vendor/plugins/goldberg/app/helpers/goldberg/permissions_helper.rb +4 -0
- data/lib/vendor/plugins/goldberg/app/helpers/goldberg/roles_helper.rb +4 -0
- data/lib/vendor/plugins/goldberg/app/helpers/goldberg/roles_permissions_helper.rb +4 -0
- data/lib/vendor/plugins/goldberg/app/helpers/goldberg/site_controllers_helper.rb +4 -0
- data/lib/vendor/plugins/goldberg/app/helpers/goldberg/system_settings_helper.rb +4 -0
- data/lib/vendor/plugins/goldberg/app/helpers/goldberg/users_helper.rb +4 -0
- data/lib/vendor/plugins/goldberg/app/models/goldberg/content_page.rb +134 -0
- data/lib/vendor/plugins/goldberg/app/models/goldberg/controller_action.rb +86 -0
- data/lib/vendor/plugins/goldberg/app/models/goldberg/credentials.rb +128 -0
- data/lib/vendor/plugins/goldberg/app/models/goldberg/menu.rb +198 -0
- data/lib/vendor/plugins/goldberg/app/models/goldberg/menu_item.rb +127 -0
- data/lib/vendor/plugins/goldberg/app/models/goldberg/permission.rb +37 -0
- data/lib/vendor/plugins/goldberg/app/models/goldberg/role.rb +68 -0
- data/lib/vendor/plugins/goldberg/app/models/goldberg/roles_permission.rb +18 -0
- data/lib/vendor/plugins/goldberg/app/models/goldberg/site_controller.rb +60 -0
- data/lib/vendor/plugins/goldberg/app/models/goldberg/system_settings.rb +112 -0
- data/lib/vendor/plugins/goldberg/app/models/goldberg/user.rb +69 -0
- data/lib/vendor/plugins/goldberg/app/models/goldberg/user_mailer.rb +43 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/auth/_login.rhtml +15 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/auth/login.rhtml +22 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/auth/logout.rhtml +2 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/_fck_create_folder.rxml +6 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/_fck_files.rxml +19 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/_form.rhtml +32 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/edit.rhtml +10 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/fck_speller_pages.rhtml +58 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/list.rhtml +22 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/new.rhtml +8 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/show.rhtml +57 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/view.rhtml +1 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/view_default.rhtml +1 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/controller_actions/_form.rhtml +53 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/controller_actions/edit.rhtml +9 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/controller_actions/list.rhtml +27 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/controller_actions/new.rhtml +10 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/controller_actions/show.rhtml +13 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/layouts/_tabpanel_js.rhtml +52 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/layouts/_tabpanel_list.rhtml +7 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/_breadcrumbs.rhtml +5 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/_form.rhtml +42 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/_item_list.rhtml +52 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/_item_parent_list.rhtml +15 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/_menubar.rhtml +21 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/_suckerfish.rhtml +14 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/edit.rhtml +10 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/list-original.rhtml +27 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/list.rhtml +16 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/new.rhtml +9 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/show.rhtml +8 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/permissions/_form.rhtml +7 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/permissions/edit.rhtml +9 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/permissions/list.rhtml +14 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/permissions/new.rhtml +8 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/permissions/show.rhtml +38 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/roles/_form.rhtml +18 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/roles/edit.rhtml +9 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/roles/list.rhtml +21 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/roles/new.rhtml +8 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/roles/show.rhtml +79 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/_form.rhtml +13 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/edit.rhtml +9 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/list.rhtml +24 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/new.rhtml +8 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/new_permission_for_role.rhtml +8 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/show.rhtml +8 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/site_controllers/_form.rhtml +15 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/site_controllers/_list.rhtml +26 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/site_controllers/edit.rhtml +9 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/site_controllers/list.rhtml +107 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/site_controllers/new.rhtml +8 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/site_controllers/show.rhtml +38 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/system_settings/_form.rhtml +71 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/system_settings/edit.rhtml +9 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/system_settings/list.rhtml +27 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/system_settings/new.rhtml +8 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/system_settings/show.rhtml +189 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/user_mailer/confirmation_request.rhtml +19 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/user_mailer/reset_password.rhtml +17 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/user_mailer/reset_password_request.rhtml +23 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/users/_form.rhtml +53 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/users/confirm_registration.rhtml +26 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/users/confirm_registration_submit.rhtml +4 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/users/create.rhtml +19 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/users/edit.rhtml +11 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/users/forgot_password.rhtml +27 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/users/forgot_password_submit.rhtml +4 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/users/list.rhtml +18 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/users/new.rhtml +19 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/users/reset_password.rhtml +11 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/users/reset_password_submit.rhtml +3 -0
- data/lib/vendor/plugins/goldberg/app/views/goldberg/users/show.rhtml +33 -0
- data/lib/vendor/plugins/goldberg/db/ContentPage.yml +466 -0
- data/lib/vendor/plugins/goldberg/db/ControllerAction.yml +162 -0
- data/lib/vendor/plugins/goldberg/db/MenuItem.yml +109 -0
- data/lib/vendor/plugins/goldberg/db/Permission.yml +21 -0
- data/lib/vendor/plugins/goldberg/db/Role.yml +493 -0
- data/lib/vendor/plugins/goldberg/db/RolesPermission.yml +26 -0
- data/lib/vendor/plugins/goldberg/db/SiteController.yml +61 -0
- data/lib/vendor/plugins/goldberg/db/SystemSettings.yml +21 -0
- data/lib/vendor/plugins/goldberg/db/User.yml +15 -0
- data/lib/vendor/plugins/goldberg/db/migrate/001_initial_setup.rb +128 -0
- data/lib/vendor/plugins/goldberg/db/migrate/002_menu_rest_items_users_cached_content_pages.rb +26 -0
- data/lib/vendor/plugins/goldberg/db/migrate/003_self_registration.rb +54 -0
- data/lib/vendor/plugins/goldberg/db/migrate/004_column_fixes.rb +119 -0
- data/lib/vendor/plugins/goldberg/goldberg.txt +1 -0
- data/lib/vendor/plugins/goldberg/init.rb +15 -0
- data/lib/vendor/plugins/goldberg/lib/goldberg.rb +37 -0
- data/lib/vendor/plugins/goldberg/lib/goldberg/controller.rb +10 -0
- data/lib/vendor/plugins/goldberg/lib/goldberg/filters.rb +197 -0
- data/lib/vendor/plugins/goldberg/lib/goldberg/helper.rb +66 -0
- data/lib/vendor/plugins/goldberg/lib/goldberg/migration.rb +113 -0
- data/lib/vendor/plugins/goldberg/lib/goldberg/migrator.rb +133 -0
- data/lib/vendor/plugins/goldberg/lib/goldberg/model.rb +127 -0
- data/lib/vendor/plugins/goldberg/lib/goldberg/routes.rb +49 -0
- data/lib/vendor/plugins/goldberg/lib/goldberg/test_helper.rb +82 -0
- data/lib/vendor/plugins/goldberg/tasks/goldberg_tasks.rake +81 -0
- data/lib/vendor/plugins/goldberg/test/functional/content_pages_controller_test.rb +31 -0
- data/lib/vendor/plugins/goldberg/test/integration/security_test.rb +95 -0
- data/lib/vendor/plugins/goldberg/test/test_helper.rb +40 -0
- data/lib/vendor/plugins/goldberg/test/unit/content_page_test.rb +87 -0
- data/lib/vendor/plugins/goldberg/test/unit/controller_action_test.rb +85 -0
- data/lib/vendor/plugins/goldberg/test/unit/menu_item_test.rb +46 -0
- data/lib/vendor/plugins/goldberg/test/unit/permission_test.rb +35 -0
- data/lib/vendor/plugins/goldberg/test/unit/site_controller_test.rb +53 -0
- data/lib/vendor/plugins/goldberg/test/unit/system_settings_test.rb +71 -0
- data/lib/vendor/plugins/goldberg/test/unit/user_test.rb +104 -0
- data/lib/vendor/plugins/goldberg/themes/common/public/images/action.png +0 -0
- data/lib/vendor/plugins/goldberg/themes/common/public/images/add.png +0 -0
- data/lib/vendor/plugins/goldberg/themes/common/public/images/delete.png +0 -0
- data/lib/vendor/plugins/goldberg/themes/common/public/images/down.png +0 -0
- data/lib/vendor/plugins/goldberg/themes/common/public/images/page.png +0 -0
- data/lib/vendor/plugins/goldberg/themes/common/public/images/permission.png +0 -0
- data/lib/vendor/plugins/goldberg/themes/common/public/images/role.png +0 -0
- data/lib/vendor/plugins/goldberg/themes/common/public/images/up.png +0 -0
- data/lib/vendor/plugins/goldberg/themes/common/public/javascripts/suckerfish.js +12 -0
- data/lib/vendor/plugins/goldberg/themes/common/public/stylesheets/goldberg.css +142 -0
- data/lib/vendor/plugins/goldberg/themes/common/public/stylesheets/suckerfish.css +124 -0
- data/lib/vendor/plugins/goldberg/themes/ewnf/app/views/layouts/application.html.erb +74 -0
- data/lib/vendor/plugins/goldberg/themes/ewnf/public/images/bg.gif +0 -0
- data/lib/vendor/plugins/goldberg/themes/ewnf/public/images/daddy_rightarrow.gif +0 -0
- data/lib/vendor/plugins/goldberg/themes/ewnf/public/images/sample.jpg +0 -0
- data/lib/vendor/plugins/goldberg/themes/ewnf/public/images/title_img.jpg +0 -0
- data/lib/vendor/plugins/goldberg/themes/ewnf/public/stylesheets/layout.css +223 -0
- data/lib/vendor/plugins/goldberg/themes/goldberg/app/views/layouts/application.html.erb +80 -0
- data/lib/vendor/plugins/goldberg/themes/goldberg/public/images/bodybg.jpg +0 -0
- data/lib/vendor/plugins/goldberg/themes/goldberg/public/images/footerbg.jpg +0 -0
- data/lib/vendor/plugins/goldberg/themes/goldberg/public/images/logo_right.jpg +0 -0
- data/lib/vendor/plugins/goldberg/themes/goldberg/public/images/menuhover.jpg +0 -0
- data/lib/vendor/plugins/goldberg/themes/goldberg/public/stylesheets/layout.css +321 -0
- data/lib/vendor/plugins/goldberg/themes/snooker/app/views/layouts/application.html.erb +74 -0
- data/lib/vendor/plugins/goldberg/themes/snooker/public/images/column_200.png +0 -0
- data/lib/vendor/plugins/goldberg/themes/snooker/public/images/daddy_rightarrow.gif +0 -0
- data/lib/vendor/plugins/goldberg/themes/snooker/public/images/footer_bg.png +0 -0
- data/lib/vendor/plugins/goldberg/themes/snooker/public/images/logo.jpg +0 -0
- data/lib/vendor/plugins/goldberg/themes/snooker/public/stylesheets/layout.css +183 -0
- data/lib/vendor/plugins/goldberg/themes/spoiled_brat/app/views/layouts/application.html.erb +71 -0
- data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/blockquote-bg.gif +0 -0
- data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/body-bg.jpg +0 -0
- data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/centerColumn-bg.jpg +0 -0
- data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/daddy_leftarrow.gif +0 -0
- data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/h2-bg.gif +0 -0
- data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/h3-bg.gif +0 -0
- data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/header-bg.jpg +0 -0
- data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/hr-bg.jpg +0 -0
- data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/logo.jpg +0 -0
- data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/stylesheets/layout.css +379 -0
- data/lib/vendor/plugins/in_place_editing/README +14 -0
- data/lib/vendor/plugins/in_place_editing/Rakefile +22 -0
- data/lib/vendor/plugins/in_place_editing/init.rb +2 -0
- data/lib/vendor/plugins/in_place_editing/lib/in_place_editing.rb +29 -0
- data/lib/vendor/plugins/in_place_editing/lib/in_place_macros_helper.rb +81 -0
- data/lib/vendor/plugins/in_place_editing/test/in_place_editing_test.rb +89 -0
- data/lib/vendor/plugins/in_place_editing/test/test_helper.rb +8 -0
- data/lib/vendor/plugins/recordselect/CHANGELOG +25 -0
- data/lib/vendor/plugins/recordselect/MIT-LICENSE +20 -0
- data/lib/vendor/plugins/recordselect/README +11 -0
- data/lib/vendor/plugins/recordselect/Rakefile +23 -0
- data/lib/vendor/plugins/recordselect/app/helpers/record_select_helper.rb +187 -0
- data/lib/vendor/plugins/recordselect/app/views/record_select/_browse.html.erb +8 -0
- data/lib/vendor/plugins/recordselect/app/views/record_select/_list.html.erb +31 -0
- data/lib/vendor/plugins/recordselect/app/views/record_select/_search.html.erb +14 -0
- data/lib/vendor/plugins/recordselect/app/views/record_select/browse.js.rjs +4 -0
- data/lib/vendor/plugins/recordselect/assets/images/cross.gif +0 -0
- data/lib/vendor/plugins/recordselect/assets/images/next.gif +0 -0
- data/lib/vendor/plugins/recordselect/assets/images/previous.gif +0 -0
- data/lib/vendor/plugins/recordselect/assets/javascripts/record_select.js +352 -0
- data/lib/vendor/plugins/recordselect/assets/stylesheets/record_select.css +129 -0
- data/lib/vendor/plugins/recordselect/init.rb +16 -0
- data/lib/vendor/plugins/recordselect/install.rb +1 -0
- data/lib/vendor/plugins/recordselect/lib/extensions/active_record.rb +9 -0
- data/lib/vendor/plugins/recordselect/lib/localization.rb +8 -0
- data/lib/vendor/plugins/recordselect/lib/record_select.rb +36 -0
- data/lib/vendor/plugins/recordselect/lib/record_select/actions.rb +67 -0
- data/lib/vendor/plugins/recordselect/lib/record_select/conditions.rb +86 -0
- data/lib/vendor/plugins/recordselect/lib/record_select/config.rb +91 -0
- data/lib/vendor/plugins/recordselect/lib/record_select/form_builder.rb +25 -0
- data/lib/vendor/plugins/recordselect/test/recordselect_test.rb +8 -0
- data/lib/vendor/plugins/recordselect/uninstall.rb +4 -0
- data/lib/vendor/plugins/render_component/README +37 -0
- data/lib/vendor/plugins/render_component/Rakefile +22 -0
- data/lib/vendor/plugins/render_component/init.rb +2 -0
- data/lib/vendor/plugins/render_component/lib/components.rb +142 -0
- data/lib/vendor/plugins/render_component/test/abstract_unit.rb +8 -0
- data/lib/vendor/plugins/render_component/test/components_test.rb +140 -0
- data/lib/vendor/plugins/six-app_manager/Rakefile +26 -0
- data/lib/vendor/plugins/six-app_manager/environment.rb +30 -0
- data/lib/vendor/plugins/six-app_manager/init.rb +18 -0
- data/lib/vendor/plugins/six-app_manager/lib/six/appmanager.rb +247 -0
- data/lib/vendor/plugins/six-db_manager/Rakefile +26 -0
- data/lib/vendor/plugins/six-db_manager/db/actions.yml +1 -0
- data/lib/vendor/plugins/six-db_manager/db/actions_sixconfigs.yml +1 -0
- data/lib/vendor/plugins/six-db_manager/db/appsettings.yml +1 -0
- data/lib/vendor/plugins/six-db_manager/db/appsettings_sixconfigs.yml +1 -0
- data/lib/vendor/plugins/six-db_manager/db/goldberg_content_pages.yml +360 -0
- data/lib/vendor/plugins/six-db_manager/db/goldberg_controller_actions.yml +211 -0
- data/lib/vendor/plugins/six-db_manager/db/goldberg_menu_items.yml +169 -0
- data/lib/vendor/plugins/six-db_manager/db/goldberg_permissions.yml +16 -0
- data/lib/vendor/plugins/six-db_manager/db/goldberg_roles.yml +683 -0
- data/lib/vendor/plugins/six-db_manager/db/goldberg_roles_permissions.yml +21 -0
- data/lib/vendor/plugins/six-db_manager/db/goldberg_site_controllers.yml +106 -0
- data/lib/vendor/plugins/six-db_manager/db/goldberg_system_settings.yml +20 -0
- data/lib/vendor/plugins/six-db_manager/db/goldberg_users.yml +27 -0
- data/lib/vendor/plugins/six-db_manager/db/mods.yml +1 -0
- data/lib/vendor/plugins/six-db_manager/db/mods_servers.yml +2 -0
- data/lib/vendor/plugins/six-db_manager/db/mods_sixconfigs.yml +1 -0
- data/lib/vendor/plugins/six-db_manager/db/queryservers.yml +1 -0
- data/lib/vendor/plugins/six-db_manager/db/repositories.yml +1 -0
- data/lib/vendor/plugins/six-db_manager/db/servers.yml +2 -0
- data/lib/vendor/plugins/six-db_manager/db/servers_sixconfigs.yml +2 -0
- data/lib/vendor/plugins/six-db_manager/db/sixconfigs.yml +1 -0
- data/lib/vendor/plugins/six-db_manager/db/system_settings.yml +1 -0
- data/lib/vendor/plugins/six-db_manager/environment.rb +24 -0
- data/lib/vendor/plugins/six-db_manager/init.rb +18 -0
- data/lib/vendor/plugins/six-db_manager/lib/six/dbmanager.rb +204 -0
- data/lib/vendor/plugins/six-guid/Rakefile +26 -0
- data/lib/vendor/plugins/six-guid/environment.rb +24 -0
- data/lib/vendor/plugins/six-guid/init.rb +18 -0
- data/lib/vendor/plugins/six-guid/lib/six/guid.rb +32 -0
- data/lib/vendor/plugins/six-import/Rakefile +26 -0
- data/lib/vendor/plugins/six-import/environment.rb +24 -0
- data/lib/vendor/plugins/six-import/init.rb +18 -0
- data/lib/vendor/plugins/six-import/lib/six/import.rb +133 -0
- data/lib/vendor/plugins/six-network/Rakefile +26 -0
- data/lib/vendor/plugins/six-network/environment.rb +2 -0
- data/lib/vendor/plugins/six-network/init.rb +18 -0
- data/lib/vendor/plugins/six-network/lib/six/network.rb +72 -0
- data/lib/vendor/plugins/six-query/Rakefile +26 -0
- data/lib/vendor/plugins/six-query/app/controllers/sixsense/auth_controller.rb +165 -0
- data/lib/vendor/plugins/six-query/environment.rb +33 -0
- data/lib/vendor/plugins/six-query/init.rb +18 -0
- data/lib/vendor/plugins/six-query/lib/six/query.rb +4 -0
- data/lib/vendor/plugins/six-query/lib/six/query/base.rb +37 -0
- data/lib/vendor/plugins/six-query/lib/six/query/gamespy.rb +107 -0
- data/lib/vendor/plugins/six-query/lib/six/query/gamespy_master.rb +61 -0
- metadata +743 -7
- data/lib/six/updater-web-app.rb +0 -80722
@@ -0,0 +1,14 @@
|
|
1
|
+
InPlaceEditing
|
2
|
+
==============
|
3
|
+
|
4
|
+
Example:
|
5
|
+
|
6
|
+
# Controller
|
7
|
+
class BlogController < ApplicationController
|
8
|
+
in_place_edit_for :post, :title
|
9
|
+
end
|
10
|
+
|
11
|
+
# View
|
12
|
+
<%= in_place_editor_field :post, 'title' %>
|
13
|
+
|
14
|
+
Copyright (c) 2007 David Heinemeier Hansson, released under the MIT license
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
|
5
|
+
desc 'Default: run unit tests.'
|
6
|
+
task :default => :test
|
7
|
+
|
8
|
+
desc 'Test in_place_editing plugin.'
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
10
|
+
t.libs << 'lib'
|
11
|
+
t.pattern = 'test/**/*_test.rb'
|
12
|
+
t.verbose = true
|
13
|
+
end
|
14
|
+
|
15
|
+
desc 'Generate documentation for in_place_editing plugin.'
|
16
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
17
|
+
rdoc.rdoc_dir = 'rdoc'
|
18
|
+
rdoc.title = 'InPlaceEditing'
|
19
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
20
|
+
rdoc.rdoc_files.include('README')
|
21
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
22
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module InPlaceEditing
|
3
|
+
def self.included(base)
|
4
|
+
base.extend(ClassMethods)
|
5
|
+
end
|
6
|
+
|
7
|
+
# Example:
|
8
|
+
#
|
9
|
+
# # Controller
|
10
|
+
# class BlogController < ApplicationController
|
11
|
+
# in_place_edit_for :post, :title
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
# # View
|
15
|
+
# <%= in_place_editor_field :post, 'title' %>
|
16
|
+
#
|
17
|
+
module ClassMethods
|
18
|
+
def in_place_edit_for(object, attribute, options = {})
|
19
|
+
define_method("set_#{object}_#{attribute}") do
|
20
|
+
unless [:post, :put].include?(request.method) then
|
21
|
+
return render(:text => 'Method not allowed', :status => 405)
|
22
|
+
end
|
23
|
+
@item = object.to_s.camelize.constantize.find(params[:id])
|
24
|
+
@item.update_attribute(attribute, params[:value])
|
25
|
+
render :text => CGI::escapeHTML(@item.send(attribute).to_s)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module InPlaceMacrosHelper
|
3
|
+
# Makes an HTML element specified by the DOM ID +field_id+ become an in-place
|
4
|
+
# editor of a property.
|
5
|
+
#
|
6
|
+
# A form is automatically created and displayed when the user clicks the element,
|
7
|
+
# something like this:
|
8
|
+
# <form id="myElement-in-place-edit-form" target="specified url">
|
9
|
+
# <input name="value" text="The content of myElement"/>
|
10
|
+
# <input type="submit" value="ok"/>
|
11
|
+
# <a onclick="javascript to cancel the editing">cancel</a>
|
12
|
+
# </form>
|
13
|
+
#
|
14
|
+
# The form is serialized and sent to the server using an AJAX call, the action on
|
15
|
+
# the server should process the value and return the updated value in the body of
|
16
|
+
# the reponse. The element will automatically be updated with the changed value
|
17
|
+
# (as returned from the server).
|
18
|
+
#
|
19
|
+
# Required +options+ are:
|
20
|
+
# <tt>:url</tt>:: Specifies the url where the updated value should
|
21
|
+
# be sent after the user presses "ok".
|
22
|
+
#
|
23
|
+
# Addtional +options+ are:
|
24
|
+
# <tt>:rows</tt>:: Number of rows (more than 1 will use a TEXTAREA)
|
25
|
+
# <tt>:cols</tt>:: Number of characters the text input should span (works for both INPUT and TEXTAREA)
|
26
|
+
# <tt>:size</tt>:: Synonym for :cols when using a single line text input.
|
27
|
+
# <tt>:cancel_text</tt>:: The text on the cancel link. (default: "cancel")
|
28
|
+
# <tt>:save_text</tt>:: The text on the save link. (default: "ok")
|
29
|
+
# <tt>:loading_text</tt>:: The text to display while the data is being loaded from the server (default: "Loading...")
|
30
|
+
# <tt>:saving_text</tt>:: The text to display when submitting to the server (default: "Saving...")
|
31
|
+
# <tt>:external_control</tt>:: The id of an external control used to enter edit mode.
|
32
|
+
# <tt>:load_text_url</tt>:: URL where initial value of editor (content) is retrieved.
|
33
|
+
# <tt>:options</tt>:: Pass through options to the AJAX call (see prototype's Ajax.Updater)
|
34
|
+
# <tt>:with</tt>:: JavaScript snippet that should return what is to be sent
|
35
|
+
# in the AJAX call, +form+ is an implicit parameter
|
36
|
+
# <tt>:script</tt>:: Instructs the in-place editor to evaluate the remote JavaScript response (default: false)
|
37
|
+
# <tt>:click_to_edit_text</tt>::The text shown during mouseover the editable text (default: "Click to edit")
|
38
|
+
def in_place_editor(field_id, options = {})
|
39
|
+
function = "new Ajax.InPlaceEditor("
|
40
|
+
function << "'#{field_id}', "
|
41
|
+
function << "'#{url_for(options[:url])}'"
|
42
|
+
|
43
|
+
js_options = {}
|
44
|
+
|
45
|
+
if protect_against_forgery?
|
46
|
+
options[:with] ||= "Form.serialize(form)"
|
47
|
+
options[:with] += " + '&authenticity_token=' + encodeURIComponent('#{form_authenticity_token}')"
|
48
|
+
end
|
49
|
+
|
50
|
+
js_options['cancelText'] = %('#{options[:cancel_text]}') if options[:cancel_text]
|
51
|
+
js_options['okText'] = %('#{options[:save_text]}') if options[:save_text]
|
52
|
+
js_options['loadingText'] = %('#{options[:loading_text]}') if options[:loading_text]
|
53
|
+
js_options['savingText'] = %('#{options[:saving_text]}') if options[:saving_text]
|
54
|
+
js_options['rows'] = options[:rows] if options[:rows]
|
55
|
+
js_options['cols'] = options[:cols] if options[:cols]
|
56
|
+
js_options['size'] = options[:size] if options[:size]
|
57
|
+
js_options['externalControl'] = "'#{options[:external_control]}'" if options[:external_control]
|
58
|
+
js_options['loadTextURL'] = "'#{url_for(options[:load_text_url])}'" if options[:load_text_url]
|
59
|
+
js_options['ajaxOptions'] = options[:options] if options[:options]
|
60
|
+
js_options['htmlResponse'] = !options[:script] if options[:script]
|
61
|
+
js_options['callback'] = "function(form) { return #{options[:with]} }" if options[:with]
|
62
|
+
js_options['clickToEditText'] = %('#{options[:click_to_edit_text]}') if options[:click_to_edit_text]
|
63
|
+
js_options['textBetweenControls'] = %('#{options[:text_between_controls]}') if options[:text_between_controls]
|
64
|
+
function << (', ' + options_for_javascript(js_options)) unless js_options.empty?
|
65
|
+
|
66
|
+
function << ')'
|
67
|
+
|
68
|
+
javascript_tag(function).force_encoding("utf-8") # TODO: Only on Ruby 1.9!
|
69
|
+
end
|
70
|
+
|
71
|
+
# Renders the value of the specified object and method with in-place editing capabilities.
|
72
|
+
def in_place_editor_field(object, method, tag_options = {}, in_place_editor_options = {})
|
73
|
+
instance_tag = ::ActionView::Helpers::InstanceTag.new(object, method, self)
|
74
|
+
tag_options = {:tag => "span",
|
75
|
+
:id => "#{object}_#{method}_#{instance_tag.object.id}_in_place_editor",
|
76
|
+
:class => "in_place_editor_field"}.merge!(tag_options)
|
77
|
+
in_place_editor_options[:url] = in_place_editor_options[:url] || url_for({ :action => "set_#{object}_#{method}", :id => instance_tag.object.id })
|
78
|
+
tag = content_tag(tag_options.delete(:tag), h(instance_tag.value(instance_tag.object)),tag_options)
|
79
|
+
return (tag + in_place_editor(tag_options[:id], in_place_editor_options)).force_encoding("utf-8") # TODO: Only on Ruby 1.9!
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/test_helper")
|
2
|
+
|
3
|
+
class InPlaceEditingTest < Test::Unit::TestCase
|
4
|
+
include InPlaceEditing
|
5
|
+
include InPlaceMacrosHelper
|
6
|
+
|
7
|
+
include ActionView::Helpers::UrlHelper
|
8
|
+
include ActionView::Helpers::TagHelper
|
9
|
+
include ActionView::Helpers::TextHelper
|
10
|
+
include ActionView::Helpers::FormHelper
|
11
|
+
include ActionView::Helpers::CaptureHelper
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@controller = Class.new do
|
15
|
+
def url_for(options)
|
16
|
+
url = "http://www.example.com/"
|
17
|
+
url << options[:action].to_s if options and options[:action]
|
18
|
+
url
|
19
|
+
end
|
20
|
+
end
|
21
|
+
@controller = @controller.new
|
22
|
+
@protect_against_forgery = false
|
23
|
+
end
|
24
|
+
|
25
|
+
def protect_against_forgery?
|
26
|
+
@protect_against_forgery
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_in_place_editor_external_control
|
30
|
+
assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nnew Ajax.InPlaceEditor('some_input', 'http://www.example.com/inplace_edit', {externalControl:'blah'})\n//]]>\n</script>),
|
31
|
+
in_place_editor('some_input', {:url => {:action => 'inplace_edit'}, :external_control => 'blah'})
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_in_place_editor_size
|
35
|
+
assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nnew Ajax.InPlaceEditor('some_input', 'http://www.example.com/inplace_edit', {size:4})\n//]]>\n</script>),
|
36
|
+
in_place_editor('some_input', {:url => {:action => 'inplace_edit'}, :size => 4})
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_in_place_editor_cols_no_rows
|
40
|
+
assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nnew Ajax.InPlaceEditor('some_input', 'http://www.example.com/inplace_edit', {cols:4})\n//]]>\n</script>),
|
41
|
+
in_place_editor('some_input', {:url => {:action => 'inplace_edit'}, :cols => 4})
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_in_place_editor_cols_with_rows
|
45
|
+
assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nnew Ajax.InPlaceEditor('some_input', 'http://www.example.com/inplace_edit', {cols:40, rows:5})\n//]]>\n</script>),
|
46
|
+
in_place_editor('some_input', {:url => {:action => 'inplace_edit'}, :rows => 5, :cols => 40})
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_inplace_editor_loading_text
|
50
|
+
assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nnew Ajax.InPlaceEditor('some_input', 'http://www.example.com/inplace_edit', {loadingText:'Why are we waiting?'})\n//]]>\n</script>),
|
51
|
+
in_place_editor('some_input', {:url => {:action => 'inplace_edit'}, :loading_text => 'Why are we waiting?'})
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_in_place_editor_url
|
55
|
+
assert_match "Ajax.InPlaceEditor('id-goes-here', 'http://www.example.com/action_to_set_value')",
|
56
|
+
in_place_editor( 'id-goes-here', :url => { :action => "action_to_set_value" })
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_in_place_editor_load_text_url
|
60
|
+
assert_match "Ajax.InPlaceEditor('id-goes-here', 'http://www.example.com/action_to_set_value', {loadTextURL:'http://www.example.com/action_to_get_value'})",
|
61
|
+
in_place_editor( 'id-goes-here',
|
62
|
+
:url => { :action => "action_to_set_value" },
|
63
|
+
:load_text_url => { :action => "action_to_get_value" })
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_in_place_editor_html_response
|
67
|
+
assert_match "Ajax.InPlaceEditor('id-goes-here', 'http://www.example.com/action_to_set_value', {htmlResponse:false})",
|
68
|
+
in_place_editor( 'id-goes-here',
|
69
|
+
:url => { :action => "action_to_set_value" },
|
70
|
+
:script => true )
|
71
|
+
end
|
72
|
+
|
73
|
+
def form_authenticity_token
|
74
|
+
"authenticity token"
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_in_place_editor_with_forgery_protection
|
78
|
+
@protect_against_forgery = true
|
79
|
+
assert_match "Ajax.InPlaceEditor('id-goes-here', 'http://www.example.com/action_to_set_value', {callback:function(form) { return Form.serialize(form) + '&authenticity_token=' + encodeURIComponent('authenticity token') }})",
|
80
|
+
in_place_editor( 'id-goes-here', :url => { :action => "action_to_set_value" })
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_in_place_editor_text_between_controls
|
84
|
+
assert_match "Ajax.InPlaceEditor('id-goes-here', 'http://www.example.com/action_to_set_value', {textBetweenControls:'or'})",
|
85
|
+
in_place_editor( 'id-goes-here',
|
86
|
+
:url => { :action => "action_to_set_value" },
|
87
|
+
:text_between_controls => "or" )
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
1.0
|
2
|
+
* record_select_field always searches on the latest string
|
3
|
+
* R.S. dialog closes on mousedown instead of click (because sometimes clicks are intercepted)
|
4
|
+
* R.S. layers over <select> boxes in IE 6
|
5
|
+
* record_select_field now opens R.S. even when the field loads with focus
|
6
|
+
* new :onchange option for record_select_field, to observe selection events
|
7
|
+
|
8
|
+
1.0rc1
|
9
|
+
* helpers complain if the controller they're configured for doesn't use recordselect
|
10
|
+
* when using keyboard navigation, hitting "enter" to select a record no longer submits the form
|
11
|
+
* if text field is empty when dialog is closed, then recordselect will empty the hidden field as well (lets you deselect)
|
12
|
+
* support for multiple selections (record_multi_select_helper)
|
13
|
+
* param-based search conditions are smarter - can search numeric fields as well
|
14
|
+
* using record_select_conditions_from_controller instead of conditions_for_collection. also added a new record_select_includes override method.
|
15
|
+
* helpers now accept a :class option
|
16
|
+
* fixed bug with url escaping when helpers were configured with multiple parameters
|
17
|
+
* new :label configuration option. it's a proc - the default one calls record.to_label (for backwards compatibility).
|
18
|
+
* cleaned up merge_conditions to use activerecord's sanitize_sql.
|
19
|
+
* div.record-select-container now has a high z-index so it will by default be visible above other absolutely positioned elements.
|
20
|
+
|
21
|
+
0.9
|
22
|
+
stuff
|
23
|
+
|
24
|
+
0.1
|
25
|
+
stuff
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2007 Lance Ivy
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,11 @@
|
|
1
|
+
RecordSelect
|
2
|
+
============
|
3
|
+
|
4
|
+
(c) 2007 - Lance Ivy
|
5
|
+
|
6
|
+
RecordSelect is a Rails widget to help you pick one record out of many. I designed it as a more usable and performant alternative to generating a massive dropdown list. It relies on AJAX for the cooler uses (all the provided view helpers rely on JavaScript?) but can also function in a pure-http fashion (although multi-select support is provided in a pure-JavaScript implementation).
|
7
|
+
|
8
|
+
Please see the ActionView::Helpers::RecordSelectHelpers for the most common API. More documentation (and HOWTOs) can be found online at http://code.google.com/p/recordselect, and a demo application is available at http://recordselect.googlecode.com/svn/demo.
|
9
|
+
|
10
|
+
= DEPENDENCIES
|
11
|
+
This depends on the excellent Paginator gem by Bruce Williams. This simple gem is available at paginator.rubyforge.org.
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
|
5
|
+
desc 'Default: run unit tests.'
|
6
|
+
task :default => :test
|
7
|
+
|
8
|
+
desc 'Test the recordselect plugin.'
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
10
|
+
t.libs << 'lib'
|
11
|
+
t.pattern = 'test/**/*_test.rb'
|
12
|
+
t.verbose = true
|
13
|
+
end
|
14
|
+
|
15
|
+
desc 'Generate documentation for the recordselect plugin.'
|
16
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
17
|
+
rdoc.rdoc_dir = 'rdoc'
|
18
|
+
rdoc.title = 'Recordselect'
|
19
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
20
|
+
rdoc.rdoc_files.include('README')
|
21
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
22
|
+
rdoc.rdoc_files.include('assets/**/*.js')
|
23
|
+
end
|
@@ -0,0 +1,187 @@
|
|
1
|
+
module RecordSelectHelper
|
2
|
+
# Print this from your layout to include everything necessary for RecordSelect to work.
|
3
|
+
# Well, not everything. You need Prototype too.
|
4
|
+
def record_select_includes
|
5
|
+
includes = ''
|
6
|
+
includes << stylesheet_link_tag('record_select/record_select')
|
7
|
+
includes << javascript_include_tag('record_select/record_select')
|
8
|
+
includes
|
9
|
+
end
|
10
|
+
|
11
|
+
# Adds a link on the page that toggles a RecordSelect widget from the given controller.
|
12
|
+
#
|
13
|
+
# *Options*
|
14
|
+
# +onselect+:: JavaScript code to handle selections client-side. This code has access to two variables: id, label. If the code returns false, the dialog will *not* close automatically.
|
15
|
+
# +params+:: Extra URL parameters. If any parameter is a column name, the parameter will be used as a search term to filter the result set.
|
16
|
+
def link_to_record_select(name, controller, options = {})
|
17
|
+
options[:params] ||= {}
|
18
|
+
options[:params].merge!(:controller => controller, :action => :browse)
|
19
|
+
options[:onselect] = "function(id, label) {#{options[:onselect]}}" if options[:onselect]
|
20
|
+
options[:html] ||= {}
|
21
|
+
options[:html][:id] ||= "rs_#{rand(9999)}"
|
22
|
+
|
23
|
+
assert_controller_responds(options[:params][:controller])
|
24
|
+
|
25
|
+
html = link_to_function(name, '', options[:html])
|
26
|
+
html << javascript_tag("new RecordSelect.Dialog(#{options[:html][:id].to_json}, #{url_for(options[:params].merge(:escape => false)).to_json}, {onselect: #{options[:onselect] || ''}})")
|
27
|
+
|
28
|
+
return html
|
29
|
+
end
|
30
|
+
|
31
|
+
# Adds a RecordSelect-based form field. The field submits the record's id using a hidden input.
|
32
|
+
#
|
33
|
+
# *Arguments*
|
34
|
+
# +name+:: the input name that will be used to submit the selected record's id.
|
35
|
+
# +current+:: the currently selected object. provide a new record if there're none currently selected and you have not passed the optional :controller argument.
|
36
|
+
#
|
37
|
+
# *Options*
|
38
|
+
# +controller+:: The controller configured to provide the result set. Optional if you have standard resource controllers (e.g. UsersController for the User model), in which case the controller will be inferred from the class of +current+ (the second argument)
|
39
|
+
# +params+:: A hash of extra URL parameters
|
40
|
+
# +id+:: The id to use for the input. Defaults based on the input's name.
|
41
|
+
# +onchange+:: A JavaScript function that will be called whenever something new is selected. It should accept the new id as the first argument, and the new label as the second argument. For example, you could set onchange to be "function(id, label) {alert(id);}", or you could create a JavaScript function somewhere else and set onchange to be "my_function" (without the parantheses!).
|
42
|
+
def record_select_field(name, current, options = {})
|
43
|
+
options[:controller] ||= current.class.to_s.pluralize.underscore
|
44
|
+
options[:params] ||= {}
|
45
|
+
options[:id] ||= name.gsub(/[\[\]]/, '_')
|
46
|
+
|
47
|
+
controller = assert_controller_responds(options[:controller])
|
48
|
+
|
49
|
+
id = label = ''
|
50
|
+
if current and not current.new_record?
|
51
|
+
id = current.id
|
52
|
+
label = label_for_field(current, controller)
|
53
|
+
end
|
54
|
+
|
55
|
+
url = url_for({:action => :browse, :controller => options[:controller], :escape => false}.merge(options[:params]))
|
56
|
+
|
57
|
+
html = text_field_tag(name, nil, :autocomplete => 'off', :id => options[:id], :class => options[:class], :onfocus => "this.focused=true", :onblur => "this.focused=false")
|
58
|
+
html << javascript_tag("new RecordSelect.Single(#{options[:id].to_json}, #{url.to_json}, {id: #{id.to_json}, label: #{label.to_json}, onchange: #{options[:onchange] || ''.to_json}});")
|
59
|
+
|
60
|
+
return html
|
61
|
+
end
|
62
|
+
|
63
|
+
# Assists with the creation of an observer for the :onchange option of the record_select_field method.
|
64
|
+
# Currently only supports building an Ajax.Request based on the id of the selected record.
|
65
|
+
#
|
66
|
+
# options[:url] should be a hash with all the necessary options *except* :id. that parameter
|
67
|
+
# will be provided based on the selected record.
|
68
|
+
#
|
69
|
+
# Question: if selecting users, what's more likely?
|
70
|
+
# /users/5/categories
|
71
|
+
# /categories?user_id=5
|
72
|
+
def record_select_observer(options = {})
|
73
|
+
fn = ""
|
74
|
+
fn << "function(id, value) {"
|
75
|
+
fn << "var url = #{url_for(options[:url].merge(:id => ":id:")).to_json}.replace(/:id:/, id);"
|
76
|
+
fn << "new Ajax.Request(url);"
|
77
|
+
fn << "}"
|
78
|
+
end
|
79
|
+
|
80
|
+
# Adds a RecordSelect-based form field for multiple selections. The values submit using a list of hidden inputs.
|
81
|
+
#
|
82
|
+
# *Arguments*
|
83
|
+
# +name+:: the input name that will be used to submit the selected records' ids. empty brackets will be appended to the name.
|
84
|
+
# +current+:: pass a collection of existing associated records
|
85
|
+
#
|
86
|
+
# *Options*
|
87
|
+
# +controller+:: The controller configured to provide the result set.
|
88
|
+
# +params+:: A hash of extra URL parameters
|
89
|
+
# +id+:: The id to use for the input. Defaults based on the input's name.
|
90
|
+
def record_multi_select_field(name, current, options = {})
|
91
|
+
options[:controller] ||= current.first.class.to_s.pluralize.underscore
|
92
|
+
options[:params] ||= {}
|
93
|
+
options[:id] ||= name.gsub(/[\[\]]/, '_')
|
94
|
+
|
95
|
+
controller = assert_controller_responds(options[:controller])
|
96
|
+
|
97
|
+
current = current.inject([]) { |memo, record| memo.push({:id => record.id, :label => label_for_field(record, controller)}) }
|
98
|
+
|
99
|
+
url = url_for({:action => :browse, :controller => options[:controller], :escape => false}.merge(options[:params]))
|
100
|
+
|
101
|
+
html = text_field_tag("#{name}[]", nil, :autocomplete => 'off', :id => options[:id], :class => options[:class], :onfocus => "this.focused=true", :onblur => "this.focused=false")
|
102
|
+
html << content_tag('ul', '', :class => 'record-select-list');
|
103
|
+
html << javascript_tag("new RecordSelect.Multiple(#{options[:id].to_json}, #{url.to_json}, {current: #{current.to_json}});")
|
104
|
+
|
105
|
+
return html
|
106
|
+
end
|
107
|
+
|
108
|
+
# A helper to render RecordSelect partials
|
109
|
+
def render_record_select(options = {}) #:nodoc:
|
110
|
+
controller.send(:render_record_select, options) do |options|
|
111
|
+
render options
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
# Provides view access to the RecordSelect configuration
|
116
|
+
def record_select_config #:nodoc:
|
117
|
+
controller.send :record_select_config
|
118
|
+
end
|
119
|
+
|
120
|
+
# The id of the RecordSelect widget for the given controller.
|
121
|
+
def record_select_id(controller = nil) #:nodoc:
|
122
|
+
controller ||= params[:controller]
|
123
|
+
"record-select-#{controller.gsub('/', '_')}"
|
124
|
+
end
|
125
|
+
|
126
|
+
def record_select_search_id(controller = nil) #:nodoc:
|
127
|
+
"#{record_select_id(controller)}-search"
|
128
|
+
end
|
129
|
+
|
130
|
+
private
|
131
|
+
# render the record using the renderer and add a link to select the record
|
132
|
+
def render_record_in_list(record, controller_path)
|
133
|
+
text = render_record_from_config(record)
|
134
|
+
if record_select_config.link?
|
135
|
+
url_params = {:controller => controller_path, :action => :select, :id => record.id, :escape => false}
|
136
|
+
link_to_remote text, {
|
137
|
+
:url => url_params,
|
138
|
+
:method => :post,
|
139
|
+
:before => 'Element.toggleClassName(this, "selected")',
|
140
|
+
:condition => "RecordSelect.notify(this)"
|
141
|
+
}, :href => url_params
|
142
|
+
else
|
143
|
+
text
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
|
148
|
+
# uses renderer (defaults to record_select_config.label) to determine how the given record renders.
|
149
|
+
def render_record_from_config(record, renderer = record_select_config.label)
|
150
|
+
case renderer
|
151
|
+
when Symbol, String
|
152
|
+
# return full-html from the named partial
|
153
|
+
render :partial => renderer.to_s, :locals => {:record => record}
|
154
|
+
|
155
|
+
when Proc
|
156
|
+
# return an html-cleaned descriptive string
|
157
|
+
h renderer.call(record)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
# uses the result of render_record_from_config to snag an appropriate record label
|
162
|
+
# to display in a field.
|
163
|
+
#
|
164
|
+
# if given a controller, searches for a partial in its views path
|
165
|
+
def label_for_field(record, controller = self.controller)
|
166
|
+
renderer = controller.record_select_config.label
|
167
|
+
case renderer
|
168
|
+
when Symbol, String
|
169
|
+
# find the <label> element and grab its innerHTML
|
170
|
+
description = render_record_from_config(record, File.join(controller.controller_path, renderer.to_s))
|
171
|
+
description.match(/<label[^>]*>(.*)<\/label>/)[1]
|
172
|
+
|
173
|
+
when Proc
|
174
|
+
# just return the string
|
175
|
+
render_record_from_config(record, renderer)
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
def assert_controller_responds(controller_name)
|
180
|
+
controller_name = "#{controller_name.camelize}Controller"
|
181
|
+
controller = controller_name.constantize
|
182
|
+
unless controller.uses_record_select?
|
183
|
+
raise "#{controller_name} has not been configured to use RecordSelect."
|
184
|
+
end
|
185
|
+
controller
|
186
|
+
end
|
187
|
+
end
|