cardboard_cms 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +42 -0
- data/Gemfile.lock +324 -0
- data/Guardfile +23 -0
- data/LICENSE.txt +677 -0
- data/README.md +370 -0
- data/Rakefile +23 -0
- data/app/assets/images/cardboard/.gitkeep +0 -0
- data/app/assets/images/cardboard/bg.png +0 -0
- data/app/assets/images/cardboard/calendar.png +0 -0
- data/app/assets/images/cardboard/lorem-ipsum-coffe-mug.jpg +0 -0
- data/app/assets/javascripts/cardboard.js +1 -0
- data/app/assets/javascripts/cardboard/admin.js +62 -0
- data/app/assets/javascripts/cardboard/content_sidebar.js +27 -0
- data/app/assets/javascripts/cardboard/datepicker.js +19 -0
- data/app/assets/javascripts/cardboard/main_sidebar.js +32 -0
- data/app/assets/javascripts/cardboard/rich_text.js +81 -0
- data/app/assets/javascripts/cardboard/search_filter.js +28 -0
- data/app/assets/stylesheets/cardboard.css.scss +2 -0
- data/app/assets/stylesheets/cardboard/_bootstrap-select.css.scss +183 -0
- data/app/assets/stylesheets/cardboard/_content.css.scss +35 -0
- data/app/assets/stylesheets/cardboard/_content_sidebar.css.scss +96 -0
- data/app/assets/stylesheets/cardboard/_framework.css.scss +129 -0
- data/app/assets/stylesheets/cardboard/_main_sidebar.css.scss +38 -0
- data/app/assets/stylesheets/cardboard/_main_topbar.css.scss +62 -0
- data/app/assets/stylesheets/cardboard/_resources.css.scss +28 -0
- data/app/assets/stylesheets/cardboard/_rich_text.css.scss +6 -0
- data/app/assets/stylesheets/cardboard/_variables.scss +326 -0
- data/app/assets/stylesheets/cardboard/admin.css.scss +63 -0
- data/app/controllers/cardboard/application_controller.rb +45 -0
- data/app/controllers/cardboard/dashboard_controller.rb +9 -0
- data/app/controllers/cardboard/my_account_controller.rb +27 -0
- data/app/controllers/cardboard/pages_controller.rb +34 -0
- data/app/controllers/cardboard/resource_controller.rb +61 -0
- data/app/controllers/cardboard/settings_controller.rb +28 -0
- data/app/controllers/cardboard/super_user_controller.rb +8 -0
- data/app/controllers/pages_controller.rb +29 -0
- data/app/decorators/controllers/application_controller_decorator.rb +9 -0
- data/app/decorators/lib/cardboard/user_class_decorator.rb +32 -0
- data/app/helpers/cardboard/application_helper.rb +4 -0
- data/app/helpers/cardboard/public_helper.rb +53 -0
- data/app/helpers/cardboard/resource_helper.rb +80 -0
- data/app/inputs/date_picker_input.rb +10 -0
- data/app/inputs/date_time_input.rb +7 -0
- data/app/inputs/image_input.rb +3 -0
- data/app/inputs/rich_text_input.rb +6 -0
- data/app/models/cardboard/field.rb +67 -0
- data/app/models/cardboard/field/boolean.rb +29 -0
- data/app/models/cardboard/field/date.rb +24 -0
- data/app/models/cardboard/field/decimal.rb +25 -0
- data/app/models/cardboard/field/external_link.rb +4 -0
- data/app/models/cardboard/field/file.rb +19 -0
- data/app/models/cardboard/field/image.rb +33 -0
- data/app/models/cardboard/field/integer.rb +26 -0
- data/app/models/cardboard/field/resource_link.rb +4 -0
- data/app/models/cardboard/field/rich_text.rb +21 -0
- data/app/models/cardboard/field/string.rb +16 -0
- data/app/models/cardboard/field/text.rb +15 -0
- data/app/models/cardboard/page.rb +253 -0
- data/app/models/cardboard/page_part.rb +79 -0
- data/app/models/cardboard/setting.rb +46 -0
- data/app/views/cardboard/dashboard/index.html.slim +1 -0
- data/app/views/cardboard/fields/_base_input.html.slim +1 -0
- data/app/views/cardboard/fields/_boolean.html.slim +4 -0
- data/app/views/cardboard/fields/_date.html.slim +1 -0
- data/app/views/cardboard/fields/_external_link.html.slim +2 -0
- data/app/views/cardboard/fields/_file.html.slim +12 -0
- data/app/views/cardboard/fields/_image.html.slim +11 -0
- data/app/views/cardboard/fields/_resource_link.html.slim +2 -0
- data/app/views/cardboard/fields/_rich_text.html.slim +3 -0
- data/app/views/cardboard/fields/_string.html.slim +1 -0
- data/app/views/cardboard/my_account/edit.html.slim +29 -0
- data/app/views/cardboard/pages/_error.html.slim +7 -0
- data/app/views/cardboard/pages/_seo.html.slim +6 -0
- data/app/views/cardboard/pages/_sidebar.html.slim +17 -0
- data/app/views/cardboard/pages/_subpart_fields.html.slim +20 -0
- data/app/views/cardboard/pages/_url_field.html.slim +20 -0
- data/app/views/cardboard/pages/edit.html.slim +43 -0
- data/app/views/cardboard/pages/index.html.slim +2 -0
- data/app/views/cardboard/pages/show.html.slim +9 -0
- data/app/views/cardboard/resources/_advanced_search.html.slim +40 -0
- data/app/views/cardboard/resources/_search_button.html.slim +2 -0
- data/app/views/cardboard/resources/_search_helper.html.slim +17 -0
- data/app/views/cardboard/resources/_simple_search.html.slim +6 -0
- data/app/views/cardboard/rich_editor/_links_modal.html.slim +39 -0
- data/app/views/cardboard/settings/index.html.slim +8 -0
- data/app/views/cardboard/super_user/index.html.slim +10 -0
- data/app/views/layouts/cardboard/_flash_message.html.slim +6 -0
- data/app/views/layouts/cardboard/_head.html.slim +16 -0
- data/app/views/layouts/cardboard/_main_sidebar.html.slim +12 -0
- data/app/views/layouts/cardboard/_main_topbar.html.slim +32 -0
- data/app/views/layouts/cardboard/application.html.slim +28 -0
- data/cardboard.gemspec +57 -0
- data/config/initializers/dragonfly.rb +27 -0
- data/config/initializers/ranker_mapper_finder_bugfix.rb +43 -0
- data/config/initializers/simple_form.rb +142 -0
- data/config/initializers/simple_form_bootstrap.rb +45 -0
- data/config/locales/simple_form.en.yml +26 -0
- data/config/routes.rb +53 -0
- data/doc/apple-touch-icon.png +0 -0
- data/doc/classes/Cardboard.html +190 -0
- data/doc/classes/Cardboard/AdminController.html +134 -0
- data/doc/classes/Cardboard/AdminHelper.html +307 -0
- data/doc/classes/Cardboard/ApplicationController.html +76 -0
- data/doc/classes/Cardboard/ApplicationHelper.html +70 -0
- data/doc/classes/Cardboard/DashboardController.html +131 -0
- data/doc/classes/Cardboard/Field.html +283 -0
- data/doc/classes/Cardboard/Field/Boolean.html +218 -0
- data/doc/classes/Cardboard/Field/Date.html +218 -0
- data/doc/classes/Cardboard/Field/Decimal.html +218 -0
- data/doc/classes/Cardboard/Field/ExternalLink.html +76 -0
- data/doc/classes/Cardboard/Field/File.html +131 -0
- data/doc/classes/Cardboard/Field/Image.html +181 -0
- data/doc/classes/Cardboard/Field/Integer.html +218 -0
- data/doc/classes/Cardboard/Field/ResourceLink.html +76 -0
- data/doc/classes/Cardboard/Field/RichText.html +131 -0
- data/doc/classes/Cardboard/Field/String.html +131 -0
- data/doc/classes/Cardboard/Page.html +1184 -0
- data/doc/classes/Cardboard/PagePart.html +304 -0
- data/doc/classes/Cardboard/PagesController.html +186 -0
- data/doc/classes/Cardboard/PublicHelper.html +252 -0
- data/doc/classes/Cardboard/Setting.html +240 -0
- data/doc/classes/Cardboard/SettingsController.html +184 -0
- data/doc/classes/Cardboard/SuperUserController.html +130 -0
- data/doc/classes/Cardboard/UsersController.html +191 -0
- data/doc/classes/DatePickerInput.html +132 -0
- data/doc/classes/ImageInput.html +76 -0
- data/doc/classes/Object.html +211 -0
- data/doc/classes/PagesController.html +145 -0
- data/doc/classes/RichTextInput.html +132 -0
- data/doc/created.rid +31 -0
- data/doc/css/github.css +129 -0
- data/doc/css/main.css +333 -0
- data/doc/css/panel.css +384 -0
- data/doc/css/reset.css +48 -0
- data/doc/favicon.ico +0 -0
- data/doc/files/app/controllers/cardboard/admin_controller_rb.html +79 -0
- data/doc/files/app/controllers/cardboard/application_controller_rb.html +84 -0
- data/doc/files/app/controllers/cardboard/dashboard_controller_rb.html +84 -0
- data/doc/files/app/controllers/cardboard/pages_controller_rb.html +84 -0
- data/doc/files/app/controllers/cardboard/settings_controller_rb.html +84 -0
- data/doc/files/app/controllers/cardboard/super_user_controller_rb.html +84 -0
- data/doc/files/app/controllers/cardboard/users_controller_rb.html +84 -0
- data/doc/files/app/controllers/pages_controller_rb.html +79 -0
- data/doc/files/app/decorators/controllers/application_controller_decorator_rb.html +68 -0
- data/doc/files/app/decorators/lib/cardboard/user_class_decorator_rb.html +68 -0
- data/doc/files/app/helpers/cardboard/admin_helper_rb.html +84 -0
- data/doc/files/app/helpers/cardboard/application_helper_rb.html +84 -0
- data/doc/files/app/helpers/cardboard/public_helper_rb.html +84 -0
- data/doc/files/app/inputs/date_picker_input_rb.html +79 -0
- data/doc/files/app/inputs/image_input_rb.html +79 -0
- data/doc/files/app/inputs/rich_text_input_rb.html +79 -0
- data/doc/files/app/models/cardboard/field/boolean_rb.html +84 -0
- data/doc/files/app/models/cardboard/field/date_rb.html +84 -0
- data/doc/files/app/models/cardboard/field/decimal_rb.html +84 -0
- data/doc/files/app/models/cardboard/field/external_link_rb.html +84 -0
- data/doc/files/app/models/cardboard/field/file_rb.html +84 -0
- data/doc/files/app/models/cardboard/field/image_rb.html +84 -0
- data/doc/files/app/models/cardboard/field/integer_rb.html +84 -0
- data/doc/files/app/models/cardboard/field/resource_link_rb.html +84 -0
- data/doc/files/app/models/cardboard/field/rich_text_rb.html +84 -0
- data/doc/files/app/models/cardboard/field/string_rb.html +84 -0
- data/doc/files/app/models/cardboard/field_rb.html +84 -0
- data/doc/files/app/models/cardboard/page_part_rb.html +84 -0
- data/doc/files/app/models/cardboard/page_rb.html +84 -0
- data/doc/files/app/models/cardboard/setting_rb.html +84 -0
- data/doc/i/arrows.png +0 -0
- data/doc/i/results_bg.png +0 -0
- data/doc/i/tree_bg.png +0 -0
- data/doc/index.html +13 -0
- data/doc/js/highlight.pack.js +1 -0
- data/doc/js/jquery-1.3.2.min.js +19 -0
- data/doc/js/jquery-effect.js +593 -0
- data/doc/js/main.js +24 -0
- data/doc/js/navigation.js +142 -0
- data/doc/js/search_index.js +1 -0
- data/doc/js/searchdoc.js +449 -0
- data/doc/js/searcher.js +228 -0
- data/doc/panel/index.html +73 -0
- data/doc/panel/links.html +66 -0
- data/doc/panel/tree.js +1 -0
- data/lib/cardboard/application.rb +67 -0
- data/lib/cardboard/engine.rb +83 -0
- data/lib/cardboard/helpers/seed.rb +80 -0
- data/lib/cardboard/helpers/settings.rb +58 -0
- data/lib/cardboard/version.rb +3 -0
- data/lib/cardboard_cms.rb +34 -0
- data/lib/generators/cardboard/assets/assets_generator.rb +18 -0
- data/lib/generators/cardboard/install/install_generator.rb +96 -0
- data/lib/generators/cardboard/install/templates/cardboard.rb.erb +53 -0
- data/lib/generators/cardboard/install/templates/cardboard.yml +29 -0
- data/lib/generators/cardboard/install/templates/index.html.erb +0 -0
- data/lib/generators/cardboard/install/templates/migrations/1_create_cardboard_fields.rb +21 -0
- data/lib/generators/cardboard/install/templates/migrations/2_create_cardboard_page_parts.rb +17 -0
- data/lib/generators/cardboard/install/templates/migrations/3_create_cardboard_pages.rb +18 -0
- data/lib/generators/cardboard/install/templates/migrations/4_create_cardboard_settings.rb +14 -0
- data/lib/generators/cardboard/resource/resource_generator.rb +52 -0
- data/lib/generators/cardboard/resource/templates/admin_controller.rb +9 -0
- data/lib/generators/cardboard/resource/templates/slim/_fields.html.slim +5 -0
- data/lib/generators/cardboard/resource/templates/slim/edit.html.slim +4 -0
- data/lib/generators/cardboard/resource/templates/slim/index.html.slim +18 -0
- data/lib/generators/cardboard/resource/templates/slim/new.html.slim +4 -0
- data/lib/tasks/cardboard_tasks.rake +22 -0
- data/lib/templates/erb/scaffold/_form.html.erb +13 -0
- data/script/rails +8 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/images/defaults/CrashTest.jpg +0 -0
- data/test/dummy/app/assets/javascripts/admins.js +2 -0
- data/test/dummy/app/assets/javascripts/application.js +5 -0
- data/test/dummy/app/assets/javascripts/beans.js +2 -0
- data/test/dummy/app/assets/javascripts/cardboard.js +1 -0
- data/test/dummy/app/assets/javascripts/icescreams.js +2 -0
- data/test/dummy/app/assets/javascripts/main.js +2 -0
- data/test/dummy/app/assets/javascripts/news_posts.js +2 -0
- data/test/dummy/app/assets/javascripts/pianos.js +2 -0
- data/test/dummy/app/assets/stylesheets/admins.css.scss +3 -0
- data/test/dummy/app/assets/stylesheets/application.css.scss +9 -0
- data/test/dummy/app/assets/stylesheets/beans.css.scss +3 -0
- data/test/dummy/app/assets/stylesheets/cardboard.css.scss +5 -0
- data/test/dummy/app/assets/stylesheets/icescreams.css.scss +3 -0
- data/test/dummy/app/assets/stylesheets/main.css +4 -0
- data/test/dummy/app/assets/stylesheets/news_posts.css.scss +3 -0
- data/test/dummy/app/assets/stylesheets/pianos.css.scss +3 -0
- data/test/dummy/app/assets/stylesheets/scaffolds.css.scss +69 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/controllers/cardboard/pianos_controller.rb +6 -0
- data/test/dummy/app/controllers/pianos_controller.rb +83 -0
- data/test/dummy/app/helpers/application_helper.rb +9 -0
- data/test/dummy/app/helpers/cardboard/pianos_helper.rb +7 -0
- data/test/dummy/app/mailers/.gitkeep +0 -0
- data/test/dummy/app/models/.gitkeep +0 -0
- data/test/dummy/app/models/admin_user.rb +28 -0
- data/test/dummy/app/models/piano.rb +3 -0
- data/test/dummy/app/views/cardboard/pianos/_fields.html.slim +5 -0
- data/test/dummy/app/views/cardboard/pianos/edit.html.slim +6 -0
- data/test/dummy/app/views/cardboard/pianos/index.html.slim +18 -0
- data/test/dummy/app/views/cardboard/pianos/new.html.slim +6 -0
- data/test/dummy/app/views/cardboard/pianos/show.html.slim +11 -0
- data/test/dummy/app/views/layouts/application.html.slim +24 -0
- data/test/dummy/app/views/main/index.html.slim +1 -0
- data/test/dummy/app/views/pages/about-us.html.slim +1 -0
- data/test/dummy/app/views/pages/home.html.slim +3 -0
- data/test/dummy/app/views/pianos/_form.html.erb +25 -0
- data/test/dummy/app/views/pianos/edit.html.erb +6 -0
- data/test/dummy/app/views/pianos/index.html.erb +25 -0
- data/test/dummy/app/views/pianos/new.html.erb +5 -0
- data/test/dummy/app/views/pianos/show.html.erb +15 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +50 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/cardboard.yml +126 -0
- data/test/dummy/config/database.yml +17 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +24 -0
- data/test/dummy/config/environments/production.rb +70 -0
- data/test/dummy/config/environments/test.rb +33 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cardboard.rb +53 -0
- data/test/dummy/config/initializers/devise.rb +240 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +8 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/devise.en.yml +59 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +16 -0
- data/test/dummy/db/migrate/20130403142235_create_pianos.rb +10 -0
- data/test/dummy/db/migrate/20130417134832_add_devise_to_admin_users.rb +53 -0
- data/test/dummy/db/migrate/20130426021522_create_news_posts.rb +10 -0
- data/test/dummy/db/migrate/20130501195423_create_icescreams.rb +10 -0
- data/test/dummy/db/migrate/20130502165540_create_beans.rb +12 -0
- data/test/dummy/db/migrate/20130522151358_create_cardboard_fields.rb +21 -0
- data/test/dummy/db/migrate/20130522151359_create_cardboard_page_parts.rb +17 -0
- data/test/dummy/db/migrate/20130522151400_create_cardboard_pages.rb +18 -0
- data/test/dummy/db/migrate/20130522151401_create_cardboard_settings.rb +14 -0
- data/test/dummy/db/migrate/20130607132558_create_admins.rb +9 -0
- data/test/dummy/db/schema.rb +129 -0
- data/test/dummy/db/seeds.rb +2 -0
- data/test/dummy/lib/assets/.gitkeep +0 -0
- data/test/dummy/log/.gitkeep +0 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/10_39_10_816_404_no_file.png +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/10_39_10_816_404_no_file.png.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/10_39_17_87_404_no_file.png +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/10_39_17_87_404_no_file.png.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/10_39_34_680_404_no_file.png +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/10_39_34_680_404_no_file.png.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/10_44_00_698_404_no_file.png +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/10_44_00_698_404_no_file.png.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/10_46_49_55_6152message_in_a_bottle.jpeg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/10_46_49_55_6152message_in_a_bottle.jpeg.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/14_10_30_773_404_no_file.png +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/14_10_30_773_404_no_file.png.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/14_10_38_856_airport_shuttles_20130207_1647.csv +8 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/14_10_38_856_airport_shuttles_20130207_1647.csv.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/14_12_12_144_1361696555_GMail_Android_R.png +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/14_12_12_144_1361696555_GMail_Android_R.png.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/14_16_40_989_404_no_file.png +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/14_16_40_989_404_no_file.png.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/14_19_19_40_6152message_in_a_bottle.jpeg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/14_19_19_40_6152message_in_a_bottle.jpeg.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/14_21_21_825_6152message_in_a_bottle.jpeg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/14_21_21_825_6152message_in_a_bottle.jpeg.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/15_46_33_341_bio.jpg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/15_46_33_341_bio.jpg.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/15_52_55_892_404_no_file.png +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/15_52_55_892_404_no_file.png.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/15_52_56_30_404_no_file.png +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/16/15_52_56_30_404_no_file.png.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/15_24_04_585_Sky_3920445.jpg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/15_24_04_585_Sky_3920445.jpg.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/15_25_41_111_Sky_3920445.jpg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/15_25_41_111_Sky_3920445.jpg.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/15_27_16_937_Sky_3920445.jpg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/15_27_16_937_Sky_3920445.jpg.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/15_27_57_585_Sky_3920445.jpg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/15_27_57_585_Sky_3920445.jpg.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/15_28_24_991_Sky_3920445.jpg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/15_28_24_991_Sky_3920445.jpg.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/15_33_30_610_Sky_3920445.jpg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/15_33_30_610_Sky_3920445.jpg.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/15_35_18_437_Sky_3920445.jpg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/15_35_18_437_Sky_3920445.jpg.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/16_45_07_162_Vehicle_Types.jpg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/17/16_45_07_162_Vehicle_Types.jpg.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/18/22_27_35_733_hall.jpg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/18/22_27_35_733_hall.jpg.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/18/22_29_15_808_fluidicon.png +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/18/22_29_15_808_fluidicon.png.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/18/22_29_15_989_fluidicon.png +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/18/22_29_15_989_fluidicon.png.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/19/09_54_44_881_hall3.jpg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/19/09_54_44_881_hall3.jpg.meta +2 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/19/09_54_45_450_hall3.jpg +0 -0
- data/test/dummy/public/system/dragonfly/development/2013/04/19/09_54_45_450_hall3.jpg.meta +2 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/test/fixtures/admins.yml +7 -0
- data/test/dummy/test/functional/admins_controller_test.rb +49 -0
- data/test/dummy/test/unit/admin_test.rb +7 -0
- data/test/dummy/test/unit/helpers/admins_helper_test.rb +4 -0
- data/test/factories.rb +47 -0
- data/test/integration/page_editing_test.rb +77 -0
- data/test/integration/seeding_test.rb +96 -0
- data/test/models/field_test.rb +102 -0
- data/test/models/page_test.rb +105 -0
- data/test/test_helper.rb +40 -0
- data/vendor/assets/javascripts/cardboard/bootstrap-select.js +590 -0
- data/vendor/assets/javascripts/cardboard/jquery.livesearch.js +48 -0
- data/vendor/assets/javascripts/cardboard/jquery.pjax.js +822 -0
- data/vendor/assets/javascripts/cardboard/jquery.wysihtml5_size_matters.js.coffee +44 -0
- data/vendor/assets/javascripts/cardboard/jquery.wysihtml5imgresizer.js +320 -0
- data/vendor/assets/javascripts/cardboard/wysihtml5-0.4.0pre.js +9579 -0
- metadata +1011 -0
data/README.md
ADDED
@@ -0,0 +1,370 @@
|
|
1
|
+
# Cardboard
|
2
|
+
[![Code Climate](https://codeclimate.com/github/smashingboxes/cardboard.png)](https://codeclimate.com/github/smashingboxes/cardboard)
|
3
|
+
|
4
|
+
Cardboard is a simple CMS Engine for your Rails 4 applications.
|
5
|
+
|
6
|
+
## Features
|
7
|
+
|
8
|
+
* Build for Rails 4
|
9
|
+
* Make your site and your admin area the standard rails way (no complex engines)
|
10
|
+
* Create pages and site settings in seconds
|
11
|
+
* Repeatable page parts
|
12
|
+
* Write your views in haml/slim/erb...! (no restrictive DSL or templating language)
|
13
|
+
* Your customers will love the UI/UX
|
14
|
+
* Super easy to extend and customize
|
15
|
+
* It's like your favorite admin interface gem just had a baby with a CMS
|
16
|
+
|
17
|
+
![alt text](https://github.com/smashingboxes/cardboard/wiki/images/2a.jpg "screenshot1")
|
18
|
+
|
19
|
+
## Requirements
|
20
|
+
* An authentication solution. For example, [here is what you need to do](https://github.com/plataformatec/devise#getting-started) to get `Devise` installed.
|
21
|
+
* `imagemagick` (on mac do `brew install imagemagick`)
|
22
|
+
* `Rails 4` and `Ruby 2.0`
|
23
|
+
|
24
|
+
## Installation
|
25
|
+
Add the gem to the `Gemfile`
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
gem "cardboard_cms", github: "smashingboxes/cardboard"
|
29
|
+
```
|
30
|
+
|
31
|
+
And run `bundle install`.
|
32
|
+
|
33
|
+
Run the generator to install cardboard and it's migrations:
|
34
|
+
```sh
|
35
|
+
rails g cardboard:install
|
36
|
+
rake db:migrate
|
37
|
+
```
|
38
|
+
|
39
|
+
Edit your `config/cardboard.yml` file then run
|
40
|
+
|
41
|
+
```sh
|
42
|
+
rake cardboard:seed
|
43
|
+
```
|
44
|
+
|
45
|
+
|
46
|
+
## Usage
|
47
|
+
### Get a page
|
48
|
+
Add a file in your `app/views/pages` with filename matching the identifier of the page. Inside this file you can access the page with:
|
49
|
+
```ruby
|
50
|
+
current_page
|
51
|
+
```
|
52
|
+
### Fetch a page part
|
53
|
+
```ruby
|
54
|
+
current_page.get('slideshow')
|
55
|
+
```
|
56
|
+
|
57
|
+
### Fetch a repeatable page part
|
58
|
+
Repeatable parts returns an active record collection. This means that regular Rails methods such as `where`, `limit`, `first`, `each`, etc can be used on page parts
|
59
|
+
```slim
|
60
|
+
- current_page.get('slideshow').each do |slide|
|
61
|
+
p= image_tag slide.attr('image1').thumb('600x300').url, alt: slide.attr('description') if slide.attr('image1')
|
62
|
+
```
|
63
|
+
### Fetch a single field
|
64
|
+
If this part is **not repeatable** you can use both
|
65
|
+
```ruby
|
66
|
+
current_page.get('intro').attr('text1')
|
67
|
+
# Or
|
68
|
+
current_page.get('intro.text1')
|
69
|
+
```
|
70
|
+
### Image Fields methods
|
71
|
+
Images returned by `image` type fields are [Dragonfly](http://markevans.github.io/dragonfly/) objects. As such, it's possible to edit them directly from the view.
|
72
|
+
|
73
|
+
```ruby
|
74
|
+
if image = current_page.get('intro.image1')
|
75
|
+
image.url # URL of the modified image
|
76
|
+
image.thumb('40x30#').url # resize, crop if necessary to maintain aspect ratio (centre gravity)
|
77
|
+
image.process(:greyscale).thumb('40x30#').url
|
78
|
+
end # Hint: remember to check if image is not nil before calling methods on it
|
79
|
+
```
|
80
|
+
More options and methods are available at [Dragonfly's Documentation](http://markevans.github.io/dragonfly/file.ImageMagick.html)
|
81
|
+
|
82
|
+
### File field methods
|
83
|
+
Similarly to images, files are also Dragonfly objects. This allows such methods as:
|
84
|
+
|
85
|
+
```ruby
|
86
|
+
file.format # => :pdf
|
87
|
+
file.name # => "some.pdf"
|
88
|
+
number_to_human_size(file.size) # => "486 KB"
|
89
|
+
```
|
90
|
+
|
91
|
+
|
92
|
+
## Create Pages
|
93
|
+
To add pages to cardboard edit `config/cardboard.yml`. See an sample `cardboard.yml` in [https://github.com/smashingboxes/cardboard/blob/master/test/dummy/config/cardboard.yml](https://github.com/smashingboxes/cardboard/blob/master/test/dummy/config/cardboard.yml)
|
94
|
+
|
95
|
+
```yml
|
96
|
+
pages:
|
97
|
+
home_page:
|
98
|
+
title: Default page title
|
99
|
+
parts:
|
100
|
+
slideshow:
|
101
|
+
repeatable: true
|
102
|
+
fields:
|
103
|
+
image1:
|
104
|
+
type: image
|
105
|
+
required: true
|
106
|
+
default: CrashTest.jpg
|
107
|
+
position: 0
|
108
|
+
```
|
109
|
+
|
110
|
+
pages, parts and fields take identifiers (home_page, slideshow and image1) used to reference the data form the views. Choose these names carefully!
|
111
|
+
|
112
|
+
#### Pages
|
113
|
+
Each page section starts with the name of it's unique identifier. This name is used to reference the page in the code an thus should not change throughout the life of the project.
|
114
|
+
|
115
|
+
Key | Type | Default | Definition
|
116
|
+
---|--- | ---|---
|
117
|
+
[parts](#parts) | hash | nil |a list of page parts
|
118
|
+
title | string | identifier | name of the page as shown in the nav bar
|
119
|
+
position | integer | auto-increment | position of the page on the nav bar (the lowest position is the home page!)
|
120
|
+
parent_id | string | nil | identifier of the parent page (used for nested pages)
|
121
|
+
|
122
|
+
|
123
|
+
#### Parts
|
124
|
+
Each part sub-section starts with the name of it's unique identifier. This name is used to reference the part in the code an thus should not change throughout the life of the project.
|
125
|
+
|
126
|
+
Key | Type | Default | Definition
|
127
|
+
---|--- | ---|---
|
128
|
+
[fields](#fields) | hash | nil | list of fields that make this part's form
|
129
|
+
position | integer | auto-increment | position of the part on the admin page
|
130
|
+
repeatable | boolean | false | can the client add multiple of these parts (example a slide in a slideshow)
|
131
|
+
|
132
|
+
|
133
|
+
####fields
|
134
|
+
Each field sub-section starts with the name of it's unique identifier. This name is used to reference the field in the code an thus should not change throughout the life of the project.
|
135
|
+
|
136
|
+
Key | Type | Default | Definition
|
137
|
+
---|--- | ---|---
|
138
|
+
label | string | identifier | form field label
|
139
|
+
hint | string | nil | form field hint
|
140
|
+
placeholder | string | nil | form field placeholder
|
141
|
+
position | integer | auto-increment | position of the field within the part (only for the admin area)
|
142
|
+
required | boolean | true | must this field have a value for the form to save
|
143
|
+
type | string | `string` | choose between: `boolean`, `date`, `decimal`, `file`, `image`, `integer`, `rich_text`, `text`, `string`, `resource_link` (needs value: resource_linked (same as the controller name ex: pianos)), `external_link` (needs value: http://site.com)
|
144
|
+
default | string | nil | set the value but don't overwrite (only set if nil). Put default images in /assets/images/defaults and default files in /assets/files/defaults
|
145
|
+
value | string | nil | USE ONLY FOR types `resource_link` and `external_link` (this will overwrite user input, in most cases use the `default` key instead)
|
146
|
+
|
147
|
+
|
148
|
+
## Create Resources
|
149
|
+
To add an admin area for a model simply type (make sure the model exists first and migrations have been run)
|
150
|
+
|
151
|
+
```sh
|
152
|
+
rails g cardboard:resource model_name
|
153
|
+
```
|
154
|
+
|
155
|
+
Then customize the `controllers/cardboard/model_name_controller.rb` and associated views to your heart's desire.
|
156
|
+
|
157
|
+
|
158
|
+
The default cardboard resource scaffold help you quickly get started by making the most of the following gems.
|
159
|
+
|
160
|
+
Gem | Description
|
161
|
+
--- | ---
|
162
|
+
[InheritedResources](https://github.com/josevalim/inherited_resources) | Inherited Resources speeds up development by making your controllers inherit all restful actions so you just have to focus on what is important.
|
163
|
+
[Simple Form](https://github.com/plataformatec/simple_form) | Forms made easy! It's tied to a simple DSL, with no opinion on markup.
|
164
|
+
[Kaminari](https://github.com/amatsuda/kaminari) | A Scope & Engine based, clean, powerful, customizable and sophisticated paginator
|
165
|
+
[Ransack](https://github.com/ernie/ransack) | Object-based searching and filtering
|
166
|
+
[Dragonfly](https://github.com/markevans/dragonfly) | On-the-fly image processing and file uploading
|
167
|
+
|
168
|
+
|
169
|
+
### Menu options
|
170
|
+
```ruby
|
171
|
+
menu label: "Test", priority: 1
|
172
|
+
```
|
173
|
+
You can also choose to remove a resource from the menu
|
174
|
+
```ruby
|
175
|
+
menu false
|
176
|
+
```
|
177
|
+
|
178
|
+
### Sorting
|
179
|
+
```ruby
|
180
|
+
default_order "name DESC" # default: 'updated_at desc'
|
181
|
+
```
|
182
|
+
You can pass any `ransack` sort order, which includes associations. Example:
|
183
|
+
```ruby
|
184
|
+
default_order "user_name" # belongs to a user
|
185
|
+
```
|
186
|
+
|
187
|
+
#### Filter helper
|
188
|
+
You can show filters on your resource index page simply by adding `cardboard_filters`, with the model class, the main field to search (has to be a text or string field), and options.
|
189
|
+
|
190
|
+
```ruby
|
191
|
+
= cardboard_filters User, :name
|
192
|
+
```
|
193
|
+
|
194
|
+
`title`: change the page's title (optional)
|
195
|
+
|
196
|
+
`new_button`: Options for the button used to create a new resource element. Can be `false` to remove it, or `label` and `url` can be modified (optional).
|
197
|
+
|
198
|
+
`predicate`: defaults to `cont` (contains). Note: On non text fields, this field is required
|
199
|
+
|
200
|
+
Example:
|
201
|
+
```ruby
|
202
|
+
= cardboard_filters User, :name, title: "Employees", new_button: {label: "Add an employee"}
|
203
|
+
```
|
204
|
+
|
205
|
+
#### Pagination Helper
|
206
|
+
We use kaminari, so all you need to do is add to your index view:
|
207
|
+
```ruby
|
208
|
+
= paginate @users
|
209
|
+
```
|
210
|
+
|
211
|
+
|
212
|
+
#### Column sorting helper
|
213
|
+
Cardboard's controllers inherit from a `@q` variable which gives access to the ransack gem.
|
214
|
+
```
|
215
|
+
= sort_link @q, :name, "Product Name"
|
216
|
+
```
|
217
|
+
|
218
|
+
#### Custom resource helpers
|
219
|
+
To add custom helpers for your resource simply create a helper with the same name.
|
220
|
+
Example:
|
221
|
+
```ruby
|
222
|
+
module Cardboard
|
223
|
+
module PianosHelper
|
224
|
+
end
|
225
|
+
end
|
226
|
+
```
|
227
|
+
Make sure this file is located under `app/helpers/cardboard`
|
228
|
+
|
229
|
+
#### Custom CSS/JS
|
230
|
+
The css/js for the resources is the same as the cardboard admin interface. If you'd like to extend or overwrite some of these, simply edit the `cardboard.css.scss` or `cardboard.js` files located in your assets folder. These files were generated during the cardboard installation.
|
231
|
+
|
232
|
+
Note: Make sure to remove `*= require_tree .` from your application.css, you don't want your cardboard css and js to leak into your main app!
|
233
|
+
|
234
|
+
## Create Settings
|
235
|
+
You can create new settings that will be editable from the admin panel.
|
236
|
+
|
237
|
+
In your `config/cardboard.yml`
|
238
|
+
|
239
|
+
```yml
|
240
|
+
settings:
|
241
|
+
my_custom_setting:
|
242
|
+
type: boolean
|
243
|
+
default: true
|
244
|
+
```
|
245
|
+
all options/types from fields are available
|
246
|
+
|
247
|
+
Then you can use this setting in your views or controllers like so:
|
248
|
+
|
249
|
+
```ruby
|
250
|
+
Cardboard::Setting.my_custom_setting
|
251
|
+
```
|
252
|
+
|
253
|
+
## View Helpers
|
254
|
+
### Access Pages
|
255
|
+
```ruby
|
256
|
+
current_page
|
257
|
+
```
|
258
|
+
|
259
|
+
you can put your controller instance variables at the top of your view or in a decorator
|
260
|
+
```
|
261
|
+
app
|
262
|
+
|- decorators
|
263
|
+
|- controllers
|
264
|
+
|- pages_decorator
|
265
|
+
```
|
266
|
+
```ruby
|
267
|
+
PagesController.class_eval do
|
268
|
+
def page_identifier
|
269
|
+
@example = "cool"
|
270
|
+
end
|
271
|
+
end
|
272
|
+
```
|
273
|
+
### Page Path
|
274
|
+
In your controllers you may want to redirect to a specific page. You can do so with the following:
|
275
|
+
```ruby
|
276
|
+
page_path("identifier_for_this_page")
|
277
|
+
page_url("identifier_for_this_page")
|
278
|
+
```
|
279
|
+
|
280
|
+
|
281
|
+
### Meta tags (SEO)
|
282
|
+
To add SEO meta tags simply add a yield as follows to your layout file:
|
283
|
+
```slim
|
284
|
+
head
|
285
|
+
= yield(:seo)
|
286
|
+
```
|
287
|
+
### Show edit link
|
288
|
+
Feel free to make it fit as you want in your site design
|
289
|
+
```slim
|
290
|
+
- if current_admin_user && current_page
|
291
|
+
div style="float:right"
|
292
|
+
= link_to "Edit this page", cardboard.edit_page_path(current_page)
|
293
|
+
```
|
294
|
+
### Page navigation
|
295
|
+
```slim
|
296
|
+
= nested_pages do |page, subpages|
|
297
|
+
.indent
|
298
|
+
= link_to(page.title, page.url) if page.in_menu?
|
299
|
+
= subpages
|
300
|
+
```
|
301
|
+
or similarly with UL and LI tags
|
302
|
+
|
303
|
+
```slim
|
304
|
+
ul
|
305
|
+
= nested_pages do |page, subpages|
|
306
|
+
li
|
307
|
+
= link_to(page.title, page.url) if page.in_menu?
|
308
|
+
- if subpages
|
309
|
+
ul= subpages
|
310
|
+
```
|
311
|
+
|
312
|
+
### Link to a page
|
313
|
+
Use the page identifier defined in the cardboard.yml file (or see yoda)
|
314
|
+
```ruby
|
315
|
+
= link_to_page "page_identifier", class: "btn" do |page|
|
316
|
+
"hello #{page.title}"
|
317
|
+
end
|
318
|
+
|
319
|
+
# or, to simply use the page title
|
320
|
+
|
321
|
+
= link_to_page "page_identifier", class: "btn"
|
322
|
+
```
|
323
|
+
|
324
|
+
## Abilities
|
325
|
+
You can (and should) add a `can_manage_cardboard` method to your user model. By default users can manage all areas of the admin panel.
|
326
|
+
```ruby
|
327
|
+
def can_manage_cardboard?(area)
|
328
|
+
case area
|
329
|
+
when :pages
|
330
|
+
self.admin?
|
331
|
+
when :settings
|
332
|
+
self.admin?
|
333
|
+
when :resource_identifier #should be plural
|
334
|
+
true
|
335
|
+
else
|
336
|
+
true
|
337
|
+
end
|
338
|
+
end
|
339
|
+
```
|
340
|
+
|
341
|
+
## Dashboard
|
342
|
+
You can add whatever you want on the dashboard by simply adding
|
343
|
+
```
|
344
|
+
views
|
345
|
+
|- cardboard
|
346
|
+
|- dashboard
|
347
|
+
|- index.html.slim
|
348
|
+
```
|
349
|
+
|
350
|
+
## Customizing Cardboard
|
351
|
+
|
352
|
+
### Overwrite views
|
353
|
+
You can easily change the default behavior of the app by overwriting the views. For example say you'd like to change the my account page. Simply add a `views/cardboard/my_account/edit.html.slim` and edit it at will.
|
354
|
+
|
355
|
+
## Deploy with capistrano
|
356
|
+
|
357
|
+
```ruby
|
358
|
+
namespace :cardboard do
|
359
|
+
desc "seed the database"
|
360
|
+
task :seed do
|
361
|
+
run "cd #{current_path}; bundle exec rake cardboard:seed RAILS_ENV=#{rails_env}"
|
362
|
+
end
|
363
|
+
end
|
364
|
+
after "deploy", "cardboard:seed"
|
365
|
+
```
|
366
|
+
|
367
|
+
## License
|
368
|
+
Copyright (c) 2013 by SmashingBoxes
|
369
|
+
|
370
|
+
See LICENSE.txt
|
data/Rakefile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
|
8
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
9
|
+
load 'rails/tasks/engine.rake'
|
10
|
+
Bundler::GemHelper.install_tasks
|
11
|
+
Dir[File.join(File.dirname(__FILE__), 'tasks/**/*.rake')].each {|f| load f }
|
12
|
+
|
13
|
+
# require 'rspec/core'
|
14
|
+
# require 'rspec/core/rake_task'
|
15
|
+
# desc "Run all specs in spec directory (excluding plugin specs)"
|
16
|
+
# RSpec::Core::RakeTask.new(:spec => 'app:db:test:prepare')
|
17
|
+
# task :default => :spec
|
18
|
+
|
19
|
+
Rake::TestTask.new(:test) do |t|
|
20
|
+
t.libs << 'test'
|
21
|
+
t.test_files = FileList['test/**/*_test.rb']
|
22
|
+
t.verbose = true
|
23
|
+
end
|
File without changes
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require cardboard/admin
|
@@ -0,0 +1,62 @@
|
|
1
|
+
// Only for Cardboard Admin Area
|
2
|
+
// see lib/cardboard/generators/cardboard/assets/templates for helpers
|
3
|
+
//
|
4
|
+
//= require jquery
|
5
|
+
//= require jquery_ujs
|
6
|
+
//= require jquery.ui.sortable
|
7
|
+
//= require cardboard/jquery.livesearch
|
8
|
+
//= require cardboard/jquery.pjax
|
9
|
+
//= require bootstrap-button
|
10
|
+
//= require bootstrap-dropdown
|
11
|
+
//= require bootstrap-modal
|
12
|
+
//= require bootstrap-alert
|
13
|
+
//= require bootstrap-tab
|
14
|
+
//= require cardboard/bootstrap-select
|
15
|
+
//= require bootstrap-datepicker/core
|
16
|
+
//= require cardboard/datepicker
|
17
|
+
//= require cardboard/rich_text
|
18
|
+
//= require cardboard/jquery.wysihtml5_size_matters
|
19
|
+
//= require cocoon
|
20
|
+
//= require cardboard/main_sidebar
|
21
|
+
//= require cardboard/content_sidebar
|
22
|
+
//= require cardboard/search_filter
|
23
|
+
//= require select2
|
24
|
+
|
25
|
+
// require cardboard/jquery.wysihtml5imgresizer
|
26
|
+
|
27
|
+
|
28
|
+
$(document).pjax('a:not([data-remote]):not([data-behavior]):not([data-skip-pjax]):not([href="#"]):not([href=""]):not([data-method])', '[data-pjax-container]');
|
29
|
+
|
30
|
+
$(document).on('submit', 'form[data-pjax]', function(event) {
|
31
|
+
$.pjax.submit(event, '[data-pjax-container]');
|
32
|
+
});
|
33
|
+
|
34
|
+
$(document).on('click', '.nav-tabs a', function(e){
|
35
|
+
e.preventDefault();
|
36
|
+
$(this).tab('show');
|
37
|
+
});
|
38
|
+
|
39
|
+
$(document).on("pjax:end ready cocoon:after-insert", function(e){
|
40
|
+
$('select:not([data-search-select])').selectpicker();
|
41
|
+
$('select[data-search-select]').select2({allowClear: true, width: "resolve"});
|
42
|
+
|
43
|
+
|
44
|
+
$('.nav-tabs a:first').tab('show');
|
45
|
+
});
|
46
|
+
|
47
|
+
$(function(){
|
48
|
+
$('.page_link .link_wrap a').click(function(){
|
49
|
+
$('.nav_resource_link.active').removeClass('active');
|
50
|
+
$('#nav_dashboard_link').addClass('active');
|
51
|
+
});
|
52
|
+
|
53
|
+
$('.nav_resource_link').click(function(){
|
54
|
+
$('.nav_resource_link.active, #nav_dashboard_link').removeClass('active');
|
55
|
+
$(this).addClass('active');
|
56
|
+
$("#content_sidebar").removeClass('toggle');
|
57
|
+
$('#content').removeClass('toggle');
|
58
|
+
});
|
59
|
+
|
60
|
+
window.setTimeout(function() { $(".alert:not(.alert-error)").alert('close'); }, 2000);
|
61
|
+
})
|
62
|
+
|