zena 1.1.3 → 1.2.0
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 +23 -1
- data/MIT-LICENSE +2 -2
- data/README.rdoc +2 -15
- data/app/controllers/acls_controller.rb +1 -1
- data/app/controllers/documents_controller.rb +12 -3
- data/app/controllers/nodes_controller.rb +1 -3
- data/app/controllers/sites_controller.rb +7 -0
- data/app/controllers/versions_controller.rb +1 -1
- data/app/controllers/virtual_classes_controller.rb +7 -8
- data/app/models/acl.rb +3 -2
- data/app/models/relation_proxy.rb +2 -1
- data/app/models/role.rb +16 -0
- data/app/models/site.rb +48 -0
- data/app/models/text_document.rb +2 -1
- data/app/models/user.rb +2 -1
- data/app/models/zip.rb +2 -1
- data/app/views/acls/index.rhtml +11 -1
- data/app/views/documents/show.rhtml +1 -1
- data/app/views/relations/_add.erb +2 -2
- data/app/views/relations/_form.erb +5 -2
- data/app/views/relations/_li.erb +4 -1
- data/app/views/relations/index.erb +3 -3
- data/app/views/sites/_form.erb +1 -1
- data/app/views/sites/_job.erb +4 -0
- data/app/views/sites/index.erb +1 -1
- data/app/views/sites/jobs.erb +10 -0
- data/app/views/templates/document_create_tabs/_file.rhtml +3 -0
- data/app/views/zafu/default/Node-+search.zafu +2 -2
- data/bricks/acls/zena/init.rb +2 -1
- data/bricks/acls/zena/test/integration/acl_integration_test.rb +5 -5
- data/bricks/acls/zena/test/sites/erebus/acls.yml +2 -2
- data/bricks/acls/zena/test/unit/acl_test.rb +2 -2
- data/bricks/grid/lib/bricks/grid.rb +110 -0
- data/bricks/grid/zena/init.rb +4 -0
- data/bricks/math/lib/bricks/math.rb +1 -0
- data/bricks/pdf/lib/bricks/pdf.rb +10 -1
- data/bricks/sphinx/zena/tasks.rb +8 -40
- data/bricks/spreadsheet/README +31 -0
- data/bricks/spreadsheet/lib/bricks/spreadsheet.rb +293 -0
- data/bricks/spreadsheet/zena/init.rb +3 -0
- data/bricks/spreadsheet/zena/test/sites/zena/links.yml +11 -0
- data/bricks/spreadsheet/zena/test/unit/xlsx_test.rb +5 -0
- data/bricks/spreadsheet/zena/test/zafu/README +27 -0
- data/bricks/spreadsheet/zena/test/zafu/spreadsheet.yml +19 -0
- data/bricks/worker/lib/bricks/worker.rb +11 -5
- data/bricks/worker/zena/init.rb +8 -0
- data/bricks/worker/zena/migrate/20120501091514_add_site_id_to_jobs.rb +9 -0
- data/bricks/zena/zena/migrate/01_base.rb +0 -7
- data/bricks/zena/zena/migrate/20111214112233_add_comment_to_relations.rb +9 -0
- data/config/bricks.yml +15 -1
- data/config/environments/production.rb +2 -2
- data/config/gems.yml +6 -1
- data/doc/zafu_changes.yml +1 -1
- data/lib/tasks/zena.rake +6 -2
- data/lib/zena/app.rb +1 -1
- data/lib/zena/code/default_syntax.rb +5 -1
- data/lib/zena/db_helper/mysql.rb +5 -1
- data/lib/zena/deploy/app_init.rhtml +11 -7
- data/lib/zena/deploy/awstats.conf.rhtml +1 -1
- data/lib/zena/deploy/start_stop.rhtml +5 -5
- data/lib/zena/deploy/vhost.rhtml +16 -2
- data/lib/zena/deploy.rb +5 -3
- data/lib/zena/info.rb +1 -1
- data/lib/zena/parser/zazen_rules.rb +7 -7
- data/lib/zena/remote/node.rb +7 -0
- data/lib/zena/routes.rb +4 -5
- data/lib/zena/test_controller.rb +18 -1
- data/lib/zena/use/action.rb +13 -4
- data/lib/zena/use/ajax.rb +10 -4
- data/lib/zena/use/authlogic.rb +1 -1
- data/lib/zena/use/calendar.rb +4 -0
- data/lib/zena/use/conditional.rb +3 -0
- data/lib/zena/use/dates.rb +44 -4
- data/lib/zena/use/display.rb +45 -15
- data/lib/zena/use/forms.rb +59 -30
- data/lib/zena/use/query_builder.rb +12 -12
- data/lib/zena/use/recursion.rb +1 -1
- data/lib/zena/use/rendering.rb +18 -17
- data/lib/zena/use/urls.rb +2 -1
- data/lib/zena/use/zafu_safe_definitions.rb +0 -9
- data/lib/zena/use/zafu_templates.rb +2 -2
- data/lib/zena/use/zazen.rb +1 -3
- data/lib/zena/use.rb +13 -2
- data/lib/zena.rb +8 -2
- data/public/images/bullet_back.png +0 -0
- data/public/javascripts/grid.js +535 -0
- data/public/javascripts/tablekit.js +0 -0
- data/public/javascripts/window.js +0 -0
- data/public/javascripts/zena.js +17 -7
- data/public/stylesheets/admin.css +5 -1
- data/public/stylesheets/grid.css +19 -0
- data/test/fixtures/files/TestNode.zafu +123 -311
- data/test/fixtures/files/translations_fr.yml +6 -1
- data/test/functional/acls_controller_test.rb +2 -2
- data/test/functional/nodes_controller_test.rb +17 -11
- data/test/functional/virtual_classes_controller_test.rb +1 -1
- data/test/integration/query_node/basic.yml +9 -0
- data/test/integration/query_node/dates.yml +1 -1
- data/test/integration/zafu_compiler/ajax.yml +9 -9
- data/test/integration/zafu_compiler/basic.yml +0 -24
- data/test/integration/zafu_compiler/dates.yml +24 -7
- data/test/integration/zafu_compiler/display.yml +45 -2
- data/test/integration/zafu_compiler/errors.yml +0 -6
- data/test/integration/zafu_compiler/forms.yml +41 -3
- data/test/integration/zafu_compiler/query.yml +29 -3
- data/test/integration/zafu_compiler/roles.yml +0 -4
- data/test/integration/zafu_compiler/safe_definitions.yml +1 -1
- data/test/integration/zafu_compiler_test.rb +11 -3
- data/test/selenium/Add/add3.rsel +8 -8
- data/test/selenium/Drop/drop1.rsel +12 -12
- data/test/selenium/Drop/drop2.rsel +14 -14
- data/test/selenium/Drop/drop3.rsel +21 -21
- data/test/selenium/Drop/drop4.rsel +1 -1
- data/test/selenium/Edit/edit2.rsel +9 -9
- data/test/selenium/Edit/edit4.rsel +55 -0
- data/test/selenium/Edit/edit5.rsel +41 -0
- data/test/selenium/Edit/edit6.rsel +53 -0
- data/test/selenium/Filter/0setup.rsel +12 -0
- data/test/selenium/Filter/filter1.rsel +9 -0
- data/test/selenium/Filter/filter2.rsel +9 -0
- data/test/selenium/Form/form1.rsel +1 -1
- data/test/selenium/Form/form2.rsel +1 -1
- data/test/selenium/Form/form3.rsel +15 -0
- data/test/selenium/Grid/0setup.rsel +13 -0
- data/test/selenium/Grid/grid1.rsel +11 -0
- data/test/selenium/Swap/0setup.rsel +12 -0
- data/test/selenium/Swap/swap1.rsel +13 -0
- data/test/selenium/Swap/swap2.rsel +11 -0
- data/test/selenium/Toggle/toggle1.rsel +6 -6
- data/test/sites/zena/versions.yml +1 -1
- data/test/unit/relation_proxy_test.rb +36 -0
- data/test/unit/site_test.rb +10 -2
- data/test/unit/zena/use/rendering_test.rb +7 -6
- data/test/unit/zena/use/zazen_test.rb +1 -2
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run 2.tmCommand +24 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run Context.tmCommand +58 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run Focused Should.tmCommand +88 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run.tmCommand +27 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/YAML to Shoulda.tmCommand +23 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Preferences/Symbol List: Context.tmPreferences +19 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Preferences/Symbol List: Should.tmPreferences +19 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory attributes for.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory build.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_define with class.tmSnippet +18 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_define.tmSnippet +18 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_next.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_sequence.tmSnippet +18 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_bad_value.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_contains.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_does_not_contain.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_good_value.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_same_elements.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_save.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_sent_email.tmSnippet +18 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_valid.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/association.tmSnippet +17 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/attribute.tmSnippet +17 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/before_should block.tmSnippet +18 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block get.tmSnippet +22 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block post.tmSnippet +23 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block with setup.tmSnippet +25 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/setup.tmSnippet +18 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should block with before proc.tmSnippet +18 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should block.tmSnippet +18 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_allow_values_for.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_assign_to.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_be_restful denied.tmSnippet +20 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_be_restful.tmSnippet +20 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_belong_to.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_change by.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_change from to.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_at_least.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_in_range.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_is.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_value_in_range.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_eventually.tmSnippet +18 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_filter_params.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_and_belong_to_many.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_class_methods.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_db_column.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_db_columns.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_index.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_indices.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_instance_methods.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_many.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_named_scope.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_one.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_readonly_attributes.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_allow_mass_assignment_of.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_allow_values_for.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_assign_to.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_change.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_set_the_flash.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_redirect_to.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_a_form.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_template.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_with_layout.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_without_layout.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_respond_with.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_respond_with_content_type.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_return_from_session.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_route.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_set_the_flash_to.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_acceptance_of.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_numericality_of.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_presence_of.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_uniqueness_of with scope.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_uniqueness_of.tmSnippet +16 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/catch_exception.rb +39 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/run_script.rb +104 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/stdin_dialog.rb +14 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/test.rb +17 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/todo.txt +13 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/bin/yaml_to_shoulda.rb +25 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Syntaxes/Ruby on Rails (Shoulda).tmLanguage +166 -0
- data/vendor/TextMate/Ruby Shoulda.tmbundle/info.plist +304 -0
- data/vendor/TextMate/Zena.tmbundle/Commands/Run all yaml tests.tmCommand +37 -0
- data/vendor/TextMate/Zena.tmbundle/Commands/Run focused yaml test.tmCommand +52 -0
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/catch_exception.rb +39 -0
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/run_script.rb +118 -0
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/stdin_dialog.rb +14 -0
- data/vendor/TextMate/Zena.tmbundle/info.plist +17 -0
- data/vendor/plugins/selenium-on-rails/CHANGELOG +125 -0
- data/vendor/plugins/selenium-on-rails/LICENSE-2.0.txt +202 -0
- data/vendor/plugins/selenium-on-rails/README.md +202 -0
- data/vendor/plugins/selenium-on-rails/Rakefile +38 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumController.html +265 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumHelper.html +148 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/FixtureLoader.html +231 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/PartialsSupport.html +195 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Paths.html +295 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/RSelenese.html +219 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Renderer.html +156 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Selenese.html +179 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/SuiteRenderer.html +223 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilder.html +441 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderAccessors.html +3098 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderActions.html +2080 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderUserAccessors.html +116 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderUserActions.html +116 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails.html +126 -0
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRailsConfig.html +150 -0
- data/vendor/plugins/selenium-on-rails/doc/files/CHANGELOG.html +422 -0
- data/vendor/plugins/selenium-on-rails/doc/files/README.html +321 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/controllers/selenium_controller_rb.html +108 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_helper_rb.html +101 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/acceptance_test_runner_rb.html +222 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/fixture_loader_rb.html +109 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/partials_support_rb.html +111 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/paths_rb.html +101 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/renderer_rb.html +101 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/rselenese_rb.html +118 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/selenese_rb.html +101 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/suite_renderer_rb.html +101 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_accessors_rb.html +114 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_actions_rb.html +113 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_rb.html +120 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_config_rb.html +108 -0
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_rb.html +115 -0
- data/vendor/plugins/selenium-on-rails/doc/fr_class_index.html +42 -0
- data/vendor/plugins/selenium-on-rails/doc/fr_file_index.html +43 -0
- data/vendor/plugins/selenium-on-rails/doc/fr_method_index.html +182 -0
- data/vendor/plugins/selenium-on-rails/doc/index.html +24 -0
- data/vendor/plugins/selenium-on-rails/doc/rdoc-style.css +208 -0
- data/vendor/plugins/selenium-on-rails/generators/selenium/USAGE +19 -0
- data/vendor/plugins/selenium-on-rails/generators/selenium/selenium_generator.rb +50 -0
- data/vendor/plugins/selenium-on-rails/generators/selenium/templates/rhtml.rhtml +16 -0
- data/vendor/plugins/selenium-on-rails/generators/selenium/templates/rselenese.rhtml +14 -0
- data/vendor/plugins/selenium-on-rails/generators/selenium/templates/selenese.rhtml +11 -0
- data/vendor/plugins/selenium-on-rails/init.rb +15 -0
- data/vendor/plugins/selenium-on-rails/lib/controllers/selenium_controller.rb +122 -0
- data/vendor/plugins/selenium-on-rails/lib/controllers/switch_environment_controller.rb +16 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_helper.rb +8 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/acceptance_test_runner.rb +215 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/fixture_loader.rb +57 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/partials_support.rb +36 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/paths.rb +61 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/renderer.rb +20 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/rselenese.rb +44 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/selenese.rb +87 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/suite_renderer.rb +56 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder.rb +116 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_accessors.rb +1002 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_actions.rb +514 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_user_accessors.rb.example +91 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_user_actions.rb.example +24 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails.rb +11 -0
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails_config.rb +30 -0
- data/vendor/plugins/selenium-on-rails/lib/views/layouts/layout.rhtml +18 -0
- data/vendor/plugins/selenium-on-rails/lib/views/record.rhtml +5 -0
- data/vendor/plugins/selenium-on-rails/lib/views/selenium_helper.rb +9 -0
- data/vendor/plugins/selenium-on-rails/lib/views/setup.rhtml +67 -0
- data/vendor/plugins/selenium-on-rails/lib/views/test_suite.rhtml +26 -0
- data/vendor/plugins/selenium-on-rails/routes.rb +24 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/Blank.html +7 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/InjectedRemoteRunner.html +8 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/RemoteRunner.html +110 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/SeleniumLog.html +109 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/TestPrompt.html +145 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner-splash.html +55 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner.hta +177 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner.html +177 -0
- 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 +298 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/domviewer.html +16 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/selenium-domviewer.js +205 -0
- 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 +1759 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/iedoc.xml +1800 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/cssQuery-p.js +6 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-level2.js +142 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-level3.js +150 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-standard.js +53 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery.js +356 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/prototype.js +2006 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/builder.js +101 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/controls.js +815 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/dragdrop.js +915 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/effects.js +958 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/scriptaculous.js +47 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/slider.js +283 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/unittest.js +383 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/snapsie.js +91 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/find_matching_child.js +69 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/htmlutils.js +1616 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/injection.html +72 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-api.js +3184 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-browserbot.js +2300 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-browserdetect.js +153 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-commandhandlers.js +377 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-executionloop.js +175 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-logging.js +148 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-remoterunner.js +695 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-testrunner.js +1362 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-version.js +5 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-doc.html +803 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-element.js +1537 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-map-sample.js +979 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/user-extensions.js +3 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/user-extensions.js.sample +75 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/xmlextras.js +153 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/selenium-logo.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/selenium-test.css +43 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/selenium.css +316 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/dom.js +566 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/javascript-xpath-0.1.11.js +2816 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/util.js +549 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/xmltoken.js +149 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/xpath.js +2450 -0
- data/vendor/plugins/selenium-on-rails/tasks/test_acceptance.rake +8 -0
- data/vendor/plugins/selenium-on-rails/test/fixtures/config.yml +37 -0
- data/vendor/plugins/selenium-on-rails/test/fixtures/selenium.yml +27 -0
- data/vendor/plugins/selenium-on-rails/test/paths_test.rb +72 -0
- data/vendor/plugins/selenium-on-rails/test/renderer_test.rb +157 -0
- data/vendor/plugins/selenium-on-rails/test/rselenese_test.rb +708 -0
- data/vendor/plugins/selenium-on-rails/test/selenese_test.rb +242 -0
- data/vendor/plugins/selenium-on-rails/test/selenium_controller_test.rb +67 -0
- data/vendor/plugins/selenium-on-rails/test/selenium_on_rails_config_test.rb +43 -0
- data/vendor/plugins/selenium-on-rails/test/selenium_support_test.rb +35 -0
- data/vendor/plugins/selenium-on-rails/test/setup_test.rb +31 -0
- data/vendor/plugins/selenium-on-rails/test/suite_renderer_test.rb +109 -0
- data/vendor/plugins/selenium-on-rails/test/switch_environment_controller_test.rb +17 -0
- data/vendor/plugins/selenium-on-rails/test/test_builder_functions_authortest.rb +51 -0
- data/vendor/plugins/selenium-on-rails/test/test_helper.rb +101 -0
- data/vendor/plugins/selenium-on-rails/test_data/_partial.rsel +1 -0
- data/vendor/plugins/selenium-on-rails/test_data/own_layout.html +12 -0
- data/vendor/plugins/selenium-on-rails/test_data/partials/_html.html +6 -0
- data/vendor/plugins/selenium-on-rails/test_data/partials/_nesting.rsel +2 -0
- data/vendor/plugins/selenium-on-rails/test_data/partials/_rhtml.rhtml +6 -0
- data/vendor/plugins/selenium-on-rails/test_data/partials/_rsel.rsel +1 -0
- data/vendor/plugins/selenium-on-rails/test_data/partials/_sel.sel +5 -0
- data/vendor/plugins/selenium-on-rails/test_data/partials/all_partials.rsel +5 -0
- data/vendor/plugins/selenium-on-rails/test_data/rhtml.rhtml +7 -0
- data/vendor/plugins/selenium-on-rails/test_data/rselenese.rsel +8 -0
- data/vendor/plugins/selenium-on-rails/test_data/selenese.sel +7 -0
- data/vendor/plugins/selenium-on-rails/test_data/suite_one/subsuite/suite_one_subsuite_testcase.sel +1 -0
- data/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase1.sel +1 -0
- data/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase2.sel +1 -0
- data/vendor/plugins/selenium-on-rails/test_data/suite_two/suite_two_testcase.sel +1 -0
- data/zena.gemspec +290 -7
- metadata +346 -52
- data/app/views/nodes/_table.rhtml +0 -14
- data/lib/zena/use/grid.rb +0 -154
data/lib/zena/use/display.rb
CHANGED
|
@@ -232,7 +232,7 @@ module Zena
|
|
|
232
232
|
def admin_links(opts = {})
|
|
233
233
|
list = opts[:list] || 'all'
|
|
234
234
|
if list == 'all'
|
|
235
|
-
list = %w{home preferences comments users groups relations virtual_classes properties iformats sites acls dev}
|
|
235
|
+
list = %w{home preferences comments jobs users groups relations virtual_classes properties iformats sites acls dev}
|
|
236
236
|
else
|
|
237
237
|
list = list.split(',').map(&:strip)
|
|
238
238
|
end
|
|
@@ -280,6 +280,9 @@ module Zena
|
|
|
280
280
|
when 'acls'
|
|
281
281
|
return nil unless visitor.is_admin?
|
|
282
282
|
link_to_with_state(_('acls'), acls_path)
|
|
283
|
+
when 'jobs'
|
|
284
|
+
return nil unless visitor.is_admin? && Bricks::CONFIG['worker']
|
|
285
|
+
link_to_with_state(_('jobs'), jobs_site_path(current_site[:id]))
|
|
283
286
|
when 'dev'
|
|
284
287
|
return nil unless visitor.is_admin?
|
|
285
288
|
if visitor.dev_skin_id
|
|
@@ -520,7 +523,7 @@ module Zena
|
|
|
520
523
|
# Insert javascript asset tags
|
|
521
524
|
def r_javascripts
|
|
522
525
|
if @params[:list] == 'all' || @params[:list].nil?
|
|
523
|
-
list = %w{ prototype effects dragdrop
|
|
526
|
+
list = %w{ prototype effects dragdrop window zena grid }
|
|
524
527
|
else
|
|
525
528
|
list = @params[:list].split(',').map{|e| e.strip}
|
|
526
529
|
end
|
|
@@ -567,7 +570,7 @@ module Zena
|
|
|
567
570
|
# Insert stylesheet asset tags
|
|
568
571
|
def r_stylesheets
|
|
569
572
|
if @params[:list] == 'all' || @params[:list].nil?
|
|
570
|
-
list = %w{ reset window zena code }
|
|
573
|
+
list = %w{ reset window zena code grid }
|
|
571
574
|
else
|
|
572
575
|
list = @params[:list].split(',').map{|e| e.strip}
|
|
573
576
|
end
|
|
@@ -596,8 +599,33 @@ module Zena
|
|
|
596
599
|
return parser_error("only works with nodes (not with #{node.klass})") unless node.will_be?(Node)
|
|
597
600
|
@markup.append_param(:class, 'btn_add')
|
|
598
601
|
node = self.node.list_context? ? self.node.up : self.node
|
|
599
|
-
|
|
600
|
-
|
|
602
|
+
|
|
603
|
+
params = {}
|
|
604
|
+
@params.each do |k,v|
|
|
605
|
+
next if [:attr, :eval, :text, :t, :update].include?(k)
|
|
606
|
+
v = RubyLess.translate_string(self, v)
|
|
607
|
+
if v.literal
|
|
608
|
+
params[k] = CGI.escape(v.literal)
|
|
609
|
+
else
|
|
610
|
+
params[k] = "<%= CGI.escape(#{v}) %>"
|
|
611
|
+
end
|
|
612
|
+
end
|
|
613
|
+
|
|
614
|
+
if upd = @params[:update]
|
|
615
|
+
js = ""
|
|
616
|
+
with_context(:node => node(Node)) do
|
|
617
|
+
href = make_href(upd)
|
|
618
|
+
name = get_var_name('add_document', 'update')
|
|
619
|
+
|
|
620
|
+
txt = "%Q{#{name}\#{#{node}.zip} = function() {new Ajax.Request(\"\#{#{href}}\", {asynchronous:true, evalScripts:true, method:\"get\"})}}"
|
|
621
|
+
js = "<% js_data << #{txt} %>"
|
|
622
|
+
# Evaluated before the add_document page is opened.
|
|
623
|
+
params[:js] = "<%= CGI.escape(\"Zena.t().#{name}\#{#{node}.zip}();\") %>"
|
|
624
|
+
end
|
|
625
|
+
end
|
|
626
|
+
|
|
627
|
+
res = node_action_link('add_doc', "<%= #{node}.zip %>", :text => text_for_link(''), :params => params)
|
|
628
|
+
"<% if #{node}.can_write? %>#{js}#{wrap(res)}<% end %>"
|
|
601
629
|
end
|
|
602
630
|
|
|
603
631
|
# Find icon through a relation named 'icon' or use first image child
|
|
@@ -669,11 +697,11 @@ module Zena
|
|
|
669
697
|
end
|
|
670
698
|
end
|
|
671
699
|
|
|
672
|
-
def
|
|
700
|
+
def r_prop_grid
|
|
673
701
|
return parser_error("not in a list context") unless node.list_context?
|
|
674
702
|
return parser_error("not a Node list") unless node.single_class <= Node
|
|
675
703
|
klass = "#{node.single_class.name}"
|
|
676
|
-
add_block %Q{<table class='
|
|
704
|
+
add_block %Q{<table class='prop_grid'>
|
|
677
705
|
<tr do='#{klass}' do='roles'><th class='role' colspan='\#{columns.size}' do='each' do='name'/></tr>
|
|
678
706
|
<tr do='#{klass}' do='roles' do='each' do='columns'><th do='each' do='name'/></tr>
|
|
679
707
|
<tr do='each'><r:#{klass} do='roles' do='each' do='columns'><td do='each' do='@node.send(name)'/></r:#{klass}></tr>
|
|
@@ -681,6 +709,15 @@ module Zena
|
|
|
681
709
|
expand_with
|
|
682
710
|
end
|
|
683
711
|
|
|
712
|
+
# Also used by rubyless_expand
|
|
713
|
+
def show_string(method)
|
|
714
|
+
if param(:h) == 'false'
|
|
715
|
+
"<%= #{method} %>"
|
|
716
|
+
else
|
|
717
|
+
"<%= h #{method} %>"
|
|
718
|
+
end
|
|
719
|
+
end
|
|
720
|
+
|
|
684
721
|
private
|
|
685
722
|
def show_number(method)
|
|
686
723
|
if fmt = param(:format)
|
|
@@ -709,16 +746,9 @@ module Zena
|
|
|
709
746
|
end
|
|
710
747
|
end
|
|
711
748
|
|
|
712
|
-
def show_string(method)
|
|
713
|
-
if param(:h) == 'false'
|
|
714
|
-
"<%= #{method} %>"
|
|
715
|
-
else
|
|
716
|
-
"<%= h #{method} %>"
|
|
717
|
-
end
|
|
718
|
-
end
|
|
719
749
|
|
|
720
750
|
# show_time is in Dates
|
|
721
751
|
end
|
|
722
752
|
end # Display
|
|
723
753
|
end # Use
|
|
724
|
-
end # Zena
|
|
754
|
+
end # Zena
|
data/lib/zena/use/forms.rb
CHANGED
|
@@ -200,10 +200,11 @@ module Zena
|
|
|
200
200
|
|
|
201
201
|
if @context[:in_add]
|
|
202
202
|
# Inline form used to create new elements: set values to '' and 'parent_id' from context
|
|
203
|
-
opts[:id] = "#{node.dom_prefix}
|
|
203
|
+
opts[:id] = "#{node.dom_prefix}_0"
|
|
204
204
|
opts[:form_tag] = "<% remote_form_for(:#{node.form_name}, #{node}, :url => #{node.form_name.pluralize}_path, :html => {:id => \"#{dom_name}_form_t\"}) do |f| %>"
|
|
205
|
-
opts[:form_cancel] = "#{cancel_pre}<a href='
|
|
205
|
+
opts[:form_cancel] = "#{cancel_pre}<a href='javascript:void(0)' onclick='[\"#{dom_name}_add\", \"#{dom_name}_0\"].each(Element.toggle);return false;'>#{cancel_text}</a>#{cancel_post}\n"
|
|
206
206
|
else
|
|
207
|
+
|
|
207
208
|
# Saved form
|
|
208
209
|
if @markup.tag == 'table'
|
|
209
210
|
# the normal id goes to the form wrapping the table
|
|
@@ -215,19 +216,18 @@ module Zena
|
|
|
215
216
|
end
|
|
216
217
|
|
|
217
218
|
form_id ||= "#{node.dom_prefix}_form_t"
|
|
218
|
-
opts[:id] = "<%= ndom_id(#{node}) %>"
|
|
219
219
|
|
|
220
220
|
opts[:form_tag] = %Q{
|
|
221
|
-
<% remote_form_for(:#{node.form_name}, #{node}, :url => #{node}.new_record? ? #{node.form_name.pluralize}_path : #{node.form_name}_path(#{node}.zip), :html => {:method => #{node}.new_record? ? :post : :put, :id => \"#{str_form_id}\"}) do |f| %>
|
|
222
|
-
}
|
|
221
|
+
<% remote_form_for(:#{node.form_name}, #{node}, :url => #{node}.new_record? ? #{node.form_name.pluralize}_path : #{node.form_name}_path(#{node}.zip), :html => {:method => #{node}.new_record? ? :post : :put, :id => \"#{str_form_id}\"}) do |f| %>
|
|
222
|
+
}
|
|
223
223
|
|
|
224
224
|
opts[:form_cancel] = %Q{
|
|
225
|
-
<% if #{node}.new_record? %>
|
|
226
|
-
#{cancel_pre}<a href='
|
|
227
|
-
<% else %>
|
|
225
|
+
<% if #{node}.new_record? %>
|
|
226
|
+
#{cancel_pre}<a href='javascript:void(0)' onclick='[\"<%= params[:dom_id] %>_add\", \"<%= params[:dom_id] %>\"].each(Element.toggle);return false;'>#{cancel_text}</a>#{cancel_post}
|
|
227
|
+
<% else %>
|
|
228
228
|
#{cancel_pre}<%= link_to_remote(#{cancel_text_ruby}, :url => #{node.form_name}_path(#{node}.zip) + \"/zafu?t_url=#{CGI.escape(template_url)}&dom_id=\#{params[:dom_id]}#{@context[:has_link_id] ? "&link_id=\#{#{node}.link_id}" : ''}\", :method => :get) %>#{cancel_post}
|
|
229
|
-
<% end %>
|
|
230
|
-
}
|
|
229
|
+
<% end %>
|
|
230
|
+
}
|
|
231
231
|
end
|
|
232
232
|
else
|
|
233
233
|
# no ajax
|
|
@@ -283,7 +283,11 @@ module Zena
|
|
|
283
283
|
# This is a hack to fix wrong dom_prefix in drop+add.
|
|
284
284
|
#erb_dom_id = @context[:saved_template] ? "<%= ndom_id(#{node}, false) %>" : (@context[:dom_prefix] || node.dom_prefix)
|
|
285
285
|
|
|
286
|
-
|
|
286
|
+
if @context[:saved_template]
|
|
287
|
+
hidden_fields['dom_id'] = erb_dom_id = "<%= ndom_id(#{node}, false) %>"
|
|
288
|
+
else
|
|
289
|
+
hidden_fields['dom_id'] = erb_dom_id = node.dom_prefix
|
|
290
|
+
end
|
|
287
291
|
|
|
288
292
|
if node.will_be?(Comment)
|
|
289
293
|
# FIXME: the "... || '@node'" is a hack and I don't understand why it's needed...
|
|
@@ -303,7 +307,7 @@ module Zena
|
|
|
303
307
|
if sym == :before
|
|
304
308
|
hidden_fields['reference'] = "#{erb_dom_id}_add"
|
|
305
309
|
else
|
|
306
|
-
hidden_fields['reference'] = "#{erb_dom_id}
|
|
310
|
+
hidden_fields['reference'] = "#{erb_dom_id}_0"
|
|
307
311
|
end
|
|
308
312
|
else
|
|
309
313
|
hidden_fields['reference'] = value
|
|
@@ -318,11 +322,19 @@ module Zena
|
|
|
318
322
|
hidden_fields['done'] = "'$(\"#{erb_dom_id}_form_t\").focusFirstElement();'"
|
|
319
323
|
end
|
|
320
324
|
elsif params[:done]
|
|
321
|
-
|
|
325
|
+
done = RubyLess.translate_string(self, params[:done])
|
|
322
326
|
end
|
|
323
327
|
else
|
|
324
328
|
# ajax form, not in 'add'
|
|
325
|
-
|
|
329
|
+
done = RubyLess.translate_string(self, @params[:done])
|
|
330
|
+
end
|
|
331
|
+
if done
|
|
332
|
+
if done.literal
|
|
333
|
+
done = done.literal
|
|
334
|
+
else
|
|
335
|
+
done = "<%= fquote #{done} %>"
|
|
336
|
+
end
|
|
337
|
+
hidden_fields['done'] = done
|
|
326
338
|
end
|
|
327
339
|
else
|
|
328
340
|
# no ajax
|
|
@@ -368,7 +380,7 @@ module Zena
|
|
|
368
380
|
# r_form params
|
|
369
381
|
:klass, :done, :on, :update,
|
|
370
382
|
# r_each params (make_form)
|
|
371
|
-
:join].include?(key)
|
|
383
|
+
:join, :alt_class].include?(key)
|
|
372
384
|
code = ::RubyLess.translate(self, value)
|
|
373
385
|
if code.literal.kind_of?(String) || code.literal.kind_of?(Number)
|
|
374
386
|
hidden_fields[key.to_s] = "#{code.literal}"
|
|
@@ -418,7 +430,7 @@ module Zena
|
|
|
418
430
|
# TEMPORARY HACK UNTIL WE FIX get_input_params to return a single hash with
|
|
419
431
|
# {:html => { prepared html attributes }, :raw => {:value => '..', :name => '..', :param => '..'}}
|
|
420
432
|
if param = @params[:param]
|
|
421
|
-
selected = "
|
|
433
|
+
selected = "param_value(#{param.inspect}).to_s"
|
|
422
434
|
attribute = param
|
|
423
435
|
else
|
|
424
436
|
return parser_error("missing name") unless attribute
|
|
@@ -426,7 +438,7 @@ module Zena
|
|
|
426
438
|
if value = @params[:selected]
|
|
427
439
|
selected = ::RubyLess.translate_string(self, value)
|
|
428
440
|
elsif @context[:in_filter]
|
|
429
|
-
selected = "
|
|
441
|
+
selected = "param_value(#{attribute.inspect}).to_s"
|
|
430
442
|
elsif %w{parent_id}.include?(attribute)
|
|
431
443
|
selected = "#{node}.parent_zip.to_s"
|
|
432
444
|
elsif attribute == 'copy_id'
|
|
@@ -517,6 +529,7 @@ module Zena
|
|
|
517
529
|
@markup.set_param(:type, @params[:type])
|
|
518
530
|
@markup.set_param(:text, @params[:text]) if @params[:text]
|
|
519
531
|
@markup.set_params(html_attributes)
|
|
532
|
+
@markup.done = false
|
|
520
533
|
wrap('')
|
|
521
534
|
else
|
|
522
535
|
# 'text', 'hidden', ...
|
|
@@ -527,6 +540,7 @@ module Zena
|
|
|
527
540
|
checked = html_attributes.delete(:checked)
|
|
528
541
|
@markup.set_dyn_params(html_attributes)
|
|
529
542
|
@markup.append_attribute checked if checked
|
|
543
|
+
@markup.done = false
|
|
530
544
|
wrap('')
|
|
531
545
|
end
|
|
532
546
|
|
|
@@ -609,7 +623,13 @@ module Zena
|
|
|
609
623
|
res = Zafu::OrderedHash.new
|
|
610
624
|
if name = (params[:param] || params[:name] || params[:date])
|
|
611
625
|
res[:name] = name
|
|
612
|
-
|
|
626
|
+
if params[:param]
|
|
627
|
+
if name =~ /^[a-z_]+$/
|
|
628
|
+
sub_attr_ruby = "params[:#{name}]"
|
|
629
|
+
else
|
|
630
|
+
sub_attr_ruby = "param_value(#{name.inspect})"
|
|
631
|
+
end
|
|
632
|
+
else
|
|
613
633
|
# build name
|
|
614
634
|
if res[:name] =~ /\A([\w_]+)\[(.*?)\]/
|
|
615
635
|
# Sub attributes are used with tags or might be used for other features. It
|
|
@@ -625,7 +645,7 @@ module Zena
|
|
|
625
645
|
res[:name] = "#{node.form_name}[#{attribute}]"
|
|
626
646
|
end
|
|
627
647
|
end
|
|
628
|
-
|
|
648
|
+
|
|
629
649
|
if sub_attr
|
|
630
650
|
type = node.klass.safe_method_type([attribute])
|
|
631
651
|
if sub_attr_ruby = RubyLess.translate(self, %Q{this.#{attribute}[#{sub_attr.inspect}]})
|
|
@@ -642,11 +662,7 @@ module Zena
|
|
|
642
662
|
res[:value] = "<%= fquote #{value} %>"
|
|
643
663
|
end
|
|
644
664
|
elsif params[:param]
|
|
645
|
-
|
|
646
|
-
res[:value] = "<%= fquote params[:#{name}] %>"
|
|
647
|
-
else
|
|
648
|
-
res[:value] = "<%= fquote param_value(#{name.inspect}) %>"
|
|
649
|
-
end
|
|
665
|
+
res[:value] = "<%= fquote #{sub_attr_ruby} %>"
|
|
650
666
|
elsif attribute && type = node.klass.safe_method_type([attribute])
|
|
651
667
|
res[:value] = "<%= fquote #{node}.#{type[:method]} %>"
|
|
652
668
|
end
|
|
@@ -677,11 +693,11 @@ module Zena
|
|
|
677
693
|
end
|
|
678
694
|
|
|
679
695
|
if node.dom_prefix && !params[:param]
|
|
680
|
-
res[:id]
|
|
696
|
+
res[:id] = params[:id] || "#{@context[:form_prefix]}_#{attribute}"
|
|
681
697
|
else
|
|
682
|
-
res[:id]
|
|
698
|
+
res[:id] = params[:id] if params[:id]
|
|
683
699
|
end
|
|
684
|
-
|
|
700
|
+
|
|
685
701
|
if params[:type] == 'checkbox' && sub_attr_ruby
|
|
686
702
|
if value = params[:value]
|
|
687
703
|
res[:checked] = "<%= #{sub_attr_ruby} == #{value.inspect} ? \" checked='checked'\" : '' %>"
|
|
@@ -770,10 +786,13 @@ module Zena
|
|
|
770
786
|
nodes = finder[:method]
|
|
771
787
|
end
|
|
772
788
|
|
|
773
|
-
set_attr
|
|
774
|
-
|
|
789
|
+
set_attr, show_attr = nil
|
|
790
|
+
with_context(:node => node.move_to('r', klass)) do
|
|
791
|
+
set_attr = ::RubyLess.translate(self, @params[:attr] || 'id')
|
|
792
|
+
show_attr = ::RubyLess.translate(self, @params[:show] || 'title')
|
|
793
|
+
end
|
|
775
794
|
|
|
776
|
-
options_list = "[['','']] + (#{nodes} || []).map{|r| [
|
|
795
|
+
options_list = "[['','']] + (#{nodes} || []).map{|r| [#{show_attr}, #{set_attr}.to_s]}"
|
|
777
796
|
elsif values = @params[:values]
|
|
778
797
|
options_list = values.split(',').map(&:strip)
|
|
779
798
|
|
|
@@ -781,6 +800,16 @@ module Zena
|
|
|
781
800
|
show_values = show.split(',').map(&:strip)
|
|
782
801
|
elsif show = @params[:tshow]
|
|
783
802
|
show_values = translate_list(show)
|
|
803
|
+
else
|
|
804
|
+
tprefix = @params[:tprefix] || @params[:name]
|
|
805
|
+
show_values = options_list.map do |v|
|
|
806
|
+
t = trans("#{tprefix}_#{v}")
|
|
807
|
+
if t == "#{tprefix}_"
|
|
808
|
+
''
|
|
809
|
+
else
|
|
810
|
+
t
|
|
811
|
+
end
|
|
812
|
+
end
|
|
784
813
|
end
|
|
785
814
|
|
|
786
815
|
if show_values
|
|
@@ -29,9 +29,9 @@ module Zena
|
|
|
29
29
|
:rubyless_helper => zafu_helper.helpers
|
|
30
30
|
)
|
|
31
31
|
if type == :count
|
|
32
|
-
return klass.do_find(:count, eval(query.to_s(:count)))
|
|
32
|
+
return klass.do_find(:count, eval(query.to_s(:count), opts[:binding] || binding))
|
|
33
33
|
else
|
|
34
|
-
return klass.do_find(:all, eval(query.to_s))
|
|
34
|
+
return klass.do_find(opts[:find] || :all, eval(query.to_s, opts[:binding] || binding))
|
|
35
35
|
end
|
|
36
36
|
rescue ::QueryBuilder::Error => err
|
|
37
37
|
@query_errors = "<span class='query'>#{pseudo_sql}</span> <span class='error'>#{err}</span>"
|
|
@@ -151,12 +151,12 @@ module Zena
|
|
|
151
151
|
|
|
152
152
|
# Dynamic query mocks the QueryBuilder::Query
|
|
153
153
|
class DynamicQuery
|
|
154
|
-
def initialize(default, node, sql)
|
|
155
|
-
@default, @node, @sql = default, node, sql
|
|
154
|
+
def initialize(default, node, sql, count)
|
|
155
|
+
@default, @node, @sql, @count = default, node, sql, count
|
|
156
156
|
end
|
|
157
157
|
|
|
158
158
|
def to_s(type = :find)
|
|
159
|
-
base = "'#{@node.klass}', #{@node.to_s.inspect}, #{@sql}"
|
|
159
|
+
base = "'#{@node.klass}', #{@node.to_s.inspect}, #{@sql}, :find => #{@count.inspect}, :binding => binding"
|
|
160
160
|
case type
|
|
161
161
|
when :find
|
|
162
162
|
return "query(#{base})"
|
|
@@ -177,14 +177,15 @@ module Zena
|
|
|
177
177
|
return parser_error("Cannot be used in list context (#{node.class_name})") if node.list_context?
|
|
178
178
|
return parser_error("Missing 'default' query") unless default_psql = @params[:default]
|
|
179
179
|
|
|
180
|
+
count = get_count(default_psql, {:find => @params[:find]})
|
|
180
181
|
begin
|
|
181
|
-
default = build_finder(
|
|
182
|
+
default = build_finder(count, default_psql, {})
|
|
182
183
|
default_query = default[:query]
|
|
183
184
|
rescue ::QueryBuilder::Error => err
|
|
184
185
|
return parser_error(err.message)
|
|
185
186
|
end
|
|
186
187
|
|
|
187
|
-
klass = [default_query.main_class]
|
|
188
|
+
klass = count == :all ? [default_query.main_class] : default_query.main_class
|
|
188
189
|
|
|
189
190
|
can_be_nil = true
|
|
190
191
|
if sql = @params[:eval]
|
|
@@ -204,8 +205,8 @@ module Zena
|
|
|
204
205
|
sql = "#{sql} || #{default_psql.inspect}"
|
|
205
206
|
end
|
|
206
207
|
|
|
207
|
-
query = DynamicQuery.new(default_query, node, sql)
|
|
208
|
-
expand_with_finder(:method => query.to_s, :class =>
|
|
208
|
+
query = DynamicQuery.new(default_query, node, sql, count)
|
|
209
|
+
expand_with_finder(:method => query.to_s, :class => klass, :nil => true, :query => query)
|
|
209
210
|
end
|
|
210
211
|
|
|
211
212
|
# Pre-processing of the 'find("...")' method.
|
|
@@ -225,8 +226,6 @@ module Zena
|
|
|
225
226
|
|
|
226
227
|
# Resolve unknown methods by trying to build a pseudo-sql query with QueryBuilder.
|
|
227
228
|
def querybuilder_eval(method = @method)
|
|
228
|
-
node = single_node
|
|
229
|
-
|
|
230
229
|
if method =~ /^\d+$/
|
|
231
230
|
finder = {:method => "find_node_by_zip(#{method})", :class => VirtualClass['Node'], :nil => true}
|
|
232
231
|
else
|
|
@@ -307,7 +306,8 @@ module Zena
|
|
|
307
306
|
node = single_node
|
|
308
307
|
|
|
309
308
|
if !node.klass.respond_to?(:build_query)
|
|
310
|
-
|
|
309
|
+
# Fallback to Node
|
|
310
|
+
node = node.up(Node)
|
|
311
311
|
end
|
|
312
312
|
|
|
313
313
|
query_opts = {
|
data/lib/zena/use/recursion.rb
CHANGED
|
@@ -12,7 +12,7 @@ module Zena
|
|
|
12
12
|
return '' if @context[:saved_template]
|
|
13
13
|
return super if @params[:template] || !@params[:part]
|
|
14
14
|
recursion = get_context_var('recursion', @params[:part])
|
|
15
|
-
return parser_error("no parent named '#{part}'") unless recursion
|
|
15
|
+
return parser_error("no parent named '#{@params[:part]}'") unless recursion
|
|
16
16
|
klass = recursion[:klass]
|
|
17
17
|
if klass.kind_of?(Array)
|
|
18
18
|
return parser_error("node context '#{node.klass}' incompatible with '[#{klass}]'") unless node.list_context?
|
data/lib/zena/use/rendering.rb
CHANGED
|
@@ -74,7 +74,8 @@ module Zena
|
|
|
74
74
|
zafu_node('@node', Project)
|
|
75
75
|
|
|
76
76
|
respond_to do |format|
|
|
77
|
-
format.
|
|
77
|
+
format.xml { render :nothing => true, :status => "404 Not Found" }
|
|
78
|
+
format.all do
|
|
78
79
|
not_found = "#{SITES_ROOT}/#{current_site.host}/public/#{prefix}/404.html"
|
|
79
80
|
if File.exists?(not_found)
|
|
80
81
|
render :text => File.read(not_found), :status => '404 Not Found'
|
|
@@ -82,7 +83,6 @@ module Zena
|
|
|
82
83
|
render_and_cache :mode => '+notFound', :format => 'html', :cache_url => "/#{prefix}/404.html", :status => '404 Not Found'
|
|
83
84
|
end
|
|
84
85
|
end
|
|
85
|
-
format.all { render :nothing => true, :status => "404 Not Found" }
|
|
86
86
|
end
|
|
87
87
|
else
|
|
88
88
|
# site not found
|
|
@@ -128,14 +128,11 @@ module Zena
|
|
|
128
128
|
|
|
129
129
|
method = "render_to_#{opts[:format]}"
|
|
130
130
|
if params.keys.include?('debug')
|
|
131
|
-
template_path = template_url(opts)
|
|
132
|
-
result = {
|
|
133
|
-
:data => render_to_string(:file => template_path, :layout=>false),
|
|
134
|
-
:disposition => params['disposition'] || 'inline',
|
|
135
|
-
:type => 'text/html',
|
|
136
|
-
}
|
|
137
131
|
opts[:cache] = false
|
|
138
|
-
|
|
132
|
+
opts[:debug] = true
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
if respond_to?(method)
|
|
139
136
|
# Call custom rendering engine 'render_to_pdf' for example.
|
|
140
137
|
result = send(method, opts)
|
|
141
138
|
else
|
|
@@ -199,6 +196,8 @@ module Zena
|
|
|
199
196
|
# else
|
|
200
197
|
# raise err
|
|
201
198
|
# end
|
|
199
|
+
rescue ActiveRecord::RecordNotFound => err
|
|
200
|
+
return render_404(err)
|
|
202
201
|
end
|
|
203
202
|
|
|
204
203
|
# Cache page content into a static file in the current sites directory : SITES_ROOT/test.host/public
|
|
@@ -221,6 +220,8 @@ module Zena
|
|
|
221
220
|
# Return true if we can cache the current page
|
|
222
221
|
def caching_allowed(opts = {})
|
|
223
222
|
return false if current_site.authentication? || query_params != {}
|
|
223
|
+
# Cache even if authenticated (public content).
|
|
224
|
+
# Content viewed by anonymous user should be cached anyway.
|
|
224
225
|
opts[:authenticated] || visitor.is_anon?
|
|
225
226
|
end
|
|
226
227
|
|
|
@@ -231,12 +232,11 @@ module Zena
|
|
|
231
232
|
ext = params[:format].blank? ? 'html' : params[:format]
|
|
232
233
|
path << ".#{ext}" unless path =~ /\.#{ext}(\?\d+|)$/
|
|
233
234
|
#
|
|
234
|
-
# QUERY_STRING in cached page ?
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
# end
|
|
235
|
+
# FULL QUERY_STRING in cached page ?
|
|
236
|
+
if cachestamp_format?(params['format'])
|
|
237
|
+
# We have to use a '.' because apache cannot serve static files with '?'.
|
|
238
|
+
path << "." << make_cachestamp(@node, params['mode'])
|
|
239
|
+
end
|
|
240
240
|
path
|
|
241
241
|
end
|
|
242
242
|
|
|
@@ -274,7 +274,7 @@ module Zena
|
|
|
274
274
|
if Zena::ASSET_PORT == request.port
|
|
275
275
|
raise Exception.new("Custom rendering not allowed on this process (port == asset_port).")
|
|
276
276
|
else
|
|
277
|
-
"http://
|
|
277
|
+
"http://127.0.0.1:#{Zena::ASSET_PORT}"
|
|
278
278
|
end
|
|
279
279
|
else
|
|
280
280
|
raise Exception.new("Using custom rendering without an asset host ('asset_port' setting in bricks.yml).")
|
|
@@ -305,6 +305,7 @@ module Zena
|
|
|
305
305
|
|
|
306
306
|
def r_style
|
|
307
307
|
@markup.tag = 'style'
|
|
308
|
+
@markup.set_param(:type, 'text/css')
|
|
308
309
|
expand_with
|
|
309
310
|
end
|
|
310
311
|
|
|
@@ -321,4 +322,4 @@ module Zena
|
|
|
321
322
|
end # ZafuMethods
|
|
322
323
|
end # Rendering
|
|
323
324
|
end # Use
|
|
324
|
-
end # Zena
|
|
325
|
+
end # Zena
|
data/lib/zena/use/urls.rb
CHANGED
|
@@ -14,6 +14,7 @@ module Zena
|
|
|
14
14
|
'propose' => {:url => '/nodes/#{node_zip}/versions/0/propose', :method => 'put'},
|
|
15
15
|
'refuse' => {:url => '/nodes/#{node_zip}/versions/0/refuse', :method => 'put'},
|
|
16
16
|
'edit' => {:url => '/nodes/#{node_zip}/versions/0/edit'},
|
|
17
|
+
'create' => {:url => '/nodes', :method => 'post', :query => {:parent_id => 'node_zip'}},
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
|
|
@@ -842,4 +843,4 @@ module Zena
|
|
|
842
843
|
end # ZafuMethods
|
|
843
844
|
end # Urls
|
|
844
845
|
end # Use
|
|
845
|
-
end # Zena
|
|
846
|
+
end # Zena
|
|
@@ -108,15 +108,6 @@ module Zena
|
|
|
108
108
|
|
|
109
109
|
safe_method_for Object, :blank? => Boolean
|
|
110
110
|
|
|
111
|
-
safe_method_for Time, [:advance, {
|
|
112
|
-
:years => Number,
|
|
113
|
-
:months => Number,
|
|
114
|
-
:weeks => Number,
|
|
115
|
-
:days => Number,
|
|
116
|
-
:hours => Number,
|
|
117
|
-
:minutes => Number,
|
|
118
|
-
:seconds => Number}] => Time
|
|
119
|
-
safe_method_for Time, :to_i => {:class => Number, :pre_processor => true}
|
|
120
111
|
|
|
121
112
|
safe_method_for Node, [:kind_of?, VirtualClass] =>
|
|
122
113
|
{:method => 'nil', :nil => true, :pre_processor => kind_of_proc}
|
|
@@ -475,7 +475,7 @@ module Zena
|
|
|
475
475
|
end
|
|
476
476
|
end
|
|
477
477
|
next if nodes.empty?
|
|
478
|
-
res << " <li><a class='group' onclick='$(\"dev_#{name}\").toggle();' href='
|
|
478
|
+
res << " <li><a class='group' onclick='$(\"dev_#{name}\").toggle();' href='javascript:void(0)'>#{name}</a>\n"
|
|
479
479
|
res << " <table class='dev_pop' id='dev_#{name}'#{name == 'images' ? " style='display:none;'" : ''}>\n"
|
|
480
480
|
if template && name == 'zafu'
|
|
481
481
|
# Create specialized template on the fly for current page
|
|
@@ -502,7 +502,7 @@ module Zena
|
|
|
502
502
|
res << " </li>\n"
|
|
503
503
|
end
|
|
504
504
|
|
|
505
|
-
res << " <li><a class='group' onclick='$(\"dev_tools\").toggle();' href='
|
|
505
|
+
res << " <li><a class='group' onclick='$(\"dev_tools\").toggle();' href='javascript:void(0)'>tools</a>\n"
|
|
506
506
|
res << " <ul class='dev_pop' id='dev_tools'><li>\n"
|
|
507
507
|
res << %Q{ <div style='float:right'><% form_for(:user, visitor, :url => user_path(visitor), :html => { :method => :put }) do |f| %>
|
|
508
508
|
<p><%= f.select(:dev_skin_id, dev_skin_options, {}, {:onchange => 'this.form.submit()'}) %> <input style='display:none;' type='submit' value='<%= _('validate') %>'/></p>
|
data/lib/zena/use/zazen.rb
CHANGED
|
@@ -5,8 +5,6 @@ module Zena
|
|
|
5
5
|
ZAZEN_TIMEOUT = 5
|
|
6
6
|
module ViewMethods
|
|
7
7
|
|
|
8
|
-
include Zena::Use::Grid::ViewMethods
|
|
9
|
-
|
|
10
8
|
@@_asset_methods = {}
|
|
11
9
|
|
|
12
10
|
# define an asset method ('key' => method_name).
|
|
@@ -272,4 +270,4 @@ module Zena
|
|
|
272
270
|
end
|
|
273
271
|
end # ViewMethods
|
|
274
272
|
end # Use
|
|
275
|
-
end # Zena
|
|
273
|
+
end # Zena
|
data/lib/zena/use.rb
CHANGED
|
@@ -2,12 +2,12 @@ module Zena
|
|
|
2
2
|
# This module is used to declare and manage the list of features used by Zena.
|
|
3
3
|
module Use
|
|
4
4
|
SUFFIX_NAME = 'Methods'
|
|
5
|
-
MODULE_NAMES = %w{Controller View Zafu User Site Skin}
|
|
5
|
+
MODULE_NAMES = %w{Controller View Zafu User Site Skin Routes}
|
|
6
6
|
# "Controller" => "ControllerMethods"
|
|
7
7
|
MODULE_NAME = Hash[*MODULE_NAMES.map {|n| [n, "#{n}#{SUFFIX_NAME}"]}.flatten]
|
|
8
8
|
|
|
9
9
|
class << self
|
|
10
|
-
attr_accessor :modules
|
|
10
|
+
attr_accessor :modules, :extra_routes
|
|
11
11
|
|
|
12
12
|
# Declare a module (or list of modules) that should be used in Zena. The module should implement
|
|
13
13
|
# sub-modules named ControllerMethods, ViewMethods or ZafuMethods in order to add features to
|
|
@@ -38,6 +38,17 @@ module Zena
|
|
|
38
38
|
self.modules[name] || []
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
+
def routes(rez)
|
|
42
|
+
if self.extra_routes.nil?
|
|
43
|
+
hash = {}
|
|
44
|
+
each_module_for('Routes') do |mod|
|
|
45
|
+
hash.merge!(mod)
|
|
46
|
+
end
|
|
47
|
+
self.extra_routes = hash
|
|
48
|
+
end
|
|
49
|
+
(self.extra_routes[rez] || {})[rez] || {}
|
|
50
|
+
end
|
|
51
|
+
|
|
41
52
|
private
|
|
42
53
|
def create_module_hash
|
|
43
54
|
if self.modules.nil?
|
data/lib/zena.rb
CHANGED
|
@@ -138,7 +138,9 @@ module Zena
|
|
|
138
138
|
gem_configuration.each do |gem_name, gem_config|
|
|
139
139
|
if gem_config
|
|
140
140
|
conf = gem_config.symbolize_keys
|
|
141
|
-
conf[:version]
|
|
141
|
+
if conf[:version]
|
|
142
|
+
conf[:version].gsub!(/\A=\s*/,'')
|
|
143
|
+
end
|
|
142
144
|
if conf[:optional]
|
|
143
145
|
if brick = conf[:brick]
|
|
144
146
|
if Bricks::CONFIG[brick]
|
|
@@ -263,6 +265,7 @@ end
|
|
|
263
265
|
end
|
|
264
266
|
end
|
|
265
267
|
|
|
268
|
+
# FIXME: use another mime types library...
|
|
266
269
|
# this list is taken from http://www.duke.edu/websrv/file-extensions.html
|
|
267
270
|
EXT_TYPE = [
|
|
268
271
|
[ "ai" , "application/postscript" ],
|
|
@@ -284,6 +287,7 @@ EXT_TYPE = [
|
|
|
284
287
|
[ "dir" , "application/x-director" ],
|
|
285
288
|
[ "dms" , "application/octet-stream" ],
|
|
286
289
|
[ "doc" , "application/msword" ],
|
|
290
|
+
[ "docx" , "application/vnd.openxmlformats-officedocument.wordprocessingml.document" ],
|
|
287
291
|
[ "drw" , "application/drafting" ],
|
|
288
292
|
[ "dvi" , "application/x-dvi" ],
|
|
289
293
|
[ "dwg" , "application/acad" ],
|
|
@@ -346,6 +350,7 @@ EXT_TYPE = [
|
|
|
346
350
|
[ "ppm" , "image/x-portable-pixmap" ],
|
|
347
351
|
[ "pps" , "application/mspowerpoint" ],
|
|
348
352
|
[ "ppt" , "application/mspowerpoint" ],
|
|
353
|
+
[ "pptx" , "application/vnd.openxmlformats-officedocument.presentationml.presentation" ],
|
|
349
354
|
[ "ppz" , "application/mspowerpoint" ],
|
|
350
355
|
[ "pre" , "application/x-freelance" ],
|
|
351
356
|
[ "prt" , "application/pro_eng" ],
|
|
@@ -425,6 +430,7 @@ EXT_TYPE = [
|
|
|
425
430
|
[ "xll" , "application/vnd.ms-excel" ],
|
|
426
431
|
[ "xlm" , "application/vnd.ms-excel" ],
|
|
427
432
|
[ "xls" , "application/vnd.ms-excel" ],
|
|
433
|
+
[ "xlsx" , "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ],
|
|
428
434
|
[ "xlw" , "application/vnd.ms-excel" ],
|
|
429
435
|
[ "xml" , "text/xml" ],
|
|
430
436
|
[ "xsl" , "text/xml" ],
|
|
@@ -462,4 +468,4 @@ Zena::EXT_TO_TYPE, Zena::TYPE_TO_EXT = make_hashes(EXT_TYPE)
|
|
|
462
468
|
Zena.add_load_paths
|
|
463
469
|
Zena.gems_setup
|
|
464
470
|
Zena.load_custom_extensions
|
|
465
|
-
require 'rubyless'
|
|
471
|
+
require 'rubyless'
|
|
Binary file
|