zena 1.2.7 → 1.2.8
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/History.txt +80 -25
- data/Rakefile +2 -2
- data/app/controllers/columns_controller.rb +2 -2
- data/app/controllers/nodes_controller.rb +22 -29
- data/app/controllers/user_sessions_controller.rb +35 -10
- data/app/controllers/users_controller.rb +2 -2
- data/app/controllers/versions_controller.rb +2 -2
- data/app/models/group.rb +15 -1
- data/app/models/node.rb +109 -8
- data/app/models/role.rb +4 -0
- data/app/models/site.rb +64 -58
- data/app/models/template.rb +1 -1
- data/app/models/user.rb +135 -29
- data/app/models/user_session.rb +0 -1
- data/app/models/virtual_class.rb +11 -6
- data/app/views/columns/_form.html.erb +3 -1
- data/app/views/columns/_li.html.erb +1 -1
- data/app/views/columns/create.rjs +1 -1
- data/app/views/groups/_form.rhtml +16 -13
- data/app/views/relations/_form.erb +18 -6
- data/app/views/sites/_form.erb +12 -6
- data/app/views/users/_form.rhtml +23 -8
- data/app/views/users/_li.rhtml +14 -3
- data/app/views/users/index.rhtml +1 -1
- data/app/views/virtual_classes/_form.erb +12 -2
- data/app/views/zafu/default/Node-+login.zafu +8 -1
- data/app/views/zafu/default/Node-+search.zafu +1 -1
- data/bricks/acls/lib/bricks/acls.rb +1 -0
- data/bricks/acls/zena/migrate/20130903150356_longer_names_for_acl.rb +9 -0
- data/bricks/acls/zena/test/integration/acl_integration_test.rb +2 -2
- data/bricks/currency/lib/bricks/currency.rb +120 -0
- data/bricks/currency/zena/test/unit/currency_test.rb +43 -0
- data/bricks/fs_skin/lib/bricks/fs_skin.rb +1 -1
- data/bricks/fs_skin/zena/skins/blog/Node-+search.zafu +1 -1
- data/bricks/fs_skin/zena/skins/blog/Node.zafu +1 -1
- data/bricks/fs_skin/zena/test/unit/fs_skin_view_test.rb +35 -0
- data/bricks/pdf/lib/bricks/pdf.rb +1 -1
- data/bricks/sphinx/lib/bricks/sphinx.rb +2 -0
- data/bricks/sphinx/zena/init.rb +14 -0
- data/bricks/tags/zena/test/zafu/tags.yml +5 -1
- data/bricks/worker/lib/bricks/worker.rb +3 -2
- data/bricks/zena/zena/migrate/20130829093753_add_versioned_flag_to_column.rb +10 -0
- data/bricks/zena/zena/migrate/20130903084909_count_login_attempts.rb +11 -0
- data/bricks/zena/zena/migrate/20131104153126_index_fullpath.rb +10 -0
- data/bricks/zena/zena/migrate/20131104210011_rebuild_fullpath_after_change.rb +10 -0
- data/bricks/zena/zena/migrate/20131105160420_add_skin_id_to_sites.rb +9 -0
- data/bricks/zena/zena/migrate/20131105175822_add_profile_to_users.rb +11 -0
- data/bricks/zena/zena/migrate/20140213120038_fix_idx_scope.rb +13 -0
- data/bricks/zena/zena/migrate/20140628140247_add_site_readonly.rb +9 -0
- data/config/bricks.yml +8 -4
- data/config/gems.yml +5 -3
- data/db/init/base/skins/default/Node-+login.zafu +8 -1
- data/db/init/base/skins/default/Node-+search.zafu +1 -1
- data/lib/bricks/loader.rb +5 -5
- data/lib/gettext_strings.rb +3 -0
- data/lib/tasks/zena.rake +25 -22
- data/lib/zafu/process/context.rb +4 -0
- data/lib/zena/acts/secure_node.rb +3 -3
- data/lib/zena/app.rb +1 -0
- data/lib/zena/deploy.rb +1 -1
- data/lib/zena/deploy/template.rb +1 -1
- data/lib/zena/foxy_parser.rb +5 -2
- data/lib/zena/info.rb +1 -1
- data/lib/zena/site_worker.rb +2 -2
- data/lib/zena/test_controller.rb +5 -2
- data/lib/zena/use/action.rb +9 -2
- data/lib/zena/use/ajax.rb +20 -4
- data/lib/zena/use/ancestry.rb +89 -15
- data/lib/zena/use/authlogic.rb +8 -2
- data/lib/zena/use/context.rb +1 -0
- data/lib/zena/use/display.rb +1 -97
- data/lib/zena/use/forms.rb +28 -8
- data/lib/zena/use/html_tags.rb +16 -7
- data/lib/zena/use/i18n.rb +1 -1
- data/lib/zena/use/prop_eval.rb +6 -1
- data/lib/zena/use/query_node.rb +69 -4
- data/lib/zena/use/recursion.rb +1 -1
- data/lib/zena/use/refactor.rb +5 -2
- data/lib/zena/use/relations.rb +1 -0
- data/lib/zena/use/rendering.rb +7 -4
- data/lib/zena/use/test_helper.rb +8 -4
- data/lib/zena/use/upload.rb +14 -0
- data/lib/zena/use/urls.rb +39 -23
- data/lib/zena/use/version_hash.rb +5 -2
- data/lib/zena/use/workflow.rb +116 -70
- data/lib/zena/use/zafu_eval.rb +41 -0
- data/lib/zena/use/zafu_safe_definitions.rb +1 -0
- data/lib/zena/use/zafu_templates.rb +32 -26
- data/lib/zena/use/zazen.rb +8 -7
- data/locale/app.pot +5 -1
- data/locale/de/LC_MESSAGES/zena.mo +0 -0
- data/locale/de/zena.po +385 -281
- data/locale/en/LC_MESSAGES/zena.mo +0 -0
- data/locale/en/zena.po +378 -271
- data/locale/fr/LC_MESSAGES/zena.mo +0 -0
- data/locale/fr/zena.po +387 -272
- data/locale/it/LC_MESSAGES/zena.mo +0 -0
- data/locale/it/zena.po +433 -404
- data/locale/zena.pot +362 -268
- data/public/javascripts/grid.js +280 -104
- data/public/javascripts/zena.js +43 -15
- data/public/stylesheets/admin.css +8 -2
- data/public/stylesheets/grid.css +5 -2
- data/public/stylesheets/popup.css +1 -1
- data/test/fixtures/files/TestNode.zafu +51 -0
- data/test/functional/nodes_controller_test.rb +20 -5
- data/test/functional/user_sessions_controller_test.rb +41 -6
- data/test/functional/users_controller_test.rb +1 -2
- data/test/integration/navigation_test.rb +22 -4
- data/test/integration/query_node/basic.yml +7 -0
- data/test/integration/query_node/complex.yml +1 -1
- data/test/integration/query_node/errors.yml +1 -1
- data/test/integration/query_node/filters.yml +34 -1
- data/test/integration/query_node/relations.yml +6 -13
- data/test/integration/query_node_test.rb +22 -3
- data/test/integration/zafu_compiler/action.yml +1 -1
- data/test/integration/zafu_compiler/alias_site.yml +52 -0
- data/test/integration/zafu_compiler/complex.yml +1 -1
- data/test/integration/zafu_compiler/complex_ok.yml +5 -5
- data/test/integration/zafu_compiler/context.yml +1 -1
- data/test/integration/zafu_compiler/display.yml +56 -5
- data/test/integration/zafu_compiler/forms.yml +35 -2
- data/test/integration/zafu_compiler/meta.yml +4 -0
- data/test/integration/zafu_compiler/rubyless.yml +1 -1
- data/test/integration/zafu_compiler/safe_definitions.yml +4 -0
- data/test/integration/zafu_compiler/security.yml +10 -0
- data/test/integration/zafu_compiler/site.yml +5 -1
- data/test/integration/zafu_compiler/urls.yml +8 -2
- data/test/integration/zafu_compiler/zafu_attributes.yml +2 -1
- data/test/integration/zafu_compiler/zazen.yml +4 -0
- data/test/integration/zafu_compiler_test.rb +47 -4
- data/test/selenium/Grid/grid1.rsel +8 -8
- data/test/sites/complex/sites.yml +2 -2
- data/test/sites/complex/users.yml +1 -0
- data/test/sites/zena/columns.yml +4 -0
- data/test/sites/zena/sites.yml +1 -0
- data/test/sites/zena/users.yml +1 -0
- data/test/unit/node_test.rb +53 -5
- data/test/unit/note_test.rb +1 -1
- data/test/unit/relation_proxy_test.rb +20 -0
- data/test/unit/role_test.rb +2 -0
- data/test/unit/site_test.rb +28 -6
- data/test/unit/user_test.rb +332 -1
- data/test/unit/virtual_class_test.rb +55 -0
- data/test/unit/workflow_test.rb +175 -0
- data/test/unit/zena/use/ancestry_test.rb +52 -10
- data/test/unit/zena/use/prop_eval_test.rb +44 -0
- data/test/unit/zena/use/rendering_test.rb +48 -2
- data/test/unit/zena/use/upload_test.rb +15 -13
- data/test/unit/zena/use/urls_test.rb +1 -0
- data/vendor/plugins/ar_mysql_full_text/lib/ar_mysql_full_text.rb +39 -25
- data/zena.gemspec +69 -307
- metadata +143 -368
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run 2.tmCommand +0 -24
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run Context.tmCommand +0 -58
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run Focused Should.tmCommand +0 -88
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run.tmCommand +0 -27
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/YAML to Shoulda.tmCommand +0 -23
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Preferences/Symbol List: Context.tmPreferences +0 -19
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Preferences/Symbol List: Should.tmPreferences +0 -19
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory attributes for.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory build.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_define with class.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_define.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_next.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_sequence.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_bad_value.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_contains.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_does_not_contain.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_good_value.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_same_elements.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_save.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_sent_email.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_valid.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/association.tmSnippet +0 -17
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/attribute.tmSnippet +0 -17
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/before_should block.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block get.tmSnippet +0 -22
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block post.tmSnippet +0 -23
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block with setup.tmSnippet +0 -25
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/setup.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should block with before proc.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should block.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_allow_values_for.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_assign_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_be_restful denied.tmSnippet +0 -20
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_be_restful.tmSnippet +0 -20
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_belong_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_change by.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_change from to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_at_least.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_in_range.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_is.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_value_in_range.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_eventually.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_filter_params.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_and_belong_to_many.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_class_methods.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_db_column.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_db_columns.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_index.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_indices.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_instance_methods.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_many.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_named_scope.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_one.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_readonly_attributes.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_allow_mass_assignment_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_allow_values_for.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_assign_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_change.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_set_the_flash.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_redirect_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_a_form.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_template.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_with_layout.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_without_layout.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_respond_with.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_respond_with_content_type.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_return_from_session.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_route.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_set_the_flash_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_acceptance_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_numericality_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_presence_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_uniqueness_of with scope.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_uniqueness_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/catch_exception.rb +0 -39
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/run_script.rb +0 -104
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/stdin_dialog.rb +0 -14
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/test.rb +0 -17
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/todo.txt +0 -13
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/bin/yaml_to_shoulda.rb +0 -25
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Syntaxes/Ruby on Rails (Shoulda).tmLanguage +0 -166
- data/vendor/TextMate/Ruby Shoulda.tmbundle/info.plist +0 -304
- data/vendor/TextMate/Zena.tmbundle/Commands/Run all yaml tests.tmCommand +0 -37
- data/vendor/TextMate/Zena.tmbundle/Commands/Run focused yaml test.tmCommand +0 -52
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/catch_exception.rb +0 -39
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/run_script.rb +0 -118
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/stdin_dialog.rb +0 -14
- data/vendor/TextMate/Zena.tmbundle/info.plist +0 -17
- data/vendor/plugins/selenium-on-rails/CHANGELOG +0 -125
- data/vendor/plugins/selenium-on-rails/LICENSE-2.0.txt +0 -202
- data/vendor/plugins/selenium-on-rails/README.md +0 -202
- data/vendor/plugins/selenium-on-rails/Rakefile +0 -38
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumController.html +0 -265
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumHelper.html +0 -148
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails.html +0 -126
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/FixtureLoader.html +0 -231
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/PartialsSupport.html +0 -195
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Paths.html +0 -295
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/RSelenese.html +0 -219
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Renderer.html +0 -156
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Selenese.html +0 -179
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/SuiteRenderer.html +0 -223
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilder.html +0 -441
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderAccessors.html +0 -3098
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderActions.html +0 -2080
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderUserAccessors.html +0 -116
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderUserActions.html +0 -116
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRailsConfig.html +0 -150
- data/vendor/plugins/selenium-on-rails/doc/files/CHANGELOG.html +0 -422
- data/vendor/plugins/selenium-on-rails/doc/files/README.html +0 -321
- data/vendor/plugins/selenium-on-rails/doc/files/lib/controllers/selenium_controller_rb.html +0 -108
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_helper_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/acceptance_test_runner_rb.html +0 -222
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/fixture_loader_rb.html +0 -109
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/partials_support_rb.html +0 -111
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/paths_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/renderer_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/rselenese_rb.html +0 -118
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/selenese_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/suite_renderer_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_accessors_rb.html +0 -114
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_actions_rb.html +0 -113
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_rb.html +0 -120
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_config_rb.html +0 -108
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_rb.html +0 -115
- data/vendor/plugins/selenium-on-rails/doc/fr_class_index.html +0 -42
- data/vendor/plugins/selenium-on-rails/doc/fr_file_index.html +0 -43
- data/vendor/plugins/selenium-on-rails/doc/fr_method_index.html +0 -182
- data/vendor/plugins/selenium-on-rails/doc/index.html +0 -24
- data/vendor/plugins/selenium-on-rails/doc/rdoc-style.css +0 -208
- data/vendor/plugins/selenium-on-rails/generators/selenium/USAGE +0 -19
- data/vendor/plugins/selenium-on-rails/generators/selenium/selenium_generator.rb +0 -50
- data/vendor/plugins/selenium-on-rails/generators/selenium/templates/rhtml.rhtml +0 -16
- data/vendor/plugins/selenium-on-rails/generators/selenium/templates/rselenese.rhtml +0 -14
- data/vendor/plugins/selenium-on-rails/generators/selenium/templates/selenese.rhtml +0 -11
- data/vendor/plugins/selenium-on-rails/init.rb +0 -15
- data/vendor/plugins/selenium-on-rails/lib/controllers/selenium_controller.rb +0 -122
- data/vendor/plugins/selenium-on-rails/lib/controllers/switch_environment_controller.rb +0 -16
- data/vendor/plugins/selenium-on-rails/lib/selenium_helper.rb +0 -8
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails.rb +0 -11
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/acceptance_test_runner.rb +0 -215
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/fixture_loader.rb +0 -57
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/partials_support.rb +0 -36
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/paths.rb +0 -61
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/renderer.rb +0 -20
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/rselenese.rb +0 -44
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/selenese.rb +0 -87
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/suite_renderer.rb +0 -56
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder.rb +0 -116
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_accessors.rb +0 -1002
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_actions.rb +0 -514
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_user_accessors.rb.example +0 -91
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_user_actions.rb.example +0 -24
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails_config.rb +0 -30
- data/vendor/plugins/selenium-on-rails/lib/views/layouts/layout.rhtml +0 -18
- data/vendor/plugins/selenium-on-rails/lib/views/record.rhtml +0 -5
- data/vendor/plugins/selenium-on-rails/lib/views/selenium_helper.rb +0 -9
- data/vendor/plugins/selenium-on-rails/lib/views/setup.rhtml +0 -67
- data/vendor/plugins/selenium-on-rails/lib/views/test_suite.rhtml +0 -26
- data/vendor/plugins/selenium-on-rails/routes.rb +0 -24
- data/vendor/plugins/selenium-on-rails/selenium-core/Blank.html +0 -7
- data/vendor/plugins/selenium-on-rails/selenium-core/InjectedRemoteRunner.html +0 -8
- data/vendor/plugins/selenium-on-rails/selenium-core/RemoteRunner.html +0 -110
- data/vendor/plugins/selenium-on-rails/selenium-core/SeleniumLog.html +0 -109
- data/vendor/plugins/selenium-on-rails/selenium-core/TestPrompt.html +0 -145
- data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner-splash.html +0 -55
- data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner.hta +0 -177
- data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner.html +0 -177
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/butmin.gif +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/butplus.gif +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/domviewer.css +0 -298
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/domviewer.html +0 -16
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/selenium-domviewer.js +0 -205
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/all.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/continue.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/continue_disabled.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/pause.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/pause_disabled.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/selected.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/step.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/step_disabled.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/iedoc-core.xml +0 -1759
- data/vendor/plugins/selenium-on-rails/selenium-core/iedoc.xml +0 -1800
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/cssQuery-p.js +0 -6
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-level2.js +0 -142
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-level3.js +0 -150
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-standard.js +0 -53
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery.js +0 -356
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/prototype.js +0 -2006
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/builder.js +0 -101
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/controls.js +0 -815
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/dragdrop.js +0 -915
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/effects.js +0 -958
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/scriptaculous.js +0 -47
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/slider.js +0 -283
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/unittest.js +0 -383
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/snapsie.js +0 -91
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/find_matching_child.js +0 -69
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/htmlutils.js +0 -1616
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/injection.html +0 -72
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-api.js +0 -3184
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-browserbot.js +0 -2300
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-browserdetect.js +0 -153
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-commandhandlers.js +0 -377
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-executionloop.js +0 -175
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-logging.js +0 -148
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-remoterunner.js +0 -695
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-testrunner.js +0 -1362
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-version.js +0 -5
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-doc.html +0 -803
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-element.js +0 -1537
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-map-sample.js +0 -979
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/user-extensions.js +0 -3
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/user-extensions.js.sample +0 -75
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/xmlextras.js +0 -153
- data/vendor/plugins/selenium-on-rails/selenium-core/selenium-logo.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/selenium-test.css +0 -43
- data/vendor/plugins/selenium-on-rails/selenium-core/selenium.css +0 -316
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/dom.js +0 -566
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/javascript-xpath-0.1.11.js +0 -2816
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/util.js +0 -549
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/xmltoken.js +0 -149
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/xpath.js +0 -2450
- data/vendor/plugins/selenium-on-rails/tasks/test_acceptance.rake +0 -8
- data/vendor/plugins/selenium-on-rails/test/fixtures/config.yml +0 -37
- data/vendor/plugins/selenium-on-rails/test/fixtures/selenium.yml +0 -27
- data/vendor/plugins/selenium-on-rails/test/paths_test.rb +0 -72
- data/vendor/plugins/selenium-on-rails/test/renderer_test.rb +0 -157
- data/vendor/plugins/selenium-on-rails/test/rselenese_test.rb +0 -708
- data/vendor/plugins/selenium-on-rails/test/selenese_test.rb +0 -242
- data/vendor/plugins/selenium-on-rails/test/selenium_controller_test.rb +0 -67
- data/vendor/plugins/selenium-on-rails/test/selenium_on_rails_config_test.rb +0 -43
- data/vendor/plugins/selenium-on-rails/test/selenium_support_test.rb +0 -35
- data/vendor/plugins/selenium-on-rails/test/setup_test.rb +0 -31
- data/vendor/plugins/selenium-on-rails/test/suite_renderer_test.rb +0 -109
- data/vendor/plugins/selenium-on-rails/test/switch_environment_controller_test.rb +0 -17
- data/vendor/plugins/selenium-on-rails/test/test_builder_functions_authortest.rb +0 -51
- data/vendor/plugins/selenium-on-rails/test/test_helper.rb +0 -101
- data/vendor/plugins/selenium-on-rails/test_data/_partial.rsel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/own_layout.html +0 -12
- data/vendor/plugins/selenium-on-rails/test_data/partials/_html.html +0 -6
- data/vendor/plugins/selenium-on-rails/test_data/partials/_nesting.rsel +0 -2
- data/vendor/plugins/selenium-on-rails/test_data/partials/_rhtml.rhtml +0 -6
- data/vendor/plugins/selenium-on-rails/test_data/partials/_rsel.rsel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/partials/_sel.sel +0 -5
- data/vendor/plugins/selenium-on-rails/test_data/partials/all_partials.rsel +0 -5
- data/vendor/plugins/selenium-on-rails/test_data/rhtml.rhtml +0 -7
- data/vendor/plugins/selenium-on-rails/test_data/rselenese.rsel +0 -8
- data/vendor/plugins/selenium-on-rails/test_data/selenese.sel +0 -7
- data/vendor/plugins/selenium-on-rails/test_data/suite_one/subsuite/suite_one_subsuite_testcase.sel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase1.sel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase2.sel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/suite_two/suite_two_testcase.sel +0 -1
data/lib/zena/use/forms.rb
CHANGED
|
@@ -81,6 +81,10 @@ module Zena
|
|
|
81
81
|
end
|
|
82
82
|
base
|
|
83
83
|
end
|
|
84
|
+
|
|
85
|
+
def profile_users
|
|
86
|
+
secure(User) {User.find_all_by_is_profile(true) } || []
|
|
87
|
+
end
|
|
84
88
|
end # ViewMethods
|
|
85
89
|
|
|
86
90
|
module ZafuMethods
|
|
@@ -449,7 +453,7 @@ module Zena
|
|
|
449
453
|
|
|
450
454
|
extract_label(res, attribute || erb_attr)
|
|
451
455
|
end
|
|
452
|
-
|
|
456
|
+
|
|
453
457
|
# <r:select name='klass' root_class='...'/>
|
|
454
458
|
# <r:select name='parent_id' nodes='projects in site'/>
|
|
455
459
|
# <r:select name='parent_id' values='a,b,c'/>
|
|
@@ -524,6 +528,9 @@ module Zena
|
|
|
524
528
|
elsif @params[:type] == 'time_zone'
|
|
525
529
|
# <r:select name='d_tz' type='time_zone'/>
|
|
526
530
|
select_tag.wrap "<%= options_for_select(TZInfo::Timezone.all_identifiers, #{selected}) %>"
|
|
531
|
+
elsif @params[:type] == 'profile'
|
|
532
|
+
# <r:select name='auth[model]' type='model'/>
|
|
533
|
+
select_tag.wrap "<%= options_for_select(profile_users.map{|u| u.login}.sort, #{selected}) %>"
|
|
527
534
|
elsif options_list = get_options_for_select
|
|
528
535
|
select_tag.wrap "<%= options_for_select(#{options_list}, #{selected}) %>"
|
|
529
536
|
else
|
|
@@ -599,14 +606,27 @@ module Zena
|
|
|
599
606
|
else
|
|
600
607
|
# 'text', 'hidden', 'checkbox', ...
|
|
601
608
|
return parser_error('Missing name.') unless attribute || html_attributes[:name]
|
|
602
|
-
|
|
603
|
-
@markup.
|
|
604
|
-
|
|
609
|
+
|
|
610
|
+
if @markup.tag != 'input'
|
|
611
|
+
# Do not rewrite tag, use another one.
|
|
612
|
+
markup = Zafu::Markup.new('input')
|
|
613
|
+
else
|
|
614
|
+
markup = @markup
|
|
615
|
+
end
|
|
616
|
+
|
|
617
|
+
markup.tag = 'input'
|
|
618
|
+
markup.set_param(:type, @params[:type] || 'text')
|
|
619
|
+
|
|
605
620
|
checked = html_attributes.delete(:checked)
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
621
|
+
markup.set_dyn_params(html_attributes)
|
|
622
|
+
markup.append_attribute checked if checked
|
|
623
|
+
markup.done = false
|
|
624
|
+
|
|
625
|
+
if markup == @markup
|
|
626
|
+
wrap('')
|
|
627
|
+
else
|
|
628
|
+
markup.wrap('')
|
|
629
|
+
end
|
|
610
630
|
end
|
|
611
631
|
|
|
612
632
|
if @params[:type] == 'checkbox'
|
data/lib/zena/use/html_tags.rb
CHANGED
|
@@ -163,19 +163,28 @@ module Zena
|
|
|
163
163
|
include LinkTags
|
|
164
164
|
include RubyLess
|
|
165
165
|
|
|
166
|
-
safe_method
|
|
167
|
-
|
|
168
|
-
|
|
166
|
+
safe_method :flash => {:class => StringHash, :method => 'zafu_flash'}
|
|
167
|
+
safe_method :flash_messages => {:class => String, :html_safe => true}
|
|
168
|
+
|
|
169
|
+
def zafu_flash
|
|
170
|
+
@zafu_flash ||= if flash[:notice] || flash[:error]
|
|
171
|
+
flash.stringify_keys
|
|
172
|
+
else
|
|
173
|
+
{}
|
|
174
|
+
end
|
|
175
|
+
end
|
|
169
176
|
|
|
170
177
|
def flash_messages(opts={})
|
|
171
178
|
type = opts[:show] || 'both'
|
|
172
179
|
|
|
173
|
-
if (type == 'notice' || type == 'both') && flash[:notice]
|
|
174
|
-
|
|
180
|
+
if (type == 'notice' || type == 'both') && (msg = flash[:notice])
|
|
181
|
+
msg = ::ERB::Util.html_escape(msg) unless msg.html_safe?
|
|
182
|
+
notice = "<div class='auto_fade notice' onclick='new Effect.Fade(this)'>#{msg}</div>"
|
|
175
183
|
end
|
|
176
184
|
|
|
177
|
-
if (type == 'error' || type == 'both') && flash[:error ]
|
|
178
|
-
|
|
185
|
+
if (type == 'error' || type == 'both') && (msg = flash[:error ])
|
|
186
|
+
msg = ::ERB::Util.html_escape(msg) unless msg.html_safe?
|
|
187
|
+
error = "<div class='error' onclick='new Effect.Fade(this)'>#{msg}</div>"
|
|
179
188
|
end
|
|
180
189
|
|
|
181
190
|
if page = opts[:page]
|
data/lib/zena/use/i18n.rb
CHANGED
|
@@ -181,7 +181,7 @@ module Zena
|
|
|
181
181
|
|
|
182
182
|
# Redirect on lang change "...?lang=de"
|
|
183
183
|
def check_lang
|
|
184
|
-
if params[:lang]
|
|
184
|
+
if params[:lang] && params[:controller] != 'user_sessions'
|
|
185
185
|
# redirects other controllers (users controller, etc)
|
|
186
186
|
redirect_url = params
|
|
187
187
|
redirect_url.delete(:lang)
|
data/lib/zena/use/prop_eval.rb
CHANGED
|
@@ -74,7 +74,7 @@ module Zena
|
|
|
74
74
|
|
|
75
75
|
# TODO: decide if we need to keep this (Zena::Remote makes a much better console the MySQL console...)
|
|
76
76
|
def set__id
|
|
77
|
-
self._id = self.title if @need_set__id
|
|
77
|
+
self._id = self.title.limit(39) if @need_set__id
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
# Must happend after 'change_klass'
|
|
@@ -85,6 +85,11 @@ module Zena
|
|
|
85
85
|
if code = vclass.prop_eval
|
|
86
86
|
hash = safe_eval(code)
|
|
87
87
|
if hash.kind_of?(Hash)
|
|
88
|
+
if hash.has_key?('title') && hash['title'].blank?
|
|
89
|
+
# Avoid blank title
|
|
90
|
+
hash['title'] = vclass.name
|
|
91
|
+
end
|
|
92
|
+
|
|
88
93
|
# forces a check on valid properties
|
|
89
94
|
self.attributes = hash
|
|
90
95
|
true
|
data/lib/zena/use/query_node.rb
CHANGED
|
@@ -125,11 +125,15 @@ module Zena
|
|
|
125
125
|
end
|
|
126
126
|
|
|
127
127
|
class << self
|
|
128
|
-
attr_accessor :filter_fields
|
|
128
|
+
attr_accessor :filter_fields, :fulltext_fields
|
|
129
129
|
|
|
130
130
|
def add_filter_field(key, fld_def)
|
|
131
131
|
self.filter_fields[key] = fld_def
|
|
132
132
|
end
|
|
133
|
+
|
|
134
|
+
def add_fulltext_field(key, &block)
|
|
135
|
+
self.fulltext_fields[key] = block
|
|
136
|
+
end
|
|
133
137
|
end
|
|
134
138
|
|
|
135
139
|
# Enables filters like "where id = 45" or "where parent_id = #{params[:parent_id]}"
|
|
@@ -140,6 +144,42 @@ module Zena
|
|
|
140
144
|
'section_id' => {:key => 'zip', :table => ['jnode', 'nodes', 'nodes', 'TABLE2.id = TABLE1.section_id AND TABLE2.site_id = TABLE1.site_id']},
|
|
141
145
|
'now' => Zena::Db::NOW,
|
|
142
146
|
}
|
|
147
|
+
|
|
148
|
+
self.fulltext_fields = {
|
|
149
|
+
# Default fulltext search
|
|
150
|
+
'fulltext' => Proc.new {|processor, table, right|
|
|
151
|
+
# We use the add_key_value_table rule to avoid inserting the
|
|
152
|
+
# same index access twice.
|
|
153
|
+
tbl = processor.send(:add_key_value_table, 'versions', 'versions', 'idx_text_high') do |tbl_name|
|
|
154
|
+
# This block is only executed once
|
|
155
|
+
on_clause = "#{tbl_name}.node_id = #{table}.id"
|
|
156
|
+
# lang
|
|
157
|
+
on_clause << " AND #{tbl_name}.lang = #{processor.send(:quote, visitor.lang)}"
|
|
158
|
+
# published
|
|
159
|
+
on_clause << " AND #{tbl_name}.status >= #{Zena::Status::Pub}"
|
|
160
|
+
|
|
161
|
+
# 1=1 relation, no need for distinct
|
|
162
|
+
on_clause
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
case right[0]
|
|
166
|
+
when :string, :dstring, :real, :integer
|
|
167
|
+
str = "%#{right[1]}%"
|
|
168
|
+
when :rubyless
|
|
169
|
+
str = "%\#{#{right[1]}}%"
|
|
170
|
+
else
|
|
171
|
+
raise ::QueryBuilder::Error.new("Can only match against literal or rubyless values.")
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
value = RubyLess.translate_string(processor.instance_variable_get(:@rubyless_helper), str)
|
|
175
|
+
if value.literal
|
|
176
|
+
value = processor.send(:quote, value.literal)
|
|
177
|
+
else
|
|
178
|
+
value = processor.send(:insert_bind, value)
|
|
179
|
+
end
|
|
180
|
+
"#{tbl}.idx_text_high LIKE #{value}"
|
|
181
|
+
}
|
|
182
|
+
}
|
|
143
183
|
|
|
144
184
|
# Scope current context with previous context.
|
|
145
185
|
# For example:
|
|
@@ -160,6 +200,19 @@ module Zena
|
|
|
160
200
|
nil
|
|
161
201
|
end
|
|
162
202
|
end
|
|
203
|
+
|
|
204
|
+
def apply_scope(scope)
|
|
205
|
+
case scope
|
|
206
|
+
when 'sub_nodes'
|
|
207
|
+
context[:processing] = :scope
|
|
208
|
+
add_filter("#{field_or_attr('fullpath')} LIKE CONCAT(#{field_or_attr('fullpath', table(main_table, -1))},'/%')")
|
|
209
|
+
when 'home'
|
|
210
|
+
context[:processing] = :scope
|
|
211
|
+
add_filter("#{field_or_attr('fullpath')} LIKE CONCAT(#{insert_bind('current_site.home_node.fullpath')},'/%')")
|
|
212
|
+
else
|
|
213
|
+
super
|
|
214
|
+
end
|
|
215
|
+
end
|
|
163
216
|
|
|
164
217
|
def process_attr(attribute)
|
|
165
218
|
case attribute
|
|
@@ -328,13 +381,25 @@ module Zena
|
|
|
328
381
|
if klass = Node.get_class(right[1])
|
|
329
382
|
"#{field_or_attr('kpath')} #{is_not ? 'NOT ' : ''}LIKE #{quote(klass.kpath + '%')}"
|
|
330
383
|
else
|
|
331
|
-
raise ::QueryBuilder::
|
|
384
|
+
raise ::QueryBuilder::Error.new("Unknown class #{right.last.inspect}.")
|
|
332
385
|
end
|
|
333
386
|
else
|
|
334
387
|
process_op(:like, left, right)
|
|
335
388
|
end
|
|
336
389
|
end
|
|
337
390
|
|
|
391
|
+
def process_match(left, right)
|
|
392
|
+
if left[0] == :field
|
|
393
|
+
if proc = self.class.fulltext_fields[left[1]]
|
|
394
|
+
proc.call(self, table, right)
|
|
395
|
+
else
|
|
396
|
+
raise ::QueryBuilder::Error.new("Unknown matching field #{left[1].inspect}.")
|
|
397
|
+
end
|
|
398
|
+
else
|
|
399
|
+
raise ::QueryBuilder::Error.new("Left argument for 'match' should be a fulltext index type.")
|
|
400
|
+
end
|
|
401
|
+
end
|
|
402
|
+
|
|
338
403
|
# [:like, [:field, "class"], [:field, "Image"]]
|
|
339
404
|
def process_not(arg)
|
|
340
405
|
if (arg[1] == [:field, 'class'] || arg[1] == [:field, 'klass']) && arg[0] == :like
|
|
@@ -553,7 +618,7 @@ module Zena
|
|
|
553
618
|
# Special pseudo-context
|
|
554
619
|
add_table(main_table)
|
|
555
620
|
set_main_class(current_site.home_node.vclass)
|
|
556
|
-
add_filter "#{table}.id = #{current_site.home_id}"
|
|
621
|
+
add_filter "#{table}.id = #{insert_bind('current_site.home_id')}"
|
|
557
622
|
return true
|
|
558
623
|
#when 'author', 'traductions', 'versions'
|
|
559
624
|
# # TODO: not implemented yet...
|
|
@@ -583,7 +648,7 @@ module Zena
|
|
|
583
648
|
set_main_class(klass)
|
|
584
649
|
kpath_filter = ".kpath LIKE #{quote("#{klass.kpath}%")}" unless klass.kpath == 'N'
|
|
585
650
|
else
|
|
586
|
-
raise ::QueryBuilder::
|
|
651
|
+
raise ::QueryBuilder::Error.new("Unknown class #{klass} in scope '#{class_name}:#{scope}'.")
|
|
587
652
|
end
|
|
588
653
|
else
|
|
589
654
|
klass = nil
|
data/lib/zena/use/recursion.rb
CHANGED
|
@@ -10,7 +10,7 @@ module Zena
|
|
|
10
10
|
# recursion
|
|
11
11
|
def r_include
|
|
12
12
|
return '' if @context[:saved_template]
|
|
13
|
-
return
|
|
13
|
+
return parser_error("missing 'template' or 'part' parameter") if !@params[:part]
|
|
14
14
|
recursion = get_context_var('recursion', @params[:part])
|
|
15
15
|
return parser_error("no parent named '#{@params[:part]}'") unless recursion
|
|
16
16
|
klass = recursion[:klass]
|
data/lib/zena/use/refactor.rb
CHANGED
|
@@ -23,7 +23,8 @@ module Zena
|
|
|
23
23
|
module ViewMethods
|
|
24
24
|
|
|
25
25
|
include Common
|
|
26
|
-
|
|
26
|
+
include RubyLess
|
|
27
|
+
safe_method [:fsize, Number] => String
|
|
27
28
|
|
|
28
29
|
# TODO: see if this is still needed. Creates a pseudo random string to avoid browser side ajax caching
|
|
29
30
|
def rnd
|
|
@@ -61,7 +62,9 @@ module Zena
|
|
|
61
62
|
# TODO: use number_to_human_size instead
|
|
62
63
|
def fsize(size)
|
|
63
64
|
size = size.to_f
|
|
64
|
-
if size >= 1024 * 1024 * 1024
|
|
65
|
+
if size >= 1024 * 1024 * 1024 * 1024
|
|
66
|
+
sprintf("%.2f Tb", size/(1024*1024*1024*1024))
|
|
67
|
+
elsif size >= 1024 * 1024 * 1024
|
|
65
68
|
sprintf("%.2f Gb", size/(1024*1024*1024))
|
|
66
69
|
elsif size >= 1024 * 1024
|
|
67
70
|
sprintf("%.1f Mb", size/(1024*1024))
|
data/lib/zena/use/relations.rb
CHANGED
data/lib/zena/use/rendering.rb
CHANGED
|
@@ -169,7 +169,7 @@ module Zena
|
|
|
169
169
|
opts[:cache] = false
|
|
170
170
|
|
|
171
171
|
render :inline => result[:data]
|
|
172
|
-
|
|
172
|
+
|
|
173
173
|
else
|
|
174
174
|
|
|
175
175
|
if disposition = zafu_headers.delete('Content-Disposition')
|
|
@@ -195,9 +195,9 @@ module Zena
|
|
|
195
195
|
return
|
|
196
196
|
end
|
|
197
197
|
|
|
198
|
-
if data = result
|
|
198
|
+
if data = result[:data]
|
|
199
199
|
send_data(data , result)
|
|
200
|
-
elsif file = result
|
|
200
|
+
elsif file = result[:file]
|
|
201
201
|
send_file(file , result)
|
|
202
202
|
else
|
|
203
203
|
# Should never happen
|
|
@@ -279,7 +279,10 @@ module Zena
|
|
|
279
279
|
|
|
280
280
|
# Return true if we can cache the current page
|
|
281
281
|
def caching_allowed(opts = {})
|
|
282
|
-
return false if current_site.authentication? ||
|
|
282
|
+
return false if current_site.authentication? ||
|
|
283
|
+
(query_params != {} && !@cache_query) ||
|
|
284
|
+
flash[:notice] ||
|
|
285
|
+
flash[:error]
|
|
283
286
|
# Cache even if authenticated (public content).
|
|
284
287
|
# Content viewed by anonymous user should be cached anyway.
|
|
285
288
|
opts[:authenticated] || visitor.is_anon?
|
data/lib/zena/use/test_helper.rb
CHANGED
|
@@ -7,10 +7,11 @@ module Zena
|
|
|
7
7
|
include Zena::Use::Upload::UploadedFile
|
|
8
8
|
|
|
9
9
|
# Set visitor for unit testing
|
|
10
|
-
def login(fixture,
|
|
11
|
-
user = users(fixture)
|
|
12
|
-
if
|
|
13
|
-
|
|
10
|
+
def login(fixture, host = nil)
|
|
11
|
+
user = fixture.kind_of?(Fixnum) ? User.find(fixture) : users(fixture)
|
|
12
|
+
if host
|
|
13
|
+
raise 'FIXME' unless host =~ /\./
|
|
14
|
+
site = Site.setup_master(Site.find_by_host(host))
|
|
14
15
|
else
|
|
15
16
|
# Not an alias
|
|
16
17
|
site = user.site
|
|
@@ -19,6 +20,9 @@ module Zena
|
|
|
19
20
|
user.ip = '10.0.0.44'
|
|
20
21
|
$_test_site = site.name
|
|
21
22
|
::I18n.locale = user.lang
|
|
23
|
+
rescue => err
|
|
24
|
+
puts "#{host.inspect}"
|
|
25
|
+
puts err.backtrace
|
|
22
26
|
end
|
|
23
27
|
|
|
24
28
|
# Show object's errors
|
data/lib/zena/use/upload.rb
CHANGED
|
@@ -31,6 +31,11 @@ module Zena
|
|
|
31
31
|
|
|
32
32
|
module ControllerMethods
|
|
33
33
|
include UploadedFile
|
|
34
|
+
|
|
35
|
+
def self.included(base)
|
|
36
|
+
base.send(:helper_method, :fetch_html)
|
|
37
|
+
end
|
|
38
|
+
|
|
34
39
|
protected
|
|
35
40
|
include ActionView::Helpers::NumberHelper # number_to_human_size
|
|
36
41
|
def get_attachment
|
|
@@ -44,6 +49,14 @@ module Zena
|
|
|
44
49
|
[att, error]
|
|
45
50
|
end
|
|
46
51
|
|
|
52
|
+
def fetch_html(uri_str)
|
|
53
|
+
response, error = fetch_response(uri_str)
|
|
54
|
+
if response
|
|
55
|
+
response.body
|
|
56
|
+
else
|
|
57
|
+
''
|
|
58
|
+
end
|
|
59
|
+
end
|
|
47
60
|
|
|
48
61
|
private
|
|
49
62
|
def fetch_uri(uri_str, max_file_size = 10)
|
|
@@ -176,6 +189,7 @@ module Zena
|
|
|
176
189
|
|
|
177
190
|
module ViewMethods
|
|
178
191
|
include RubyLess
|
|
192
|
+
safe_method [:fetch_html, String] => String
|
|
179
193
|
|
|
180
194
|
def upload_form_tag(url_opts, html_opts = {})
|
|
181
195
|
@uuid = UUIDTools::UUID.random_create.to_s.gsub('-','')
|
data/lib/zena/use/urls.rb
CHANGED
|
@@ -88,6 +88,7 @@ module Zena
|
|
|
88
88
|
|
|
89
89
|
pre = opts.delete(:prefix) || (visitor.is_anon? && opts.delete(:lang)) || prefix
|
|
90
90
|
mode = opts.delete(:mode)
|
|
91
|
+
mode = nil if mode.blank?
|
|
91
92
|
if ep = opts[:encode_params]
|
|
92
93
|
ep = ep.split(',').map(&:strip)
|
|
93
94
|
if ep.delete('mode')
|
|
@@ -122,36 +123,50 @@ module Zena
|
|
|
122
123
|
stamp = make_cachestamp(node, mode)
|
|
123
124
|
end
|
|
124
125
|
|
|
125
|
-
path = if !asset && node[:id] == visitor.site
|
|
126
|
+
path = if !asset && node[:id] == visitor.site.home_id && mode.nil? && format == 'html'
|
|
126
127
|
"#{abs_url_prefix}/#{pre}" # index page
|
|
127
128
|
elsif node[:custom_base]
|
|
128
129
|
"#{abs_url_prefix}/#{pre}/" +
|
|
129
|
-
basepath_as_url(node
|
|
130
|
-
(mode ? "_#{mode}" : '')
|
|
131
|
-
(asset ? "=#{asset}" : '')
|
|
132
|
-
(stamp ? ".#{stamp}" : '')
|
|
130
|
+
basepath_as_url(node, true) +
|
|
131
|
+
(mode ? "_#{mode}" : '') +
|
|
132
|
+
(asset ? "=#{asset}" : '') +
|
|
133
|
+
(stamp ? ".#{stamp}" : '') +
|
|
133
134
|
(format == 'html' ? '' : ".#{format}")
|
|
134
135
|
else
|
|
135
136
|
"#{abs_url_prefix}/#{pre}/" +
|
|
136
|
-
(node
|
|
137
|
-
(node.klass.downcase )
|
|
138
|
-
(node[:zip].to_s )
|
|
139
|
-
(mode ? "_#{mode}" : '')
|
|
140
|
-
(asset ? "=#{asset}" : '')
|
|
141
|
-
(stamp ? ".#{stamp}" : '')
|
|
137
|
+
basepath_as_url(node, false)+
|
|
138
|
+
(node.klass.downcase ) +
|
|
139
|
+
(node[:zip].to_s ) +
|
|
140
|
+
(mode ? "_#{mode}" : '') +
|
|
141
|
+
(asset ? "=#{asset}" : '') +
|
|
142
|
+
(stamp ? ".#{stamp}" : '') +
|
|
142
143
|
".#{format}"
|
|
143
144
|
end
|
|
144
145
|
append_query_params(path, opts)
|
|
145
146
|
end
|
|
146
147
|
|
|
147
|
-
def basepath_as_url(
|
|
148
|
-
path
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
148
|
+
def basepath_as_url(node, is_end)
|
|
149
|
+
path = node.basepath
|
|
150
|
+
if !path.blank?
|
|
151
|
+
@home_base ||= begin
|
|
152
|
+
p = Zena::Use::Ancestry.basepath_from_fullpath(current_site.home_node.fullpath)
|
|
153
|
+
%r{^#{p}/?}
|
|
153
154
|
end
|
|
154
|
-
|
|
155
|
+
path = path.sub(@home_base, '')
|
|
156
|
+
return '' if path.blank?
|
|
157
|
+
path = path.split('/').map do |zip|
|
|
158
|
+
if n = secure(Node) { Node.find_by_zip(zip) }
|
|
159
|
+
n.title.url_name
|
|
160
|
+
else
|
|
161
|
+
nil
|
|
162
|
+
end
|
|
163
|
+
end.compact.join('/')
|
|
164
|
+
end
|
|
165
|
+
if is_end
|
|
166
|
+
path
|
|
167
|
+
else
|
|
168
|
+
path.blank? ? '' : "#{path}/"
|
|
169
|
+
end
|
|
155
170
|
end
|
|
156
171
|
|
|
157
172
|
def append_query_params(path, opts)
|
|
@@ -438,6 +453,7 @@ module Zena
|
|
|
438
453
|
|
|
439
454
|
if true
|
|
440
455
|
# Use onclick with Ajax.
|
|
456
|
+
# FIXME: Use Zena.do so that we can use ajax stamp. This means that we write a variant of "make_href" which returns json for query parameters.
|
|
441
457
|
if confirm
|
|
442
458
|
markup.set_dyn_param(:onclick, "if(confirm(this.getAttribute(\"data-confirm\"))) {new Ajax.Request(\"<%= #{href} %>\", {asynchronous:true, evalScripts:true, method:\"#{http_method}\"});} return false;")
|
|
443
459
|
else
|
|
@@ -536,10 +552,10 @@ module Zena
|
|
|
536
552
|
# Build the 'href' part of a link.
|
|
537
553
|
def make_href(remote_target = nil, opts = {})
|
|
538
554
|
anchor = @params[:anchor]
|
|
539
|
-
if anchor && !@params[:href]
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
end
|
|
555
|
+
# if anchor && !@params[:href]
|
|
556
|
+
# # Link on same page (? Why would this be of any use ? We can write <a href='#xxx'>....</a>.)
|
|
557
|
+
# return ::RubyLess.translate(self, "%Q{##{get_anchor_name(anchor)}}")
|
|
558
|
+
# end
|
|
543
559
|
|
|
544
560
|
if opts[:action] == 'edit' && remote_target
|
|
545
561
|
method = 'zafu_node_path'
|
|
@@ -598,7 +614,7 @@ module Zena
|
|
|
598
614
|
end
|
|
599
615
|
|
|
600
616
|
method = "#{method}(#{method_args.join(', ')})"
|
|
601
|
-
|
|
617
|
+
|
|
602
618
|
::RubyLess.translate(self, method)
|
|
603
619
|
end
|
|
604
620
|
|