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/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
|