zena 1.1.3 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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/config/bricks.yml
CHANGED
@@ -4,10 +4,13 @@ test:
|
|
4
4
|
tags: ON
|
5
5
|
captcha: ON
|
6
6
|
acls: ON
|
7
|
+
grid: ON
|
7
8
|
static: OFF
|
8
9
|
sphinx: OFF
|
9
10
|
worker: OFF
|
10
11
|
uv: OFF
|
12
|
+
spreadsheet: ON
|
13
|
+
|
11
14
|
|
12
15
|
development:
|
13
16
|
asset_port: 7999
|
@@ -25,8 +28,14 @@ development:
|
|
25
28
|
switch: ON
|
26
29
|
live: ON
|
27
30
|
|
31
|
+
spreadsheet:
|
32
|
+
switch: ON
|
33
|
+
activate_if:
|
34
|
+
gem: 'simple_xlsx'
|
35
|
+
|
28
36
|
tags: ON
|
29
37
|
captcha: ON
|
38
|
+
grid: ON
|
30
39
|
acls: ON
|
31
40
|
static: OFF
|
32
41
|
sphinx:
|
@@ -51,6 +60,10 @@ production:
|
|
51
60
|
switch: ON
|
52
61
|
activate_if:
|
53
62
|
gem: 'uv'
|
63
|
+
spreadsheet:
|
64
|
+
switch: ON
|
65
|
+
activate_if:
|
66
|
+
gem: 'simple_xlsx'
|
54
67
|
pdf:
|
55
68
|
switch: ON
|
56
69
|
engine: prince
|
@@ -59,6 +72,7 @@ production:
|
|
59
72
|
live: ON
|
60
73
|
tags: ON
|
61
74
|
captcha: ON
|
75
|
+
grid: ON
|
62
76
|
acls: ON
|
63
77
|
static: OFF
|
64
78
|
single: OFF
|
@@ -68,7 +82,7 @@ production:
|
|
68
82
|
gem: 'thinking_sphinx'
|
69
83
|
adapter: 'mysql,postgresql'
|
70
84
|
run_if:
|
71
|
-
file: 'log/searchd.
|
85
|
+
file: 'log/searchd.pid'
|
72
86
|
worker:
|
73
87
|
switch: OFF
|
74
88
|
activate_if:
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Settings specified here will take precedence over those in config/environment.rb
|
2
|
-
config.log_level = :
|
2
|
+
config.log_level = :info
|
3
3
|
|
4
4
|
# The production environment is meant for finished, "live" apps.
|
5
5
|
# Code is not reloaded between requests
|
@@ -24,4 +24,4 @@ CachedPage.perform_caching = true
|
|
24
24
|
# config.action_controller.asset_host = "http://assets.example.com"
|
25
25
|
|
26
26
|
# Disable delivery errors if you bad email addresses should just be ignored
|
27
|
-
# config.action_mailer.raise_delivery_errors = false
|
27
|
+
# config.action_mailer.raise_delivery_errors = false
|
data/config/gems.yml
CHANGED
@@ -15,13 +15,15 @@ httparty: '= 0.7.8'
|
|
15
15
|
open4:
|
16
16
|
daemons: # upload progress
|
17
17
|
gem_plugin: # upload progress
|
18
|
+
simple_xlsx_writer: # spreadsheet
|
19
|
+
lib: 'simple_xlsx'
|
18
20
|
|
19
21
|
querybuilder: '= 1.1.0'
|
20
22
|
yamltest: '= 0.7.0'
|
21
23
|
rubyless: '= 0.8.6'
|
22
24
|
property: '= 2.2.0'
|
23
25
|
versions: '= 0.3.1'
|
24
|
-
zafu: '= 0.8.
|
26
|
+
zafu: '= 0.8.6'
|
25
27
|
|
26
28
|
jeweler:
|
27
29
|
|
@@ -29,6 +31,9 @@ RedCloth:
|
|
29
31
|
lib: 'redcloth'
|
30
32
|
version: '= 3.0.4'
|
31
33
|
|
34
|
+
# ultraviolet needs oniguruma, which needs headers to compile
|
35
|
+
# ultraviolet:
|
36
|
+
|
32
37
|
# Cannot do "gem 'rmagick', '= 1.3.14'" on some hosts. Leave this alone and
|
33
38
|
# let 'require' pick whatever it can.
|
34
39
|
# rmagick:
|
data/doc/zafu_changes.yml
CHANGED
@@ -35,7 +35,7 @@ v_title: "title"
|
|
35
35
|
"<r:text/>": "mat"
|
36
36
|
"on_if_node='ancestor'": "on_if='is_ancestor?(main)'"
|
37
37
|
"<div do='admin_links'/>": "<ol class='admin_links' do='admin_links'>
|
38
|
-
<li do='each' do='show'><a href='
|
38
|
+
<li do='each' do='show'><a href='javascript:void(0)'>do this</a></li>
|
39
39
|
</ol>"
|
40
40
|
"set_class='li_s[v_status]'": "class='li_s#{v.status}'"
|
41
41
|
"<meta name='keywords' do='void' set_content='[d_keywords]'/>": "<meta name='keywords' content='#{keywords}'/>"
|
data/lib/tasks/zena.rake
CHANGED
@@ -430,13 +430,17 @@ namespace :zena do
|
|
430
430
|
end
|
431
431
|
end
|
432
432
|
|
433
|
-
tests = ['test/unit/**/*_test.rb', 'test/functional/*_test.rb', 'test/integration/*_test.rb'].map
|
433
|
+
tests = ['test/unit/**/*_test.rb', 'test/functional/*_test.rb', 'test/integration/*_test.rb'].map do |p|
|
434
|
+
Dir.glob(
|
435
|
+
"#{Zena::ROOT}/#{p}"
|
436
|
+
)
|
437
|
+
end.flatten
|
434
438
|
|
435
439
|
tests += Bricks.test_files
|
436
440
|
|
437
441
|
Rake::TestTask.new(:test => ["zena:test:prepare", "zena:build_fixtures"]) do |t|
|
438
442
|
t.libs << "test"
|
439
|
-
t.
|
443
|
+
t.test_files = tests
|
440
444
|
t.verbose = true
|
441
445
|
end
|
442
446
|
Rake::Task['zena:test'].comment = "Run the tests in test/helpers and test/unit"
|
data/lib/zena/app.rb
CHANGED
@@ -19,7 +19,11 @@ module Zena
|
|
19
19
|
"<code class='#{code_class}'>#{convertor.convert(@text, false)}</code>"
|
20
20
|
else
|
21
21
|
if pre_params = opts[:pre_params]
|
22
|
-
|
22
|
+
if pre_params =~ /^(.*)class\s*=\s*('|")([^\2]+)\2(.*)$/
|
23
|
+
code_class = "#{code_class} #{$3}"
|
24
|
+
pre_params = "#{$1} #{$4}"
|
25
|
+
end
|
26
|
+
tag = "<pre #{pre_params} class='#{code_class}'>"
|
23
27
|
else
|
24
28
|
tag = "<pre class='#{code_class}'>"
|
25
29
|
end
|
data/lib/zena/db_helper/mysql.rb
CHANGED
@@ -92,6 +92,10 @@ module Zena
|
|
92
92
|
"DATE(#{arg})"
|
93
93
|
when 'random'
|
94
94
|
'RAND()'
|
95
|
+
when 'min'
|
96
|
+
"MIN(#{args.join(',')})"
|
97
|
+
when 'max'
|
98
|
+
"MAX(#{args.join(',')})"
|
95
99
|
when 'coalesce'
|
96
100
|
"COALESCE(#{args.join(',')})"
|
97
101
|
else
|
@@ -165,7 +169,7 @@ module Zena
|
|
165
169
|
if error.message =~ DEADLOCK_REGEX
|
166
170
|
retry_count += 1
|
167
171
|
if retry_count < DEADLOCK_MAX_RETRY
|
168
|
-
Node.logger.warn "#{Time.now.
|
172
|
+
Node.logger.warn "#{Time.now.strftime('%Y-%m-%d %H:%M:%S')} [#{current_site.host}] Retry (#{retry_count}) #{error.message}"
|
169
173
|
retry
|
170
174
|
else
|
171
175
|
raise
|
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
#
|
3
|
-
# Zena Startup script (automatically generated by 'cap debian:
|
3
|
+
# Zena Startup script (automatically generated by 'cap debian:setup')
|
4
4
|
#
|
5
5
|
# chkconfig: - 85 15
|
6
6
|
# description: zena_<%= config[:db_name] %> starts and stop services for <%= config[:db_name] %> Zena application.
|
@@ -20,7 +20,8 @@ operations = [
|
|
20
20
|
'rake worker:',
|
21
21
|
<% if config[:app_type] == :mongrel %>
|
22
22
|
'mongrel_rails cluster::',
|
23
|
-
<% end %>
|
23
|
+
<% end %>
|
24
|
+
# 'rake sphinx:',
|
24
25
|
]
|
25
26
|
|
26
27
|
if %w{stop restart}.include?(cmd)
|
@@ -40,14 +41,17 @@ end
|
|
40
41
|
|
41
42
|
if %w{start restart}.include?(cmd)
|
42
43
|
puts "Starting #{APP_ROOT}..."
|
43
|
-
|
44
|
-
run "cd #{APP_ROOT} && #{op}start"
|
45
|
-
end
|
46
|
-
|
44
|
+
|
47
45
|
<% if config[:haproxy_port] %>
|
48
|
-
# Start haproxy
|
46
|
+
# Start haproxy first
|
49
47
|
run "cd #{APP_ROOT} && haproxy -D -f config/haproxy.cnf"
|
50
48
|
<% end %>
|
49
|
+
# Clear to make sure it all starts cleanly and we do not hang with
|
50
|
+
# dangling pid files.
|
51
|
+
run "cd #{APP_ROOT} && rm log/mongrel*.pid"
|
52
|
+
operations.each do |op|
|
53
|
+
run "cd #{APP_ROOT} && #{op}start"
|
54
|
+
end
|
51
55
|
end
|
52
56
|
|
53
57
|
unless %w{start stop restart}.include?(cmd)
|
@@ -185,7 +185,7 @@ HostAliases="localhost 127.0.0.1 <%= config[:host] %> stats.<%= config[:host] %>
|
|
185
185
|
# 2 - DNS Lookup is made only from static DNS cache file (if it exists)
|
186
186
|
# Default: 2
|
187
187
|
#
|
188
|
-
DNSLookup=
|
188
|
+
DNSLookup=1
|
189
189
|
|
190
190
|
|
191
191
|
# When AWStats updates its statistics, it stores results of its analysis in
|
@@ -1,19 +1,19 @@
|
|
1
1
|
#! /bin/sh
|
2
2
|
### BEGIN INIT INFO
|
3
|
-
# Provides:
|
4
|
-
# Required-Start: $remote_fs
|
5
|
-
# Required-Stop: $remote_fs
|
3
|
+
# Provides: Zena_<%= config[:db_name] %>
|
4
|
+
# Required-Start: $remote_fs $syslog $mysql
|
5
|
+
# Required-Stop: $remote_fs $syslog $mysql
|
6
6
|
# Default-Start: 2 3 4 5
|
7
7
|
# Default-Stop: 0 1 6
|
8
8
|
# Short-Description: launch <%= init_script %>
|
9
9
|
### END INIT INFO
|
10
10
|
|
11
11
|
# Author: Gaspard Bucher <gaspard@teti.ch>
|
12
|
-
#
|
12
|
+
# Zena Startup script (automatically generated by 'cap debian:setup')
|
13
13
|
|
14
14
|
# PATH should only include /usr/* if it runs after the mountnfs.sh script
|
15
15
|
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
|
16
|
-
DESC="Zena server"
|
16
|
+
DESC="Zena <%= db_name %> server"
|
17
17
|
|
18
18
|
case "$1" in
|
19
19
|
start)
|
data/lib/zena/deploy/vhost.rhtml
CHANGED
@@ -62,8 +62,22 @@
|
|
62
62
|
# Rewrite to check for Rails cached page
|
63
63
|
RewriteRule ^([^.]+)$ $1.html [QSA]
|
64
64
|
|
65
|
-
#
|
66
|
-
|
65
|
+
# Serve static (cached) assets
|
66
|
+
RewriteCond %{QUERY_STRING} ^[0-9]+$
|
67
|
+
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME}.%{QUERY_STRING} -f
|
68
|
+
# We have to use '.'. If we use '?' apache won't find the file.
|
69
|
+
RewriteRule ^/(.*)$ %{REQUEST_FILENAME}.%{QUERY_STRING} [L]
|
70
|
+
|
71
|
+
# Rails assets (static CSS, JS).
|
72
|
+
RewriteCond %{QUERY_STRING} ^[0-9]+$
|
73
|
+
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -f
|
74
|
+
RewriteRule ^/(.*)$ %{REQUEST_FILENAME} [L]
|
75
|
+
|
76
|
+
# else
|
77
|
+
# Request with query string (if some page is cached, the same page with a query should not be served as static)
|
78
|
+
RewriteCond %{QUERY_STRING} ^.+$ [OR]
|
79
|
+
# All non-static
|
80
|
+
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
|
67
81
|
RewriteRule ^/(.*)$ balancer://<%= config[:balancer] %>%{REQUEST_URI} [P,QSA,L]
|
68
82
|
<% elsif config[:app_type] == :passenger %>
|
69
83
|
PassengerAppRoot <%= config[:app_root] %>
|
data/lib/zena/deploy.rb
CHANGED
@@ -123,6 +123,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
123
123
|
clear_zafu
|
124
124
|
clear_cache
|
125
125
|
end
|
126
|
+
after "deploy:update", "after_update"
|
126
127
|
|
127
128
|
desc "update symlink to 'sites' directory"
|
128
129
|
task :app_update_symlinks, :roles => :app do
|
@@ -149,6 +150,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
149
150
|
desc "create a new site [-s host='...' -s pass='...' -s lang='...']"
|
150
151
|
task :mksite, :roles => :app do
|
151
152
|
run "#{in_current} rake zena:mksite HOST='#{self[:host]}' PASSWORD='#{self[:pass]}' RAILS_ENV='production' HOST_LANG='#{self[:lang] || 'en'}'"
|
153
|
+
run "test -e #{sites_root}/#{self[:host]} || mkdir #{sites_root}/#{self[:host]}"
|
152
154
|
create_vhost
|
153
155
|
create_awstats
|
154
156
|
logrotate
|
@@ -401,7 +403,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
401
403
|
else
|
402
404
|
init_name = db_name
|
403
405
|
end
|
404
|
-
run "cd /usr/local/bin && test -e /usr/local/bin/#{init_name}
|
406
|
+
run "cd /usr/local/bin && test -e /usr/local/bin/#{init_name}"
|
405
407
|
|
406
408
|
if self[:rvm_ruby_string]
|
407
409
|
run "rvm wrapper #{self[:rvm_ruby_string]} init zena_#{db_name}"
|
@@ -410,7 +412,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
410
412
|
init_script = "/usr/local/bin/zena_#{db_name}"
|
411
413
|
end
|
412
414
|
|
413
|
-
start_stop = render("#{templates}/start_stop.rhtml", :config => self, :init_script => init_script)
|
415
|
+
start_stop = render("#{templates}/start_stop.rhtml", :config => self, :db_name => db_name, :init_script => init_script)
|
414
416
|
put(start_stop, "/etc/init.d/zena_#{db_name}")
|
415
417
|
run "chmod 755 /etc/init.d/zena_#{db_name}"
|
416
418
|
# Install defaults
|
@@ -512,4 +514,4 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
512
514
|
end
|
513
515
|
|
514
516
|
end # deploy
|
515
|
-
end
|
517
|
+
end
|
data/lib/zena/info.rb
CHANGED
@@ -334,18 +334,18 @@ module Zena
|
|
334
334
|
"<pre>\\ZAZENBLOCKCODE#{block_counter}ZAZENBLOCKCODE\\</pre>"
|
335
335
|
else
|
336
336
|
params, text = $1, $2
|
337
|
-
|
337
|
+
pre_params = []
|
338
338
|
if params =~ /\A(.*)lang\s*=\s*("|')([^"']+)\2(.*)\Z/m
|
339
339
|
pre, lang, post = $1.strip, $3, $4.strip
|
340
|
-
|
341
|
-
|
340
|
+
pre_params << pre if pre && pre != ""
|
341
|
+
pre_params << post if post && post != ""
|
342
342
|
else
|
343
|
-
|
343
|
+
pre_params << params.strip if params != ''
|
344
344
|
lang = ''
|
345
345
|
end
|
346
|
-
#
|
347
|
-
|
348
|
-
@escaped_code << [lang, text,
|
346
|
+
#pre_params << "class='code'" unless params =~ /class\s*=/
|
347
|
+
pre_params = pre_params.blank? ? nil : pre_params.join(' ')
|
348
|
+
@escaped_code << [lang, text, pre_params]
|
349
349
|
block_counter += 1
|
350
350
|
"<pre>\\ZAZENBLOCKCODE#{block_counter}ZAZENBLOCKCODE\\</pre>"
|
351
351
|
end
|
data/lib/zena/remote/node.rb
CHANGED
@@ -41,6 +41,13 @@ module Zena
|
|
41
41
|
@attributes['tag_names'] = SerializableArray.new('tag_names', 'tag', list)
|
42
42
|
end
|
43
43
|
|
44
|
+
def parent_id(v)
|
45
|
+
if v then
|
46
|
+
# Cannot have nil values here (root node special case).
|
47
|
+
@attributes['parent_id'] = v
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
44
51
|
def id
|
45
52
|
@attributes['id']
|
46
53
|
end
|
data/lib/zena/routes.rb
CHANGED
@@ -12,11 +12,10 @@ module Zena
|
|
12
12
|
|
13
13
|
resource :session, :controller => "user_sessions" # singleton resource
|
14
14
|
resources :pings
|
15
|
-
resources :users, :member => { :preferences => :get
|
15
|
+
resources :users, :member => { :preferences => :get}
|
16
16
|
resources :groups
|
17
17
|
resources :acls
|
18
18
|
resources :iformats
|
19
|
-
resources :acls
|
20
19
|
|
21
20
|
|
22
21
|
connect ':prefix/*path?:cachestamp', :controller => 'nodes', :action => 'show', :prefix => /\w\w/, :cachestamp => /\d+/
|
@@ -29,7 +28,7 @@ module Zena
|
|
29
28
|
:order => :any, :clear_order => :any,
|
30
29
|
:zafu => :get, :drop => :put, :attribute => :get,
|
31
30
|
:find => :get # same as search but starting on current node instead of root
|
32
|
-
}.merge(Zena::Use
|
31
|
+
}.merge(Zena::Use.routes('nodes')) do |nodes|
|
33
32
|
nodes.resources :versions,
|
34
33
|
:member => { :edit => :get,
|
35
34
|
:diff => :get,
|
@@ -66,7 +65,7 @@ module Zena
|
|
66
65
|
|
67
66
|
resources :columns
|
68
67
|
|
69
|
-
resources :sites, :member => { :action => :put }
|
68
|
+
resources :sites, :member => { :action => :put, :jobs => :get }
|
70
69
|
|
71
70
|
resources :comments,
|
72
71
|
:collection => { :empty_bin => :delete },
|
@@ -83,4 +82,4 @@ module Zena
|
|
83
82
|
connect '*path', :controller => 'nodes', :action => 'catch_all'
|
84
83
|
end
|
85
84
|
end # Routes
|
86
|
-
end # Zena
|
85
|
+
end # Zena
|
data/lib/zena/test_controller.rb
CHANGED
@@ -39,7 +39,19 @@ module Zena
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def test_render
|
42
|
-
|
42
|
+
if params[:format] and params[:format] != 'html' then
|
43
|
+
met = :"render_to_#{params[:format]}"
|
44
|
+
if respond_to?(met)
|
45
|
+
result = self.send(met, {:inline => @text})
|
46
|
+
render :text => result[:data]
|
47
|
+
headers.merge!(result[:type])
|
48
|
+
return
|
49
|
+
else
|
50
|
+
render :text => "Cannot handle #{params[:format]} rendering."
|
51
|
+
end
|
52
|
+
else
|
53
|
+
render :inline => @text
|
54
|
+
end
|
43
55
|
rescue => err
|
44
56
|
render :text => ([err.message] + err.backtrace[0..4]).join(" \n")
|
45
57
|
end
|
@@ -70,6 +82,11 @@ module Zena
|
|
70
82
|
params.delete(:text)
|
71
83
|
params.delete(:url)
|
72
84
|
|
85
|
+
tz = params.delete(:tz)
|
86
|
+
if tz
|
87
|
+
visitor.time_zone = tz
|
88
|
+
end
|
89
|
+
|
73
90
|
if controller = params.delete(:fake_controller)
|
74
91
|
# This is used when we need url rewriting.
|
75
92
|
case controller
|
data/lib/zena/use/action.rb
CHANGED
@@ -6,10 +6,14 @@ module Zena
|
|
6
6
|
# This method renders an action link without using Rails actions so that we can feed it with
|
7
7
|
# erb from Zafu.
|
8
8
|
def node_action_link(action, node_zip, opts={})
|
9
|
-
publish = opts[:publish]
|
10
9
|
text = opts[:text].blank? ? _("btn_#{action}") : opts[:text]
|
11
10
|
title = opts[:title] || _("btn_title_#{action}")
|
12
|
-
query =
|
11
|
+
query = []
|
12
|
+
if params = opts[:params]
|
13
|
+
params.each do |k,v|
|
14
|
+
query << "#{k}=#{v}"
|
15
|
+
end
|
16
|
+
end
|
13
17
|
|
14
18
|
if %w{edit drive add_doc}.include?(action)
|
15
19
|
case action
|
@@ -223,7 +227,7 @@ class #{node.klass}: #{Array(node.klass).first.columns.keys.join(', ')}
|
|
223
227
|
end
|
224
228
|
|
225
229
|
def r_action
|
226
|
-
return parser_error("Missing '
|
230
|
+
return parser_error("Missing 'select' parameter.") unless action = @params[:select]
|
227
231
|
|
228
232
|
if self.node.will_be? Node
|
229
233
|
node = self.node
|
@@ -233,7 +237,12 @@ class #{node.klass}: #{Array(node.klass).first.columns.keys.join(', ')}
|
|
233
237
|
return parser_error("Invalid option 'actions' for #{node.klass}.")
|
234
238
|
end
|
235
239
|
|
236
|
-
|
240
|
+
params = {}
|
241
|
+
@params.each do |k,v|
|
242
|
+
next if k == :select
|
243
|
+
params[k] = RubyLess.translate_string(self, v)
|
244
|
+
end
|
245
|
+
out node_action_link(action, "<%= #{node}.zip %>", :text => text_for_link(''), :params => params)
|
237
246
|
end
|
238
247
|
|
239
248
|
def filter_actions
|
data/lib/zena/use/ajax.rb
CHANGED
@@ -13,7 +13,7 @@ module Zena
|
|
13
13
|
return "#{params[:dom_id]}_#{node.zip}"
|
14
14
|
end
|
15
15
|
elsif append_form && node.kind_of?(Node) && params[:zadd]
|
16
|
-
return "#{params[:dom_id]}
|
16
|
+
return "#{params[:dom_id]}_#{node.zip.to_i}"
|
17
17
|
end
|
18
18
|
|
19
19
|
@dom_id || params[:udom_id] || params[:dom_id]
|
@@ -74,7 +74,7 @@ module Zena
|
|
74
74
|
page.replace params[:dom_id], :file => template_path_from_template_url + ".erb"
|
75
75
|
end
|
76
76
|
if params[:done] && params[:zadd]
|
77
|
-
page.toggle "#{params[:dom_id]}
|
77
|
+
page.toggle "#{params[:dom_id]}_0", "#{params[:dom_id]}_add"
|
78
78
|
page << params[:done]
|
79
79
|
elsif params[:done]
|
80
80
|
page << params[:done]
|
@@ -104,7 +104,7 @@ module Zena
|
|
104
104
|
if params[:done]
|
105
105
|
page << params[:done]
|
106
106
|
elsif params[:zadd]
|
107
|
-
page.toggle "#{params[:dom_id]}
|
107
|
+
page.toggle "#{params[:dom_id]}_0", "#{params[:dom_id]}_add"
|
108
108
|
end
|
109
109
|
when 'update'
|
110
110
|
page.replace ndom_id, :file => template_path_from_template_url + ".erb"
|
@@ -138,6 +138,9 @@ module Zena
|
|
138
138
|
end
|
139
139
|
end
|
140
140
|
end
|
141
|
+
if params[:redir]
|
142
|
+
page << "window.location.href = '#{params[:redir]}';"
|
143
|
+
end
|
141
144
|
page << render_js(false)
|
142
145
|
end
|
143
146
|
|
@@ -313,6 +316,9 @@ module Zena
|
|
313
316
|
# We reuse the 'each' block.
|
314
317
|
target = parent
|
315
318
|
else
|
319
|
+
# Avoid altering parent node
|
320
|
+
@context[:node] = node.dup
|
321
|
+
|
316
322
|
node.dom_prefix = dom_name
|
317
323
|
target = self
|
318
324
|
end
|
@@ -484,7 +490,7 @@ module Zena
|
|
484
490
|
else
|
485
491
|
|
486
492
|
if dom_id = target.markup.dyn_params[:id] || target.markup.params[:id]
|
487
|
-
if dom_id =~ /^<%=\s+(.*?)\s+%>
|
493
|
+
if dom_id =~ /^<%=\s+(.*?)\s+%>_0$/
|
488
494
|
# Rare case when we have a [drop] with [add]. (add element and then drop on it).
|
489
495
|
dom_id = $1
|
490
496
|
elsif dom_id =~ /^<%=\s+(.*?)\s+%>$/
|
data/lib/zena/use/authlogic.rb
CHANGED
@@ -81,7 +81,7 @@ module Zena
|
|
81
81
|
# Create a fake cookie based on HTTP_AUTH using session_id and render_token. This is
|
82
82
|
# only used for requests to localhost.
|
83
83
|
def forge_cookie_with_http_auth
|
84
|
-
if request.host == 'localhost' && request.port == Zena::ASSET_PORT
|
84
|
+
if (request.host == '127.0.0.1' || request.host == 'localhost') && request.port == Zena::ASSET_PORT
|
85
85
|
authenticate_with_http_basic do |login, password|
|
86
86
|
# login = visitor.id
|
87
87
|
# password = persistence_token
|
data/lib/zena/use/calendar.rb
CHANGED
@@ -329,8 +329,12 @@ module Zena
|
|
329
329
|
|
330
330
|
# HACK to render sub-elements...
|
331
331
|
bak = @blocks
|
332
|
+
saved_template = @context[:saved_template]
|
333
|
+
# reset saved scope
|
334
|
+
@context[:saved_template] = nil
|
332
335
|
@blocks = opts[:cell].blocks
|
333
336
|
cell_code = expand_if(var, node.move_to(var, [klass]))
|
337
|
+
@context[:saved_template] = saved_template
|
334
338
|
@blocks = bak
|
335
339
|
@markup = markup
|
336
340
|
|
data/lib/zena/use/conditional.rb
CHANGED
@@ -35,6 +35,9 @@ module Zena::Use::Conditional
|
|
35
35
|
return parser_error("Invalid role or class '#{class_name}'")
|
36
36
|
end
|
37
37
|
|
38
|
+
# Class filtering should not block 'saved_dom_id' propagation.
|
39
|
+
new_node.saved_dom_id = node.saved_dom_id
|
40
|
+
|
38
41
|
if parent.method == 'case'
|
39
42
|
with_context(:node => new_node) do
|
40
43
|
r_elsif(cond)
|
data/lib/zena/use/dates.rb
CHANGED
@@ -163,7 +163,7 @@ module Zena
|
|
163
163
|
@main_dates ||= {}
|
164
164
|
@main_dates[tz] ||= begin
|
165
165
|
if params[:date]
|
166
|
-
if date = params[:date].to_utc(
|
166
|
+
if date = params[:date].to_utc(_(DATETIME), tz)
|
167
167
|
date
|
168
168
|
else
|
169
169
|
# FIXME: when date parsing fails: show an error, not a 500...
|
@@ -293,14 +293,54 @@ module Zena
|
|
293
293
|
rescue TZInfo::AmbiguousTime
|
294
294
|
''
|
295
295
|
end
|
296
|
+
|
297
|
+
def year_tz(tz = nil)
|
298
|
+
if tz.blank?
|
299
|
+
tz = visitor.tz
|
300
|
+
elsif tz.kind_of?(String)
|
301
|
+
tz = TZInfo::Timezone.get(tz)
|
302
|
+
end
|
303
|
+
tz.utc_to_local(self).year
|
304
|
+
rescue TZInfo::InvalidTimezoneIdentifier
|
305
|
+
0
|
306
|
+
rescue TZInfo::AmbiguousTime
|
307
|
+
0
|
308
|
+
end
|
309
|
+
|
310
|
+
def to_date_tz(tz = nil)
|
311
|
+
if tz.blank?
|
312
|
+
tz = visitor.tz
|
313
|
+
elsif tz.kind_of?(String)
|
314
|
+
tz = TZInfo::Timezone.get(tz)
|
315
|
+
end
|
316
|
+
tz.utc_to_local(self).to_date
|
317
|
+
rescue TZInfo::InvalidTimezoneIdentifier
|
318
|
+
''
|
319
|
+
rescue TZInfo::AmbiguousTime
|
320
|
+
''
|
321
|
+
end
|
296
322
|
end
|
297
323
|
|
298
324
|
module ZafuMethods
|
299
325
|
include RubyLess
|
300
|
-
safe_method_for Time, :
|
301
|
-
|
302
|
-
|
326
|
+
safe_method_for Time, [:advance, {
|
327
|
+
:years => Number,
|
328
|
+
:months => Number,
|
329
|
+
:weeks => Number,
|
330
|
+
:days => Number,
|
331
|
+
:hours => Number,
|
332
|
+
:minutes => Number,
|
333
|
+
:seconds => Number}] => Time
|
334
|
+
safe_method_for Time, :to_i => {:class => Number, :pre_processor => true}
|
335
|
+
safe_method_for Time, :year => {:class => Number, :pre_processor => true, :method => 'year_tz'}
|
336
|
+
safe_method_for Time, [:year, String] => {:class => Number, :pre_processor => true, :method => 'year_tz'}
|
337
|
+
safe_method_for Time, [:year, TZInfo::Timezone] => {:class => Number, :pre_processor => true, :method => 'year_tz'}
|
338
|
+
safe_method_for Time, [:strftime, String] => {:class => String, :pre_processor => true, :method => 'strftime_tz'}
|
339
|
+
safe_method_for Time, [:strftime, String, String] => {:class => String, :pre_processor => true, :method => 'strftime_tz'}
|
303
340
|
safe_method_for Time, [:strftime, String, TZInfo::Timezone] => {:class => String, :pre_processor => true, :method => 'strftime_tz'}
|
341
|
+
safe_method_for Time, :to_date => {:class => Date, :pre_processor => true, :method => 'to_date_tz'}
|
342
|
+
safe_method_for Time, [:to_date, String] => {:class => Date, :pre_processor => true, :method => 'to_date_tz'}
|
343
|
+
safe_method_for Time, [:to_date, TZInfo::Timezone] => {:class => Date, :pre_processor => true, :method => 'to_date_tz'}
|
304
344
|
safe_method_for TZInfo::Timezone, :to_s => {:class => String, :pre_processor => true}
|
305
345
|
|
306
346
|
safe_method :date => :get_date
|