releaf 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +24 -0
- data/README.md +74 -0
- data/Rakefile +62 -0
- 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 +73 -0
- data/app/assets/javascripts/releaf/3rd_party/jquery-cookie/jquery.cookie.js +47 -0
- data/app/assets/javascripts/releaf/3rd_party/jquery-cookie/server.js +24 -0
- data/app/assets/javascripts/releaf/3rd_party/jquery-cookie/test.html +19 -0
- data/app/assets/javascripts/releaf/3rd_party/jquery-cookie/test.js +80 -0
- data/app/assets/javascripts/releaf/3rd_party/jquery-ui-timepicker-addon.js +1882 -0
- data/app/assets/javascripts/releaf/3rd_party/lightbox.js.erb +379 -0
- data/app/assets/javascripts/releaf/application.js +14 -0
- data/app/assets/javascripts/releaf/controllers/base.js +170 -0
- data/app/assets/javascripts/releaf/controllers/releaf/content.js +90 -0
- data/app/assets/javascripts/releaf/controllers/releaf/translations.js +31 -0
- data/app/assets/javascripts/releaf/include/continuous_scroll.js +321 -0
- data/app/assets/javascripts/releaf/include/field.type_autocomplete.js +58 -0
- data/app/assets/javascripts/releaf/include/field.type_richtext.js +90 -0
- data/app/assets/javascripts/releaf/include/localization.js +12 -0
- data/app/assets/javascripts/releaf/include/nested_fields.js +71 -0
- data/app/assets/javascripts/releaf/include/sortable.js +27 -0
- data/app/assets/javascripts/releaf/lib/request_url.js +183 -0
- data/app/assets/stylesheets/releaf/3rd_party/jquery-ui-1.9.2.custom.css.erb +464 -0
- data/app/assets/stylesheets/releaf/3rd_party/jquery-ui-timepicker-addon.css +10 -0
- data/app/assets/stylesheets/releaf/3rd_party/lightbox.css.erb +157 -0
- data/app/assets/stylesheets/releaf/application.css.erb +122 -0
- data/app/assets/stylesheets/releaf/controllers/base.css.erb +205 -0
- data/app/assets/stylesheets/releaf/controllers/releaf/content.css.erb +416 -0
- data/app/assets/stylesheets/releaf/controllers/releaf/sessions.css.scss.erb +116 -0
- data/app/assets/stylesheets/releaf/controllers/releaf/translations.css.erb +205 -0
- data/app/assets/stylesheets/releaf/include/button.css.erb +176 -0
- data/app/assets/stylesheets/releaf/include/field.css.erb +257 -0
- data/app/assets/stylesheets/releaf/include/input.css.erb +40 -0
- data/app/assets/stylesheets/releaf/include/main_menu.css.erb +66 -0
- data/app/assets/stylesheets/releaf/include/pagination.css.erb +29 -0
- data/app/assets/stylesheets/releaf/include/panel_layout.css.erb +251 -0
- data/app/assets/stylesheets/releaf/include/releaf_table.css.erb +112 -0
- data/app/assets/stylesheets/releaf/include/sortable.css.erb +12 -0
- data/app/controllers/releaf/admins_controller.rb +48 -0
- data/app/controllers/releaf/application_controller.rb +11 -0
- data/app/controllers/releaf/base_application_controller.rb +15 -0
- data/app/controllers/releaf/base_controller.rb +310 -0
- data/app/controllers/releaf/content_controller.rb +166 -0
- data/app/controllers/releaf/roles_controller.rb +36 -0
- data/app/controllers/releaf/sessions_controller.rb +5 -0
- data/app/controllers/releaf/tinymce_assets_controller.rb +26 -0
- data/app/controllers/releaf/translations_controller.rb +121 -0
- data/app/helpers/releaf/admin_helper.rb +79 -0
- data/app/helpers/releaf/application_helper.rb +4 -0
- data/app/helpers/releaf/pagination_renderer.rb +44 -0
- data/app/helpers/releaf/releaf_devise_helper.rb +8 -0
- data/app/models/releaf/admin.rb +51 -0
- data/app/models/releaf/node.rb +221 -0
- data/app/models/releaf/node_base.rb +25 -0
- data/app/models/releaf/role.rb +119 -0
- data/app/models/releaf/tinymce_asset.rb +6 -0
- data/app/views/layouts/releaf/admin.html.haml +51 -0
- data/app/views/releaf/aliases/_edit.body.haml +50 -0
- data/app/views/releaf/aliases/_edit.header.haml +19 -0
- data/app/views/releaf/aliases/_index.row.haml +5 -0
- data/app/views/releaf/aliases/_secondary_panel.haml +13 -0
- data/app/views/releaf/base/_edit.body.haml +19 -0
- data/app/views/releaf/base/_edit.field.haml +96 -0
- data/app/views/releaf/base/_edit.field.type_autocomplete.haml +15 -0
- data/app/views/releaf/base/_edit.field.type_checkbox.haml +5 -0
- data/app/views/releaf/base/_edit.field.type_date.haml +8 -0
- data/app/views/releaf/base/_edit.field.type_datetime.haml +8 -0
- data/app/views/releaf/base/_edit.field.type_delete_nested.haml +3 -0
- data/app/views/releaf/base/_edit.field.type_file.haml +10 -0
- data/app/views/releaf/base/_edit.field.type_image.haml +14 -0
- data/app/views/releaf/base/_edit.field.type_link.haml +4 -0
- data/app/views/releaf/base/_edit.field.type_password.haml +4 -0
- data/app/views/releaf/base/_edit.field.type_richtext.haml +4 -0
- data/app/views/releaf/base/_edit.field.type_richtext_i18n.haml +27 -0
- data/app/views/releaf/base/_edit.field.type_select.haml +11 -0
- data/app/views/releaf/base/_edit.field.type_text.haml +4 -0
- data/app/views/releaf/base/_edit.field.type_text_i18n.haml +27 -0
- data/app/views/releaf/base/_edit.field.type_textarea.haml +4 -0
- data/app/views/releaf/base/_edit.field.type_textarea_i18n.haml +27 -0
- data/app/views/releaf/base/_edit.field.type_time.haml +8 -0
- data/app/views/releaf/base/_edit.footer.haml +14 -0
- data/app/views/releaf/base/_edit.form.haml +4 -0
- data/app/views/releaf/base/_edit.has_many_associations.haml +45 -0
- data/app/views/releaf/base/_edit.header.haml +3 -0
- data/app/views/releaf/base/_index.body.haml +6 -0
- data/app/views/releaf/base/_index.cell.haml +19 -0
- data/app/views/releaf/base/_index.footer.haml +22 -0
- data/app/views/releaf/base/_index.header.haml +4 -0
- data/app/views/releaf/base/_index.row.haml +6 -0
- data/app/views/releaf/base/_index.search.haml +5 -0
- data/app/views/releaf/base/_index.table.haml +8 -0
- data/app/views/releaf/base/_secondary_panel.haml +9 -0
- data/app/views/releaf/base/_show.body.haml +7 -0
- data/app/views/releaf/base/_show.field.haml +78 -0
- data/app/views/releaf/base/_show.field.type_html.haml +1 -0
- data/app/views/releaf/base/_show.footer.haml +16 -0
- data/app/views/releaf/base/_show.header.haml +3 -0
- data/app/views/releaf/base/confirm_destroy.haml +10 -0
- data/app/views/releaf/base/edit.haml +1 -0
- data/app/views/releaf/base/index.haml +3 -0
- data/app/views/releaf/base/new.haml +1 -0
- data/app/views/releaf/base/show.haml +3 -0
- data/app/views/releaf/content/_edit.body.haml +45 -0
- data/app/views/releaf/content/_edit.content_fields.haml +19 -0
- data/app/views/releaf/content/_edit.slug.haml +12 -0
- data/app/views/releaf/content/_get_content_form.haml +7 -0
- data/app/views/releaf/content/_secondary_panel.haml +3 -0
- data/app/views/releaf/content/_show.field.content.haml +11 -0
- data/app/views/releaf/content/_tree_level.haml +16 -0
- data/app/views/releaf/content/ajax.new.haml +3 -0
- data/app/views/releaf/content/index.haml +0 -0
- data/app/views/releaf/roles/_edit.field.admins.haml +0 -0
- data/app/views/releaf/roles/_edit.field.permissions.haml +5 -0
- data/app/views/releaf/roles/_show.field.default.haml +6 -0
- data/app/views/releaf/roles/_show.field.permissions.haml +11 -0
- data/app/views/releaf/sessions/new.html.haml +17 -0
- data/app/views/releaf/translations/_edit.body.haml +50 -0
- data/app/views/releaf/translations/_edit.header.haml +19 -0
- data/app/views/releaf/translations/_index.row.haml +5 -0
- data/app/views/releaf/translations/_secondary_panel.haml +13 -0
- data/bin/releaf +25 -0
- data/lib/generators/releaf/install_generator.rb +87 -0
- data/lib/generators/releaf/templates/config/common_fields.yml.example +17 -0
- data/lib/generators/releaf/templates/controllers/home_controller.rb +4 -0
- 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 +59 -0
- data/lib/generators/releaf/templates/initializers/releaf_i18n.rb +8 -0
- data/lib/generators/releaf/templates/initializers/releaf_store_current_template.rb +25 -0
- data/lib/generators/releaf/templates/javascripts/3rd_party/jquery_ui.js +14850 -0
- data/lib/generators/releaf/templates/javascripts/3rd_party/lightbox.js.erb +379 -0
- data/lib/generators/releaf/templates/javascripts/application.js +15 -0
- data/lib/generators/releaf/templates/javascripts/lib/js_check.js +8 -0
- data/lib/generators/releaf/templates/javascripts/lib/request_url.js +169 -0
- data/lib/generators/releaf/templates/javascripts/lib/sortable.js +29 -0
- data/lib/generators/releaf/templates/migrations/create_releaf_admins.rb +53 -0
- data/lib/generators/releaf/templates/migrations/create_releaf_nodes.rb +25 -0
- data/lib/generators/releaf/templates/migrations/create_releaf_roles.rb +11 -0
- data/lib/generators/releaf/templates/migrations/create_releaf_tinymce_assets.rb +10 -0
- data/lib/generators/releaf/templates/migrations/create_releaf_translations.rb +31 -0
- data/lib/generators/releaf/templates/models/admin_ability.rb +51 -0
- data/lib/generators/releaf/templates/seeds.rb +64 -0
- data/lib/generators/releaf/templates/stylesheets/3rd_party/jquery_ui/smoothness.css.erb +1174 -0
- data/lib/generators/releaf/templates/stylesheets/3rd_party/lightbox.css.erb +157 -0
- data/lib/generators/releaf/templates/stylesheets/3rd_party/reset.css +48 -0
- data/lib/generators/releaf/templates/stylesheets/application.scss +15 -0
- data/lib/generators/releaf/templates/stylesheets/style.scss +45 -0
- data/lib/generators/releaf/templates/views/home/index.html.haml +1 -0
- data/lib/generators/releaf/templates/views/layouts/application.html.haml +26 -0
- data/lib/i18n/backend/releaf.rb +96 -0
- data/lib/i18n/backend/releaf/translation.rb +56 -0
- data/lib/i18n/backend/releaf/translation_data.rb +32 -0
- data/lib/i18n/backend/releaf/translation_group.rb +30 -0
- data/lib/i18n/releaf.rb +1 -0
- data/lib/releaf.rb +30 -0
- data/lib/releaf/engine.rb +4 -0
- data/lib/releaf/slug.rb +79 -0
- data/lib/releaf/version.rb +3 -0
- data/lib/tasks/releaf_tasks.rake +4 -0
- data/spec/dummy/README.rdoc +261 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/images/rails.png +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/models/admin_ability.rb +51 -0
- data/spec/dummy/app/models/settings.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.haml +10 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +68 -0
- data/spec/dummy/config/boot.rb +6 -0
- data/spec/dummy/config/common_fields.yml.example +17 -0
- data/spec/dummy/config/database.yml +42 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +67 -0
- data/spec/dummy/config/environments/test.rb +37 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/devise.rb +232 -0
- data/spec/dummy/config/initializers/dragonfly.rb +1 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/releaf.rb +59 -0
- data/spec/dummy/config/initializers/releaf_i18n.rb +8 -0
- data/spec/dummy/config/initializers/releaf_store_current_template.rb +25 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/devise.en.yml +58 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +11 -0
- data/spec/dummy/db/migrate/20130204164516_create_settings.rb +17 -0
- data/spec/dummy/db/migrate/20130204164523_create_releaf_nodes.rb +25 -0
- data/spec/dummy/db/migrate/20130204164524_create_releaf_roles.rb +11 -0
- data/spec/dummy/db/migrate/20130204164525_create_releaf_translations.rb +31 -0
- data/spec/dummy/db/migrate/20130204164526_create_releaf_admins.rb +53 -0
- data/spec/dummy/db/schema.rb +112 -0
- data/spec/dummy/db/seeds.rb +64 -0
- data/spec/dummy/doc/README_FOR_APP +2 -0
- data/spec/dummy/log/development.log +74 -0
- data/spec/dummy/log/test.log +129 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/tmp/cache/9C5/660/settings%3Ai18n_updated_at +1 -0
- data/spec/factories/factories.rb +24 -0
- data/spec/features/admin_spec.rb +41 -0
- data/spec/spec_helper.rb +23 -0
- data/templates/releaf/installer.rb +196 -0
- metadata +777 -0
@@ -0,0 +1,8 @@
|
|
1
|
+
.field.type_datetime{ 'data-name' => name }
|
2
|
+
.label_wrap><
|
3
|
+
= f.label name, name.to_s.humanize + ':'
|
4
|
+
.description= I18n.t("field.Format %{_format}", :default => "Format: %{_format}", :_format => I18n.t("format.input.datetime", :default => 'yyyy-mm-dd hh:mm:ss'))
|
5
|
+
-# FIXME
|
6
|
+
-# .value><= f.text_field name, l(f.object.send(name), :format => :datetime_picker), :class => 'datetime_picker', :data => {:date_format => I18n.t("format.jquery.datepicker.date", :default => 'yy-mm-dd'), :time_format => I18n.t("format.jquery.datepicker.time", :default => 'HH:mm:ss') }
|
7
|
+
.value><= f.text_field name, :class => 'datetime_picker', :data => {:date_format => I18n.t("format.jquery.datepicker.date", :default => 'yy-mm-dd'), :time_format => I18n.t("format.jquery.datepicker.time", :default => 'HH:mm:ss') }
|
8
|
+
.clear
|
@@ -0,0 +1,10 @@
|
|
1
|
+
.field.type_file{ 'data-name' => name }
|
2
|
+
- field_name = name.sub(/_uid$/, '')
|
3
|
+
|
4
|
+
.label_wrap><= f.label field_name, field_name.to_s.humanize + ':'
|
5
|
+
.value><
|
6
|
+
= f.file_field field_name
|
7
|
+
- unless f.object.send(name).blank?
|
8
|
+
= f.hidden_field "retained_#{field_name}"
|
9
|
+
= link_to I18n.t("common.Download current"), f.object.send(field_name).url, :target => :_blank
|
10
|
+
.clear
|
@@ -0,0 +1,14 @@
|
|
1
|
+
.field.type_text{ 'data-name' => name }
|
2
|
+
- field_name = name.sub(/_uid$/, '')
|
3
|
+
|
4
|
+
.label_wrap><= f.label field_name, field_name.to_s.humanize + ':'
|
5
|
+
.value><
|
6
|
+
= f.file_field field_name, :accept => 'image/png,image/jpeg,image/bmp,image/gif'
|
7
|
+
- unless f.object.send(name).blank?
|
8
|
+
.value_preview
|
9
|
+
= f.hidden_field "retained_#{field_name}"
|
10
|
+
-# = image_tag f.object.send(field_name).thumb('x128').url
|
11
|
+
|
12
|
+
- img_object = f.object.send(field_name)
|
13
|
+
= link_to image_tag(img_object.thumb('x128>').url), img_object.url, :target => :_blank, :data => {:lightbox => true }
|
14
|
+
.clear
|
@@ -0,0 +1,27 @@
|
|
1
|
+
- default_locale = Settings.i18n_locales.first
|
2
|
+
|
3
|
+
.field.type_richtext.i18n{ :'data-name' => name }
|
4
|
+
- Settings.i18n_locales.each_with_index do |locale, i|
|
5
|
+
- translation = f.object.translations.find_or_initialize_by_locale(locale)
|
6
|
+
- is_default_locale = locale == default_locale
|
7
|
+
|
8
|
+
.localization{:"data-locale" => locale, :style => is_default_locale ? nil : 'display:none'}
|
9
|
+
= f.fields_for :"translations", translation, :child_index => i do |ff|
|
10
|
+
.label_wrap
|
11
|
+
= ff.label name, name.sub(/_html$/, '').to_s.humanize + ':'
|
12
|
+
.value
|
13
|
+
- unless translation.new_record?
|
14
|
+
= ff.hidden_field :id
|
15
|
+
= ff.hidden_field :locale
|
16
|
+
|
17
|
+
- if is_default_locale
|
18
|
+
= f.hidden_field name, :class => :sync_field
|
19
|
+
= ff.text_area name, :rows => 5, :cols => 75, :class => "richtext sync_field"
|
20
|
+
- else
|
21
|
+
= ff.text_area name, :rows => 5, :cols => 75, :class => "richtext"
|
22
|
+
.clear
|
23
|
+
|
24
|
+
.localization_buttons
|
25
|
+
- Settings.i18n_locales.each_with_index do |locale, i|
|
26
|
+
- is_default_locale = locale == default_locale
|
27
|
+
%button{:type => :button, :"data-locale" => locale, :class => is_default_locale ? :active : nil}= locale
|
@@ -0,0 +1,11 @@
|
|
1
|
+
:ruby
|
2
|
+
select_params = [name, select_options]
|
3
|
+
if defined? options
|
4
|
+
select_params.push options
|
5
|
+
end
|
6
|
+
select_params.push html_options if defined? html_options
|
7
|
+
|
8
|
+
.field.type_select{ 'data-name' => name }
|
9
|
+
.label_wrap><= f.label name, name.to_s.humanize + ':'
|
10
|
+
.value><= f.select *select_params
|
11
|
+
.clear
|
@@ -0,0 +1,27 @@
|
|
1
|
+
- default_locale = Settings.i18n_locales.first
|
2
|
+
|
3
|
+
.field.type_text.i18n{ :'data-name' => name }
|
4
|
+
- Settings.i18n_locales.each_with_index do |locale, i|
|
5
|
+
- translation = f.object.translations.find_or_initialize_by_locale(locale)
|
6
|
+
- is_default_locale = locale == default_locale
|
7
|
+
|
8
|
+
.localization{:"data-locale" => locale, :style => is_default_locale ? nil : 'display:none'}
|
9
|
+
= f.fields_for :"translations", translation, :child_index => i do |ff|
|
10
|
+
.label_wrap
|
11
|
+
= ff.label name, name.to_s.humanize + ':'
|
12
|
+
.value
|
13
|
+
- unless translation.new_record?
|
14
|
+
= ff.hidden_field :id
|
15
|
+
= ff.hidden_field :locale
|
16
|
+
|
17
|
+
- if is_default_locale
|
18
|
+
= f.hidden_field name, :class => :sync_field
|
19
|
+
= ff.text_field name, :class => :sync_field
|
20
|
+
- else
|
21
|
+
= ff.text_field name
|
22
|
+
.clear
|
23
|
+
|
24
|
+
.localization_buttons
|
25
|
+
- Settings.i18n_locales.each_with_index do |locale, i|
|
26
|
+
- is_default_locale = locale == default_locale
|
27
|
+
%button{:type => :button, :"data-locale" => locale, :class => is_default_locale ? :active : nil}= locale
|
@@ -0,0 +1,27 @@
|
|
1
|
+
- default_locale = Settings.i18n_locales.first
|
2
|
+
|
3
|
+
.field.type_textarea.i18n{ :'data-name' => name }
|
4
|
+
- Settings.i18n_locales.each_with_index do |locale, i|
|
5
|
+
- translation = f.object.translations.find_or_initialize_by_locale(locale)
|
6
|
+
- is_default_locale = locale == default_locale
|
7
|
+
|
8
|
+
.localization{:"data-locale" => locale, :style => is_default_locale ? nil : 'display:none'}
|
9
|
+
= f.fields_for :"translations", translation, :child_index => i do |ff|
|
10
|
+
.label_wrap
|
11
|
+
= ff.label name, name.to_s.humanize + ':'
|
12
|
+
.value
|
13
|
+
- unless translation.new_record?
|
14
|
+
= ff.hidden_field :id
|
15
|
+
= ff.hidden_field :locale
|
16
|
+
|
17
|
+
- if is_default_locale
|
18
|
+
= f.hidden_field name, :class => :sync_field
|
19
|
+
= ff.text_area name, :rows => 5, :cols => 75, :class => "sync_field"
|
20
|
+
- else
|
21
|
+
= ff.text_area name, :rows => 5, :cols => 75
|
22
|
+
.clear
|
23
|
+
|
24
|
+
.localization_buttons
|
25
|
+
- Settings.i18n_locales.each_with_index do |locale, i|
|
26
|
+
- is_default_locale = locale == default_locale
|
27
|
+
%button{:type => :button, :"data-locale" => locale, :class => is_default_locale ? :active : nil}= locale
|
@@ -0,0 +1,8 @@
|
|
1
|
+
.field.type_time{ 'data-name' => name }
|
2
|
+
.label_wrap><
|
3
|
+
= f.label name, name.to_s.humanize + ':'
|
4
|
+
.description= I18n.t("field.Format %{_format}", :default => 'Format %{_format}', :_format => I18n.t("format.input.time", :default => 'hh:mm') )
|
5
|
+
-# FIXME
|
6
|
+
-# .value><= f.text_field name, l(f.object.send(name), :format => :time_picker), :class => 'time_picker', :format => I18n.t("format.jquery.datepicker.time", :default => 'HH:mm')
|
7
|
+
.value><= f.text_field name, :class => 'time_picker', :format => I18n.t("format.jquery.datepicker.time", :default => 'HH:mm')
|
8
|
+
.clear
|
@@ -0,0 +1,14 @@
|
|
1
|
+
.footer.center
|
2
|
+
.block.left_block
|
3
|
+
%a.button{:href => "./"}
|
4
|
+
= image_tag("releaf/icons/arrow_left.png", :alt => "") \
|
5
|
+
= t('cancel')
|
6
|
+
.block.center_block
|
7
|
+
%button{:type => "submit"}
|
8
|
+
= image_tag("releaf/icons/disk.png", :alt => "") \
|
9
|
+
= t('save')
|
10
|
+
.block.right_block
|
11
|
+
- if @features[:destroy] && !f.object.new_record?
|
12
|
+
%a.button{ :href => url_for( :action => 'confirm_destroy', :id => f.object.id ) }
|
13
|
+
= image_tag('releaf/icons/bin_empty.png', :alt => '')
|
14
|
+
%span= t('destroy')
|
@@ -0,0 +1,4 @@
|
|
1
|
+
= form_for @item, :url => url_for( :action => @item.new_record? ? 'create' : 'update', :id => @item.id ), :validate => true, :class => "edit", :html => {:multipart => true} do |f|
|
2
|
+
= render "edit.header", :f => f
|
3
|
+
= render "edit.body", :f => f
|
4
|
+
= render "edit.footer", :f => f
|
@@ -0,0 +1,45 @@
|
|
1
|
+
- has_many_asoc_names = has_many_association_names(f.object.class)
|
2
|
+
- f.object.class.reflect_on_all_associations(:has_many).each do |asoc|
|
3
|
+
- next unless has_many_asoc_names.include?(asoc.name)
|
4
|
+
|
5
|
+
- if @controller.has_template( "_edit.field.#{asoc.name}" )
|
6
|
+
= render "edit.field.#{asoc.name}", :f => f
|
7
|
+
- else
|
8
|
+
|
9
|
+
- sortable_objects = asoc.klass.column_names.include?('position')
|
10
|
+
|
11
|
+
-# TODO remove code duplication
|
12
|
+
.nested_wrap
|
13
|
+
.nested_title= I18n.t(asoc.name)
|
14
|
+
.list{:"data-sortable" => sortable_objects ? '' : nil}
|
15
|
+
- f.object.send(asoc.name).each_with_index do |asoc_obj,i|
|
16
|
+
.item
|
17
|
+
|
18
|
+
= f.fields_for asoc.name, asoc_obj, :child_index => i do |ff|
|
19
|
+
- if sortable_objects
|
20
|
+
= ff.hidden_field :position, :class => :position
|
21
|
+
.handle
|
22
|
+
- (asoc_obj.class.column_names - %w[id updated_at created_at position]).reject {|f| f =~ /_id$/ }.each do |field_name|
|
23
|
+
- if @controller.has_template( "_edit.field.#{asoc.name}.#{field_name}" )
|
24
|
+
= render "edit.field.#{asoc.name}.#{field_name}", :f => f
|
25
|
+
- else
|
26
|
+
= render 'edit.field', :name => field_name, :f => ff
|
27
|
+
= render 'edit.field.type_delete_nested', :f => ff
|
28
|
+
|
29
|
+
|
30
|
+
.template.item{:style => 'display:none;'}
|
31
|
+
- asoc_obj = asoc.klass.new
|
32
|
+
= f.fields_for asoc.name, asoc_obj, :child_index => :_template_ do |ff|
|
33
|
+
- if sortable_objects
|
34
|
+
= ff.hidden_field :position, :class => :position
|
35
|
+
.handle
|
36
|
+
- (asoc_obj.class.column_names - %w[id updated_at created_at position]).each do |field_name|
|
37
|
+
- if @controller.has_template( "_edit.field.#{asoc.name}.#{field_name}" )
|
38
|
+
= render "edit.field.#{asoc.name}.#{field_name}", :f => f
|
39
|
+
- else
|
40
|
+
= render 'edit.field', :name => field_name, :f => ff
|
41
|
+
= render 'edit.field.type_delete_nested', :f => ff
|
42
|
+
|
43
|
+
%button.add.new(type='button')
|
44
|
+
= image_tag 'releaf/icons/add.png', :atl => ''
|
45
|
+
%span New
|
@@ -0,0 +1,19 @@
|
|
1
|
+
:ruby
|
2
|
+
text = item.send(name)
|
3
|
+
if name =~ /_id$/
|
4
|
+
if item.class.respond_to?(:reflect_on_association)
|
5
|
+
rel_name = name.sub(/_id$/, '').to_sym
|
6
|
+
if item.class.reflect_on_association(rel_name)
|
7
|
+
text = item.send(rel_name).try(:to_text) || item.send(rel_name).to_s
|
8
|
+
end
|
9
|
+
end
|
10
|
+
elsif name =~ /(thumbnail|image|photo|picture|avatar|logo|icon)_uid$/
|
11
|
+
unless item.send(name).blank?
|
12
|
+
text = image_tag item.send(name.sub(/_uid$/, '')).thumb('x16').url, :alt => ''
|
13
|
+
else
|
14
|
+
text = ""
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
%a.main{ :href => url_for( :action => @controller.list_action, :id => item.id ) }= text
|
@@ -0,0 +1,22 @@
|
|
1
|
+
.footer.center
|
2
|
+
.padding
|
3
|
+
.stats
|
4
|
+
%span.total= @list.count \
|
5
|
+
=t("itemsFound")
|
6
|
+
%span.actions
|
7
|
+
-if @features[:create]
|
8
|
+
%a.button.create_new_item{:href => url_for(:controller => controller.controller_name, :action => "new")}
|
9
|
+
= image_tag("releaf/icons/add.png", :alt => "add") \
|
10
|
+
%span= t('create_new_item')
|
11
|
+
%span.button_group.list_action_switch
|
12
|
+
-if @features[:show]
|
13
|
+
%button{:type => "button", :title => "switchToShow", "data-action" => "show", :class => @controller.list_action == "show" ? "active" : ""}>
|
14
|
+
= image_tag("releaf/icons/eye.png", :alt => "switchToShow")
|
15
|
+
-if @features[:edit]
|
16
|
+
%button{:type => "button", :title => "switchToEdit", "data-action" => "edit", :class => @controller.list_action == "edit" ? "active" : ""}>
|
17
|
+
= image_tag("releaf/icons/pencil.png", :alt => "switchToEdit")
|
18
|
+
-if @features[:destroy]
|
19
|
+
%button{:type => "button", :title => "switchToDelete", "data-action" => "confirm_destroy", :class => @controller.list_action == "confirm_destroy" ? "active" : ""}
|
20
|
+
= image_tag("releaf/icons/bin_empty.png", :alt => "switchToDelete")
|
21
|
+
- if !@continuous_scroll
|
22
|
+
= will_paginate( @list, :class=> "button_group pagination", :link_separator => "", :renderer => "Releaf::PaginationRenderer::LinkRenderer", :previous_label => "<", :next_label => ">", :outer_window => 0, :inner_window => 2 )
|
@@ -0,0 +1,5 @@
|
|
1
|
+
%form.search_form{:action => url_for( :controller => @controller.controller_name, :action => :index ), :title => "#{ @controller.current_object_class.respond_to?( :filter ) ? '' : 'Add :filter scope to ' + @controller.current_object_class.to_s + ' to enable searching' }"}
|
2
|
+
.special_field_wrap
|
3
|
+
%input.search{:name => "search", :type => "text", :value => params[:search], :autofocus => true, :disabled => !@controller.current_object_class.respond_to?( :filter ) }
|
4
|
+
%button.no_styling{:type => "submit", :disabled => !@controller.current_object_class.respond_to?( :filter )}>
|
5
|
+
= image_tag("releaf/icons/magnifier.png", :alt => "submit")
|
@@ -0,0 +1,8 @@
|
|
1
|
+
.releaf_table.no_border.selectable{"data-continuous" => @continuous_scroll ? "1" : "0", "data-items_per_page" => @items_per_page, "data-loading" => t("loading"), "data-total" => @list.count}
|
2
|
+
.thead
|
3
|
+
%div
|
4
|
+
- @controller.columns( params[:action] ).each do |name|
|
5
|
+
%div= name.sub(/_(id|uid|html)$/, '').to_s.humanize
|
6
|
+
.tbody
|
7
|
+
- @list.each do |item|
|
8
|
+
= render 'index.row', :item => item
|
@@ -0,0 +1,9 @@
|
|
1
|
+
.inner.standard_submenu
|
2
|
+
%ul.block
|
3
|
+
- menu.each do |section_key, section|
|
4
|
+
%li
|
5
|
+
.section_title= t(section_key, :scope => "admin.base_menu")
|
6
|
+
%ul
|
7
|
+
- section.each do |item|
|
8
|
+
%li{:class => ("active" if item[:controller] == controller.class.name.underscore.sub(/_controller$/, '')) }
|
9
|
+
%a{:href => url_for(:controller => item[:controller], :action => "index") }=t(item[:controller], :scope => "admin.base_menu")
|
@@ -0,0 +1,7 @@
|
|
1
|
+
.body.outset_box
|
2
|
+
.section
|
3
|
+
- @controller.columns( params[:action] ).each do |name|
|
4
|
+
- if @controller.has_template( "_show.field.#{name}" )
|
5
|
+
= render "show.field.#{name}", :name => name
|
6
|
+
- elsif !@item[name].blank? || @item.class.columns_hash[ name ].try(:type) == :boolean
|
7
|
+
= render 'show.field', :name => name
|
@@ -0,0 +1,78 @@
|
|
1
|
+
- value = @item.send(name)
|
2
|
+
- unless value.blank?
|
3
|
+
|
4
|
+
.field.no_label_wrap_padding
|
5
|
+
.label_wrap
|
6
|
+
.label= name.sub(/_(uid|html|id)$/, '').to_s.humanize + ':'
|
7
|
+
.value
|
8
|
+
|
9
|
+
- case name
|
10
|
+
- when /_id$/
|
11
|
+
- m = name.sub(/_id$/, '').to_sym
|
12
|
+
- if @item.class.respond_to?(:reflect_on_association) && @item.class.reflect_on_association(m)
|
13
|
+
= @item.send(m).to_text
|
14
|
+
- else
|
15
|
+
= @item.send(name)
|
16
|
+
|
17
|
+
- when /(thumbnail|image|photo|picture|avatar|logo|icon)_uid$/
|
18
|
+
-# FIXME should check if it's a dragonfly field
|
19
|
+
- m = name.sub(/_uid$/, '')
|
20
|
+
- case m
|
21
|
+
- when /avatar$/
|
22
|
+
= image_tag @item.send(m).thumb('64x64').url
|
23
|
+
- else
|
24
|
+
= link_to image_tag(@item.send(m).thumb('x128').url), @item.send(m).url
|
25
|
+
|
26
|
+
- when /_uid$/
|
27
|
+
-# FIXME should check if it's a dragonfly field
|
28
|
+
= link_to I18n.t("common.Download"), @item.send(name.sub(/_uid$/, '')).url
|
29
|
+
|
30
|
+
- when /password/
|
31
|
+
= I18n.t("common.Filtered")
|
32
|
+
|
33
|
+
- when /_link$/, 'link'
|
34
|
+
- if value =~ /\A\d+\z/
|
35
|
+
- target = Releaf::Node.find_by_id(value)
|
36
|
+
- if target
|
37
|
+
= link_to target.to_text, url_for(:action => :show, :id => value)
|
38
|
+
- else
|
39
|
+
= I18n.t("common.Not found")
|
40
|
+
- else
|
41
|
+
= link_to value, value
|
42
|
+
|
43
|
+
- when /_email$/, 'email'
|
44
|
+
= mail_to value, value
|
45
|
+
|
46
|
+
- when /_homepage$/, 'homepage'
|
47
|
+
= link_to value, value
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
- else
|
52
|
+
- column_type = @item.class.columns_hash[ name ].try(:type) || :string
|
53
|
+
- case column_type
|
54
|
+
- when :boolean
|
55
|
+
= @item.send("#{name}?") ? I18n.t("common.true") : I18n.t("common.false")
|
56
|
+
- when :text
|
57
|
+
- if name.end_with?( '_html' )
|
58
|
+
- field_type = 'richtext'
|
59
|
+
.raw_html= raw value
|
60
|
+
- else
|
61
|
+
= value
|
62
|
+
- when :datetime
|
63
|
+
-# FIXME
|
64
|
+
-# = I18n.l(value, :format => 'datetime_picker')
|
65
|
+
= value
|
66
|
+
- when :date
|
67
|
+
-# FIXME
|
68
|
+
-# = I18n.l(value, :format => 'date_picker')
|
69
|
+
= value
|
70
|
+
- when :time
|
71
|
+
-# FIXME
|
72
|
+
-# = I18n.l(value, :format => 'time_picker')
|
73
|
+
= value
|
74
|
+
|
75
|
+
- else
|
76
|
+
= value
|
77
|
+
|
78
|
+
.clear
|
@@ -0,0 +1 @@
|
|
1
|
+
.raw_html= raw @item.send name
|
@@ -0,0 +1,16 @@
|
|
1
|
+
.footer
|
2
|
+
.padding
|
3
|
+
.block.left_block
|
4
|
+
%a.button{ :href => url_for( :action => 'index' ) }
|
5
|
+
= image_tag 'releaf/icons/arrow_left.png', :alt => ''
|
6
|
+
%span= t('back')
|
7
|
+
-if @features[:edit]
|
8
|
+
.block.center_block
|
9
|
+
%a.button{ :href => url_for( :action => 'edit', :id => @item.id ) }
|
10
|
+
= image_tag 'releaf/icons/page_white_edit.png', :alt => ''
|
11
|
+
%span= t('edit')
|
12
|
+
-if @features[:destroy]
|
13
|
+
.block.right_block
|
14
|
+
%a.button{ :href => url_for( :action => 'confirm_destroy', :id => @item.id ) }
|
15
|
+
= image_tag('releaf/icons/bin_empty.png', :alt => '')
|
16
|
+
%span= t('destroy')
|