releaf 0.1.2 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +19 -21
- data/lib/releaf.rb +1 -34
- data/lib/releaf/all.rb +3 -0
- data/lib/releaf/rspec.rb +4 -0
- data/lib/releaf/rspec/features_matchers.rb +76 -0
- data/lib/releaf/rspec/helpers.rb +227 -0
- data/lib/releaf/rspec/matchers.rb +16 -0
- data/lib/releaf/test.rb +5 -0
- data/spec/factories/author.rb +6 -0
- data/spec/factories/book.rb +5 -0
- data/spec/factories/chapter.rb +7 -0
- data/spec/factories/common.rb +5 -0
- data/spec/factories/home_page.rb +5 -0
- data/spec/factories/node.rb +43 -0
- data/spec/factories/node_route.rb +7 -0
- data/spec/factories/publisher.rb +5 -0
- data/spec/factories/role.rb +21 -0
- data/spec/factories/text_page.rb +5 -0
- data/spec/factories/user.rb +22 -0
- data/spec/rails_helper.rb +122 -0
- data/spec/spec_helper.rb +81 -24
- data/spec/support/controller_macros.rb +8 -0
- data/spec/support/excel_helpers.rb +63 -0
- data/spec/support/shared/service_includer.rb +9 -0
- data/spec/support/wait_steps.rb +23 -0
- metadata +141 -499
- data/README.md +0 -77
- data/Rakefile +0 -70
- data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-icons_222222_256x240.png +0 -0
- data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-icons_2e83ff_256x240.png +0 -0
- data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-icons_454545_256x240.png +0 -0
- data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-icons_888888_256x240.png +0 -0
- data/app/assets/images/releaf/3rd_party/jquery-ui-1.9.2.custom/ui-icons_cd0a0a_256x240.png +0 -0
- data/app/assets/images/releaf/3rd_party/lightbox/close.png +0 -0
- data/app/assets/images/releaf/3rd_party/lightbox/loading.gif +0 -0
- data/app/assets/images/releaf/3rd_party/lightbox/next.png +0 -0
- data/app/assets/images/releaf/3rd_party/lightbox/prev.png +0 -0
- data/app/assets/images/releaf/add.png +0 -0
- data/app/assets/images/releaf/background.jpg +0 -0
- data/app/assets/images/releaf/button/button_bgr.gif +0 -0
- data/app/assets/images/releaf/button/button_hover_bgr.png +0 -0
- data/app/assets/images/releaf/controllers/content/close.gif +0 -0
- data/app/assets/images/releaf/controllers/content/close_active.gif +0 -0
- data/app/assets/images/releaf/controllers/content/close_hover.gif +0 -0
- data/app/assets/images/releaf/controllers/content/global_fields_bgr.png +0 -0
- data/app/assets/images/releaf/controllers/content/open.gif +0 -0
- data/app/assets/images/releaf/controllers/content/open_2.gif +0 -0
- data/app/assets/images/releaf/controllers/content/open_active.gif +0 -0
- data/app/assets/images/releaf/controllers/content/open_hover.gif +0 -0
- data/app/assets/images/releaf/controllers/sessions/background.jpg +0 -0
- data/app/assets/images/releaf/controllers/sessions/logo.jpg +0 -0
- data/app/assets/images/releaf/expand_tool/close.png +0 -0
- data/app/assets/images/releaf/expand_tool/close_hover.png +0 -0
- data/app/assets/images/releaf/expand_tool/close_hover_shim.png +0 -0
- data/app/assets/images/releaf/expand_tool/close_shim.png +0 -0
- data/app/assets/images/releaf/expand_tool/loader.gif +0 -0
- data/app/assets/images/releaf/expand_tool/open.png +0 -0
- data/app/assets/images/releaf/expand_tool/open_hover.png +0 -0
- data/app/assets/images/releaf/expand_tool/open_hover_shim.png +0 -0
- data/app/assets/images/releaf/expand_tool/open_shim.png +0 -0
- data/app/assets/images/releaf/favicon.ico +0 -0
- data/app/assets/images/releaf/globalFieldContainerBgr.png +0 -0
- data/app/assets/images/releaf/icons/129.png +0 -0
- data/app/assets/images/releaf/icons/130.png +0 -0
- data/app/assets/images/releaf/icons/accept.png +0 -0
- data/app/assets/images/releaf/icons/add.png +0 -0
- data/app/assets/images/releaf/icons/arrow_down.png +0 -0
- data/app/assets/images/releaf/icons/arrow_left.png +0 -0
- data/app/assets/images/releaf/icons/arrow_refresh.png +0 -0
- data/app/assets/images/releaf/icons/arrow_up.png +0 -0
- data/app/assets/images/releaf/icons/bin_empty.png +0 -0
- data/app/assets/images/releaf/icons/bullet_black.png +0 -0
- data/app/assets/images/releaf/icons/bullet_connect.png +0 -0
- data/app/assets/images/releaf/icons/bullet_start.png +0 -0
- data/app/assets/images/releaf/icons/bullet_tick.png +0 -0
- data/app/assets/images/releaf/icons/chrome.png +0 -0
- data/app/assets/images/releaf/icons/control_play.png +0 -0
- data/app/assets/images/releaf/icons/date.png +0 -0
- data/app/assets/images/releaf/icons/delete.png +0 -0
- data/app/assets/images/releaf/icons/disk.png +0 -0
- data/app/assets/images/releaf/icons/drag-handle.png +0 -0
- data/app/assets/images/releaf/icons/error.png +0 -0
- data/app/assets/images/releaf/icons/eye.png +0 -0
- data/app/assets/images/releaf/icons/firefox.png +0 -0
- data/app/assets/images/releaf/icons/google-not-available.gif +0 -0
- data/app/assets/images/releaf/icons/google.gif +0 -0
- data/app/assets/images/releaf/icons/keyboard.png +0 -0
- data/app/assets/images/releaf/icons/left_16.png +0 -0
- data/app/assets/images/releaf/icons/link.png +0 -0
- data/app/assets/images/releaf/icons/magnifier.png +0 -0
- data/app/assets/images/releaf/icons/notAllowed.png +0 -0
- data/app/assets/images/releaf/icons/page_white_add.png +0 -0
- data/app/assets/images/releaf/icons/page_white_edit.png +0 -0
- data/app/assets/images/releaf/icons/page_white_put.png +0 -0
- data/app/assets/images/releaf/icons/page_white_text.png +0 -0
- data/app/assets/images/releaf/icons/pencil.png +0 -0
- data/app/assets/images/releaf/icons/picture.png +0 -0
- data/app/assets/images/releaf/icons/right_16.png +0 -0
- data/app/assets/images/releaf/icons/tick.png +0 -0
- data/app/assets/images/releaf/icons/warning.png +0 -0
- data/app/assets/images/releaf/icons/world_go.png +0 -0
- data/app/assets/images/releaf/icons/world_link.png +0 -0
- data/app/assets/images/releaf/input/autocompleteExpandIcon.png +0 -0
- data/app/assets/images/releaf/input/input_bgr.gif +0 -0
- data/app/assets/images/releaf/language_root.png +0 -0
- data/app/assets/images/releaf/loader.gif +0 -0
- data/app/assets/images/releaf/logout.png +0 -0
- data/app/assets/images/releaf/main_menu/active_bgr.png +0 -0
- data/app/assets/images/releaf/main_menu/bgr.png +0 -0
- data/app/assets/images/releaf/main_menu/hover_bgr.png +0 -0
- data/app/assets/images/releaf/module.png +0 -0
- data/app/assets/images/releaf/panel_layout/active_bgr.png +0 -0
- data/app/assets/images/releaf/panel_layout/secondary_panel_horizontal_bgr.png +0 -0
- data/app/assets/images/releaf/panel_layout/secondary_panel_vertical_bgr.png +0 -0
- data/app/assets/images/releaf/releaf_table/selected_bgr.png +0 -0
- data/app/assets/images/releaf/releaf_table/th_bgr.gif +0 -0
- data/app/assets/javascripts/releaf/3rd_party/jquery-cookie/README.md +0 -73
- data/app/assets/javascripts/releaf/3rd_party/jquery-cookie/jquery.cookie.js +0 -47
- data/app/assets/javascripts/releaf/3rd_party/jquery-cookie/server.js +0 -24
- data/app/assets/javascripts/releaf/3rd_party/jquery-cookie/test.html +0 -19
- data/app/assets/javascripts/releaf/3rd_party/jquery-cookie/test.js +0 -80
- data/app/assets/javascripts/releaf/3rd_party/jquery-ui-timepicker-addon.js +0 -1882
- data/app/assets/javascripts/releaf/3rd_party/lightbox.js.erb +0 -379
- data/app/assets/javascripts/releaf/application.js +0 -14
- data/app/assets/javascripts/releaf/controllers/base.js +0 -130
- data/app/assets/javascripts/releaf/controllers/releaf/content.js +0 -90
- data/app/assets/javascripts/releaf/controllers/releaf/translations.js +0 -31
- data/app/assets/javascripts/releaf/include/continuous_scroll.js +0 -321
- data/app/assets/javascripts/releaf/include/field.type_autocomplete.js +0 -58
- data/app/assets/javascripts/releaf/include/field.type_date_or_datetime_or_time.js +0 -43
- data/app/assets/javascripts/releaf/include/field.type_richtext.js +0 -90
- data/app/assets/javascripts/releaf/include/localization.js +0 -12
- data/app/assets/javascripts/releaf/include/nested_fields.js +0 -64
- data/app/assets/javascripts/releaf/include/sortable.js +0 -29
- data/app/assets/javascripts/releaf/lib/request_url.js +0 -183
- data/app/assets/stylesheets/releaf/3rd_party/jquery-ui-1.9.2.custom.css.erb +0 -464
- data/app/assets/stylesheets/releaf/3rd_party/jquery-ui-timepicker-addon.css +0 -10
- data/app/assets/stylesheets/releaf/3rd_party/lightbox.css.erb +0 -157
- data/app/assets/stylesheets/releaf/application.css.erb +0 -122
- data/app/assets/stylesheets/releaf/controllers/base.css.erb +0 -205
- data/app/assets/stylesheets/releaf/controllers/releaf/content.css.erb +0 -422
- data/app/assets/stylesheets/releaf/controllers/releaf/sessions.css.scss.erb +0 -116
- data/app/assets/stylesheets/releaf/controllers/releaf/translations.css.erb +0 -205
- data/app/assets/stylesheets/releaf/include/button.css.erb +0 -176
- data/app/assets/stylesheets/releaf/include/field.css.erb +0 -281
- data/app/assets/stylesheets/releaf/include/input.css.erb +0 -40
- data/app/assets/stylesheets/releaf/include/main_menu.css.erb +0 -66
- data/app/assets/stylesheets/releaf/include/pagination.css.erb +0 -29
- data/app/assets/stylesheets/releaf/include/panel_layout.css.erb +0 -251
- data/app/assets/stylesheets/releaf/include/releaf_table.css.erb +0 -112
- data/app/assets/stylesheets/releaf/include/sortable.css.erb +0 -12
- data/app/controllers/releaf/admins_controller.rb +0 -55
- data/app/controllers/releaf/application_controller.rb +0 -11
- data/app/controllers/releaf/base_application_controller.rb +0 -18
- data/app/controllers/releaf/base_controller.rb +0 -571
- data/app/controllers/releaf/content_controller.rb +0 -183
- data/app/controllers/releaf/roles_controller.rb +0 -38
- data/app/controllers/releaf/sessions_controller.rb +0 -27
- data/app/controllers/releaf/tinymce_assets_controller.rb +0 -26
- data/app/controllers/releaf/translations_controller.rb +0 -117
- data/app/helpers/releaf/admin_helper.rb +0 -59
- data/app/helpers/releaf/application_helper.rb +0 -4
- data/app/helpers/releaf/pagination_renderer.rb +0 -44
- data/app/helpers/releaf/releaf_devise_helper.rb +0 -8
- data/app/models/releaf/admin.rb +0 -60
- data/app/models/releaf/blank_node_base.rb +0 -29
- data/app/models/releaf/node.rb +0 -222
- data/app/models/releaf/node_base.rb +0 -31
- data/app/models/releaf/role.rb +0 -126
- data/app/models/releaf/tinymce_asset.rb +0 -6
- data/app/views/layouts/releaf/admin.html.haml +0 -57
- data/app/views/layouts/releaf/devise.html.haml +0 -32
- data/app/views/releaf/aliases/_edit.body.html.haml +0 -50
- data/app/views/releaf/aliases/_edit.header.html.haml +0 -19
- data/app/views/releaf/aliases/_index.row.html.haml +0 -5
- data/app/views/releaf/aliases/_secondary_panel.html.haml +0 -13
- data/app/views/releaf/base/_edit.body.html.haml +0 -11
- data/app/views/releaf/base/_edit.field.html.haml +0 -23
- data/app/views/releaf/base/_edit.field_type_autocomplete.html.haml +0 -15
- data/app/views/releaf/base/_edit.field_type_boolean.html.haml +0 -5
- data/app/views/releaf/base/_edit.field_type_date.html.haml +0 -8
- data/app/views/releaf/base/_edit.field_type_datetime.html.haml +0 -8
- data/app/views/releaf/base/_edit.field_type_delete_nested.html.haml +0 -3
- data/app/views/releaf/base/_edit.field_type_file.html.haml +0 -10
- data/app/views/releaf/base/_edit.field_type_image.html.haml +0 -12
- data/app/views/releaf/base/_edit.field_type_item.html.haml +0 -31
- data/app/views/releaf/base/_edit.field_type_link.html.haml +0 -4
- data/app/views/releaf/base/_edit.field_type_link_i18n.html.haml +0 -26
- data/app/views/releaf/base/_edit.field_type_password.html.haml +0 -4
- data/app/views/releaf/base/_edit.field_type_richtext.html.haml +0 -4
- data/app/views/releaf/base/_edit.field_type_richtext_i18n.html.haml +0 -27
- data/app/views/releaf/base/_edit.field_type_text.html.haml +0 -4
- data/app/views/releaf/base/_edit.field_type_text_i18n.html.haml +0 -27
- data/app/views/releaf/base/_edit.field_type_textarea.html.haml +0 -4
- data/app/views/releaf/base/_edit.field_type_textarea_i18n.html.haml +0 -27
- data/app/views/releaf/base/_edit.field_type_time.html.haml +0 -8
- data/app/views/releaf/base/_edit.fields.association.html.haml +0 -48
- data/app/views/releaf/base/_edit.fields.has_many_template.html.haml +0 -15
- data/app/views/releaf/base/_edit.fields.html.haml +0 -20
- data/app/views/releaf/base/_edit.footer.html.haml +0 -14
- data/app/views/releaf/base/_edit.form.html.haml +0 -4
- data/app/views/releaf/base/_edit.header.html.haml +0 -3
- data/app/views/releaf/base/_index.body.html.haml +0 -6
- data/app/views/releaf/base/_index.cell.html.haml +0 -20
- data/app/views/releaf/base/_index.footer.html.haml +0 -28
- data/app/views/releaf/base/_index.header.html.haml +0 -4
- data/app/views/releaf/base/_index.row.html.haml +0 -6
- data/app/views/releaf/base/_index.search.html.haml +0 -5
- data/app/views/releaf/base/_index.table.html.haml +0 -24
- data/app/views/releaf/base/_secondary_panel.html.haml +0 -10
- data/app/views/releaf/base/_show.body.html.haml +0 -3
- data/app/views/releaf/base/_show.field.html.haml +0 -20
- data/app/views/releaf/base/_show.field_type_date.html.haml +0 -9
- data/app/views/releaf/base/_show.field_type_date_time.html.haml +0 -9
- data/app/views/releaf/base/_show.field_type_email.html.haml +0 -6
- data/app/views/releaf/base/_show.field_type_file.html.haml +0 -7
- data/app/views/releaf/base/_show.field_type_image.html.haml +0 -10
- data/app/views/releaf/base/_show.field_type_item.html.haml +0 -11
- data/app/views/releaf/base/_show.field_type_link.html.haml +0 -14
- data/app/views/releaf/base/_show.field_type_password.html.haml +0 -6
- data/app/views/releaf/base/_show.field_type_richtext.html.haml +0 -6
- data/app/views/releaf/base/_show.field_type_text.html.haml +0 -6
- data/app/views/releaf/base/_show.field_type_textarea.html.haml +0 -6
- data/app/views/releaf/base/_show.field_type_time.html.haml +0 -9
- data/app/views/releaf/base/_show.field_type_url.html.haml +0 -7
- data/app/views/releaf/base/_show.fields.association.html.haml +0 -36
- data/app/views/releaf/base/_show.fields.has_many_template.html.haml +0 -12
- data/app/views/releaf/base/_show.fields.html.haml +0 -17
- data/app/views/releaf/base/_show.footer.html.haml +0 -18
- data/app/views/releaf/base/_show.header.html.haml +0 -3
- data/app/views/releaf/base/confirm_destroy.html.haml +0 -17
- data/app/views/releaf/base/edit.html.haml +0 -1
- data/app/views/releaf/base/index.html.haml +0 -3
- data/app/views/releaf/base/new.html.haml +0 -1
- data/app/views/releaf/base/show.html.haml +0 -3
- data/app/views/releaf/content/_edit.body.html.haml +0 -46
- data/app/views/releaf/content/_edit.content_fields.html.haml +0 -11
- data/app/views/releaf/content/_edit.fields.html.haml +0 -17
- data/app/views/releaf/content/_edit.slug.html.haml +0 -12
- data/app/views/releaf/content/_get_content_form.html.haml +0 -7
- data/app/views/releaf/content/_secondary_panel.html.haml +0 -3
- data/app/views/releaf/content/_tree_level.html.haml +0 -16
- data/app/views/releaf/content/ajax.new.html.haml +0 -3
- data/app/views/releaf/content/index.html.haml +0 -0
- data/app/views/releaf/roles/_edit.field.permissions.html.haml +0 -5
- data/app/views/releaf/roles/_show.field.default.html.haml +0 -6
- data/app/views/releaf/roles/_show.field.permissions.html.haml +0 -11
- data/app/views/releaf/sessions/new.html.haml +0 -17
- data/app/views/releaf/translations/_edit.body.html.haml +0 -50
- data/app/views/releaf/translations/_edit.header.html.haml +0 -19
- data/app/views/releaf/translations/_index.row.html.haml +0 -5
- data/app/views/releaf/translations/_secondary_panel.html.haml +0 -13
- data/bin/releaf +0 -25
- data/lib/generators/releaf/install_generator.rb +0 -87
- data/lib/generators/releaf/templates/config/common_fields.yml.example +0 -17
- data/lib/generators/releaf/templates/controllers/home_controller.rb +0 -4
- data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-icons_222222_256x240.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-icons_2e83ff_256x240.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-icons_454545_256x240.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-icons_888888_256x240.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/jquery_ui/smoothness/ui-icons_cd0a0a_256x240.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/lightbox/close.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/lightbox/loading.gif +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/lightbox/next.png +0 -0
- data/lib/generators/releaf/templates/images/3rd_party/lightbox/prev.png +0 -0
- data/lib/generators/releaf/templates/initializers/releaf.rb +0 -20
- data/lib/generators/releaf/templates/initializers/releaf_i18n.rb +0 -25
- data/lib/generators/releaf/templates/initializers/releaf_store_current_template.rb +0 -25
- data/lib/generators/releaf/templates/javascripts/3rd_party/jquery.jcarousel.js +0 -1058
- data/lib/generators/releaf/templates/javascripts/3rd_party/jquery_ui.js +0 -14850
- data/lib/generators/releaf/templates/javascripts/3rd_party/lightbox.js.erb +0 -379
- data/lib/generators/releaf/templates/javascripts/application.js +0 -15
- data/lib/generators/releaf/templates/javascripts/lib/init_jcarousel.js +0 -40
- data/lib/generators/releaf/templates/javascripts/lib/js_check.js +0 -8
- data/lib/generators/releaf/templates/javascripts/lib/request_url.js +0 -169
- data/lib/generators/releaf/templates/javascripts/lib/sortable.js +0 -29
- data/lib/generators/releaf/templates/migrations/create_releaf_admins.rb +0 -53
- data/lib/generators/releaf/templates/migrations/create_releaf_nodes.rb +0 -25
- data/lib/generators/releaf/templates/migrations/create_releaf_roles.rb +0 -12
- data/lib/generators/releaf/templates/migrations/create_releaf_tinymce_assets.rb +0 -11
- data/lib/generators/releaf/templates/migrations/create_releaf_translations.rb +0 -31
- data/lib/generators/releaf/templates/models/admin_ability.rb +0 -51
- data/lib/generators/releaf/templates/seeds.rb +0 -64
- data/lib/generators/releaf/templates/stylesheets/3rd_party/jquery_ui/smoothness.css.erb +0 -1174
- data/lib/generators/releaf/templates/stylesheets/3rd_party/lightbox.css.erb +0 -157
- data/lib/generators/releaf/templates/stylesheets/3rd_party/reset.css +0 -48
- data/lib/generators/releaf/templates/stylesheets/application.scss +0 -15
- data/lib/generators/releaf/templates/stylesheets/style.scss +0 -45
- data/lib/generators/releaf/templates/views/home/index.html.haml +0 -1
- data/lib/generators/releaf/templates/views/layouts/application.html.haml +0 -26
- data/lib/i18n/backend/releaf.rb +0 -97
- data/lib/i18n/backend/releaf/translation.rb +0 -61
- data/lib/i18n/backend/releaf/translation_data.rb +0 -39
- data/lib/i18n/backend/releaf/translation_group.rb +0 -34
- data/lib/i18n/releaf.rb +0 -1
- data/lib/releaf/boolean_at.rb +0 -77
- data/lib/releaf/engine.rb +0 -4
- data/lib/releaf/globalize3/fallbacks.rb +0 -19
- data/lib/releaf/resources.rb +0 -101
- data/lib/releaf/slug.rb +0 -118
- data/lib/releaf/version.rb +0 -3
- data/lib/tasks/releaf_tasks.rake +0 -4
- data/spec/factories/factories.rb +0 -24
- data/spec/features/admin_spec.rb +0 -41
- data/templates/releaf/installer.rb +0 -207
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'active_record'
|
2
|
-
|
3
|
-
module I18n
|
4
|
-
module Backend
|
5
|
-
class Releaf
|
6
|
-
class TranslationData < ::ActiveRecord::Base
|
7
|
-
|
8
|
-
self.table_name = "releaf_translation_data"
|
9
|
-
|
10
|
-
validates_presence_of :translation_id, :lang
|
11
|
-
validates_uniqueness_of :translation_id, :scope => :lang
|
12
|
-
|
13
|
-
belongs_to :translation
|
14
|
-
|
15
|
-
attr_accessible \
|
16
|
-
:lang,
|
17
|
-
:localization,
|
18
|
-
:translation_id
|
19
|
-
|
20
|
-
scope :available_locales, where('lang IS NOT NULL').group(:lang).pluck(:lang)
|
21
|
-
|
22
|
-
after_commit :reload_cache
|
23
|
-
|
24
|
-
def text
|
25
|
-
self[:localization].blank? == false ? self[:localization] : self.translation.try(:key).try(:humanize)
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def reload_cache
|
31
|
-
Settings.i18n_updated_at = Time.now
|
32
|
-
I18n.backend.reload_cache
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'active_record'
|
2
|
-
|
3
|
-
module I18n
|
4
|
-
module Backend
|
5
|
-
class Releaf
|
6
|
-
class TranslationGroup < ::ActiveRecord::Base
|
7
|
-
|
8
|
-
self.table_name = "releaf_translation_groups"
|
9
|
-
|
10
|
-
validates_presence_of :scope
|
11
|
-
|
12
|
-
has_many :translations, :dependent => :destroy, :foreign_key => :group_id, :order => 'releaf_translations.key'
|
13
|
-
|
14
|
-
attr_accessible \
|
15
|
-
:scope
|
16
|
-
|
17
|
-
after_commit :reload_cache
|
18
|
-
|
19
|
-
def to_s
|
20
|
-
scope
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def reload_cache
|
26
|
-
Settings.i18n_updated_at = Time.now
|
27
|
-
I18n.backend.reload_cache
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
data/lib/i18n/releaf.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require 'i18n'
|
data/lib/releaf/boolean_at.rb
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
module Releaf
|
2
|
-
# Adds boolean_at class method, that can be used to create boolean setter and
|
3
|
-
# getter for DateTime, Date and Time fields. It will also create scopes for
|
4
|
-
# when given attribute is set and when it is not set.
|
5
|
-
module BooleanAt
|
6
|
-
module ClassMethods
|
7
|
-
|
8
|
-
# Create boolean setter and getter for given DateTime, Date and Time
|
9
|
-
# attributes.
|
10
|
-
#
|
11
|
-
# Setter will accept "0", 0, false as false, everything else will
|
12
|
-
# evaluate to true. Setter accepts TrueClass, FalseClass, String, Fixnum.
|
13
|
-
# If you pass nil, it not change current value.
|
14
|
-
#
|
15
|
-
# Getter returns true or false
|
16
|
-
#
|
17
|
-
# Unless you add <tt>:without_scopes => true</tt> as last argument, two scopes
|
18
|
-
# will be created. One to list all resources with given attribute set and
|
19
|
-
# one that does the opposite.
|
20
|
-
#
|
21
|
-
# For example, if you use
|
22
|
-
#
|
23
|
-
# @example
|
24
|
-
# boolean_at :published_at
|
25
|
-
#
|
26
|
-
# it will create +published+, +published?+, +published=+ methods and
|
27
|
-
# +published+ and +unpublished+ scopes.
|
28
|
-
#
|
29
|
-
# @param args list of DateTime, Date and Time attributes that ends with
|
30
|
-
# _at or _on for which you'd like to create boolean setter and getter
|
31
|
-
# and scopes
|
32
|
-
def boolean_at *args
|
33
|
-
options = {}
|
34
|
-
options = args.pop if args.last.is_a? Hash
|
35
|
-
|
36
|
-
my_table_name = self.table_name
|
37
|
-
|
38
|
-
args.each do |name|
|
39
|
-
# raise ArgumentError, "column must be of type DateTime, Date or Time" unless [:datetime, :date, :time].include?(self.columns_hash[name.to_s].try(:type).try(:to_sym))
|
40
|
-
raise ArgumentError, "column name must end with _at or _on" unless name =~ /_(at|on)$/
|
41
|
-
|
42
|
-
fun_name = name.to_s.sub(/_(at|on)$/, '')
|
43
|
-
|
44
|
-
# create getter
|
45
|
-
define_method fun_name do
|
46
|
-
self.send(:"#{name}?")
|
47
|
-
end
|
48
|
-
alias_method :"#{fun_name}?", :"#{fun_name}"
|
49
|
-
|
50
|
-
# create setter
|
51
|
-
define_method :"#{fun_name}=" do |b|
|
52
|
-
return if b.nil?
|
53
|
-
raise ArgumentError unless b.is_a?(FalseClass) or b.is_a?(TrueClass) or b.is_a?(String) or b.is_a?(Fixnum)
|
54
|
-
if b == false or b == "0" or b == 0
|
55
|
-
self.send(:"#{name}=", nil)
|
56
|
-
else
|
57
|
-
self.send(:"#{name}=", Time.now)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
unless options[:without_scopes]
|
62
|
-
# create scopes
|
63
|
-
self.class_eval do
|
64
|
-
scope "#{fun_name}", where("#{my_table_name}.#{name} IS NOT NULL")
|
65
|
-
scope "un#{fun_name}", where("#{my_table_name}.#{name} IS NULL")
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def self.included base
|
74
|
-
base.extend ClassMethods
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
data/lib/releaf/engine.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
module Releaf
|
2
|
-
module Globalize3
|
3
|
-
module Fallbacks
|
4
|
-
def self.set
|
5
|
-
i18n_fallbacks = {}
|
6
|
-
|
7
|
-
I18n.default_locale ||= 'en'
|
8
|
-
I18n.locale ||= 'en'
|
9
|
-
|
10
|
-
valid_locales = Settings.i18n_locales || []
|
11
|
-
|
12
|
-
(valid_locales + [I18n.default_locale, I18n.locale]).uniq.each do |locale|
|
13
|
-
i18n_fallbacks[locale] = valid_locales - [locale]
|
14
|
-
end
|
15
|
-
Globalize.fallbacks = i18n_fallbacks
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
data/lib/releaf/resources.rb
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
require 'action_dispatch/routing/mapper'
|
2
|
-
|
3
|
-
module ActionDispatch::Routing
|
4
|
-
class Mapper
|
5
|
-
|
6
|
-
def releaf_resources(*args, &block)
|
7
|
-
resources *args do
|
8
|
-
yield if block_given?
|
9
|
-
|
10
|
-
add_urls = true
|
11
|
-
add_confirm_destroy = true
|
12
|
-
|
13
|
-
if args.last.is_a? Hash
|
14
|
-
options = args.last
|
15
|
-
if options.has_key? :only
|
16
|
-
add_urls = false unless options[:only].include? :urls
|
17
|
-
add_confirm_destroy = false unless options[:only].include? :destroy
|
18
|
-
end
|
19
|
-
|
20
|
-
if options.has_key? :except
|
21
|
-
add_urls = false if options[:except].include? :urls
|
22
|
-
add_confirm_destroy = false if options[:except].include? :destroy
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
match :urls, :on => :collection if add_urls
|
27
|
-
get :confirm_destroy, :on => :member if add_confirm_destroy
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def slugged_resources(*args, &block)
|
32
|
-
add_routes = {
|
33
|
-
:new => true,
|
34
|
-
:create => true,
|
35
|
-
:edit => true,
|
36
|
-
:update => true,
|
37
|
-
:show => true,
|
38
|
-
:index => true,
|
39
|
-
:destroy => true
|
40
|
-
}
|
41
|
-
|
42
|
-
new_resources = args
|
43
|
-
|
44
|
-
if args.last.is_a? Hash
|
45
|
-
|
46
|
-
options = new_resources.pop
|
47
|
-
|
48
|
-
if options.has_key? :only
|
49
|
-
add_routes.each_key do |key|
|
50
|
-
add_routes[key] = false unless options[:only].include? key
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
if options.has_key? :except
|
55
|
-
add_routes.each_key do |key|
|
56
|
-
add_routes[key] = false if options[:only].include? key
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
61
|
-
|
62
|
-
new_resources.each do |resource_name|
|
63
|
-
res_name = resource_name.to_s
|
64
|
-
get res_name, :to => "#{res_name}#index", :as => res_name if add_routes[:index]
|
65
|
-
post res_name, :to => "#{res_name}#create" if add_routes[:create]
|
66
|
-
get "#{res_name}/new", :to => "#{res_name}#new", :as => "new_#{res_name.singularize}" if add_routes[:new]
|
67
|
-
yield if block_given?
|
68
|
-
get "#{res_name}/*slug/edit", :to => "#{res_name}#edit", :as => "edit_#{res_name.singularize}" if add_routes[:edit]
|
69
|
-
get "#{res_name}/*slug", :to => "#{res_name}#show", :as => "show_#{res_name.singularize}" if add_routes[:show]
|
70
|
-
put "#{res_name}/*slug", :to => "#{res_name}#update" if add_routes[:update]
|
71
|
-
post "#{res_name}/*slug", :to => "#{res_name}#create" if add_routes[:create]
|
72
|
-
delete "#{res_name}/*slug", :to => "#{res_name}#destroy" if add_routes[:destroy]
|
73
|
-
end
|
74
|
-
|
75
|
-
end
|
76
|
-
|
77
|
-
def mount_releaf_at mount_location
|
78
|
-
|
79
|
-
post '/tinymce_assets' => 'releaf/tinymce_assets#create'
|
80
|
-
|
81
|
-
devise_for Releaf.devise_for, :path => mount_location, :controllers => { :sessions => "releaf/sessions" }
|
82
|
-
|
83
|
-
scope mount_location do
|
84
|
-
namespace :releaf, :path => nil do
|
85
|
-
|
86
|
-
releaf_resources :admins, :roles
|
87
|
-
|
88
|
-
releaf_resources :nodes, :controller => "content", :path => "content", :except => [:show], :path_names => { :edit => '' } do
|
89
|
-
get :generate_url, :on => :collection
|
90
|
-
end
|
91
|
-
|
92
|
-
releaf_resources :translation_groups, :controller => "translations", :path => "translations", :except => [:show], :path_names => { :edit => '' }
|
93
|
-
|
94
|
-
root :to => "content#index"
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
|
100
|
-
end # class Mapper
|
101
|
-
end # module ActionDispatch::Routing
|
data/lib/releaf/slug.rb
DELETED
@@ -1,118 +0,0 @@
|
|
1
|
-
module Releaf
|
2
|
-
# Provides common methods for finding object by slug. Also overrides to_html
|
3
|
-
# method.
|
4
|
-
#
|
5
|
-
# Simply add this line to your models
|
6
|
-
#
|
7
|
-
# include Releaf::Slug
|
8
|
-
#
|
9
|
-
# or
|
10
|
-
#
|
11
|
-
# ActiveRecord::Base.send(:include, Releaf::Slug)
|
12
|
-
#
|
13
|
-
# to some initializer (<tt>config/initializers/releaf.rb</tt> for example).
|
14
|
-
# Then use find_object or find_object! instead of find
|
15
|
-
module Slug
|
16
|
-
module ClassMethods
|
17
|
-
|
18
|
-
# same as find_object, except that it will raise
|
19
|
-
# ActiveRecord::RecordNotFound error if no resource was found.
|
20
|
-
def find_object! id_or_slug, scope_name=nil, scope_args=nil
|
21
|
-
obj = find_object(id_or_slug, scope_name, scope_args)
|
22
|
-
raise ActiveRecord::RecordNotFound unless obj
|
23
|
-
return obj
|
24
|
-
end
|
25
|
-
|
26
|
-
# Find object by slug or id.
|
27
|
-
#
|
28
|
-
# If id_or_slug looks like id, then tries to find by id first
|
29
|
-
# Otherwise it will search by slug field.
|
30
|
-
#
|
31
|
-
# If instance responds to children method, then it's possible to search
|
32
|
-
# for hierarchic resources
|
33
|
-
#
|
34
|
-
# @param id_or_slug either id of object to find (can be String or Fixnum)
|
35
|
-
# or slug (string) slug, may contain slash ('/')
|
36
|
-
#
|
37
|
-
# @param scope_name optional scope_name to be used for searching. This is
|
38
|
-
# especially useful when you are searching hierarchic resources. For
|
39
|
-
# example you want to find 2nd level active resource.
|
40
|
-
#
|
41
|
-
# @param scope_args any arguments that are required for scope
|
42
|
-
#
|
43
|
-
# @return resource
|
44
|
-
def find_object id_or_slug, scope_name=nil, scope_args=nil
|
45
|
-
raise ArgumentError, "id_or_slug must be String or Fixnum" unless id_or_slug.is_a?(String) or id_or_slug.is_a?(Fixnum)
|
46
|
-
|
47
|
-
unless column_names.include?('slug')
|
48
|
-
return scoped_for_find_by_slug(self, scope_name, scope_args).find(id_or_slug)
|
49
|
-
end
|
50
|
-
|
51
|
-
# if it looks like id, search by id first
|
52
|
-
if id_or_slug.to_s =~ /\A\d+\z/
|
53
|
-
obj = scoped_for_find_by_slug(self, scope_name, scope_args).find_by_id(id_or_slug)
|
54
|
-
return obj if obj
|
55
|
-
end
|
56
|
-
|
57
|
-
unless column_names.include?('ancestry') || self.new.respond_to?(:children)
|
58
|
-
return scoped_for_find_by_slug(self, scope_name, scope_args).find_by_slug(id_or_slug)
|
59
|
-
else
|
60
|
-
slugs = id_or_slug.split('/')
|
61
|
-
|
62
|
-
obj = scoped_for_find_by_slug(self, scope_name, scope_args).find_by_slug( slugs.shift )
|
63
|
-
return nil unless obj
|
64
|
-
slugs.each do |slug_part|
|
65
|
-
obj = scoped_for_find_by_slug(obj.children, scope_name, scope_args).find_by_slug( slug_part )
|
66
|
-
return nil unless obj
|
67
|
-
end
|
68
|
-
return obj
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
private
|
73
|
-
|
74
|
-
def scoped_for_find_by_slug obj, scope_name=nil, scope_args=nil
|
75
|
-
unless scope_name.blank?
|
76
|
-
if scope_args.nil?
|
77
|
-
obj.send(scope_name.to_sym)
|
78
|
-
else
|
79
|
-
obj.send(scope_name.to_sym, *scope_args)
|
80
|
-
end
|
81
|
-
else
|
82
|
-
obj
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
end
|
87
|
-
|
88
|
-
|
89
|
-
module InstanceMethods
|
90
|
-
# Ovverrides to_param method to prefer slug field over id (when
|
91
|
-
# possible). It will also generate hearachical uri part if instance
|
92
|
-
# supports parrent method, or has ancestry column (ancestry gem
|
93
|
-
# {http://rubygems.org/gems/ancestry})
|
94
|
-
#
|
95
|
-
# @return String or Fixnum
|
96
|
-
def to_param
|
97
|
-
return id unless self.class.column_names.include?('slug')
|
98
|
-
return id if self.slug.blank?
|
99
|
-
col_names = self.class.column_names
|
100
|
-
|
101
|
-
if col_names.include?('ancestry')
|
102
|
-
return path.pluck(:slug).join('/')
|
103
|
-
elsif self.respond_to?(:parent) && parent
|
104
|
-
return parent.to_param + '/' + slug
|
105
|
-
else
|
106
|
-
return slug
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
|
112
|
-
def self.included base
|
113
|
-
base.extend ClassMethods
|
114
|
-
include InstanceMethods
|
115
|
-
end
|
116
|
-
|
117
|
-
end
|
118
|
-
end
|
data/lib/releaf/version.rb
DELETED
data/lib/tasks/releaf_tasks.rake
DELETED
data/spec/factories/factories.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
FactoryGirl.define do
|
2
|
-
sequence(:email) {|n| "person-#{n}@example.com" }
|
3
|
-
|
4
|
-
factory :admin, :class => :'Releaf::Admin' do
|
5
|
-
email
|
6
|
-
name 'admin'
|
7
|
-
surname 'admin'
|
8
|
-
password 'password'
|
9
|
-
password_confirmation 'password'
|
10
|
-
end
|
11
|
-
|
12
|
-
factory :role, :class => :'Releaf::Role' do
|
13
|
-
sequence(:name) {|n| "role #{n}"}
|
14
|
-
|
15
|
-
trait :admin do
|
16
|
-
admin_permission true
|
17
|
-
end
|
18
|
-
|
19
|
-
trait :default do
|
20
|
-
default true
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
data/spec/features/admin_spec.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
describe "home page" do
|
3
|
-
before do
|
4
|
-
module Leaf
|
5
|
-
end
|
6
|
-
@role = create(:role, :admin)
|
7
|
-
@admin = build(:admin)
|
8
|
-
@admin.role_id = @role.id
|
9
|
-
@admin.save
|
10
|
-
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "login as admin procedure" do
|
14
|
-
before do
|
15
|
-
visit "/admin"
|
16
|
-
within("form.login_form") do
|
17
|
-
fill_in 'Email', :with => @admin.email
|
18
|
-
fill_in 'Password', :with => @admin.password
|
19
|
-
end
|
20
|
-
click_button 'Sign in'
|
21
|
-
end
|
22
|
-
|
23
|
-
it "admin page content" do
|
24
|
-
page.should have_content 'Logout'
|
25
|
-
page.should have_content 'Releaf/content'
|
26
|
-
page.should have_content '*permissions'
|
27
|
-
page.should have_content 'Releaf/translations'
|
28
|
-
end
|
29
|
-
|
30
|
-
it "logout sequence" do
|
31
|
-
click_link 'Logout'
|
32
|
-
|
33
|
-
page.should have_content 'Welcome to re:Leaf'
|
34
|
-
|
35
|
-
visit "/admin"
|
36
|
-
page.should have_content 'Sign in'
|
37
|
-
end
|
38
|
-
|
39
|
-
|
40
|
-
end
|
41
|
-
end
|