zena 1.0.0.beta3 → 1.0.0.rc1
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 +29 -0
- data/Rakefile +2 -0
- data/TODO_ZENA_1_0 +13 -23
- data/app/controllers/columns_controller.rb +1 -1
- data/app/controllers/comments_controller.rb +4 -3
- data/app/controllers/documents_controller.rb +8 -11
- data/app/controllers/nodes_controller.rb +39 -21
- data/app/controllers/users_controller.rb +8 -3
- data/app/controllers/versions_controller.rb +2 -2
- data/app/controllers/virtual_classes_controller.rb +17 -11
- data/app/helpers/documents_helper.rb +0 -3
- data/app/helpers/users_helper.rb +17 -0
- data/app/models/cache.rb +36 -31
- data/app/models/column.rb +48 -5
- data/app/models/comment.rb +14 -5
- data/app/models/data_entry.rb +2 -2
- data/app/models/document.rb +23 -33
- data/app/models/idx_nodes_datetime.rb +4 -0
- data/app/models/idx_nodes_float.rb +4 -0
- data/app/models/idx_project.rb +3 -0
- data/app/models/node.rb +372 -308
- data/app/models/page.rb +1 -31
- data/app/models/relation.rb +4 -4
- data/app/models/relation_proxy.rb +128 -17
- data/app/models/role.rb +27 -2
- data/app/models/site.rb +64 -56
- data/app/models/template.rb +11 -12
- data/app/models/text_document.rb +6 -7
- data/app/models/user.rb +95 -46
- data/app/models/version.rb +2 -2
- data/app/models/virtual_class.rb +418 -73
- data/app/views/columns/_form.html.erb +1 -1
- data/app/views/columns/_li.html.erb +1 -1
- data/app/views/comments/_form.rhtml +1 -1
- data/app/views/comments/_li.rhtml +1 -1
- data/app/views/comments/_li_simple.rhtml +1 -1
- data/app/views/groups/_form.rhtml +1 -1
- data/app/views/links/_li.rhtml +1 -1
- data/app/views/nodes/_groups.rhtml +1 -1
- data/app/views/nodes/_import_results.rhtml +1 -1
- data/app/views/nodes/_parent.rhtml +1 -1
- data/app/views/nodes/_results.rhtml +1 -1
- data/app/views/nodes/create.rjs +4 -2
- data/app/views/relations/_li.erb +2 -2
- data/app/views/templates/document_create_tabs/_file.rhtml +1 -1
- data/app/views/templates/document_create_tabs/_template.rhtml +2 -2
- data/app/views/templates/document_create_tabs/_text_document.rhtml +2 -2
- data/app/views/templates/edit_tabs/_help.rhtml +1 -1
- data/app/views/templates/edit_tabs/_title.rhtml +0 -3
- data/app/views/users/_form.rhtml +2 -6
- data/app/views/users/_li.rhtml +1 -3
- data/app/views/users/create.rjs +4 -4
- data/app/views/users/preferences.html.erb +1 -4
- data/app/views/versions/custom_tab.rhtml +5 -0
- data/app/views/virtual_classes/_form.erb +20 -10
- data/app/views/virtual_classes/_li.erb +21 -8
- data/app/views/zafu/default/Node-+search.zafu +1 -1
- data/app/views/zafu/default/Node.zafu +3 -3
- data/bricks/captcha/lib/bricks/captcha.rb +1 -1
- data/bricks/mongrel/zena/deploy.rb +14 -0
- data/bricks/{data2pdf → pdf}/.document +0 -0
- data/bricks/pdf/README +33 -0
- data/bricks/{data2pdf → pdf}/Rakefile +0 -0
- data/bricks/pdf/VERSION +1 -0
- data/bricks/pdf/lib/bricks/pdf.rb +110 -0
- data/bricks/pdf/lib/bricks/pdf/engine/prince.rb +38 -0
- data/bricks/pdf/lib/bricks/pdf/engine/xhtml2pdf.rb +9 -0
- data/bricks/pdf/lib/bricks/pdf/install.rb +121 -0
- data/bricks/pdf/test/engines/test_prince.rb +15 -0
- data/bricks/pdf/test/engines/test_xhtml2pdf.rb +15 -0
- data/bricks/{data2pdf → pdf}/test/fixtures/application.css +0 -0
- data/bricks/{data2pdf → pdf}/test/fixtures/contact.html +0 -0
- data/bricks/{data2pdf → pdf}/test/fixtures/pisa-default.css +0 -0
- data/bricks/{data2pdf → pdf}/test/fixtures/sheet1.css +0 -0
- data/bricks/{data2pdf → pdf}/test/fixtures/sheet2.css +0 -0
- data/bricks/{data2pdf → pdf}/test/fixtures/simple-html.html +0 -0
- data/bricks/{data2pdf → pdf}/test/fixtures/simple-text.txt +0 -0
- data/bricks/{data2pdf → pdf}/test/helper.rb +4 -5
- data/bricks/pdf/test/shoulda_macros/shoulda_pdf.rb +72 -0
- data/bricks/pdf/zena/init.rb +5 -0
- data/bricks/pdf/zena/tasks.rb +17 -0
- data/bricks/sphinx/lib/{use_sphinx.rb → bricks/sphinx.rb} +1 -1
- data/bricks/tags/zena/init.rb +2 -2
- data/bricks/tags/zena/test/zafu/tags.yml +4 -4
- data/bricks/zena/zena/migrate/01_base.rb +482 -0
- data/config/bricks.yml +22 -6
- data/config/gems.yml +8 -6
- data/db/20100628074512_zena0x_to1x.rb +6 -1
- data/db/fix/024_correct_vclass_kpath.rb +11 -0
- data/db/fix/025_move_tag_into_vclass.rb +13 -0
- data/db/{migrate → fix}/026_rename_templates.rb +0 -0
- data/db/{migrate → fix}/045_avoid_star_in_templates.rb +0 -0
- data/db/{migrate → fix}/046_fix_zazen_image_tag.rb +0 -0
- data/db/{migrate → fix}/047_change_default_link_id_to_zero.rb +1 -3
- data/db/{migrate → fix}/049_fix_publish_from_is_null.rb +0 -0
- data/db/{migrate → fix}/20090924141459_zafu_fix_sept09.rb +0 -0
- data/db/{migrate → fix}/20091013100351_rename_publish_group_to_drive_group.rb +1 -3
- data/db/{migrate → fix}/20091124161608_rebuild_fullpath.rb +0 -1
- data/db/{migrate → fix}/20100115134729_rebuild_fullpath_after_fix.rb +0 -0
- data/db/{migrate → fix}/20100526090140_renamed_contact_model_to_base_contact.rb +2 -4
- data/db/{migrate → fix/old_migrations}/001_create_base.rb +0 -1
- data/db/{migrate → fix/old_migrations}/002_add_time_zone_to_users.rb +0 -0
- data/db/{migrate → fix/old_migrations}/003_add_custom_base_flag.rb +0 -0
- data/db/{migrate → fix/old_migrations}/004_rename_template_skin.rb +0 -0
- data/db/{migrate → fix/old_migrations}/005_create_cached_pages.rb +0 -0
- data/db/{migrate → fix/old_migrations}/006_create_sites.rb +0 -0
- data/db/{migrate → fix/old_migrations}/007_replace_id_by_zip.rb +0 -0
- data/db/{migrate → fix/old_migrations}/008_user_status.rb +0 -0
- data/db/{migrate → fix/old_migrations}/009_fulltext.rb +0 -0
- data/db/fix/old_migrations/010_create_template_content.rb +17 -0
- data/db/{migrate → fix/old_migrations}/011_project_to_section.rb +0 -0
- data/db/{migrate → fix/old_migrations}/012_add_project_id.rb +0 -0
- data/db/{migrate → fix/old_migrations}/013_remove_defaults.rb +0 -0
- data/db/{migrate → fix/old_migrations}/014_add_sort_field.rb +0 -0
- data/db/{migrate → fix/old_migrations}/015_add_dyn_attributes.rb +0 -0
- data/db/{migrate → fix/old_migrations}/016_remove_translations.rb +0 -0
- data/db/{migrate → fix/old_migrations}/017_rename_authorize.rb +0 -0
- data/db/{migrate → fix/old_migrations}/018_add_auth_option.rb +0 -0
- data/db/{migrate → fix/old_migrations}/019_remove_user_status.rb +0 -0
- data/db/{migrate → fix/old_migrations}/020_create_participation.rb +0 -0
- data/db/{migrate → fix/old_migrations}/021_create_relations.rb +0 -0
- data/db/{migrate → fix/old_migrations}/022_create_virtual_classes.rb +0 -0
- data/db/{migrate → fix/old_migrations}/023_ip_on_anonymous_comment.rb +0 -0
- data/db/{migrate → fix/old_migrations}/027_add_country_to_contacts.rb +0 -0
- data/db/{migrate → fix/old_migrations}/028_change_size_of_conten_type_field.rb +0 -0
- data/db/{migrate → fix/old_migrations}/029_create_data_entries.rb +0 -0
- data/db/{migrate → fix/old_migrations}/030_redit_auto_publish_site_settings.rb +0 -0
- data/db/{migrate → fix/old_migrations}/031_create_iformats.rb +0 -0
- data/db/{migrate → fix/old_migrations}/032_caches_context_as_hash.rb +0 -0
- data/db/{migrate → fix/old_migrations}/033_documents_kpath_change.rb +0 -0
- data/db/{migrate → fix/old_migrations}/034_change_file_storage.rb +0 -0
- data/db/{migrate → fix/old_migrations}/035_add_status_to_link.rb +0 -0
- data/db/{migrate → fix/old_migrations}/036_add_flag_fields_on_nodes.rb +0 -0
- data/db/{migrate → fix/old_migrations}/037_add_auto_create_discussion_to_v_class.rb +0 -0
- data/db/{migrate → fix/old_migrations}/038_create_site_attributes.rb +0 -0
- data/db/{migrate → fix/old_migrations}/039_default_position.rb +0 -0
- data/db/{migrate → fix/old_migrations}/040_second_value_for_data_entry.rb +0 -0
- data/db/{migrate → fix/old_migrations}/041_add_attributes_to_v_class.rb +0 -0
- data/db/{migrate → fix/old_migrations}/042_fix_position_should_be_float.rb +0 -0
- data/db/{migrate → fix/old_migrations}/043_move_user_lang_into_participation.rb +0 -0
- data/db/{migrate → fix/old_migrations}/044_remove_monolingual_site_option.rb +0 -0
- data/db/{migrate → fix/old_migrations}/048_link_source_target_can_be_null.rb +0 -0
- data/db/{migrate → fix/old_migrations}/050_date_in_links.rb +0 -0
- data/db/{migrate → fix/old_migrations}/051_add_exif_tags_to_images.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20090825201159_insert_zero_link.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20090825201200_merge_bricks_migrations_with_std_migrations.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20090927125912_allow_null_in_text_fields.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20090928133440_no_more_private_nodes.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20090928143754_version_status_change.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20091001084025_change_status_values_for_comments.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20091009084057_add_vhash_in_node.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20091014130833_fix_template_title.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20091014183726_merge_participation_into_users.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20091018200734_add_popup_info_to_image_format.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20091026161708_add_persistence_token.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20091101184952_add_session_table.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20091123175137_add_single_access_token.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100125062254_add_dynamo_to_version.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100201133242_remove_default_status_on_version.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100208194210_create_attachments.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100210112319_change_dynamo_to_property.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100320145726_transform_template_contents_into_index.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100328125634_change_skin_name_to_id.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100417061257_add_properties_to_sites.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100419163149_rename_name_to_node_name.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100422091606_change_v_class_table_into_roles.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100422094048_node_habtm_roles.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100422115935_create_columns.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100513181529_add_site_id_to_columns.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100519091711_add_index_definition_to_columns.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100519091940_create_idx_nodes_string.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100519232432_create_idx_nodes_ml_string.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100525113858_add_porperties_to_users.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100527130937_change_column_index_to_string.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100531135128_add_fulltext_builder_fields.rb +0 -0
- data/db/{migrate → fix/old_migrations}/20100915062903_add_api_group_id_to_site.rb +0 -0
- data/db/fix/old_migrations/20100923154807_remove_base_contact.rb +84 -0
- data/db/fix/old_migrations/20100926192223_remove_su_user.rb +8 -0
- data/db/fix/old_migrations/20100927141658_add_eval_attributes_to_v_class.rb +12 -0
- data/db/fix/old_migrations/20100928185257_add_obvious_idx.rb +52 -0
- data/db/fix/old_migrations/20100929143111_remove_node_name.rb +11 -0
- data/db/fix/old_migrations/20101006090454_store_properties_in_long_text.rb +9 -0
- data/db/fix/old_migrations/20101014185753_remove_user_prototype_id.rb +9 -0
- data/db/fix/old_migrations/20101101084318_create_scope_index.rb +35 -0
- data/db/fix/old_migrations/20101109074232_create_idx_nodes_tables.rb +65 -0
- data/db/fix/old_migrations/20101110184235_add_role_update_to_site.rb +9 -0
- data/db/fix/old_migrations/20101116103920_change_scope_index.rb +31 -0
- data/db/fix/old_migrations/20101123125822_add_integer_idx.rb +17 -0
- data/db/fix/old_migrations/20101130134522_add_index_field.rb +13 -0
- data/db/fix/old_migrations/20101213133816_add_group_to_relation.rb +9 -0
- data/db/init/base/help.fr.zml +1 -1
- data/db/init/base/skins/default.zml +0 -1
- data/db/init/base/skins/default/Node-+search.zafu +1 -1
- data/db/init/base/skins/default/Node-tree.zafu +3 -3
- data/db/init/base/skins/default/Node.zafu +3 -3
- data/lib/bricks/loader.rb +4 -1
- data/lib/bricks/requirements_validation.rb +11 -6
- data/lib/log_recorder/lib/log_recorder.rb +2 -2
- data/lib/tasks/zena.rake +25 -15
- data/lib/zena.rb +42 -9
- data/lib/zena/acts/enrollable.rb +81 -99
- data/lib/zena/acts/secure.rb +27 -23
- data/lib/zena/acts/secure_node.rb +10 -55
- data/lib/zena/acts/serializable.rb +9 -10
- data/lib/zena/app.rb +0 -2
- data/lib/zena/code_syntax.rb +1 -1
- data/lib/zena/controller/test_case.rb +0 -5
- data/lib/zena/core_ext/string.rb +48 -20
- data/lib/zena/db.rb +10 -442
- data/lib/zena/db_helper/abstract_db.rb +184 -0
- data/lib/zena/db_helper/mysql.rb +150 -0
- data/lib/zena/db_helper/postgresql.rb +79 -0
- data/lib/zena/db_helper/sqlite3.rb +135 -0
- data/lib/zena/deploy.rb +4 -1
- data/lib/zena/deploy/httpd.rhtml +3 -3
- data/lib/zena/deploy/vhost.rhtml +1 -1
- data/lib/zena/foxy_parser.rb +37 -18
- data/lib/zena/info.rb +3 -13
- data/lib/zena/migrator.rb +0 -1
- data/lib/zena/parser/zafu_rules.rb +9 -4
- data/lib/zena/parser/zazen_rules.rb +5 -5
- data/lib/zena/parser/zena_rules.rb +1 -1
- data/lib/zena/remote/interface.rb +1 -1
- data/lib/zena/site_worker.rb +3 -3
- data/lib/zena/test_controller.rb +10 -10
- data/lib/zena/use/action.rb +66 -6
- data/lib/zena/use/ajax.rb +39 -13
- data/lib/zena/use/ancestry.rb +210 -0
- data/lib/zena/use/authlogic.rb +30 -1
- data/lib/zena/use/calendar.rb +158 -0
- data/lib/zena/use/conditional.rb +3 -2
- data/lib/zena/use/context.rb +42 -12
- data/lib/zena/use/dates.rb +15 -14
- data/lib/zena/use/display.rb +54 -7
- data/lib/zena/use/error_rendering.rb +1 -0
- data/lib/zena/use/field_index.rb +20 -0
- data/lib/zena/use/fixtures.rb +12 -9
- data/lib/zena/use/forms.rb +230 -106
- data/lib/zena/use/fulltext.rb +28 -14
- data/lib/zena/use/html_tags.rb +1 -24
- data/lib/zena/use/i18n.rb +69 -14
- data/lib/zena/use/kpath.rb +60 -0
- data/lib/zena/use/ml_index.rb +6 -4
- data/lib/zena/use/node_context.rb +63 -0
- data/lib/zena/use/prop_eval.rb +90 -0
- data/lib/zena/use/query_builder.rb +159 -29
- data/lib/zena/use/query_comment.rb +1 -1
- data/lib/zena/use/query_node.rb +147 -56
- data/lib/zena/use/recursion.rb +2 -2
- data/lib/zena/use/relations.rb +31 -19
- data/lib/zena/use/rendering.rb +111 -121
- data/lib/zena/use/scope_index.rb +230 -0
- data/lib/zena/use/search.rb +7 -7
- data/lib/zena/use/urls.rb +87 -25
- data/lib/zena/use/version_hash.rb +113 -113
- data/lib/zena/use/workflow.rb +5 -1
- data/lib/zena/use/zafu_attributes.rb +11 -14
- data/lib/zena/use/zafu_eval.rb +1 -1
- data/lib/zena/use/zafu_safe_definitions.rb +91 -9
- data/lib/zena/use/zafu_templates.rb +146 -102
- data/lib/zena/use/zazen.rb +5 -4
- data/lib/zena/zafu_compiler.rb +1 -0
- data/locale/en/LC_MESSAGES/zena.mo +0 -0
- data/locale/en/zena.po +0 -1
- data/locale/fr/LC_MESSAGES/zena.mo +0 -0
- data/locale/fr/zena.mo +0 -0
- data/locale/fr/zena.po +4 -4
- data/misc/zena +35 -0
- data/misc/zena_init +41 -0
- data/public/images/ext/{basecontact.png → contact.png} +0 -0
- data/public/javascripts/zena.js +35 -7
- data/public/stylesheets/admin.css +5 -2
- data/public/stylesheets/default.css +2 -1
- data/public/stylesheets/popup.css +1 -1
- data/public/stylesheets/zena.css +2 -2
- data/test/custom_queries/complex.host.yml +12 -5
- data/test/fixtures/files/Node-test.zafu +3 -3
- data/test/fixtures/files/translations_fr.yml +4 -2
- data/test/functional/documents_controller_test.rb +31 -0
- data/test/functional/nodes_controller_commit_test.rb +1 -5
- data/test/functional/nodes_controller_test.rb +92 -12
- data/test/functional/user_sessions_controller_test.rb +2 -2
- data/test/functional/users_controller_test.rb +31 -29
- data/test/functional/versions_controller_test.rb +2 -2
- data/test/functional/virtual_classes_controller_test.rb +2 -2
- data/test/integration/multiple_hosts_test.rb +19 -8
- data/test/integration/navigation_test.rb +91 -12
- data/test/integration/query_node/basic.yml +40 -37
- data/test/integration/query_node/complex.yml +23 -18
- data/test/integration/query_node/dates.yml +3 -3
- data/test/integration/query_node/errors.yml +7 -1
- data/test/integration/query_node/filters.yml +41 -35
- data/test/integration/query_node/idx_fields.yml +11 -0
- data/test/integration/query_node/idx_key_value.yml +77 -0
- data/test/integration/query_node/idx_scope.yml +33 -0
- data/test/integration/query_node/relations.yml +13 -13
- data/test/integration/query_node_test.rb +6 -10
- data/test/integration/zafu_compiler/action.yml +19 -6
- data/test/integration/zafu_compiler/ajax.yml +111 -51
- data/test/integration/zafu_compiler/apphelper.yml +1 -1
- data/test/integration/zafu_compiler/asset.yml +1 -1
- data/test/integration/zafu_compiler/basic.yml +42 -52
- data/test/integration/zafu_compiler/calendar.yml +3 -3
- data/test/integration/zafu_compiler/complex.yml +16 -16
- data/test/integration/zafu_compiler/complex_ok.yml +2 -2
- data/test/integration/zafu_compiler/conditional.yml +42 -33
- data/test/integration/zafu_compiler/data.yml +3 -3
- data/test/integration/zafu_compiler/dates.yml +25 -10
- data/test/integration/zafu_compiler/display.yml +49 -12
- data/test/integration/zafu_compiler/errors.yml +26 -6
- data/test/integration/zafu_compiler/eval.yml +4 -4
- data/test/integration/zafu_compiler/forms.yml +89 -15
- data/test/integration/zafu_compiler/i18n.yml +23 -18
- data/test/integration/zafu_compiler/idx_scope.yml +7 -0
- data/test/integration/zafu_compiler/later.yml +10 -16
- data/test/integration/zafu_compiler/off/off.yml +2 -2
- data/test/integration/zafu_compiler/query.yml +207 -0
- data/test/integration/zafu_compiler/recursion.yml +2 -2
- data/test/integration/zafu_compiler/relations.yml +144 -168
- data/test/integration/zafu_compiler/roles.yml +86 -10
- data/test/integration/zafu_compiler/rubyless.yml +49 -6
- data/test/integration/zafu_compiler/safe_definitions.yml +35 -6
- data/test/integration/zafu_compiler/search.yml +1 -1
- data/test/integration/zafu_compiler/security.yml +37 -0
- data/test/integration/zafu_compiler/urls.yml +50 -40
- data/test/integration/zafu_compiler/user.yml +21 -6
- data/test/integration/zafu_compiler/version.yml +6 -6
- data/test/integration/zafu_compiler/zafu_attributes.yml +43 -34
- data/test/integration/zafu_compiler/zazen.yml +10 -10
- data/test/integration/zafu_compiler_test.rb +19 -13
- data/test/sites/complex/nodes.yml +0 -2
- data/test/sites/complex/roles.yml +9 -1
- data/test/sites/complex/sites.yml +0 -1
- data/test/sites/complex/users.yml +2 -5
- data/test/sites/ocean/nodes.yml +2 -5
- data/test/sites/ocean/roles.yml +8 -0
- data/test/sites/ocean/sites.yml +0 -1
- data/test/sites/ocean/users.yml +0 -13
- data/test/sites/zena/columns.yml +27 -5
- data/test/sites/zena/idx_projects.yml +5 -0
- data/test/sites/zena/nodes.yml +8 -32
- data/test/sites/zena/relations.yml +5 -0
- data/test/sites/zena/roles.yml +25 -3
- data/test/sites/zena/sites.yml +2 -2
- data/test/sites/zena/users.yml +1 -21
- data/test/sites/zena/versions.yml +35 -12
- data/test/test_helper.rb +7 -0
- data/test/unit/after_commit_test.rb +7 -7
- data/test/unit/cache_test.rb +32 -0
- data/test/unit/cached_page_test.rb +1 -1
- data/test/unit/column_test.rb +31 -7
- data/test/unit/comment_test.rb +2 -2
- data/test/unit/core_ext_test.rb +38 -7
- data/test/unit/document_test.rb +14 -42
- data/test/unit/node_test.rb +311 -324
- data/test/unit/note_test.rb +23 -31
- data/test/unit/page_test.rb +16 -58
- data/test/unit/project_test.rb +2 -2
- data/test/unit/relation_proxy_test.rb +148 -21
- data/test/unit/relation_test.rb +23 -3
- data/test/unit/remote_test.rb +15 -9
- data/test/unit/role_test.rb +9 -0
- data/test/unit/site_test.rb +49 -47
- data/test/unit/skin_test.rb +16 -0
- data/test/unit/template_test.rb +60 -69
- data/test/unit/text_document_test.rb +15 -14
- data/test/unit/user_test.rb +101 -41
- data/test/unit/version_test.rb +4 -4
- data/test/unit/virtual_class_test.rb +577 -36
- data/test/unit/workflow_test.rb +58 -21
- data/test/unit/zena/acts/enrollable_test.rb +36 -127
- data/test/unit/zena/acts/secure_test.rb +6 -22
- data/test/unit/zena/acts/serializable_test.rb +18 -0
- data/test/unit/zena/db_test.rb +14 -14
- data/test/unit/zena/parser/zafu.yml +5 -3
- data/test/unit/zena/use/ancestry_test.rb +198 -0
- data/test/unit/zena/use/calendar_test.rb +8 -8
- data/test/unit/zena/use/dates_test.rb +2 -0
- data/test/unit/zena/use/fulltext_test.rb +9 -1
- data/test/unit/zena/use/html_tags_test.rb +2 -16
- data/test/unit/zena/use/i18n_test.rb +2 -2
- data/test/unit/zena/use/kpath_test.rb +13 -0
- data/test/unit/zena/use/ml_index_test.rb +60 -12
- data/test/unit/zena/use/prop_eval_test.rb +170 -0
- data/test/unit/zena/use/query_node_test.rb +9 -2
- data/test/unit/zena/use/rendering_test.rb +98 -1
- data/test/unit/zena/use/scope_index_test.rb +464 -0
- data/test/unit/zena/use/urls_test.rb +23 -13
- data/test/unit/zena/use/version_hash_test.rb +2 -2
- data/test/unit/zena/use/zafu_template_test.rb +21 -8
- data/test/unit/zena/use/zazen_test.rb +47 -47
- data/zena.gemspec +177 -143
- metadata +222 -141
- data/app/models/base_contact.rb +0 -79
- data/app/models/book.rb +0 -242
- data/app/models/contact_content.rb +0 -70
- data/app/models/contact_version.rb +0 -40
- data/app/models/reference.rb +0 -18
- data/app/views/templates/edit_tabs/_basecontact.rhtml +0 -8
- data/bricks/data2pdf/README +0 -19
- data/bricks/data2pdf/VERSION +0 -1
- data/bricks/data2pdf/lib/data2pdf.rb +0 -60
- data/bricks/data2pdf/lib/engines/prince.rb +0 -39
- data/bricks/data2pdf/lib/engines/xhtml2pdf.rb +0 -41
- data/bricks/data2pdf/lib/install.rb +0 -111
- data/bricks/data2pdf/test/engines/test_prince.rb +0 -14
- data/bricks/data2pdf/test/engines/test_xhtml2pdf.rb +0 -14
- data/bricks/data2pdf/test/shoulda_macros/shoulda_data2pdf.rb +0 -91
- data/bricks/data2pdf/test/unit/test_rendering.rb +0 -37
- data/config/routes.rb +0 -3
- data/db/migrate/010_create_template_content.rb +0 -17
- data/db/migrate/024_correct_vclass_kpath.rb +0 -13
- data/db/migrate/025_move_tag_into_vclass.rb +0 -15
- data/lib/version_off.rb +0 -323
- data/lib/zena/use/node_name.rb +0 -94
- data/test/integration/query_node/properties.yml +0 -41
- data/test/unit/base_contact_test.rb +0 -242
- data/test/unit/node_name_test.rb +0 -137
data/History.txt
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
== 1.0.0.rc1 2011-02-11
|
|
2
|
+
|
|
3
|
+
* major changes
|
|
4
|
+
* Changed 'date' for 'main_date'
|
|
5
|
+
* Added 'redir' option on node update/create (also added 'mode')
|
|
6
|
+
|
|
7
|
+
== 1.0.0.beta5
|
|
8
|
+
|
|
9
|
+
* major changes
|
|
10
|
+
* Using VirtualClass as proxy for type compilation (RubyLess, Zafu).
|
|
11
|
+
* Caching Roles and VirtualClass.
|
|
12
|
+
* Added 'integer' property with index.
|
|
13
|
+
* Added query_parse (parse form content such as '>34' or '10..34').
|
|
14
|
+
* Enable setting relations with SQLiss.
|
|
15
|
+
* Changed class filter from '<r:Contact>' to '<r:Contact?>'.
|
|
16
|
+
* Added VirtualClass introspection from zafu with [grid] and Node [send] methods.
|
|
17
|
+
* Added relation groups.
|
|
18
|
+
* Added 'map' and 'join' support to Array in RubyLess.
|
|
19
|
+
* Added dynamic values support for [toggle].
|
|
20
|
+
|
|
21
|
+
== 1.0.0.beta4
|
|
22
|
+
|
|
23
|
+
* major changes
|
|
24
|
+
* Removed BaseContact and Reference classes.
|
|
25
|
+
* Removed super user (not needed anymore).
|
|
26
|
+
* Upgraded to Property 2.0 (should resolve memory leak)
|
|
27
|
+
* Added support for Scoped indices.
|
|
28
|
+
* Added support for field indices.
|
|
29
|
+
|
|
1
30
|
== 1.0.0.beta3 2010-09-17
|
|
2
31
|
|
|
3
32
|
* major changes
|
data/Rakefile
CHANGED
data/TODO_ZENA_1_0
CHANGED
|
@@ -1,23 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
3.
|
|
9
|
-
4.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
my_app
|
|
15
|
-
+-- app (same structure as a brick)
|
|
16
|
-
| +-- models (custom application stuff)
|
|
17
|
-
| +-- controllers
|
|
18
|
-
| +-- helpers
|
|
19
|
-
| +-- zafu (custom zafu tags)
|
|
20
|
-
+-- bricks
|
|
21
|
-
+-- config
|
|
22
|
-
+-- sites
|
|
23
|
-
+-- vendor
|
|
1
|
+
TODO
|
|
2
|
+
====
|
|
3
|
+
|
|
4
|
+
0. change url ! to /fr/pasdfj94859
|
|
5
|
+
1. POST ! instead of GET during preview (long articles !!!)
|
|
6
|
+
2. Change fullpath to zip/zip/zip
|
|
7
|
+
3. Update tags API: tags => [String] (tag_names), tag_list => String, tag_links => ['Link']
|
|
8
|
+
3. Rename virtual_classes_controller to roles_controller
|
|
9
|
+
4. kill node_name
|
|
10
|
+
|
|
11
|
+
5. secure XML API (get cookie: do not send login each time)
|
|
12
|
+
6. index log_at/event_at/custom_a/custom_b with idx_datetime1, ...
|
|
13
|
+
7. move values from log_at/event_at/custom_a/custom_b in properties
|
|
@@ -9,7 +9,7 @@ class ColumnsController < ApplicationController
|
|
|
9
9
|
def index
|
|
10
10
|
roles = {}
|
|
11
11
|
secure(Column) do
|
|
12
|
-
@columns = Column.paginate(:all, :order => 'role_id ASC, name ASC', :per_page =>
|
|
12
|
+
@columns = Column.paginate(:all, :order => 'role_id ASC, name ASC', :per_page => 200, :page => params[:page]).sort! do |a, b|
|
|
13
13
|
role_a = (roles[a.role_id] ||= a.role).name
|
|
14
14
|
role_b = (roles[b.role_id] ||= b.role).name
|
|
15
15
|
|
|
@@ -22,7 +22,7 @@ class CommentsController < ApplicationController
|
|
|
22
22
|
def create
|
|
23
23
|
@discussion.save if @discussion.new_record? && @node.can_comment?
|
|
24
24
|
|
|
25
|
-
@comment = secure
|
|
25
|
+
@comment = secure(Comment) { Comment.new(filter_attributes(params[:comment])) }
|
|
26
26
|
|
|
27
27
|
save_if_not_spam(@comment, params)
|
|
28
28
|
|
|
@@ -90,8 +90,8 @@ class CommentsController < ApplicationController
|
|
|
90
90
|
|
|
91
91
|
# TODO:test
|
|
92
92
|
def index
|
|
93
|
-
@node = visitor.
|
|
94
|
-
secure
|
|
93
|
+
@node = visitor.node
|
|
94
|
+
secure(Node) do
|
|
95
95
|
# TODO: preload node
|
|
96
96
|
@comments = Comment.paginate :all,
|
|
97
97
|
:select => "comments.*, nodes.zip AS node_zip",
|
|
@@ -100,6 +100,7 @@ class CommentsController < ApplicationController
|
|
|
100
100
|
:conditions=>"status > #{Zena::Status[:rem]} AND (#{secure_scope('nodes')})",
|
|
101
101
|
:per_page => 10, :page => params[:page]
|
|
102
102
|
end
|
|
103
|
+
@comments ||= []
|
|
103
104
|
end
|
|
104
105
|
|
|
105
106
|
# TODO: test
|
|
@@ -11,10 +11,8 @@ class DocumentsController < ApplicationController
|
|
|
11
11
|
|
|
12
12
|
# add a new document to the current node
|
|
13
13
|
def new
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
# Add Template role so that we can use the same object in forms which need the Template properties.
|
|
17
|
-
@node.has_role Template
|
|
14
|
+
# Use the Template class so that we can use the same object in forms which need the Template properties.
|
|
15
|
+
@node = @parent.new_child(:class => Template)
|
|
18
16
|
|
|
19
17
|
respond_to do |format|
|
|
20
18
|
format.html
|
|
@@ -34,16 +32,15 @@ class DocumentsController < ApplicationController
|
|
|
34
32
|
|
|
35
33
|
respond_to do |format|
|
|
36
34
|
if @node.new_record?
|
|
37
|
-
# If skin id could not be set (invalid parent), make sure we have something to render.
|
|
38
35
|
@node.skin_id ||= current_site.root_node.skin_id
|
|
39
|
-
parent_id = (params[:node] || {})[:parent_id] || 0
|
|
40
|
-
class << @node
|
|
41
|
-
def parent_zip
|
|
42
|
-
parent_id
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
36
|
|
|
46
37
|
flash[:error] = _("Upload failed.")
|
|
38
|
+
unless @node.respond_to?('target_klass')
|
|
39
|
+
# Could we find another way to fake the new object as acting like a template ?
|
|
40
|
+
class << @node
|
|
41
|
+
def target_klass; nil; end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
47
44
|
format.html { render :action => 'new'}
|
|
48
45
|
else
|
|
49
46
|
flash[:notice] = _("Upload succeeded.")
|
|
@@ -57,7 +57,7 @@ class NodesController < ApplicationController
|
|
|
57
57
|
format.html do
|
|
58
58
|
begin
|
|
59
59
|
do_search
|
|
60
|
-
rescue QueryBuilder::Error => err
|
|
60
|
+
rescue ::QueryBuilder::Error => err
|
|
61
61
|
flash[:error] = err.message
|
|
62
62
|
end
|
|
63
63
|
render_and_cache :mode => '+search', :cache => false
|
|
@@ -74,7 +74,7 @@ class NodesController < ApplicationController
|
|
|
74
74
|
else
|
|
75
75
|
render :xml => [].to_xml(:root => 'nodes')
|
|
76
76
|
end
|
|
77
|
-
rescue QueryBuilder::Error => err
|
|
77
|
+
rescue ::QueryBuilder::Error => err
|
|
78
78
|
render :xml => [{:message => err.message}].to_xml(:root => 'errors'), :status => 401
|
|
79
79
|
end
|
|
80
80
|
end
|
|
@@ -170,7 +170,7 @@ class NodesController < ApplicationController
|
|
|
170
170
|
@node.file(img_format)
|
|
171
171
|
end
|
|
172
172
|
elsif @node.kind_of?(TextDocument)
|
|
173
|
-
send_data(@node.text, :filename => @node.filename, :type =>
|
|
173
|
+
send_data(@node.text, :filename => @node.filename, :type => @node.content_type, :disposition => 'inline')
|
|
174
174
|
else
|
|
175
175
|
content_path = @node.filepath
|
|
176
176
|
end
|
|
@@ -210,7 +210,9 @@ class NodesController < ApplicationController
|
|
|
210
210
|
respond_to do |format|
|
|
211
211
|
if @node.errors.empty?
|
|
212
212
|
flash[:notice] = 'Node was successfully created.'
|
|
213
|
-
format.html {
|
|
213
|
+
format.html {
|
|
214
|
+
redirect_to params[:redir] || zen_path(@node, :mode => params[:mode])
|
|
215
|
+
}
|
|
214
216
|
format.js
|
|
215
217
|
format.xml { render :xml => @node.to_xml(:root => 'node'), :status => :created, :location => node_url(@node) }
|
|
216
218
|
else
|
|
@@ -223,11 +225,9 @@ class NodesController < ApplicationController
|
|
|
223
225
|
|
|
224
226
|
# modifications of the node itself (dates, groups, revert editions, etc)
|
|
225
227
|
def edit
|
|
226
|
-
@node.load_roles!
|
|
227
|
-
|
|
228
228
|
respond_to do |format|
|
|
229
229
|
format.html do
|
|
230
|
-
@title_for_layout =
|
|
230
|
+
@title_for_layout = title_for_layout
|
|
231
231
|
end
|
|
232
232
|
|
|
233
233
|
format.js do
|
|
@@ -317,10 +317,11 @@ class NodesController < ApplicationController
|
|
|
317
317
|
end
|
|
318
318
|
|
|
319
319
|
def export
|
|
320
|
-
send_file(@node.archive.path, :filename=>"#{@node.
|
|
320
|
+
send_file(@node.archive.path, :filename=>"#{@node.title}.tgz", :type => 'application/x-gzip', :x_sendfile => ENABLE_XSENDFILE)
|
|
321
321
|
end
|
|
322
322
|
|
|
323
323
|
def update
|
|
324
|
+
params['node'] ||= {}
|
|
324
325
|
file, file_error = get_attachment
|
|
325
326
|
params['node']['file'] = file if file
|
|
326
327
|
|
|
@@ -351,12 +352,30 @@ class NodesController < ApplicationController
|
|
|
351
352
|
if params[:edit] == 'popup'
|
|
352
353
|
redirect_to edit_node_version_path(:node_id => @node[:zip], :id => 0, :close => (params[:validate] ? true : nil))
|
|
353
354
|
else
|
|
354
|
-
redirect_to zen_path(@node, :mode => params[:mode])
|
|
355
|
+
redirect_to params[:redir] || zen_path(@node, :mode => params[:mode])
|
|
355
356
|
end
|
|
356
357
|
else
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
358
|
+
begin
|
|
359
|
+
if request.referer
|
|
360
|
+
route = ActionController::Routing::Routes.recognize_path(request.referer[%r{https?://[^/]+(.*)},1])
|
|
361
|
+
else
|
|
362
|
+
route = {:action => 'show'}
|
|
363
|
+
end
|
|
364
|
+
if route[:action] == 'index'
|
|
365
|
+
mode = '+index'
|
|
366
|
+
elsif route[:action] == 'search'
|
|
367
|
+
mode = '+search'
|
|
368
|
+
elsif path = route[:path]
|
|
369
|
+
if path.last =~ Zena::Use::Urls::ALLOWED_REGEXP
|
|
370
|
+
zip = $3
|
|
371
|
+
name = $4
|
|
372
|
+
mode = $5 == '' ? nil : $5[1..-1]
|
|
373
|
+
end
|
|
374
|
+
end
|
|
375
|
+
rescue ActionController::RoutingError
|
|
376
|
+
mode = nil
|
|
377
|
+
end
|
|
378
|
+
render_and_cache :mode => mode, :cache => false
|
|
360
379
|
end
|
|
361
380
|
end # html
|
|
362
381
|
|
|
@@ -366,7 +385,7 @@ class NodesController < ApplicationController
|
|
|
366
385
|
if @node.errors.empty?
|
|
367
386
|
render :xml => @node.to_xml, :status => :ok, :location => node_url(@node)
|
|
368
387
|
else
|
|
369
|
-
render :xml => @
|
|
388
|
+
render :xml => @node.errors, :status => :unprocessable_entity
|
|
370
389
|
end
|
|
371
390
|
end # xml
|
|
372
391
|
end
|
|
@@ -389,6 +408,8 @@ class NodesController < ApplicationController
|
|
|
389
408
|
node_id = secure!(Node) { Node.translate_pseudo_id(id_query, :id, @node)}
|
|
390
409
|
@node = secure!(Node) { Node.find(node_id) }
|
|
391
410
|
elsif name_query = params[:name]
|
|
411
|
+
# Get attribute by name
|
|
412
|
+
# TODO: test
|
|
392
413
|
if name_query =~ /^(.*)\.[a-z]{2,3}$/
|
|
393
414
|
name_query = $1
|
|
394
415
|
end
|
|
@@ -400,11 +421,8 @@ class NodesController < ApplicationController
|
|
|
400
421
|
conditions << "#{kpath}%"
|
|
401
422
|
end
|
|
402
423
|
|
|
403
|
-
|
|
404
|
-
conditions
|
|
405
|
-
|
|
406
|
-
conditions[0] = conditions[0].join(' AND ')
|
|
407
|
-
@node = secure!(Node) { Node.find(:first, :conditions => conditions, :order => "zip DESC")}
|
|
424
|
+
name_query = "#{name_query}%"
|
|
425
|
+
@node = secure!(Node) { Node.find_by_title(name_query, :conditions => conditions, :order => "zip DESC", :like => true)}
|
|
408
426
|
end
|
|
409
427
|
|
|
410
428
|
if %w{path short_path}.include?(method)
|
|
@@ -484,7 +502,7 @@ class NodesController < ApplicationController
|
|
|
484
502
|
# archive ---> fullpath
|
|
485
503
|
def find_node
|
|
486
504
|
if path = params[:path]
|
|
487
|
-
if path.last =~
|
|
505
|
+
if path.last =~ Zena::Use::Urls::ALLOWED_REGEXP
|
|
488
506
|
zip = $3
|
|
489
507
|
name = $4
|
|
490
508
|
params[:mode] = $5 == '' ? nil : $5[1..-1]
|
|
@@ -499,7 +517,7 @@ class NodesController < ApplicationController
|
|
|
499
517
|
if name =~ /^\d+$/
|
|
500
518
|
@node = secure!(Node) { Node.find_by_zip(name) }
|
|
501
519
|
elsif name
|
|
502
|
-
basepath = (path[0..-2] + [name]).join('/')
|
|
520
|
+
basepath = (path[0..-2] + [name]).map! {|p| String.from_url_name(p) }.join('/')
|
|
503
521
|
@node = secure!(Node) { Node.find_by_path(basepath) }
|
|
504
522
|
else
|
|
505
523
|
@node = secure!(Node) { Node.find_by_zip(zip) }
|
|
@@ -516,7 +534,7 @@ class NodesController < ApplicationController
|
|
|
516
534
|
@link = Link.find_through(@node, params[:link_id])
|
|
517
535
|
end
|
|
518
536
|
|
|
519
|
-
@title_for_layout =
|
|
537
|
+
@title_for_layout = title_for_layout
|
|
520
538
|
end
|
|
521
539
|
|
|
522
540
|
def set_format(format)
|
|
@@ -37,6 +37,7 @@ class UsersController < ApplicationController
|
|
|
37
37
|
# xx ==> fixed skin
|
|
38
38
|
def dev_skin(skin_id = params['skin_id'])
|
|
39
39
|
visitor.update_attributes('dev_skin_id' => skin_id)
|
|
40
|
+
|
|
40
41
|
if request.referer && !(request.referer =~ /login/)
|
|
41
42
|
redirect_to request.referer
|
|
42
43
|
else
|
|
@@ -59,8 +60,12 @@ class UsersController < ApplicationController
|
|
|
59
60
|
if params[:groups]
|
|
60
61
|
params[:user][:group_ids] = params[:groups].values
|
|
61
62
|
end
|
|
63
|
+
|
|
62
64
|
get_groups_list
|
|
63
|
-
|
|
65
|
+
|
|
66
|
+
params[:user][:node_attributes] = params[:node]
|
|
67
|
+
|
|
68
|
+
@user = secure(User) { User.create(params[:user]) }
|
|
64
69
|
end
|
|
65
70
|
|
|
66
71
|
# TODO: test
|
|
@@ -130,7 +135,7 @@ class UsersController < ApplicationController
|
|
|
130
135
|
end
|
|
131
136
|
|
|
132
137
|
def get_groups_list
|
|
133
|
-
@groups = secure!(Group) { Group.find(:all, :order=>'name') }
|
|
138
|
+
@groups = secure!(Group) { Group.find(:all, :order => 'name ASC') }
|
|
134
139
|
end
|
|
135
140
|
|
|
136
141
|
# Only allow if user is admin or the current user is the visitor
|
|
@@ -142,7 +147,7 @@ class UsersController < ApplicationController
|
|
|
142
147
|
if params[:user]
|
|
143
148
|
# visitor changing his/her own info : restrict fields
|
|
144
149
|
params[:user].keys.each do |k|
|
|
145
|
-
params[:user].delete(k) unless [:login, :
|
|
150
|
+
params[:user].delete(k) unless [:login, :time_zone, :lang, :password, :time_zone].include?(k.to_sym)
|
|
146
151
|
end
|
|
147
152
|
end
|
|
148
153
|
else
|
|
@@ -63,7 +63,7 @@ class VersionsController < ApplicationController
|
|
|
63
63
|
end
|
|
64
64
|
render :action=>'update'
|
|
65
65
|
else
|
|
66
|
-
@title_for_layout =
|
|
66
|
+
@title_for_layout = title_for_layout
|
|
67
67
|
if @node.kind_of?(TextDocument)
|
|
68
68
|
if params['parse_assets']
|
|
69
69
|
@node.text = @node.parse_assets(@node.text, self, 'text')
|
|
@@ -85,7 +85,7 @@ class VersionsController < ApplicationController
|
|
|
85
85
|
def custom_tab
|
|
86
86
|
render :file => template_url(:mode=>'+edit', :format=>'html'), :layout=>false
|
|
87
87
|
rescue ActiveRecord::RecordNotFound
|
|
88
|
-
render :
|
|
88
|
+
render :action => 'custom_tab'
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
# TODO: test/improve or remove (experiments)
|
|
@@ -5,13 +5,19 @@ class VirtualClassesController < ApplicationController
|
|
|
5
5
|
layout :admin_layout
|
|
6
6
|
|
|
7
7
|
def index
|
|
8
|
-
secure(
|
|
9
|
-
@virtual_classes = Role.paginate(:all, :order => 'kpath', :per_page =>
|
|
8
|
+
secure(::Role) do
|
|
9
|
+
@virtual_classes = ::Role.paginate(:all, :order => 'kpath', :per_page => 200, :page => params[:page])
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
if last = @virtual_classes.last
|
|
13
|
+
last_kpath = last.kpath
|
|
14
|
+
Node.native_classes.each do |kpath, klass|
|
|
15
|
+
if kpath < last_kpath
|
|
16
|
+
@virtual_classes << klass
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
else
|
|
20
|
+
Node.native_classes.each do |kpath, klass|
|
|
15
21
|
@virtual_classes << klass
|
|
16
22
|
end
|
|
17
23
|
end
|
|
@@ -19,8 +25,8 @@ class VirtualClassesController < ApplicationController
|
|
|
19
25
|
@virtual_classes.sort! do |a, b|
|
|
20
26
|
if a.kpath == b.kpath
|
|
21
27
|
# Order VirtualClass first
|
|
22
|
-
b_type = b.kind_of?(Role) ? b.class.to_s : 'V' # sort real classes like VirtualClass
|
|
23
|
-
a_type = a.kind_of?(Role) ? a.class.to_s : 'V'
|
|
28
|
+
b_type = b.kind_of?(::Role) ? b.class.to_s : 'V' # sort real classes like VirtualClass
|
|
29
|
+
a_type = a.kind_of?(::Role) ? a.class.to_s : 'V'
|
|
24
30
|
|
|
25
31
|
b_type <=> a_type
|
|
26
32
|
else
|
|
@@ -37,8 +43,8 @@ class VirtualClassesController < ApplicationController
|
|
|
37
43
|
end
|
|
38
44
|
|
|
39
45
|
def export
|
|
40
|
-
data = secure(
|
|
41
|
-
|
|
46
|
+
data = secure(::Role) do
|
|
47
|
+
::Role.export
|
|
42
48
|
end
|
|
43
49
|
|
|
44
50
|
### TODO
|
|
@@ -92,7 +98,7 @@ class VirtualClassesController < ApplicationController
|
|
|
92
98
|
def create
|
|
93
99
|
type = params[:virtual_class].delete(:type)
|
|
94
100
|
if type == 'Role'
|
|
95
|
-
@virtual_class = Role.new(params[:virtual_class])
|
|
101
|
+
@virtual_class = ::Role.new(params[:virtual_class])
|
|
96
102
|
else
|
|
97
103
|
@virtual_class = VirtualClass.new(params[:virtual_class])
|
|
98
104
|
end
|
|
@@ -138,6 +144,6 @@ class VirtualClassesController < ApplicationController
|
|
|
138
144
|
|
|
139
145
|
protected
|
|
140
146
|
def find_virtual_class
|
|
141
|
-
@virtual_class = secure!(VirtualClass) { Role.find(params[:id])}
|
|
147
|
+
@virtual_class = secure!(VirtualClass) { ::Role.find(params[:id])}
|
|
142
148
|
end
|
|
143
149
|
end
|
|
@@ -7,9 +7,6 @@ module DocumentsHelper
|
|
|
7
7
|
Dir.entries(File.join(Zena::ROOT, 'app', 'views', 'templates', 'document_create_tabs')).sort.each do |file|
|
|
8
8
|
next unless file =~ /^_(.*).rhtml$/
|
|
9
9
|
tab_name = $1
|
|
10
|
-
if !%w{file import}.include?(tab_name) && !@node.has_role?(tab_name.camelize.constantize)
|
|
11
|
-
next
|
|
12
|
-
end
|
|
13
10
|
tabs << tab_name
|
|
14
11
|
end
|
|
15
12
|
tabs
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module UsersHelper
|
|
2
|
+
|
|
3
|
+
def node_form
|
|
4
|
+
node_back = @node # store contextual node
|
|
5
|
+
begin
|
|
6
|
+
@node = @user.node || visitor.prototype
|
|
7
|
+
begin
|
|
8
|
+
res =render :file => template_url(:mode => '+user', :format => 'html')
|
|
9
|
+
rescue ActiveRecord::RecordNotFound
|
|
10
|
+
res = render :file => 'versions/custom_tab'
|
|
11
|
+
end
|
|
12
|
+
ensure
|
|
13
|
+
@node = node_back
|
|
14
|
+
end
|
|
15
|
+
res
|
|
16
|
+
end
|
|
17
|
+
end
|