releaf 0.1.2 → 1.0.2
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.
- 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
|