zena 0.16.9 → 1.0.0.beta1
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/.gitignore +16 -3
- data/CREDITS +8 -4
- data/History.txt +12 -15
- data/app/controllers/application_controller.rb +1 -0
- data/app/controllers/columns_controller.rb +130 -0
- data/app/controllers/documents_controller.rb +16 -4
- data/app/controllers/groups_controller.rb +1 -5
- data/app/controllers/iformats_controller.rb +1 -5
- data/app/controllers/nodes_controller.rb +116 -41
- data/app/controllers/preferences_controller.rb +2 -0
- data/app/controllers/relations_controller.rb +1 -5
- data/app/controllers/sites_controller.rb +1 -5
- data/app/controllers/user_sessions_controller.rb +8 -3
- data/app/controllers/users_controller.rb +23 -11
- data/app/controllers/versions_controller.rb +29 -46
- data/app/controllers/virtual_classes_controller.rb +20 -12
- data/app/helpers/documents_helper.rb +5 -1
- data/app/models/attachment.rb +41 -0
- data/app/models/base_contact.rb +79 -0
- data/app/models/cache.rb +2 -2
- data/app/models/cached_page.rb +5 -4
- data/app/models/column.rb +90 -0
- data/app/models/comment.rb +3 -1
- data/app/models/contact_content.rb +5 -5
- data/app/models/contact_version.rb +2 -2
- data/app/models/data_entry.rb +9 -8
- data/app/models/discussion.rb +4 -0
- data/app/models/document.rb +170 -42
- data/app/models/document_content.rb +5 -9
- data/app/models/group.rb +4 -3
- data/app/models/idx_nodes_ml_string.rb +5 -0
- data/app/models/idx_nodes_string.rb +5 -0
- data/app/models/idx_template.rb +35 -0
- data/app/models/iformat.rb +4 -4
- data/app/models/image.rb +193 -26
- data/app/models/link.rb +1 -1
- data/app/models/node.rb +358 -338
- data/app/models/note.rb +2 -4
- data/app/models/page.rb +10 -8
- data/app/models/reference.rb +1 -1
- data/app/models/relation.rb +40 -1
- data/app/models/relation_proxy.rb +37 -40
- data/app/models/role.rb +19 -0
- data/app/models/site.rb +54 -24
- data/app/models/skin.rb +1 -16
- data/app/models/template.rb +92 -62
- data/app/models/template_content.rb +12 -6
- data/app/models/text_document.rb +69 -36
- data/app/models/text_document_content.rb +3 -3
- data/app/models/user.rb +34 -13
- data/app/models/version.rb +47 -291
- data/app/models/virtual_class.rb +26 -29
- data/app/views/columns/_add.html.erb +6 -0
- data/app/views/columns/_form.html.erb +36 -0
- data/app/views/columns/_li.html.erb +11 -0
- data/app/views/columns/create.rjs +8 -0
- data/app/views/columns/destroy.rjs +6 -0
- data/app/views/columns/edit.html.erb +5 -0
- data/app/views/columns/index.html.erb +15 -0
- data/app/views/columns/new.html.erb +2 -0
- data/app/views/columns/show.rjs +1 -0
- data/app/views/columns/update.rjs +5 -0
- data/app/views/comments/_li.rhtml +1 -1
- data/app/views/comments/create.rjs +1 -1
- data/app/views/comments/index.rhtml +1 -1
- data/app/views/comments/publish.rjs +1 -1
- data/app/views/comments/remove.rjs +1 -1
- data/app/views/data_entries/_li.html.erb +1 -1
- data/app/views/discussions/create.rjs +1 -1
- data/app/views/documents/_crop.rhtml +4 -4
- data/app/views/documents/crop_form.rjs +1 -1
- data/app/views/documents/new.rhtml +1 -1
- data/app/views/documents/show.rhtml +4 -4
- data/app/views/groups/_form.rhtml +1 -1
- data/app/views/groups/index.rhtml +1 -1
- data/app/views/iformats/_form.rhtml +1 -1
- data/app/views/iformats/create.rjs +1 -1
- data/app/views/iformats/index.rhtml +1 -1
- data/app/views/links/create.rjs +1 -1
- data/app/views/links/destroy.rjs +1 -1
- data/app/views/links/show.rjs +1 -1
- data/app/views/nodes/_dates.rhtml +2 -2
- data/app/views/nodes/_gallery.rhtml +2 -2
- data/app/views/nodes/_list_nodes.rhtml +2 -2
- data/app/views/nodes/_parent.rhtml +1 -1
- data/app/views/nodes/_position.rhtml +2 -2
- data/app/views/nodes/_results.rhtml +1 -1
- data/app/views/nodes/create.rjs +1 -4
- data/app/views/nodes/destroy.erb +0 -0
- data/app/views/nodes/import.rhtml +1 -1
- data/app/views/nodes/save_text.rjs +3 -3
- data/app/views/nodes/table_update.rjs +1 -2
- data/app/views/nodes/update.rjs +1 -1
- data/app/views/relations/_form.erb +15 -15
- data/app/views/relations/_li.erb +5 -11
- data/app/views/relations/create.rjs +1 -1
- data/app/views/relations/index.erb +1 -1
- data/app/views/sites/_form.erb +3 -3
- data/app/views/sites/_li.erb +1 -1
- data/app/views/sites/index.erb +1 -1
- data/app/views/templates/document_create_tabs/_file.rhtml +3 -3
- data/app/views/templates/document_create_tabs/_template.rhtml +9 -9
- data/app/views/templates/document_create_tabs/{_text_doc.rhtml → _text_document.rhtml} +4 -4
- data/app/views/templates/edit_tabs/{_contact.rhtml → _basecontact.rhtml} +2 -2
- data/app/views/templates/edit_tabs/_document.rhtml +3 -3
- data/app/views/templates/edit_tabs/_help.rhtml +2 -2
- data/app/views/templates/edit_tabs/_image.rhtml +4 -4
- data/app/views/templates/edit_tabs/_template.rhtml +6 -6
- data/app/views/templates/edit_tabs/_text.rhtml +1 -1
- data/app/views/templates/edit_tabs/_textdocument.rhtml +4 -4
- data/app/views/templates/edit_tabs/_title.rhtml +9 -14
- data/app/views/users/_form.rhtml +1 -1
- data/app/views/users/change_info.rjs +1 -1
- data/app/views/users/change_password.rjs +1 -1
- data/app/views/users/index.rhtml +1 -1
- data/app/views/users/preferences.html.erb +10 -4
- data/app/views/users/update.rjs +1 -1
- data/app/views/versions/_list.rhtml +1 -1
- data/app/views/versions/_tr.rhtml +1 -1
- data/app/views/versions/backup.rjs +1 -1
- data/app/views/versions/destroy.rjs +6 -2
- data/app/views/versions/diff.rjs +1 -1
- data/app/views/versions/edit.rhtml +14 -6
- data/app/views/versions/preview.rjs +1 -1
- data/app/views/versions/show.rjs +1 -1
- data/app/views/virtual_classes/_add.erb +1 -1
- data/app/views/virtual_classes/_form.erb +15 -10
- data/app/views/virtual_classes/_li.erb +13 -7
- data/app/views/virtual_classes/create.rjs +2 -2
- data/app/views/virtual_classes/edit.html.erb +7 -0
- data/app/views/virtual_classes/index.erb +2 -2
- data/app/views/zafu/default/Node-+adminLayout.zafu +47 -0
- data/app/views/zafu/default/Node-+index.zafu +1 -0
- data/app/views/{templates/defaults/+login.zafu → zafu/default/Node-+login.zafu} +9 -7
- data/app/views/zafu/default/Node-+notFound.zafu +14 -0
- data/app/views/zafu/default/Node-+popupLayout.zafu +24 -0
- data/app/views/zafu/default/Node-+search.zafu +23 -0
- data/app/views/zafu/default/Node.zafu +95 -0
- data/bin/zena +0 -2
- data/bricks/captcha/lib/bricks/captcha.rb +62 -0
- data/bricks/captcha/zena/init.rb +11 -0
- data/bricks/data2pdf/.document +5 -0
- data/bricks/data2pdf/README +19 -0
- data/bricks/data2pdf/Rakefile +36 -0
- data/bricks/data2pdf/VERSION +1 -0
- data/bricks/data2pdf/lib/data2pdf.rb +60 -0
- data/bricks/data2pdf/lib/engines/prince.rb +39 -0
- data/bricks/data2pdf/lib/engines/xhtml2pdf.rb +41 -0
- data/bricks/data2pdf/lib/install.rb +111 -0
- data/bricks/data2pdf/test/engines/test_prince.rb +14 -0
- data/bricks/data2pdf/test/engines/test_xhtml2pdf.rb +14 -0
- data/bricks/data2pdf/test/fixtures/application.css +241 -0
- data/bricks/data2pdf/test/fixtures/contact.html +153 -0
- data/bricks/data2pdf/test/fixtures/pisa-default.css +207 -0
- data/bricks/data2pdf/test/fixtures/sheet1.css +207 -0
- data/bricks/data2pdf/test/fixtures/sheet2.css +207 -0
- data/bricks/data2pdf/test/fixtures/simple-html.html +337 -0
- data/bricks/data2pdf/test/fixtures/simple-text.txt +1 -0
- data/bricks/data2pdf/test/helper.rb +23 -0
- data/bricks/data2pdf/test/shoulda_macros/shoulda_data2pdf.rb +91 -0
- data/bricks/data2pdf/test/unit/test_rendering.rb +37 -0
- data/bricks/math/{patch/application_helper.rb → lib/bricks/math.rb} +0 -4
- data/bricks/math/zena/init.rb +4 -0
- data/bricks/sphinx/README +2 -2
- data/bricks/sphinx/lib/use_sphinx.rb +7 -11
- data/bricks/sphinx/{misc → zena}/deploy.rb +0 -0
- data/bricks/sphinx/{patch/node.rb → zena/init.rb} +1 -3
- data/bricks/sphinx/{migrate → zena/migrate}/20091102171258_add_delta_for_sphinx.rb +0 -0
- data/bricks/sphinx/{misc → zena}/sphinx.yml +0 -0
- data/bricks/sphinx/{misc → zena}/tasks.rb +0 -0
- data/bricks/tags/lib/{has_tags.rb → bricks/tags.rb} +12 -24
- data/bricks/tags/zena/init.rb +21 -0
- data/bricks/tags/{test → zena/test}/sites/zena/links.yml +0 -0
- data/bricks/tags/{test → zena/test}/unit/tags_test.rb +1 -1
- data/bricks/tags/zena/test/zafu/tags.yml +41 -0
- data/bricks/worker/README +2 -2
- data/bricks/worker/{misc → zena}/deploy.rb +0 -0
- data/bricks/worker/{misc → zena}/init.rb +2 -1
- data/bricks/worker/{migrate → zena/migrate}/20091104191643_create_delayed_jobs_table.rb +0 -0
- data/bricks/worker/{misc → zena}/tasks.rb +0 -0
- data/bricks/worker/{misc → zena}/worker +0 -0
- data/config/bricks.yml +2 -0
- data/config/deploy.rb +2 -7
- data/config/environment.rb +3 -5
- data/config/gems.yml +9 -4
- data/db/20100628074512_zena0x_to1x.rb +223 -0
- data/db/init/base/help.en.zml +3 -3
- data/db/init/base/help.fr.zml +3 -3
- data/db/init/base/skins.zml +2 -2
- data/db/init/base/skins/default.zml +4 -4
- data/db/init/base/skins/default/Node-+adminLayout.zafu +8 -7
- data/db/init/base/skins/default/Node-+login.zafu +9 -7
- data/db/init/base/skins/default/Node-+search.zafu +4 -1
- data/db/init/base/skins/default/Node-tree.zafu +3 -3
- data/db/init/base/skins/default/Node.zafu +20 -20
- data/db/init/base/skins/default/Project.zafu +1 -1
- data/db/init/base/skins/default/notes.zafu +5 -5
- data/db/init/base/skins/default/style.css +17 -12
- data/db/migrate/001_create_base.rb +1 -1
- data/db/migrate/008_user_status.rb +1 -1
- data/db/migrate/020_create_participation.rb +3 -3
- data/db/migrate/024_correct_vclass_kpath.rb +5 -3
- data/db/migrate/025_move_tag_into_vclass.rb +7 -5
- data/db/migrate/030_redit_auto_publish_site_settings.rb +2 -2
- data/db/migrate/032_caches_context_as_hash.rb +4 -2
- data/db/migrate/046_fix_zazen_image_tag.rb +2 -2
- data/db/migrate/047_change_default_link_id_to_zero.rb +4 -2
- data/db/migrate/20090825201159_insert_zero_link.rb +1 -1
- data/db/migrate/20090924141459_zafu_fix_sept09.rb +2 -2
- data/db/migrate/20100125062254_add_dynamo_to_version.rb +9 -0
- data/db/migrate/20100201133242_remove_default_status_on_version.rb +9 -0
- data/db/migrate/20100208194210_create_attachments.rb +17 -0
- data/db/migrate/20100210112319_change_dynamo_to_property.rb +9 -0
- data/db/migrate/20100320145726_transform_template_contents_into_index.rb +13 -0
- data/db/migrate/20100328125634_change_skin_name_to_id.rb +31 -0
- data/db/migrate/20100417061257_add_properties_to_sites.rb +9 -0
- data/db/migrate/20100419163149_rename_name_to_node_name.rb +9 -0
- data/db/migrate/20100422091606_change_v_class_table_into_roles.rb +27 -0
- data/db/migrate/20100422094048_node_habtm_roles.rb +13 -0
- data/db/migrate/20100422115935_create_columns.rb +15 -0
- data/db/migrate/20100513181529_add_site_id_to_columns.rb +9 -0
- data/db/migrate/20100519091711_add_index_definition_to_columns.rb +9 -0
- data/db/migrate/20100519091940_create_idx_nodes_string.rb +14 -0
- data/db/migrate/20100519232432_create_idx_nodes_ml_string.rb +15 -0
- data/db/migrate/20100525113858_add_porperties_to_users.rb +9 -0
- data/db/migrate/20100526090140_renamed_contact_model_to_base_contact.rb +13 -0
- data/db/migrate/20100527130937_change_column_index_to_string.rb +9 -0
- data/db/migrate/20100531135128_add_fulltext_builder_fields.rb +28 -0
- data/doc/zafu_changes.yml +2 -2
- data/lib/bricks/loader.rb +48 -26
- data/lib/exif_data.rb +21 -1
- data/lib/gettext_strings.rb +8 -1
- data/lib/tasks/zena.rake +55 -20
- data/lib/version_off.rb +323 -0
- data/lib/zazen_parser.rb +9 -0
- data/lib/zena.rb +13 -14
- data/lib/zena/acts/enrollable.rb +232 -0
- data/lib/zena/acts/secure.rb +86 -506
- data/lib/zena/acts/secure_node.rb +483 -0
- data/lib/zena/acts/serializable.rb +149 -0
- data/lib/zena/app.rb +36 -23
- data/lib/zena/code_syntax.rb +26 -2
- data/lib/zena/controller/test_case.rb +23 -2
- data/lib/zena/core_ext/file_utils.rb +3 -3
- data/lib/zena/core_ext/string.rb +2 -2
- data/lib/zena/db.rb +180 -24
- data/lib/zena/deploy.rb +140 -183
- data/lib/zena/deploy/awstats.conf.rhtml +4 -4
- data/lib/zena/deploy/httpd.rhtml +1 -2
- data/lib/zena/deploy/stats.vhost.rhtml +7 -7
- data/lib/zena/deploy/vhost.rhtml +1 -1
- data/lib/zena/deploy/vhost_www.rhtml +4 -4
- data/lib/zena/foxy_parser.rb +345 -295
- data/lib/zena/info.rb +1 -2
- data/lib/zena/integration/test_case.rb +70 -0
- data/lib/zena/loader/yaml_loader.rb +80 -0
- data/lib/zena/migrator.rb +2 -2
- data/lib/zena/parser.rb +19 -17
- data/lib/zena/parser/zafu_rules.rb +7 -0
- data/lib/zena/parser/zafu_tags.rb +2 -2
- data/lib/zena/parser/zazen_rules.rb +9 -29
- data/lib/zena/parser/zena_rules.rb +2 -2
- data/lib/zena/refactor/act_as_content.rb +6 -0
- data/lib/zena/routes.rb +9 -3
- data/lib/zena/site_worker.rb +48 -0
- data/lib/zena/test_controller.rb +49 -12
- data/lib/zena/use.rb +47 -0
- data/lib/zena/use/action.rb +230 -0
- data/lib/zena/use/ajax.rb +287 -13
- data/lib/zena/use/authlogic.rb +28 -12
- data/lib/zena/use/calendar.rb +2 -2
- data/lib/zena/use/conditional.rb +41 -0
- data/lib/zena/use/context.rb +187 -0
- data/lib/zena/use/dates.rb +87 -30
- data/lib/zena/use/display.rb +598 -0
- data/lib/zena/use/dyn_attributes.rb +4 -4
- data/lib/zena/use/error_rendering.rb +3 -1
- data/lib/zena/use/fixtures.rb +56 -22
- data/lib/zena/use/forms.rb +584 -0
- data/lib/zena/use/fulltext.rb +90 -0
- data/lib/zena/use/grid.rb +12 -7
- data/lib/zena/use/html_tags.rb +8 -459
- data/lib/zena/use/i18n.rb +172 -109
- data/lib/zena/use/image_builder.rb +1 -2
- data/lib/zena/use/ml_index.rb +56 -0
- data/lib/zena/use/nested_attributes_alias.rb +2 -2
- data/lib/zena/use/node_name.rb +94 -0
- data/lib/zena/use/query_builder.rb +355 -0
- data/lib/zena/use/query_comment.rb +63 -73
- data/lib/zena/use/query_node.rb +404 -317
- data/lib/zena/use/recursion.rb +71 -0
- data/lib/zena/use/refactor.rb +27 -40
- data/lib/zena/use/relations.rb +9 -3
- data/lib/zena/use/rendering.rb +143 -116
- data/lib/zena/use/search.rb +79 -21
- data/lib/zena/use/test_helper.rb +17 -9
- data/lib/zena/use/upload.rb +1 -1
- data/lib/zena/use/urls.rb +534 -28
- data/lib/zena/use/version_hash.rb +154 -0
- data/lib/zena/use/workflow.rb +635 -0
- data/lib/zena/use/zafu_attributes.rb +205 -0
- data/lib/zena/use/zafu_eval.rb +21 -0
- data/lib/zena/use/zafu_safe_definitions.rb +36 -0
- data/lib/zena/use/zafu_templates.rb +459 -0
- data/lib/zena/use/zazen.rb +53 -23
- data/lib/zena/view/test_case.rb +56 -7
- data/lib/zena/webdav_adapter.rb +8 -8
- data/lib/zena/zafu_compiler.rb +25 -0
- data/locale/de/LC_MESSAGES/zena.mo +0 -0
- data/locale/de/zena.mo +0 -0
- data/locale/de/zena.po +920 -781
- data/locale/en/LC_MESSAGES/zena.mo +0 -0
- data/locale/en/zena.mo +0 -0
- data/locale/en/zena.po +530 -405
- data/locale/fr/LC_MESSAGES/zena.mo +0 -0
- data/locale/fr/zena.mo +0 -0
- data/locale/fr/zena.po +588 -432
- data/locale/zena.pot +391 -353
- data/old_zafu/action.rb +129 -0
- data/{lib/zafu → old_zafu}/ajax.rb +0 -24
- data/{lib/zafu → old_zafu}/attributes.rb +2 -2
- data/{lib/zafu → old_zafu}/calendar.rb +1 -1
- data/{lib/zafu → old_zafu}/context.rb +4 -8
- data/{lib/zafu → old_zafu}/core/html.rb +1 -1
- data/old_zafu/core/move_to_parser.rb +74 -0
- data/old_zafu/dates.rb +20 -0
- data/{lib/zafu → old_zafu}/display.rb +33 -146
- data/{lib/zafu → old_zafu}/eval.rb +0 -0
- data/{lib/zafu → old_zafu}/experimental.rb +1 -1
- data/{lib/zafu → old_zafu}/i18n.rb +1 -1
- data/{lib/zafu → old_zafu}/meta.rb +0 -0
- data/old_zafu/query_node.rb +278 -0
- data/{lib/zafu → old_zafu}/refactor.rb +2 -12
- data/old_zafu/support/context.rb +146 -0
- data/{lib/zafu → old_zafu}/support/dom.rb +1 -43
- data/{lib/zafu → old_zafu}/support/erb.rb +0 -0
- data/{lib/zafu → old_zafu}/support/flow.rb +1 -13
- data/old_zafu/support/forms.rb +7 -0
- data/old_zafu/support/links.rb +75 -0
- data/{lib → old_zafu}/zafu_parser.rb +2 -2
- data/public/images/attach_window.png +0 -0
- data/public/images/dettach_window.png +0 -0
- data/public/images/ext/{contact.png → basecontact.png} +0 -0
- data/public/images/toggle_off.png +0 -0
- data/public/images/toggle_on.png +0 -0
- data/public/images/window/bottom_left.png +0 -0
- data/public/images/window/bottom_mid.png +0 -0
- data/public/images/window/bottom_right.png +0 -0
- data/public/images/window/center_left.png +0 -0
- data/public/images/window/center_right.png +0 -0
- data/public/images/window/close.png +0 -0
- data/public/images/window/maximize.png +0 -0
- data/public/images/window/minimize.png +0 -0
- data/public/images/window/overlay.png +0 -0
- data/public/images/window/sizer.png +0 -0
- data/public/images/window/top_left.png +0 -0
- data/public/images/window/top_mid.png +0 -0
- data/public/images/window/top_right.png +0 -0
- data/public/javascripts/builder.js +1 -3
- data/public/javascripts/controls.js +3 -5
- data/public/javascripts/dragdrop.js +5 -8
- data/public/javascripts/effects.js +6 -15
- data/public/javascripts/prototype.js +1574 -1020
- data/public/javascripts/scriptaculous.js +13 -7
- data/public/javascripts/slider.js +5 -7
- data/public/javascripts/sound.js +6 -4
- data/public/javascripts/unittest.js +69 -71
- data/public/javascripts/window.js +1843 -0
- data/public/javascripts/zena.js +216 -16
- data/public/stylesheets/admin.css +18 -13
- data/public/stylesheets/default.css +18 -17
- data/public/stylesheets/popup.css +4 -4
- data/public/stylesheets/window.css +155 -0
- data/public/stylesheets/zena.css +9 -8
- data/test/custom_queries/complex.host.yml +8 -8
- data/test/fixtures/files/Node-test.zafu +11 -11
- data/test/fixtures/files/import.tgz +0 -0
- data/test/fixtures/files/simple.zml.gz +0 -0
- data/test/fixtures/import/photos.en.zml +3 -3
- data/test/fixtures/import/photos/bird.jpg.en.zml +1 -1
- data/test/fixtures/import/photos/bird.jpg.fr.zml +1 -1
- data/test/fixtures/import/simple.zml +2 -2
- data/test/functional/application_controller_test.rb +2 -41
- data/test/functional/columns_controller_test.rb +140 -0
- data/test/functional/data_entries_controller_test.rb +1 -1
- data/test/functional/documents_controller_test.rb +88 -5
- data/test/functional/nodes_controller_commit_test.rb +71 -0
- data/test/functional/nodes_controller_test.rb +393 -93
- data/test/functional/note_controller_test.rb +5 -5
- data/test/functional/relations_controller_test.rb +1 -1
- data/test/functional/users_controller_test.rb +72 -14
- data/test/functional/versions_controller_test.rb +9 -8
- data/test/functional/virtual_classes_controller_test.rb +142 -65
- data/test/integration/multiple_hosts_test.rb +28 -20
- data/test/integration/navigation_test.rb +121 -83
- data/test/integration/query_node/basic.yml +128 -0
- data/test/integration/query_node/comments.yml +23 -0
- data/test/integration/query_node/complex.yml +111 -0
- data/test/integration/query_node/dates.yml +22 -0
- data/test/integration/query_node/errors.yml +12 -0
- data/test/integration/query_node/filters.yml +123 -0
- data/test/integration/query_node/properties.yml +41 -0
- data/test/integration/query_node/relations.yml +75 -0
- data/test/integration/query_node_test.rb +189 -0
- data/test/integration/xml_api_test.rb +166 -0
- data/test/integration/zafu_compiler/action.yml +67 -0
- data/test/integration/zafu_compiler/ajax.yml +263 -0
- data/test/{unit/zena/zena_tags → integration/zafu_compiler}/apphelper.yml +0 -0
- data/test/integration/zafu_compiler/asset.yml +13 -0
- data/test/integration/zafu_compiler/basic.yml +518 -0
- data/test/integration/zafu_compiler/calendar.yml +35 -0
- data/test/{unit/zena/zena_tags → integration/zafu_compiler}/complex.yml +16 -16
- data/test/integration/zafu_compiler/conditional.yml +173 -0
- data/test/{unit/zena/zena_tags → integration/zafu_compiler}/data.yml +3 -3
- data/test/integration/zafu_compiler/dates.yml +58 -0
- data/test/integration/zafu_compiler/display.yml +273 -0
- data/test/integration/zafu_compiler/errors.yml +79 -0
- data/test/{unit/zena/zena_tags → integration/zafu_compiler}/eval.yml +6 -2
- data/test/integration/zafu_compiler/forms.yml +130 -0
- data/test/integration/zafu_compiler/i18n.yml +107 -0
- data/test/integration/zafu_compiler/later.yml +31 -0
- data/test/integration/zafu_compiler/off/off.yml +15 -0
- data/test/integration/zafu_compiler/recursion.yml +28 -0
- data/test/integration/zafu_compiler/relations.yml +487 -0
- data/test/integration/zafu_compiler/roles.yml +28 -0
- data/test/{unit/zena/zena_tags → integration/zafu_compiler}/rubyless.yml +10 -9
- data/test/integration/zafu_compiler/safe_definitions.yml +65 -0
- data/test/integration/zafu_compiler/search.yml +13 -0
- data/test/integration/zafu_compiler/security.yml +30 -0
- data/test/integration/zafu_compiler/site.yml +14 -0
- data/test/integration/zafu_compiler/urls.yml +189 -0
- data/test/integration/zafu_compiler/user.yml +32 -0
- data/test/integration/zafu_compiler/version.yml +47 -0
- data/test/integration/zafu_compiler/workflow.yml +36 -0
- data/test/integration/zafu_compiler/zafu_attributes.yml +169 -0
- data/test/{unit/zena/zena_tags → integration/zafu_compiler}/zazen.yml +7 -3
- data/test/{unit/zena/zena_tags_test.rb → integration/zafu_compiler_test.rb} +137 -57
- data/test/sites/complex/nodes.yml +48 -47
- data/test/sites/complex/{virtual_classes.yml → roles.yml} +2 -1
- data/test/sites/ocean/nodes.yml +7 -7
- data/test/sites/ocean/versions.yml +30 -21
- data/test/sites/zena/columns.yml +12 -0
- data/test/sites/zena/nodes.yml +33 -32
- data/test/sites/zena/{virtual_classes.yml → roles.yml} +11 -1
- data/test/sites/zena/sites.yml +4 -1
- data/test/sites/zena/users.yml +5 -4
- data/test/sites/zena/versions.yml +398 -279
- data/test/test_helper.rb +2 -1
- data/test/test_zena.rb +3 -8
- data/test/unit/after_commit_test.rb +103 -0
- data/test/unit/attachment_test.rb +266 -0
- data/test/unit/base_contact_test.rb +242 -0
- data/test/unit/cached_page_test.rb +6 -6
- data/test/unit/column_test.rb +77 -0
- data/test/unit/comment_test.rb +1 -1
- data/test/unit/data_entry_test.rb +8 -2
- data/test/unit/document_test.rb +393 -211
- data/test/unit/exif_data_test.rb +1 -1
- data/test/unit/iformat_test.rb +9 -9
- data/test/unit/image_test.rb +358 -284
- data/test/unit/multi_version_test.rb +4 -0
- data/test/unit/multiversion_test.rb +2 -1013
- data/test/unit/node_name_test.rb +137 -0
- data/test/unit/node_test.rb +374 -461
- data/test/unit/note_test.rb +23 -23
- data/test/unit/page_test.rb +23 -23
- data/test/unit/project_test.rb +2 -2
- data/test/unit/relation_proxy_test.rb +25 -6
- data/test/unit/relation_test.rb +156 -24
- data/test/unit/role_test.rb +122 -0
- data/test/unit/section_test.rb +2 -2
- data/test/unit/site_test.rb +48 -12
- data/test/unit/skin_test.rb +0 -13
- data/test/unit/template_test.rb +361 -314
- data/test/unit/text_document_test.rb +105 -33
- data/test/unit/transparent_version_test.rb +4 -0
- data/test/unit/user_test.rb +10 -10
- data/test/unit/version_test.rb +209 -301
- data/test/unit/virtual_class_test.rb +21 -29
- data/test/unit/workflow_test.rb +1075 -0
- data/test/unit/zena/acts/enrollable_test.rb +211 -0
- data/test/unit/{secure_test.rb → zena/acts/secure_test.rb} +190 -105
- data/test/unit/zena/acts/serializable_test.rb +85 -0
- data/test/unit/zena/db_test.rb +27 -14
- data/test/unit/zena/parser/zazen.yml +1 -1
- data/test/unit/zena/use/action_test.rb +109 -0
- data/test/unit/zena/use/calendar_test.rb +8 -8
- data/test/unit/zena/use/dates_test.rb +10 -0
- data/test/unit/zena/use/dates_view_methods_test.rb +8 -12
- data/test/unit/zena/use/fulltext_test.rb +82 -0
- data/test/unit/zena/use/html_tags_test.rb +225 -201
- data/test/unit/zena/use/i18n_test.rb +56 -26
- data/test/unit/zena/use/ml_index_test.rb +129 -0
- data/test/unit/zena/use/nested_attributes_alias_view_test.rb +10 -10
- data/test/unit/zena/use/query_node_test.rb +104 -0
- data/test/unit/zena/use/refactor_test.rb +4 -15
- data/test/unit/zena/use/rendering_test.rb +23 -16
- data/test/unit/zena/use/upload_test.rb +2 -2
- data/test/unit/zena/use/urls_test.rb +2 -0
- data/test/unit/zena/use/version_hash_test.rb +126 -0
- data/test/unit/zena/use/zafu_template_test.rb +135 -0
- data/test/unit/zena/use/zazen_test.rb +85 -61
- data/vendor/plugins/gettext_i18n_rails/README.markdown +26 -22
- data/vendor/plugins/gettext_i18n_rails/Rakefile +31 -5
- data/vendor/plugins/gettext_i18n_rails/VERSION +1 -0
- data/vendor/plugins/gettext_i18n_rails/gettext_i18n_rails.gemspec +64 -0
- data/vendor/plugins/gettext_i18n_rails/init.rb +7 -3
- data/vendor/plugins/gettext_i18n_rails/lib/gettext_i18n_rails.rb +5 -6
- data/vendor/plugins/gettext_i18n_rails/lib/gettext_i18n_rails/active_record.rb +6 -2
- data/vendor/plugins/gettext_i18n_rails/lib/gettext_i18n_rails/backend.rb +1 -1
- data/vendor/plugins/gettext_i18n_rails/lib/gettext_i18n_rails/model_attributes_finder.rb +2 -2
- data/vendor/plugins/gettext_i18n_rails/{tasks → lib/tasks}/gettext_rails_i18n.rake +10 -9
- data/vendor/plugins/gettext_i18n_rails/spec/gettext_i18n_rails/action_controller_spec.rb +7 -3
- data/vendor/plugins/gettext_i18n_rails/spec/gettext_i18n_rails/active_record_spec.rb +7 -5
- data/vendor/plugins/gettext_i18n_rails/spec/gettext_i18n_rails/backend_spec.rb +7 -7
- data/vendor/plugins/gettext_i18n_rails/spec/gettext_i18n_rails_spec.rb +4 -0
- data/vendor/plugins/gettext_i18n_rails/spec/spec_helper.rb +11 -9
- data/vendor/plugins/mysql_timezone_utc/init.rb +1 -0
- data/vendor/plugins/mysql_timezone_utc/lib/mysql_timezone_utc.rb +14 -0
- data/vendor/plugins/postgresql_timezone_utc/init.rb +1 -0
- data/vendor/plugins/postgresql_timezone_utc/lib/postgresql_timezone_utc.rb +14 -0
- data/zena.gemspec +281 -123
- metadata +354 -160
- data/app/models/contact.rb +0 -32
- data/app/models/document_version.rb +0 -13
- data/app/models/image_version.rb +0 -21
- data/app/models/text_document_version.rb +0 -29
- data/app/views/templates/defaults/+adminLayout.zafu +0 -69
- data/bricks/captcha/patch/application_controller.rb +0 -10
- data/bricks/captcha/patch/application_helper.rb +0 -32
- data/bricks/captcha/patch/site.rb +0 -2
- data/bricks/captcha/zafu/captcha.rb +0 -29
- data/bricks/tags/patch/node.rb +0 -15
- data/bricks/tags/test/zafu/tags.yml +0 -40
- data/db/schema.rb +0 -295
- data/lib/zafu/action.rb +0 -285
- data/lib/zafu/core/move_to_parser.rb +0 -167
- data/lib/zafu/dates.rb +0 -58
- data/lib/zafu/support/context.rb +0 -265
- data/lib/zafu/support/forms.rb +0 -461
- data/lib/zafu/support/links.rb +0 -306
- data/lib/zena/acts/multiversion.rb +0 -755
- data/lib/zena/fix/mysql_connection.rb +0 -17
- data/lib/zena/use/query_node_finders.rb +0 -91
- data/lib/zena/use/zafu.rb +0 -514
- data/test/helpers/query_node/basic.yml +0 -149
- data/test/helpers/query_node/comments.yml +0 -18
- data/test/helpers/query_node/complex.yml +0 -98
- data/test/helpers/query_node/filters.yml +0 -110
- data/test/helpers/query_node/relations.yml +0 -43
- data/test/helpers/query_node_test.rb +0 -116
- data/test/sites/ocean/contact_contents.yml +0 -19
- data/test/sites/ocean/template_contents.yml +0 -8
- data/test/sites/zena/contact_contents.yml +0 -55
- data/test/sites/zena/document_contents.yml +0 -76
- data/test/sites/zena/dyn_attributes.yml +0 -43
- data/test/sites/zena/template_contents.yml +0 -103
- data/test/unit/contact_content_test.rb +0 -33
- data/test/unit/contact_test.rb +0 -39
- data/test/unit/contact_version_test.rb +0 -48
- data/test/unit/document_content_test.rb +0 -110
- data/test/unit/document_version_test.rb +0 -11
- data/test/unit/dyn_attributes_test.rb +0 -229
- data/test/unit/image_content_test.rb +0 -154
- data/test/unit/image_version_test.rb +0 -18
- data/test/unit/template_content_test.rb +0 -9
- data/test/unit/text_document_version_test.rb +0 -37
- data/test/unit/zena/use/zafu_test.rb +0 -41
- data/test/unit/zena/zena_tags/ajax.yml +0 -233
- data/test/unit/zena/zena_tags/basic.yml +0 -1306
- data/test/unit/zena/zena_tags/errors.yml +0 -71
- data/test/unit/zena/zena_tags/relations.yml +0 -405
data/.gitignore
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
.DS_Store
|
|
2
|
+
restart.txt
|
|
2
3
|
config/deploy_config.rb
|
|
3
4
|
config/database.yml
|
|
5
|
+
config/mysql.yml
|
|
6
|
+
config/psql.yml
|
|
7
|
+
config/sqlite3.yml
|
|
4
8
|
config/*.sphinx.conf
|
|
9
|
+
coverage
|
|
10
|
+
db/*.sqlite3
|
|
11
|
+
db/development_structure.sql
|
|
12
|
+
db/schema.rb
|
|
5
13
|
db/sphinx
|
|
6
14
|
db/development_structure.sql
|
|
7
15
|
doc/coverage
|
|
@@ -16,6 +24,11 @@ sandbox
|
|
|
16
24
|
sites/*
|
|
17
25
|
test/fixtures/*.yml
|
|
18
26
|
tmp/*
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
vendor/
|
|
27
|
+
vendor/apache2_upload_progress/*
|
|
28
|
+
zena_console.rb
|
|
29
|
+
vendor/plugins/property
|
|
30
|
+
vendor/plugins/querybuilder
|
|
31
|
+
vendor/plugins/rubyless
|
|
32
|
+
vendor/plugins/versions
|
|
33
|
+
vendor/plugins/yamltest
|
|
34
|
+
vendor/plugins/zafu
|
data/CREDITS
CHANGED
|
@@ -9,19 +9,23 @@ tablekit table editor
|
|
|
9
9
|
Andrew Tetlaw & Millstream Web Software
|
|
10
10
|
http://www.millstream.com.au/view/code/tablekit/
|
|
11
11
|
add/remove columns and drag&drop support added by Gaspard Bucher
|
|
12
|
-
|
|
12
|
+
|
|
13
|
+
javascript window
|
|
14
|
+
-----------------
|
|
15
|
+
Sébastien Gruhier
|
|
16
|
+
http://prototype-window.xilinus.com
|
|
17
|
+
|
|
13
18
|
soft icons
|
|
14
19
|
----------
|
|
15
20
|
Mark James
|
|
16
21
|
http://www.famfamfam.com/lab/icons/silk/
|
|
17
|
-
|
|
22
|
+
|
|
18
23
|
xspf mp3 player
|
|
19
24
|
---------------
|
|
20
25
|
Fabricio Zuardi
|
|
21
26
|
http://musicplayer.sourceforge.net/
|
|
22
|
-
|
|
27
|
+
|
|
23
28
|
upload progress bar (sample application demo)
|
|
24
29
|
-------------------
|
|
25
30
|
Tim
|
|
26
31
|
http://itblog.mcgeecorp.com/articles/2007/05/15/mongrel-upload-progress-demo
|
|
27
|
-
|
data/History.txt
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
== 0.
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* 1 minor enhancement
|
|
15
|
-
* fixed rails version in /bin/zena
|
|
1
|
+
== 1.0.0.beta1 2010-07-23
|
|
2
|
+
|
|
3
|
+
* major changes
|
|
4
|
+
* complete rewrite of the storage engine (Property gem)
|
|
5
|
+
* rewrite of the template engine Zafu to use RubyLess
|
|
6
|
+
* rewrite of the query compilation engine to use RubyLess and offer better introspection
|
|
7
|
+
* XML API with support for query builder queries
|
|
8
|
+
* enhanced attributes support (indexing, inheritance, type)
|
|
9
|
+
* changed bricks layout to be like gems
|
|
10
|
+
* pdf generation support
|
|
11
|
+
* started PostgreSQL support
|
|
12
|
+
* inline JS windows instead of popup with attach/dettach support
|
|
16
13
|
|
|
17
14
|
== 0.16.6 2010-04-23
|
|
18
15
|
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
class ColumnsController < ApplicationController
|
|
2
|
+
before_filter :visitor_node
|
|
3
|
+
before_filter :find_column, :except => [:index, :create, :new, :import]
|
|
4
|
+
before_filter :check_is_admin
|
|
5
|
+
layout :admin_layout
|
|
6
|
+
|
|
7
|
+
# GET /columns
|
|
8
|
+
# GET /columns.xml
|
|
9
|
+
def index
|
|
10
|
+
secure(Column) do
|
|
11
|
+
@columns = Column.paginate(:all, :order => 'name', :per_page => 20, :page => params[:page])
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
@column = Column.new
|
|
15
|
+
|
|
16
|
+
respond_to do |format|
|
|
17
|
+
format.html # index.html.erb
|
|
18
|
+
format.xml { render :xml => @columns }
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def export
|
|
23
|
+
data = secure(Column) do
|
|
24
|
+
Column.export
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
### TODO
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def import
|
|
31
|
+
attachment = params[:attachment]
|
|
32
|
+
if attachment.nil?
|
|
33
|
+
flass[:error] = "Upload failure: no definitions."
|
|
34
|
+
redirect_to :action => :index
|
|
35
|
+
else
|
|
36
|
+
data = YAML.load(attachment.read) rescue nil
|
|
37
|
+
if data.nil?
|
|
38
|
+
flash[:error] = "Could not parse yaml document"
|
|
39
|
+
redirect_to :action => :index
|
|
40
|
+
else
|
|
41
|
+
@columns = secure(Column) { Column.import(data) }.paginate(:per_page => 200)
|
|
42
|
+
@column = VirtualClass.new('')
|
|
43
|
+
respond_to do |format|
|
|
44
|
+
format.html { render :action => 'index' }
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# GET /columns/1
|
|
51
|
+
# GET /columns/1.xml
|
|
52
|
+
def show
|
|
53
|
+
|
|
54
|
+
respond_to do |format|
|
|
55
|
+
format.html # show.html.erb
|
|
56
|
+
format.js
|
|
57
|
+
format.xml { render :xml => @column }
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# GET /columns/new
|
|
62
|
+
# GET /columns/new.xml
|
|
63
|
+
def new
|
|
64
|
+
@column = Column.new
|
|
65
|
+
|
|
66
|
+
respond_to do |format|
|
|
67
|
+
format.html # new.html.erb
|
|
68
|
+
format.xml { render :xml => @column }
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# GET /columns/1/edit
|
|
73
|
+
def edit
|
|
74
|
+
respond_to do |format|
|
|
75
|
+
format.html { render :partial => 'columns/form' }
|
|
76
|
+
format.js { render :partial => 'columns/form', :layout => false }
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# POST /columns
|
|
81
|
+
# POST /columns.xml
|
|
82
|
+
def create
|
|
83
|
+
@column = Column.new(params[:column])
|
|
84
|
+
|
|
85
|
+
respond_to do |format|
|
|
86
|
+
if @column.save
|
|
87
|
+
flash[:notice] = 'Column was successfully created.'
|
|
88
|
+
format.html { redirect_to(@column) }
|
|
89
|
+
format.js
|
|
90
|
+
format.xml { render :xml => @column, :status => :created, :location => @column }
|
|
91
|
+
else
|
|
92
|
+
format.html { render :action => "new" }
|
|
93
|
+
format.js
|
|
94
|
+
format.xml { render :xml => @column.errors, :status => :unprocessable_entity }
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# PUT /columns/1
|
|
100
|
+
# PUT /columns/1.xml
|
|
101
|
+
def update
|
|
102
|
+
respond_to do |format|
|
|
103
|
+
if @column.update_attributes(params[:column])
|
|
104
|
+
flash[:notice] = 'Column was successfully updated.'
|
|
105
|
+
format.html { redirect_to(@column) }
|
|
106
|
+
format.xml { head :ok }
|
|
107
|
+
else
|
|
108
|
+
format.html { render :action => "edit" }
|
|
109
|
+
format.xml { render :xml => @column.errors, :status => :unprocessable_entity }
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# DELETE /columns/1
|
|
115
|
+
# DELETE /columns/1.xml
|
|
116
|
+
def destroy
|
|
117
|
+
@column.destroy
|
|
118
|
+
|
|
119
|
+
respond_to do |format|
|
|
120
|
+
format.html { redirect_to(columns_url) }
|
|
121
|
+
format.js
|
|
122
|
+
format.xml { head :ok }
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
protected
|
|
127
|
+
def find_column
|
|
128
|
+
@column = secure!(Column) { Column.find(params[:id])}
|
|
129
|
+
end
|
|
130
|
+
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
class DocumentsController < ApplicationController
|
|
2
|
-
before_filter :find_node, :except => [ :get_uf, :upload_progress ]
|
|
2
|
+
before_filter :find_node, :except => [ :get_uf, :upload_progress, :create ]
|
|
3
3
|
|
|
4
4
|
skip_before_filter :set_lang, :only => :upload_progress
|
|
5
5
|
skip_before_filter :authorize, :only => :upload_progress
|
|
@@ -13,6 +13,9 @@ class DocumentsController < ApplicationController
|
|
|
13
13
|
def new
|
|
14
14
|
@node = @parent.new_child(:class => Document)
|
|
15
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
|
|
18
|
+
|
|
16
19
|
respond_to do |format|
|
|
17
20
|
format.html
|
|
18
21
|
end
|
|
@@ -31,6 +34,15 @@ class DocumentsController < ApplicationController
|
|
|
31
34
|
|
|
32
35
|
respond_to do |format|
|
|
33
36
|
if @node.new_record?
|
|
37
|
+
# If skin id could not be set (invalid parent), make sure we have something to render.
|
|
38
|
+
@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
|
+
|
|
34
46
|
flash[:error] = _("Upload failed.")
|
|
35
47
|
format.html { render :action => 'new'}
|
|
36
48
|
else
|
|
@@ -47,7 +59,7 @@ class DocumentsController < ApplicationController
|
|
|
47
59
|
responds_to_parent do # execute the redirect in the iframe's parent window
|
|
48
60
|
render :update do |page|
|
|
49
61
|
if @node.new_record?
|
|
50
|
-
page.replace_html 'form_errors', error_messages_for(@node)
|
|
62
|
+
page.replace_html 'form_errors', error_messages_for(:node, :object => @node)
|
|
51
63
|
page.call 'UploadProgress.setAsError'
|
|
52
64
|
else
|
|
53
65
|
page.call 'UploadProgress.setAsFinished'
|
|
@@ -93,12 +105,12 @@ class DocumentsController < ApplicationController
|
|
|
93
105
|
def create_document
|
|
94
106
|
attrs = params['node']
|
|
95
107
|
file, error = get_attachment
|
|
96
|
-
attrs['
|
|
108
|
+
attrs['file'] = file if file
|
|
97
109
|
attrs['klass'] ||= 'Document'
|
|
98
110
|
if error
|
|
99
111
|
@node = secure!(Document) { Document.new }
|
|
100
112
|
@node.attributes = attrs
|
|
101
|
-
@node.errors.add('
|
|
113
|
+
@node.errors.add('file', error)
|
|
102
114
|
else
|
|
103
115
|
@node = secure!(Document) { Document.create_node(attrs) }
|
|
104
116
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
class GroupsController < ApplicationController
|
|
2
2
|
before_filter :check_is_admin
|
|
3
3
|
before_filter :find_group, :except => [:index, :new, :create]
|
|
4
|
-
before_filter :
|
|
4
|
+
before_filter :visitor_node
|
|
5
5
|
before_filter :get_users, :except => [:show, :update]
|
|
6
6
|
before_filter :get_groups, :except => [:show, :update, :index]
|
|
7
7
|
before_filter :filter_users_ids, :only => [:create, :update]
|
|
@@ -78,10 +78,6 @@ class GroupsController < ApplicationController
|
|
|
78
78
|
end
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
-
def find_node
|
|
82
|
-
@node = visitor.contact
|
|
83
|
-
end
|
|
84
|
-
|
|
85
81
|
def get_users
|
|
86
82
|
@users = secure!(User) { User.find(:all, :conditions => "status >= #{User::Status[:reader]}", :order=>'login') }
|
|
87
83
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
class IformatsController < ApplicationController
|
|
2
2
|
before_filter :check_is_admin
|
|
3
3
|
before_filter :find_iformat, :except => [:index, :new, :create]
|
|
4
|
-
before_filter :
|
|
4
|
+
before_filter :visitor_node
|
|
5
5
|
layout :admin_layout
|
|
6
6
|
|
|
7
7
|
def show
|
|
@@ -71,8 +71,4 @@ class IformatsController < ApplicationController
|
|
|
71
71
|
end
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
|
-
|
|
75
|
-
def find_node
|
|
76
|
-
@node = visitor.contact
|
|
77
|
-
end
|
|
78
74
|
end
|
|
@@ -18,12 +18,12 @@ Examples:
|
|
|
18
18
|
|
|
19
19
|
=end
|
|
20
20
|
class NodesController < ApplicationController
|
|
21
|
-
before_filter :check_is_admin,
|
|
21
|
+
before_filter :check_is_admin, :only => [:export]
|
|
22
22
|
before_filter :find_node, :except => [:index, :create, :not_found, :catch_all, :search]
|
|
23
23
|
before_filter :check_can_drive, :only => [:edit]
|
|
24
|
-
before_filter :check_path,
|
|
25
|
-
after_filter :change_lang,
|
|
26
|
-
layout :popup_layout,
|
|
24
|
+
before_filter :check_path, :only => [:index, :show]
|
|
25
|
+
after_filter :change_lang, :only => [:create, :update, :save_text]
|
|
26
|
+
layout :popup_layout, :only => [:edit, :import]
|
|
27
27
|
|
|
28
28
|
include Zena::Use::Grid::ControllerMethods
|
|
29
29
|
|
|
@@ -54,6 +54,7 @@ class NodesController < ApplicationController
|
|
|
54
54
|
do_search
|
|
55
55
|
respond_to do |format|
|
|
56
56
|
format.html { render_and_cache :mode => '+search', :cache => false }
|
|
57
|
+
format.xml { render :xml => @nodes ? @nodes.to_xml : []}
|
|
57
58
|
format.js
|
|
58
59
|
end
|
|
59
60
|
end
|
|
@@ -67,7 +68,8 @@ class NodesController < ApplicationController
|
|
|
67
68
|
end
|
|
68
69
|
end
|
|
69
70
|
|
|
70
|
-
# RJS method.
|
|
71
|
+
# RJS method. show.js not working... ?
|
|
72
|
+
# FIXME: remove.
|
|
71
73
|
def zafu
|
|
72
74
|
return self.update if params[:method] == 'put'
|
|
73
75
|
respond_to do |format|
|
|
@@ -108,11 +110,15 @@ class NodesController < ApplicationController
|
|
|
108
110
|
end
|
|
109
111
|
|
|
110
112
|
def show
|
|
111
|
-
|
|
112
113
|
respond_to do |format|
|
|
113
114
|
|
|
114
115
|
format.html { render_and_cache }
|
|
115
116
|
|
|
117
|
+
if !params[:prefix]
|
|
118
|
+
# /nodes/18.xml not treated the same as /en/page18.xml (render_and_cache)
|
|
119
|
+
format.xml { render :xml => @node.to_xml }
|
|
120
|
+
end
|
|
121
|
+
|
|
116
122
|
format.any do
|
|
117
123
|
if asset = params[:asset]
|
|
118
124
|
# math rendered as png, ...
|
|
@@ -121,25 +127,25 @@ class NodesController < ApplicationController
|
|
|
121
127
|
content_type = (Zena::EXT_TO_TYPE[params[:format]] || ['application/octet-stream'])[0]
|
|
122
128
|
send_file(content_path, :filename=>filename, :type => content_type, :disposition=>'inline', :x_sendfile => ENABLE_XSENDFILE)
|
|
123
129
|
cache_page(:content_path => content_path, :authenticated => @node.public?) # content_path is used to cache by creating a symlink
|
|
124
|
-
elsif @node.kind_of?(Document) && params[:format] == @node.
|
|
130
|
+
elsif @node.kind_of?(Document) && params[:format] == @node.ext
|
|
125
131
|
# Get document data (inline if possible)
|
|
126
132
|
content_path = nil
|
|
127
133
|
|
|
128
134
|
if @node.kind_of?(Image) && !Zena::Use::ImageBuilder.dummy?
|
|
129
135
|
if img_format = Iformat[params[:mode]]
|
|
130
|
-
content_path = @node.
|
|
136
|
+
content_path = @node.filepath(img_format)
|
|
131
137
|
# force creation of image data
|
|
132
|
-
@node.
|
|
138
|
+
@node.file(img_format)
|
|
133
139
|
end
|
|
134
140
|
elsif @node.kind_of?(TextDocument)
|
|
135
|
-
send_data(@node.
|
|
141
|
+
send_data(@node.text, :filename => @node.filename, :type => 'text/css', :disposition => 'inline')
|
|
136
142
|
else
|
|
137
|
-
content_path = @node.
|
|
143
|
+
content_path = @node.filepath
|
|
138
144
|
end
|
|
139
145
|
|
|
140
146
|
if content_path
|
|
141
147
|
# FIXME RAILS: remove 'stream => false' when rails streaming is fixed
|
|
142
|
-
send_file(content_path, :filename => @node.filename, :type => @node.
|
|
148
|
+
send_file(content_path, :filename => @node.filename, :type => @node.content_type, :disposition => 'inline', :stream => false, :x_sendfile => ENABLE_XSENDFILE)
|
|
143
149
|
end
|
|
144
150
|
|
|
145
151
|
cache_page(:content_path => content_path, :authenticated => @node.public?) # content_path is used to cache by creating a symlink
|
|
@@ -162,33 +168,36 @@ class NodesController < ApplicationController
|
|
|
162
168
|
attrs = params['node']
|
|
163
169
|
file, file_error = get_attachment
|
|
164
170
|
if file
|
|
165
|
-
attrs['
|
|
171
|
+
attrs['file'] = file
|
|
166
172
|
attrs['klass'] = 'Document'
|
|
167
173
|
end
|
|
168
174
|
|
|
169
175
|
@node = secure!(Node) { Node.create_node(attrs) }
|
|
170
|
-
@node.errors.add('
|
|
176
|
+
@node.errors.add('file', file_error) if file_error
|
|
171
177
|
|
|
172
178
|
respond_to do |format|
|
|
173
179
|
if @node.errors.empty?
|
|
174
180
|
flash[:notice] = 'Node was successfully created.'
|
|
175
|
-
format.html { redirect_to
|
|
181
|
+
format.html { redirect_to zen_path(@node) }
|
|
176
182
|
format.js
|
|
177
|
-
format.xml {
|
|
183
|
+
format.xml { render :xml => @node, :status => :created, :location => node_url(@node) }
|
|
178
184
|
else
|
|
179
185
|
format.html { render :action => "new" }
|
|
180
186
|
format.js
|
|
181
|
-
format.xml { render :xml => @node.errors
|
|
187
|
+
format.xml { render :xml => @node.errors, :status => :unprocessable_entity }
|
|
182
188
|
end
|
|
183
189
|
end
|
|
184
190
|
end
|
|
185
191
|
|
|
186
192
|
# modifications of the node itself (dates, groups, revert editions, etc)
|
|
187
193
|
def edit
|
|
194
|
+
@node.load_roles!
|
|
195
|
+
|
|
188
196
|
respond_to do |format|
|
|
189
197
|
format.html do
|
|
190
198
|
@title_for_layout = @node.rootpath
|
|
191
199
|
end
|
|
200
|
+
|
|
192
201
|
format.js do
|
|
193
202
|
# zafu edit
|
|
194
203
|
render :template => 'nodes/edit.rjs' # FIXME: this should not be needed. Rails bug ?
|
|
@@ -196,6 +205,34 @@ class NodesController < ApplicationController
|
|
|
196
205
|
end
|
|
197
206
|
end
|
|
198
207
|
|
|
208
|
+
def destroy
|
|
209
|
+
respond_to do |format|
|
|
210
|
+
|
|
211
|
+
format.html do
|
|
212
|
+
if @node.destroy
|
|
213
|
+
flash[:notice] = "Node destroyed."
|
|
214
|
+
redirect_to zen_path(@node.parent)
|
|
215
|
+
else
|
|
216
|
+
flash[:notice] = "Could not destroy node."
|
|
217
|
+
render :action => 'show'
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
format.xml do
|
|
222
|
+
node_xml = @node.to_xml #need to be allocated before destroying
|
|
223
|
+
if node_xml && @node.destroy
|
|
224
|
+
render :xml => node_xml, :status => 200
|
|
225
|
+
else
|
|
226
|
+
@node.errors.add(:visitor, visitor.login) if RAILS_ENV == 'development'
|
|
227
|
+
render :xml => @node.errors, :status => :unprocessable_entity
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
format.js
|
|
232
|
+
|
|
233
|
+
end
|
|
234
|
+
end
|
|
235
|
+
|
|
199
236
|
# TODO: test
|
|
200
237
|
def save_text
|
|
201
238
|
update
|
|
@@ -253,11 +290,12 @@ class NodesController < ApplicationController
|
|
|
253
290
|
|
|
254
291
|
def update
|
|
255
292
|
file, file_error = get_attachment
|
|
256
|
-
params['node']['
|
|
293
|
+
params['node']['file'] = file if file
|
|
257
294
|
|
|
258
295
|
@v_status_before_update = @node.v_status
|
|
259
296
|
@node.update_attributes_with_transformation(params['node'])
|
|
260
|
-
|
|
297
|
+
# What is this 'extfile' thing ?
|
|
298
|
+
@node.errors.add('extfile', file_error) if file_error
|
|
261
299
|
|
|
262
300
|
if @node.errors.empty?
|
|
263
301
|
flash.now[:notice] = _('node updated')
|
|
@@ -273,8 +311,8 @@ class NodesController < ApplicationController
|
|
|
273
311
|
page.redirect_to edit_node_version_path(:node_id => @node[:zip], :id=>(@node.v_number || 0), :close => (params[:validate] ? true : nil))
|
|
274
312
|
end
|
|
275
313
|
end
|
|
276
|
-
end
|
|
277
|
-
|
|
314
|
+
end # parent iframe (upload)
|
|
315
|
+
elsif @node.errors.empty?
|
|
278
316
|
respond_to do |format|
|
|
279
317
|
format.html do
|
|
280
318
|
if params[:edit] == 'popup'
|
|
@@ -282,8 +320,17 @@ class NodesController < ApplicationController
|
|
|
282
320
|
else
|
|
283
321
|
redirect_to zen_path(@node, :mode => params[:mode])
|
|
284
322
|
end
|
|
285
|
-
end
|
|
323
|
+
end # html
|
|
324
|
+
|
|
286
325
|
format.js { @flash = flash }
|
|
326
|
+
|
|
327
|
+
format.xml do
|
|
328
|
+
if @node.errors.empty?
|
|
329
|
+
render :xml => @node.to_xml, :status => :ok, :location => node_url(@node)
|
|
330
|
+
else
|
|
331
|
+
render :xml => @page.errors, :status => :unprocessable_entity
|
|
332
|
+
end
|
|
333
|
+
end # xml
|
|
287
334
|
end
|
|
288
335
|
end
|
|
289
336
|
end
|
|
@@ -292,7 +339,7 @@ class NodesController < ApplicationController
|
|
|
292
339
|
# TODO: test
|
|
293
340
|
def attribute
|
|
294
341
|
method = params[:attr]
|
|
295
|
-
if (params[:pseudo_id] || params[:name]).blank? || !%w{
|
|
342
|
+
if (params[:pseudo_id] || params[:name]).blank? || !%w{title text summary name path short_path}.include?(method)
|
|
296
343
|
# Error
|
|
297
344
|
render :text => ''
|
|
298
345
|
return
|
|
@@ -315,7 +362,7 @@ class NodesController < ApplicationController
|
|
|
315
362
|
conditions << "#{kpath}%"
|
|
316
363
|
end
|
|
317
364
|
|
|
318
|
-
conditions[0] << "
|
|
365
|
+
conditions[0] << "node_name LIKE ?"
|
|
319
366
|
conditions << "#{name_query}%"
|
|
320
367
|
|
|
321
368
|
conditions[0] = conditions[0].join(' AND ')
|
|
@@ -327,7 +374,7 @@ class NodesController < ApplicationController
|
|
|
327
374
|
render :text => path.join('/ ')
|
|
328
375
|
else
|
|
329
376
|
@text = @node.send(method)
|
|
330
|
-
if %w{
|
|
377
|
+
if %w{text summary}.include?(method)
|
|
331
378
|
render :text => "<%= zazen(@text) %>"
|
|
332
379
|
else
|
|
333
380
|
render :text => @text
|
|
@@ -441,17 +488,28 @@ class NodesController < ApplicationController
|
|
|
441
488
|
end
|
|
442
489
|
end
|
|
443
490
|
|
|
491
|
+
# Make sure the current url is valid. If it is not, redirect.
|
|
444
492
|
def check_path
|
|
493
|
+
# show must have a 'path' parameter unless logged in and xml format
|
|
494
|
+
if !params[:prefix] && request.format == Mime::XML
|
|
495
|
+
# xml API
|
|
496
|
+
return true
|
|
497
|
+
end
|
|
498
|
+
|
|
445
499
|
case params[:action]
|
|
446
500
|
when 'index'
|
|
501
|
+
# TODO: this should live in I18n (and maybe it is not needed anymore)
|
|
447
502
|
# bad prefix '/so', '/rx' or '/en?lang=fr'
|
|
448
503
|
if params[:prefix] != prefix
|
|
449
504
|
set_visitor_lang(params[:prefix])
|
|
450
505
|
# redirect if new lang could not be set
|
|
451
|
-
|
|
506
|
+
if prefix != params[:prefix]
|
|
507
|
+
# Invalid prefix
|
|
508
|
+
redirect_to "/#{prefix}" and return false
|
|
509
|
+
end
|
|
452
510
|
end
|
|
453
511
|
when 'show'
|
|
454
|
-
|
|
512
|
+
|
|
455
513
|
if params[:format] != 'html' && params[:cachestamp].nil?
|
|
456
514
|
# maybe not seen, try to find it
|
|
457
515
|
params.each do |k,v|
|
|
@@ -466,20 +524,30 @@ class NodesController < ApplicationController
|
|
|
466
524
|
if params[:prefix] != prefix && !avoid_prefix_redirect
|
|
467
525
|
# lang changed
|
|
468
526
|
set_visitor_lang(params[:prefix])
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
527
|
+
redirect_to zen_path(@node, path_params) and return false
|
|
528
|
+
end
|
|
529
|
+
|
|
530
|
+
current_url = append_query_params("/#{params[:prefix]}/#{params[:path].join('/')}", :cachestamp => params[:cachestamp])
|
|
531
|
+
base_url = zen_path(@node,
|
|
532
|
+
:prefix => params[:prefix],
|
|
533
|
+
:format => params[:format],
|
|
534
|
+
:mode => params[:mode],
|
|
535
|
+
:asset => params[:asset])
|
|
536
|
+
|
|
537
|
+
if current_url != base_url
|
|
538
|
+
# Badly formed url, redirect
|
|
539
|
+
redirect_to zen_path(@node, path_params) and return false
|
|
540
|
+
end
|
|
541
|
+
|
|
542
|
+
if cachestamp_format?(params[:format]) && params[:cachestamp] != make_cachestamp(@node, params[:mode])
|
|
543
|
+
# Invalid cachestamp, redirect
|
|
544
|
+
redirect_to zen_path(@node, path_params) and return false
|
|
478
545
|
end
|
|
479
|
-
end
|
|
480
546
|
|
|
481
|
-
|
|
482
|
-
|
|
547
|
+
if params[:mode] == 'edit' && !@node.can_write?
|
|
548
|
+
# Not allowed to edit on special 'edit' mode
|
|
549
|
+
redirect_to zen_path(@node, :format => params[:format], :asset => params[:asset]) and return false
|
|
550
|
+
end
|
|
483
551
|
end
|
|
484
552
|
|
|
485
553
|
true
|
|
@@ -496,15 +564,22 @@ class NodesController < ApplicationController
|
|
|
496
564
|
end
|
|
497
565
|
|
|
498
566
|
def do_search
|
|
567
|
+
unless query_params = params[:q]
|
|
568
|
+
query_params = params.dup
|
|
569
|
+
%w{controller action format}.each do |key|
|
|
570
|
+
query_params.delete(key)
|
|
571
|
+
end
|
|
572
|
+
end
|
|
573
|
+
|
|
499
574
|
@node = current_site.root_node
|
|
500
575
|
@search_per_page = params[:per_page] ? params[:per_page].to_i : 20
|
|
501
|
-
@nodes = secure(Node) { Node.search_records(
|
|
576
|
+
@nodes = secure(Node) { Node.search_records(query_params, :node => @node, :page => params[:page], :per_page => @search_per_page) }
|
|
502
577
|
@search_count = 100 # FIXME: @nodes ? @nodes.total_entries : 0
|
|
503
578
|
end
|
|
504
579
|
|
|
505
580
|
# Document data do not change session[:lang] and can point at cached content (no nee to redirect to AUTHENTICATED_PREFIX).
|
|
506
581
|
def avoid_prefix_redirect
|
|
507
|
-
@node.kind_of?(Document) && params[:format] == @node.
|
|
582
|
+
@node.kind_of?(Document) && params[:format] == @node.ext
|
|
508
583
|
end
|
|
509
584
|
|
|
510
585
|
# Transform pseudo id into absolute paths (used after import)
|