locomotive_cms 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +45 -0
- data/README.textile +23 -0
- data/app/controllers/admin/accounts_controller.rb +24 -0
- data/app/controllers/admin/asset_collections_controller.rb +66 -0
- data/app/controllers/admin/assets_controller.rb +48 -0
- data/app/controllers/admin/base_controller.rb +55 -0
- data/app/controllers/admin/content_types_controller.rb +52 -0
- data/app/controllers/admin/contents_controller.rb +72 -0
- data/app/controllers/admin/current_sites_controller.rb +33 -0
- data/app/controllers/admin/layouts_controller.rb +56 -0
- data/app/controllers/admin/memberships_controller.rb +39 -0
- data/app/controllers/admin/my_accounts_controller.rb +21 -0
- data/app/controllers/admin/page_parts_controller.rb +12 -0
- data/app/controllers/admin/pages_controller.rb +70 -0
- data/app/controllers/admin/passwords_controller.rb +11 -0
- data/app/controllers/admin/rendering_controller.rb +15 -0
- data/app/controllers/admin/sessions_controller.rb +17 -0
- data/app/controllers/admin/sites_controller.rb +48 -0
- data/app/controllers/admin/snippets_controller.rb +56 -0
- data/app/controllers/admin/theme_assets_controller.rb +79 -0
- data/app/controllers/application_controller.rb +3 -0
- data/app/controllers/home_controller.rb +7 -0
- data/app/helpers/admin/accounts_helper.rb +8 -0
- data/app/helpers/admin/assets_helper.rb +15 -0
- data/app/helpers/admin/base_helper.rb +54 -0
- data/app/helpers/admin/custom_fields_helper.rb +24 -0
- data/app/helpers/admin/login_helper.rb +17 -0
- data/app/helpers/admin/pages_helper.rb +23 -0
- data/app/helpers/admin/sites_helper.rb +24 -0
- data/app/models/account.rb +46 -0
- data/app/models/asset.rb +38 -0
- data/app/models/asset_collection.rb +60 -0
- data/app/models/content_instance.rb +29 -0
- data/app/models/content_type.rb +63 -0
- data/app/models/extensions/asset/vignette.rb +40 -0
- data/app/models/extensions/page/parts.rb +54 -0
- data/app/models/extensions/page/render.rb +19 -0
- data/app/models/extensions/page/tree.rb +97 -0
- data/app/models/layout.rb +49 -0
- data/app/models/liquid_template.rb +32 -0
- data/app/models/membership.rb +36 -0
- data/app/models/page.rb +87 -0
- data/app/models/page_part.rb +38 -0
- data/app/models/site.rb +93 -0
- data/app/models/snippet.rb +3 -0
- data/app/models/theme_asset.rb +101 -0
- data/app/uploaders/asset_uploader.rb +68 -0
- data/app/uploaders/theme_asset_uploader.rb +42 -0
- data/app/views/admin/accounts/new.html.haml +22 -0
- data/app/views/admin/asset_collections/_asset.html.haml +7 -0
- data/app/views/admin/asset_collections/edit.html.haml +30 -0
- data/app/views/admin/asset_collections/index.html.haml +8 -0
- data/app/views/admin/asset_collections/new.html.haml +17 -0
- data/app/views/admin/assets/_form.html.haml +18 -0
- data/app/views/admin/assets/edit.html.haml +15 -0
- data/app/views/admin/assets/new.html.haml +12 -0
- data/app/views/admin/content_types/_form.html.haml +13 -0
- data/app/views/admin/content_types/edit.html.haml +16 -0
- data/app/views/admin/content_types/new.html.haml +15 -0
- data/app/views/admin/contents/_form.html.haml +10 -0
- data/app/views/admin/contents/edit.html.haml +16 -0
- data/app/views/admin/contents/index.html.haml +35 -0
- data/app/views/admin/contents/new.html.haml +15 -0
- data/app/views/admin/current_sites/_form.html.haml +45 -0
- data/app/views/admin/current_sites/edit.html.haml +15 -0
- data/app/views/admin/layouts/_form.html.haml +10 -0
- data/app/views/admin/layouts/_layout.html.haml +7 -0
- data/app/views/admin/layouts/edit.html.haml +18 -0
- data/app/views/admin/layouts/index.html.haml +15 -0
- data/app/views/admin/layouts/new.html.haml +15 -0
- data/app/views/admin/memberships/new.html.haml +15 -0
- data/app/views/admin/my_accounts/edit.html.haml +42 -0
- data/app/views/admin/pages/_form.html.haml +37 -0
- data/app/views/admin/pages/_page.html.haml +16 -0
- data/app/views/admin/pages/edit.html.haml +15 -0
- data/app/views/admin/pages/index.html.haml +18 -0
- data/app/views/admin/pages/new.html.haml +12 -0
- data/app/views/admin/passwords/edit.html.haml +18 -0
- data/app/views/admin/passwords/new.html.haml +17 -0
- data/app/views/admin/sessions/new.html.haml +15 -0
- data/app/views/admin/shared/_custom_fields.html.haml +47 -0
- data/app/views/admin/shared/_footer.html.haml +5 -0
- data/app/views/admin/shared/_form_actions.html.haml +15 -0
- data/app/views/admin/shared/_head.html.haml +18 -0
- data/app/views/admin/shared/_header.html.haml +8 -0
- data/app/views/admin/shared/_menu.html.haml +5 -0
- data/app/views/admin/shared/menu/_assets.html.haml +7 -0
- data/app/views/admin/shared/menu/_contents.html.haml +27 -0
- data/app/views/admin/shared/menu/_settings.html.haml +6 -0
- data/app/views/admin/sites/_form.html.haml +35 -0
- data/app/views/admin/sites/new.html.haml +12 -0
- data/app/views/admin/snippets/_form.html.haml +11 -0
- data/app/views/admin/snippets/_snippet.html.haml +7 -0
- data/app/views/admin/snippets/edit.html.haml +15 -0
- data/app/views/admin/snippets/index.html.haml +15 -0
- data/app/views/admin/snippets/new.html.haml +12 -0
- data/app/views/admin/theme_assets/_asset.html.haml +12 -0
- data/app/views/admin/theme_assets/_form.html.haml +39 -0
- data/app/views/admin/theme_assets/edit.html.haml +15 -0
- data/app/views/admin/theme_assets/images.html.haml +15 -0
- data/app/views/admin/theme_assets/index.html.haml +27 -0
- data/app/views/admin/theme_assets/new.html.haml +12 -0
- data/app/views/devise/confirmations/new.html.haml +12 -0
- data/app/views/devise/mailer/confirmation_instructions.html.haml +8 -0
- data/app/views/devise/mailer/reset_password_instructions.html.haml +12 -0
- data/app/views/devise/mailer/unlock_instructions.html.haml +10 -0
- data/app/views/devise/registrations/edit.html.haml +35 -0
- data/app/views/devise/registrations/new.html.haml +20 -0
- data/app/views/devise/sessions/new.html.haml +22 -0
- data/app/views/devise/shared/_links.haml +20 -0
- data/app/views/devise/unlocks/new.html.haml +12 -0
- data/app/views/home/show.html.haml +4 -0
- data/app/views/layouts/admin/application.html.haml +26 -0
- data/app/views/layouts/admin/login.html.haml +17 -0
- data/app/views/layouts/application.html.haml +7 -0
- data/config/application.rb +48 -0
- data/config/boot.rb +17 -0
- data/config/cucumber.yml +8 -0
- data/config/database.yml +20 -0
- data/config/environment.rb +5 -0
- data/config/environments/development.rb +35 -0
- data/config/environments/production.rb +33 -0
- data/config/environments/test.rb +33 -0
- data/config/initializers/backtrace_silencers.rb +7 -0
- data/config/initializers/carrierwave.rb +57 -0
- data/config/initializers/devise.rb +119 -0
- data/config/initializers/formtastic.rb +5 -0
- data/config/initializers/inflections.rb +10 -0
- data/config/initializers/locomotive.rb +7 -0
- data/config/initializers/mime_types.rb +5 -0
- data/config/initializers/mongoid.rb +61 -0
- data/config/initializers/rspec_generator.rb +8 -0
- data/config/locales/admin_ui_en.yml +211 -0
- data/config/locales/admin_ui_fr.yml +21 -0
- data/config/locales/carrierwave_en.yml +4 -0
- data/config/locales/carrierwave_fr.yml +4 -0
- data/config/locales/default_en.yml +29 -0
- data/config/locales/default_fr.yml +30 -0
- data/config/locales/devise.en.yml +36 -0
- data/config/routes.rb +57 -0
- data/lib/core_ext.rb +32 -0
- data/lib/generators/locomotive_generator.rb +14 -0
- data/lib/locomotive.rb +35 -0
- data/lib/locomotive/configuration.rb +67 -0
- data/lib/locomotive/devise/sessions_controller.rb +2 -0
- data/lib/locomotive/engine.rb +21 -0
- data/lib/locomotive/liquid.rb +5 -0
- data/lib/locomotive/liquid/db_file_system.rb +18 -0
- data/lib/locomotive/liquid/drops/asset_collections.rb +19 -0
- data/lib/locomotive/liquid/drops/base.rb +50 -0
- data/lib/locomotive/liquid/drops/content.rb +19 -0
- data/lib/locomotive/liquid/drops/contents.rb +63 -0
- data/lib/locomotive/liquid/drops/javascripts.rb +18 -0
- data/lib/locomotive/liquid/drops/stylesheets.rb +19 -0
- data/lib/locomotive/liquid/filters/date.rb +30 -0
- data/lib/locomotive/liquid/filters/html.rb +114 -0
- data/lib/locomotive/liquid/filters/misc.rb +30 -0
- data/lib/locomotive/liquid/liquify_template.rb +57 -0
- data/lib/locomotive/liquid/tags/blueprint.rb +21 -0
- data/lib/locomotive/liquid/tags/jquery.rb +17 -0
- data/lib/locomotive/liquid/tags/paginate.rb +100 -0
- data/lib/locomotive/liquid/tags/snippet.rb +42 -0
- data/lib/locomotive/liquid/tags/with_scope.rb +39 -0
- data/lib/locomotive/mongoid.rb +2 -0
- data/lib/locomotive/mongoid/document.rb +20 -0
- data/lib/locomotive/mongoid/model_extensions.rb +1 -0
- data/lib/locomotive/patches.rb +2 -0
- data/lib/locomotive/regexps.rb +13 -0
- data/lib/locomotive/render.rb +59 -0
- data/lib/locomotive/routing/default_constraint.rb +45 -0
- data/lib/locomotive/routing/site_dispatcher.rb +48 -0
- data/lib/misc_form_builder.rb +35 -0
- data/lib/tasks/cucumber.rake +53 -0
- data/lib/tasks/rspec.rake +69 -0
- data/public/images/admin/background/body.png +0 -0
- data/public/images/admin/background/footer.png +0 -0
- data/public/images/admin/background/light.png +0 -0
- data/public/images/admin/buttons/action-left.png +0 -0
- data/public/images/admin/buttons/action-right.png +0 -0
- data/public/images/admin/buttons/add-left.png +0 -0
- data/public/images/admin/buttons/add-right.png +0 -0
- data/public/images/admin/buttons/dark-gray-left.png +0 -0
- data/public/images/admin/buttons/dark-gray-right.png +0 -0
- data/public/images/admin/buttons/emboss-left.png +0 -0
- data/public/images/admin/buttons/emboss-right.png +0 -0
- data/public/images/admin/buttons/gray-left.png +0 -0
- data/public/images/admin/buttons/gray-right.png +0 -0
- data/public/images/admin/buttons/light-gray-left.png +0 -0
- data/public/images/admin/buttons/light-gray-right.png +0 -0
- data/public/images/admin/buttons/search.png +0 -0
- data/public/images/admin/buttons/transparent-left.png +0 -0
- data/public/images/admin/buttons/transparent-right.png +0 -0
- data/public/images/admin/form/big_item.png +0 -0
- data/public/images/admin/form/error-arrow.png +0 -0
- data/public/images/admin/form/field.png +0 -0
- data/public/images/admin/form/folded-arrow-off.png +0 -0
- data/public/images/admin/form/folded-arrow-on.png +0 -0
- data/public/images/admin/form/folded.png +0 -0
- data/public/images/admin/form/footer.png +0 -0
- data/public/images/admin/form/growl-error.png +0 -0
- data/public/images/admin/form/growl-notice.png +0 -0
- data/public/images/admin/form/header-first-on.png +0 -0
- data/public/images/admin/form/header-left-on.png +0 -0
- data/public/images/admin/form/header-on.png +0 -0
- data/public/images/admin/form/header-right-on.png +0 -0
- data/public/images/admin/form/header.png +0 -0
- data/public/images/admin/form/icons/drag.png +0 -0
- data/public/images/admin/form/icons/spinner.gif +0 -0
- data/public/images/admin/form/icons/trash.png +0 -0
- data/public/images/admin/form/item.png +0 -0
- data/public/images/admin/form/pen.png +0 -0
- data/public/images/admin/icons/filetype/medium/AC3.png +0 -0
- data/public/images/admin/icons/filetype/medium/ACE.png +0 -0
- data/public/images/admin/icons/filetype/medium/ADE.png +0 -0
- data/public/images/admin/icons/filetype/medium/ADP.png +0 -0
- data/public/images/admin/icons/filetype/medium/AI.png +0 -0
- data/public/images/admin/icons/filetype/medium/AIFF.png +0 -0
- data/public/images/admin/icons/filetype/medium/AU.png +0 -0
- data/public/images/admin/icons/filetype/medium/AVI.png +0 -0
- data/public/images/admin/icons/filetype/medium/BAT.png +0 -0
- data/public/images/admin/icons/filetype/medium/BIN.png +0 -0
- data/public/images/admin/icons/filetype/medium/BMP.png +0 -0
- data/public/images/admin/icons/filetype/medium/BUP.png +0 -0
- data/public/images/admin/icons/filetype/medium/CAB.png +0 -0
- data/public/images/admin/icons/filetype/medium/CAT.png +0 -0
- data/public/images/admin/icons/filetype/medium/CHM.png +0 -0
- data/public/images/admin/icons/filetype/medium/CSS.png +0 -0
- data/public/images/admin/icons/filetype/medium/CUE.png +0 -0
- data/public/images/admin/icons/filetype/medium/DAT.png +0 -0
- data/public/images/admin/icons/filetype/medium/DCR.png +0 -0
- data/public/images/admin/icons/filetype/medium/DER.png +0 -0
- data/public/images/admin/icons/filetype/medium/DIC.png +0 -0
- data/public/images/admin/icons/filetype/medium/DIVX.png +0 -0
- data/public/images/admin/icons/filetype/medium/DIZ.png +0 -0
- data/public/images/admin/icons/filetype/medium/DLL.png +0 -0
- data/public/images/admin/icons/filetype/medium/DOC.png +0 -0
- data/public/images/admin/icons/filetype/medium/DOCX.png +0 -0
- data/public/images/admin/icons/filetype/medium/DOS.png +0 -0
- data/public/images/admin/icons/filetype/medium/DVD.png +0 -0
- data/public/images/admin/icons/filetype/medium/DWG.png +0 -0
- data/public/images/admin/icons/filetype/medium/DWT.png +0 -0
- data/public/images/admin/icons/filetype/medium/EMF.png +0 -0
- data/public/images/admin/icons/filetype/medium/EXC.png +0 -0
- data/public/images/admin/icons/filetype/medium/FON.png +0 -0
- data/public/images/admin/icons/filetype/medium/GIF.png +0 -0
- data/public/images/admin/icons/filetype/medium/HLP.png +0 -0
- data/public/images/admin/icons/filetype/medium/HTML.png +0 -0
- data/public/images/admin/icons/filetype/medium/IFO.png +0 -0
- data/public/images/admin/icons/filetype/medium/INF.png +0 -0
- data/public/images/admin/icons/filetype/medium/INI.png +0 -0
- data/public/images/admin/icons/filetype/medium/INS.png +0 -0
- data/public/images/admin/icons/filetype/medium/IP.png +0 -0
- data/public/images/admin/icons/filetype/medium/ISO.png +0 -0
- data/public/images/admin/icons/filetype/medium/ISP.png +0 -0
- data/public/images/admin/icons/filetype/medium/JAVA.png +0 -0
- data/public/images/admin/icons/filetype/medium/JFIF.png +0 -0
- data/public/images/admin/icons/filetype/medium/JPEG.png +0 -0
- data/public/images/admin/icons/filetype/medium/JPG.png +0 -0
- data/public/images/admin/icons/filetype/medium/LOG.png +0 -0
- data/public/images/admin/icons/filetype/medium/M4A.png +0 -0
- data/public/images/admin/icons/filetype/medium/MID.png +0 -0
- data/public/images/admin/icons/filetype/medium/MMF.png +0 -0
- data/public/images/admin/icons/filetype/medium/MMM.png +0 -0
- data/public/images/admin/icons/filetype/medium/MOV.png +0 -0
- data/public/images/admin/icons/filetype/medium/MOVIE.png +0 -0
- data/public/images/admin/icons/filetype/medium/MP2.png +0 -0
- data/public/images/admin/icons/filetype/medium/MP2V.png +0 -0
- data/public/images/admin/icons/filetype/medium/MP3.png +0 -0
- data/public/images/admin/icons/filetype/medium/MP4.png +0 -0
- data/public/images/admin/icons/filetype/medium/MPE.png +0 -0
- data/public/images/admin/icons/filetype/medium/MPEG.png +0 -0
- data/public/images/admin/icons/filetype/medium/MPG.png +0 -0
- data/public/images/admin/icons/filetype/medium/MPV2.png +0 -0
- data/public/images/admin/icons/filetype/medium/NFO.png +0 -0
- data/public/images/admin/icons/filetype/medium/PDD.png +0 -0
- data/public/images/admin/icons/filetype/medium/PDF.png +0 -0
- data/public/images/admin/icons/filetype/medium/PHP.png +0 -0
- data/public/images/admin/icons/filetype/medium/PNG.png +0 -0
- data/public/images/admin/icons/filetype/medium/PPT.png +0 -0
- data/public/images/admin/icons/filetype/medium/PPTX.png +0 -0
- data/public/images/admin/icons/filetype/medium/PSD.png +0 -0
- data/public/images/admin/icons/filetype/medium/RAR.png +0 -0
- data/public/images/admin/icons/filetype/medium/REG.png +0 -0
- data/public/images/admin/icons/filetype/medium/RTF.png +0 -0
- data/public/images/admin/icons/filetype/medium/SCP.png +0 -0
- data/public/images/admin/icons/filetype/medium/THEME.png +0 -0
- data/public/images/admin/icons/filetype/medium/TIF.png +0 -0
- data/public/images/admin/icons/filetype/medium/TIFF.png +0 -0
- data/public/images/admin/icons/filetype/medium/TLB.png +0 -0
- data/public/images/admin/icons/filetype/medium/TTF.png +0 -0
- data/public/images/admin/icons/filetype/medium/TXT.png +0 -0
- data/public/images/admin/icons/filetype/medium/Thumbs.db +0 -0
- data/public/images/admin/icons/filetype/medium/UIS.png +0 -0
- data/public/images/admin/icons/filetype/medium/URL.png +0 -0
- data/public/images/admin/icons/filetype/medium/VBS.png +0 -0
- data/public/images/admin/icons/filetype/medium/VCR.png +0 -0
- data/public/images/admin/icons/filetype/medium/VOB.png +0 -0
- data/public/images/admin/icons/filetype/medium/WAV.png +0 -0
- data/public/images/admin/icons/filetype/medium/WBA.png +0 -0
- data/public/images/admin/icons/filetype/medium/WMA.png +0 -0
- data/public/images/admin/icons/filetype/medium/WMV.png +0 -0
- data/public/images/admin/icons/filetype/medium/WPL.png +0 -0
- data/public/images/admin/icons/filetype/medium/WRI.png +0 -0
- data/public/images/admin/icons/filetype/medium/WTX.png +0 -0
- data/public/images/admin/icons/filetype/medium/XLS.png +0 -0
- data/public/images/admin/icons/filetype/medium/XLSX.png +0 -0
- data/public/images/admin/icons/filetype/medium/XML.png +0 -0
- data/public/images/admin/icons/filetype/medium/XSL.png +0 -0
- data/public/images/admin/icons/filetype/medium/ZAP.png +0 -0
- data/public/images/admin/icons/filetype/medium/ZIP.png +0 -0
- data/public/images/admin/icons/filetype/medium/unknown.png +0 -0
- data/public/images/admin/icons/filetype/thumb/AC3.png +0 -0
- data/public/images/admin/icons/filetype/thumb/ACE.png +0 -0
- data/public/images/admin/icons/filetype/thumb/ADE.png +0 -0
- data/public/images/admin/icons/filetype/thumb/ADP.png +0 -0
- data/public/images/admin/icons/filetype/thumb/AI.png +0 -0
- data/public/images/admin/icons/filetype/thumb/AIFF.png +0 -0
- data/public/images/admin/icons/filetype/thumb/AU.png +0 -0
- data/public/images/admin/icons/filetype/thumb/AVI.png +0 -0
- data/public/images/admin/icons/filetype/thumb/BAT.png +0 -0
- data/public/images/admin/icons/filetype/thumb/BIN.png +0 -0
- data/public/images/admin/icons/filetype/thumb/BMP.png +0 -0
- data/public/images/admin/icons/filetype/thumb/BUP.png +0 -0
- data/public/images/admin/icons/filetype/thumb/CAB.png +0 -0
- data/public/images/admin/icons/filetype/thumb/CAT.png +0 -0
- data/public/images/admin/icons/filetype/thumb/CHM.png +0 -0
- data/public/images/admin/icons/filetype/thumb/CSS.png +0 -0
- data/public/images/admin/icons/filetype/thumb/CUE.png +0 -0
- data/public/images/admin/icons/filetype/thumb/DAT.png +0 -0
- data/public/images/admin/icons/filetype/thumb/DCR.png +0 -0
- data/public/images/admin/icons/filetype/thumb/DER.png +0 -0
- data/public/images/admin/icons/filetype/thumb/DIC.png +0 -0
- data/public/images/admin/icons/filetype/thumb/DIVX.png +0 -0
- data/public/images/admin/icons/filetype/thumb/DIZ.png +0 -0
- data/public/images/admin/icons/filetype/thumb/DLL.png +0 -0
- data/public/images/admin/icons/filetype/thumb/DOC.png +0 -0
- data/public/images/admin/icons/filetype/thumb/DOCX.png +0 -0
- data/public/images/admin/icons/filetype/thumb/DOS.png +0 -0
- data/public/images/admin/icons/filetype/thumb/DVD.png +0 -0
- data/public/images/admin/icons/filetype/thumb/DWG.png +0 -0
- data/public/images/admin/icons/filetype/thumb/DWT.png +0 -0
- data/public/images/admin/icons/filetype/thumb/EMF.png +0 -0
- data/public/images/admin/icons/filetype/thumb/EXC.png +0 -0
- data/public/images/admin/icons/filetype/thumb/FON.png +0 -0
- data/public/images/admin/icons/filetype/thumb/GIF.png +0 -0
- data/public/images/admin/icons/filetype/thumb/HLP.png +0 -0
- data/public/images/admin/icons/filetype/thumb/HTML.png +0 -0
- data/public/images/admin/icons/filetype/thumb/IFO.png +0 -0
- data/public/images/admin/icons/filetype/thumb/INF.png +0 -0
- data/public/images/admin/icons/filetype/thumb/INI.png +0 -0
- data/public/images/admin/icons/filetype/thumb/INS.png +0 -0
- data/public/images/admin/icons/filetype/thumb/IP.png +0 -0
- data/public/images/admin/icons/filetype/thumb/ISO.png +0 -0
- data/public/images/admin/icons/filetype/thumb/ISP.png +0 -0
- data/public/images/admin/icons/filetype/thumb/JAVA.png +0 -0
- data/public/images/admin/icons/filetype/thumb/JFIF.png +0 -0
- data/public/images/admin/icons/filetype/thumb/JPEG.png +0 -0
- data/public/images/admin/icons/filetype/thumb/JPG.png +0 -0
- data/public/images/admin/icons/filetype/thumb/LOG.png +0 -0
- data/public/images/admin/icons/filetype/thumb/M4A.png +0 -0
- data/public/images/admin/icons/filetype/thumb/MID.png +0 -0
- data/public/images/admin/icons/filetype/thumb/MMF.png +0 -0
- data/public/images/admin/icons/filetype/thumb/MMM.png +0 -0
- data/public/images/admin/icons/filetype/thumb/MOV.png +0 -0
- data/public/images/admin/icons/filetype/thumb/MOVIE.png +0 -0
- data/public/images/admin/icons/filetype/thumb/MP2.png +0 -0
- data/public/images/admin/icons/filetype/thumb/MP2V.png +0 -0
- data/public/images/admin/icons/filetype/thumb/MP3.png +0 -0
- data/public/images/admin/icons/filetype/thumb/MP4.png +0 -0
- data/public/images/admin/icons/filetype/thumb/MPE.png +0 -0
- data/public/images/admin/icons/filetype/thumb/MPEG.png +0 -0
- data/public/images/admin/icons/filetype/thumb/MPG.png +0 -0
- data/public/images/admin/icons/filetype/thumb/MPV2.png +0 -0
- data/public/images/admin/icons/filetype/thumb/NFO.png +0 -0
- data/public/images/admin/icons/filetype/thumb/PDD.png +0 -0
- data/public/images/admin/icons/filetype/thumb/PDF.png +0 -0
- data/public/images/admin/icons/filetype/thumb/PHP.png +0 -0
- data/public/images/admin/icons/filetype/thumb/PNG.png +0 -0
- data/public/images/admin/icons/filetype/thumb/PPT.png +0 -0
- data/public/images/admin/icons/filetype/thumb/PPTX.png +0 -0
- data/public/images/admin/icons/filetype/thumb/PSD.png +0 -0
- data/public/images/admin/icons/filetype/thumb/RAR.png +0 -0
- data/public/images/admin/icons/filetype/thumb/REG.png +0 -0
- data/public/images/admin/icons/filetype/thumb/RTF.png +0 -0
- data/public/images/admin/icons/filetype/thumb/SCP.png +0 -0
- data/public/images/admin/icons/filetype/thumb/THEME.png +0 -0
- data/public/images/admin/icons/filetype/thumb/TIF.png +0 -0
- data/public/images/admin/icons/filetype/thumb/TIFF.png +0 -0
- data/public/images/admin/icons/filetype/thumb/TLB.png +0 -0
- data/public/images/admin/icons/filetype/thumb/TTF.png +0 -0
- data/public/images/admin/icons/filetype/thumb/TXT.png +0 -0
- data/public/images/admin/icons/filetype/thumb/UIS.png +0 -0
- data/public/images/admin/icons/filetype/thumb/URL.png +0 -0
- data/public/images/admin/icons/filetype/thumb/VBS.png +0 -0
- data/public/images/admin/icons/filetype/thumb/VCR.png +0 -0
- data/public/images/admin/icons/filetype/thumb/VOB.png +0 -0
- data/public/images/admin/icons/filetype/thumb/WAV.png +0 -0
- data/public/images/admin/icons/filetype/thumb/WBA.png +0 -0
- data/public/images/admin/icons/filetype/thumb/WMA.png +0 -0
- data/public/images/admin/icons/filetype/thumb/WMV.png +0 -0
- data/public/images/admin/icons/filetype/thumb/WPL.png +0 -0
- data/public/images/admin/icons/filetype/thumb/WRI.png +0 -0
- data/public/images/admin/icons/filetype/thumb/WTX.png +0 -0
- data/public/images/admin/icons/filetype/thumb/XLS.png +0 -0
- data/public/images/admin/icons/filetype/thumb/XLSX.png +0 -0
- data/public/images/admin/icons/filetype/thumb/XML.png +0 -0
- data/public/images/admin/icons/filetype/thumb/XSL.png +0 -0
- data/public/images/admin/icons/filetype/thumb/ZAP.png +0 -0
- data/public/images/admin/icons/filetype/thumb/ZIP.png +0 -0
- data/public/images/admin/icons/filetype/thumb/unknown.png +0 -0
- data/public/images/admin/icons/flags/en.png +0 -0
- data/public/images/admin/icons/flags/fr.png +0 -0
- data/public/images/admin/list/empty.png +0 -0
- data/public/images/admin/list/icons/cross.png +0 -0
- data/public/images/admin/list/icons/drag.png +0 -0
- data/public/images/admin/list/icons/node_closed.png +0 -0
- data/public/images/admin/list/icons/node_open.png +0 -0
- data/public/images/admin/list/icons/trash.png +0 -0
- data/public/images/admin/list/item-left.png +0 -0
- data/public/images/admin/list/item-right.png +0 -0
- data/public/images/admin/list/item.png +0 -0
- data/public/images/admin/list/none.png +0 -0
- data/public/images/admin/list/thumb.png +0 -0
- data/public/images/admin/login/bottom_panel_bg.png +0 -0
- data/public/images/admin/login/buttons/left_bg.png +0 -0
- data/public/images/admin/login/buttons/right_bg.png +0 -0
- data/public/images/admin/login/content_panel_bg.png +0 -0
- data/public/images/admin/login/input_bg.png +0 -0
- data/public/images/admin/login/light_bg.png +0 -0
- data/public/images/admin/login/top_panel_bg.png +0 -0
- data/public/images/admin/login/wrapper_bg.png +0 -0
- data/public/images/admin/menu/arrow.png +0 -0
- data/public/images/admin/menu/blue-bg.png +0 -0
- data/public/images/admin/menu/blue-border.png +0 -0
- data/public/images/admin/menu/gray-bg.png +0 -0
- data/public/images/admin/menu/gray-border.png +0 -0
- data/public/images/admin/menu/green-bg.png +0 -0
- data/public/images/admin/menu/green-border.png +0 -0
- data/public/images/admin/menu/icons/add.png +0 -0
- data/public/images/admin/menu/icons/bullet.png +0 -0
- data/public/images/admin/menu/icons/folder.png +0 -0
- data/public/images/admin/menu/icons/settings.png +0 -0
- data/public/images/admin/menu/left.png +0 -0
- data/public/images/admin/menu/popup-body.png +0 -0
- data/public/images/admin/menu/popup-footer.png +0 -0
- data/public/images/admin/menu/popup-header.png +0 -0
- data/public/images/admin/menu/right.png +0 -0
- data/public/images/admin/menu/shadow.png +0 -0
- data/public/images/admin/menu/top-left.png +0 -0
- data/public/images/admin/menu/top.png +0 -0
- data/public/images/admin/nocoffee.gif +0 -0
- data/public/images/admin/plugins/fancybox/blank.gif +0 -0
- data/public/images/admin/plugins/fancybox/fancy_close.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_loading.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_nav_left.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_nav_right.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_shadow_e.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_shadow_n.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_shadow_ne.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_shadow_nw.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_shadow_s.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_shadow_se.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_shadow_sw.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_shadow_w.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_title_left.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_title_main.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_title_over.png +0 -0
- data/public/images/admin/plugins/fancybox/fancy_title_right.png +0 -0
- data/public/images/admin/plugins/fancybox/fancybox-x.png +0 -0
- data/public/images/admin/plugins/fancybox/fancybox-y.png +0 -0
- data/public/images/admin/plugins/fancybox/fancybox.png +0 -0
- data/public/images/admin/plugins/toggle_handle-bg.png +0 -0
- data/public/images/admin/plugins/toggle_handle_left-bg.png +0 -0
- data/public/images/admin/plugins/toggle_handle_right-bg.png +0 -0
- data/public/images/admin/plugins/toggle_shadow-bg.png +0 -0
- data/public/images/admin/rails.png +0 -0
- data/public/javascripts/admin/application.js +105 -0
- data/public/javascripts/admin/asset_collections.js +50 -0
- data/public/javascripts/admin/content_types.js +16 -0
- data/public/javascripts/admin/contents.js +17 -0
- data/public/javascripts/admin/custom_fields.js +113 -0
- data/public/javascripts/admin/jquery.js +154 -0
- data/public/javascripts/admin/jquery.ui.js +404 -0
- data/public/javascripts/admin/page_parts.js +83 -0
- data/public/javascripts/admin/pages.js +67 -0
- data/public/javascripts/admin/plugins/codemirror/codemirror.js +469 -0
- data/public/javascripts/admin/plugins/codemirror/editor.js +1465 -0
- data/public/javascripts/admin/plugins/codemirror/highlight.js +68 -0
- data/public/javascripts/admin/plugins/codemirror/mirrorframe.js +81 -0
- data/public/javascripts/admin/plugins/codemirror/parsecss.js +155 -0
- data/public/javascripts/admin/plugins/codemirror/parsedummy.js +32 -0
- data/public/javascripts/admin/plugins/codemirror/parsehtmlmixed.js +74 -0
- data/public/javascripts/admin/plugins/codemirror/parsejavascript.js +352 -0
- data/public/javascripts/admin/plugins/codemirror/parseliquid.js +409 -0
- data/public/javascripts/admin/plugins/codemirror/parsesparql.js +162 -0
- data/public/javascripts/admin/plugins/codemirror/parsexml.js +286 -0
- data/public/javascripts/admin/plugins/codemirror/select.js +619 -0
- data/public/javascripts/admin/plugins/codemirror/stringstream.js +140 -0
- data/public/javascripts/admin/plugins/codemirror/tokenize.js +57 -0
- data/public/javascripts/admin/plugins/codemirror/tokenizejavascript.js +174 -0
- data/public/javascripts/admin/plugins/codemirror/undo.js +410 -0
- data/public/javascripts/admin/plugins/codemirror/util.js +130 -0
- data/public/javascripts/admin/plugins/cookie.js +96 -0
- data/public/javascripts/admin/plugins/fancybox.js +1077 -0
- data/public/javascripts/admin/plugins/growl.js +143 -0
- data/public/javascripts/admin/plugins/json2.js +478 -0
- data/public/javascripts/admin/plugins/plupload/gears_init.js +86 -0
- data/public/javascripts/admin/plugins/plupload/jquery.plupload.queue.min.js +1 -0
- data/public/javascripts/admin/plugins/plupload/plupload.browserplus.min.js +1 -0
- data/public/javascripts/admin/plugins/plupload/plupload.flash.min.js +1 -0
- data/public/javascripts/admin/plugins/plupload/plupload.flash.swf +0 -0
- data/public/javascripts/admin/plugins/plupload/plupload.full.js +1 -0
- data/public/javascripts/admin/plugins/plupload/plupload.gears.min.js +1 -0
- data/public/javascripts/admin/plugins/plupload/plupload.html4.min.js +1 -0
- data/public/javascripts/admin/plugins/plupload/plupload.html5.min.js +1 -0
- data/public/javascripts/admin/plugins/plupload/plupload.js +1 -0
- data/public/javascripts/admin/plugins/plupload/plupload.silverlight.min.js +1 -0
- data/public/javascripts/admin/plugins/plupload/plupload.silverlight.xap +0 -0
- data/public/javascripts/admin/plugins/scrollTo.js +11 -0
- data/public/javascripts/admin/plugins/toggle.js +109 -0
- data/public/javascripts/admin/plugins/wslide.js +125 -0
- data/public/javascripts/admin/rails.js +127 -0
- data/public/javascripts/admin/site.js +36 -0
- data/public/javascripts/admin/snippets.js +16 -0
- data/public/javascripts/admin/theme_assets.js +103 -0
- data/public/stylesheets/admin/application.css +257 -0
- data/public/stylesheets/admin/blueprint/ie.css +26 -0
- data/public/stylesheets/admin/blueprint/plugins/buttons/icons/cross.png +0 -0
- data/public/stylesheets/admin/blueprint/plugins/buttons/icons/key.png +0 -0
- data/public/stylesheets/admin/blueprint/plugins/buttons/icons/tick.png +0 -0
- data/public/stylesheets/admin/blueprint/plugins/buttons/readme.txt +32 -0
- data/public/stylesheets/admin/blueprint/plugins/buttons/screen.css +97 -0
- data/public/stylesheets/admin/blueprint/plugins/fancy-type/readme.txt +14 -0
- data/public/stylesheets/admin/blueprint/plugins/fancy-type/screen.css +71 -0
- data/public/stylesheets/admin/blueprint/plugins/link-icons/icons/doc.png +0 -0
- data/public/stylesheets/admin/blueprint/plugins/link-icons/icons/email.png +0 -0
- data/public/stylesheets/admin/blueprint/plugins/link-icons/icons/external.png +0 -0
- data/public/stylesheets/admin/blueprint/plugins/link-icons/icons/feed.png +0 -0
- data/public/stylesheets/admin/blueprint/plugins/link-icons/icons/im.png +0 -0
- data/public/stylesheets/admin/blueprint/plugins/link-icons/icons/pdf.png +0 -0
- data/public/stylesheets/admin/blueprint/plugins/link-icons/icons/visited.png +0 -0
- data/public/stylesheets/admin/blueprint/plugins/link-icons/icons/xls.png +0 -0
- data/public/stylesheets/admin/blueprint/plugins/link-icons/readme.txt +18 -0
- data/public/stylesheets/admin/blueprint/plugins/link-icons/screen.css +40 -0
- data/public/stylesheets/admin/blueprint/plugins/rtl/readme.txt +10 -0
- data/public/stylesheets/admin/blueprint/plugins/rtl/screen.css +109 -0
- data/public/stylesheets/admin/blueprint/print.css +30 -0
- data/public/stylesheets/admin/blueprint/screen.css +253 -0
- data/public/stylesheets/admin/blueprint/src/forms.css +49 -0
- data/public/stylesheets/admin/blueprint/src/grid.css +213 -0
- data/public/stylesheets/admin/blueprint/src/grid.png +0 -0
- data/public/stylesheets/admin/blueprint/src/ie.css +59 -0
- data/public/stylesheets/admin/blueprint/src/print.css +85 -0
- data/public/stylesheets/admin/blueprint/src/reset.css +38 -0
- data/public/stylesheets/admin/blueprint/src/typography.css +105 -0
- data/public/stylesheets/admin/box.css +14 -0
- data/public/stylesheets/admin/buttons.css +67 -0
- data/public/stylesheets/admin/formtastic.css +137 -0
- data/public/stylesheets/admin/formtastic_changes.css +461 -0
- data/public/stylesheets/admin/layout.css +175 -0
- data/public/stylesheets/admin/login.css +141 -0
- data/public/stylesheets/admin/menu.css +241 -0
- data/public/stylesheets/admin/page_parts.css +60 -0
- data/public/stylesheets/admin/plugins/codemirror/csscolors.css +51 -0
- data/public/stylesheets/admin/plugins/codemirror/docs.css +50 -0
- data/public/stylesheets/admin/plugins/codemirror/javascriptcolors.css +56 -0
- data/public/stylesheets/admin/plugins/codemirror/jscolors.css +59 -0
- data/public/stylesheets/admin/plugins/codemirror/liquidcolors.css +35 -0
- data/public/stylesheets/admin/plugins/codemirror/people.jpg +0 -0
- data/public/stylesheets/admin/plugins/codemirror/sparqlcolors.css +43 -0
- data/public/stylesheets/admin/plugins/codemirror/xmlcolors.css +55 -0
- data/public/stylesheets/admin/plugins/fancybox.css +363 -0
- data/public/stylesheets/admin/plugins/toggle.css +42 -0
- data/spec/factories.rb +77 -0
- data/spec/lib/locomotive/liquid/filters/html_spec.rb +82 -0
- data/spec/lib/locomotive/liquid/filters/misc_spec.rb +36 -0
- data/spec/lib/locomotive/liquid/tags/paginate_spec.rb +99 -0
- data/spec/lib/locomotive/liquid/tags/snippet_spec.rb +20 -0
- data/spec/lib/locomotive/liquid/tags/with_scope_spec.rb +20 -0
- data/spec/lib/locomotive/render_spec.rb +85 -0
- data/spec/models/account_spec.rb +65 -0
- data/spec/models/asset_collections_spec.rb +174 -0
- data/spec/models/content_instance_spec.rb +33 -0
- data/spec/models/content_type_spec.rb +49 -0
- data/spec/models/layout_spec.rb +64 -0
- data/spec/models/liquid_template_spec.rb +19 -0
- data/spec/models/membership_spec.rb +55 -0
- data/spec/models/page_spec.rb +329 -0
- data/spec/models/site_spec.rb +143 -0
- data/spec/models/snippet_spec.rb +9 -0
- data/spec/models/theme_asset_spec.rb +89 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/support/be_valid.rb +31 -0
- data/spec/support/carrierwave.rb +32 -0
- data/spec/support/locomotive.rb +41 -0
- data/vendor/plugins/custom_fields/MIT-LICENSE +20 -0
- data/vendor/plugins/custom_fields/README +13 -0
- data/vendor/plugins/custom_fields/Rakefile +23 -0
- data/vendor/plugins/custom_fields/init.rb +2 -0
- data/vendor/plugins/custom_fields/install.rb +1 -0
- data/vendor/plugins/custom_fields/lib/custom_fields.rb +14 -0
- data/vendor/plugins/custom_fields/lib/custom_fields/custom_field.rb +84 -0
- data/vendor/plugins/custom_fields/lib/custom_fields/custom_fields_for.rb +49 -0
- data/vendor/plugins/custom_fields/lib/custom_fields/extensions/mongoid/associations/embeds_many.rb +24 -0
- data/vendor/plugins/custom_fields/lib/custom_fields/extensions/mongoid/document.rb +35 -0
- data/vendor/plugins/custom_fields/uninstall.rb +1 -0
- metadata +848 -0
@@ -0,0 +1,42 @@
|
|
1
|
+
.toggleSwitch {
|
2
|
+
position: relative;
|
3
|
+
top: 3px;
|
4
|
+
}
|
5
|
+
|
6
|
+
div.toggleSwitch span.leftLabel{
|
7
|
+
float: left;
|
8
|
+
}
|
9
|
+
|
10
|
+
div.toggleSwitch span.leftLabel, div.toggleSwitch span.rightLabel{
|
11
|
+
line-height: 20px;
|
12
|
+
padding: 0 5px;
|
13
|
+
font-size: 0.8em;
|
14
|
+
font-weight: bold;
|
15
|
+
}
|
16
|
+
|
17
|
+
div.toggleSwitch div.switchArea {
|
18
|
+
float: left;
|
19
|
+
background: transparent url("/images/admin/plugins/toggle_shadow-bg.png") top left no-repeat;
|
20
|
+
width: 64px;
|
21
|
+
height: 24px;
|
22
|
+
cursor: pointer;
|
23
|
+
}
|
24
|
+
|
25
|
+
div.toggleSwitch span.switchHandle{
|
26
|
+
display: block;
|
27
|
+
background: #aaa;
|
28
|
+
background: transparent url("/images/admin/plugins/toggle_handle-bg.png") top left no-repeat;
|
29
|
+
width: 30px;
|
30
|
+
height: 100%;
|
31
|
+
cursor: pointer;
|
32
|
+
cursor: hand;
|
33
|
+
margin-left: 0;
|
34
|
+
}
|
35
|
+
|
36
|
+
div.toggleSwitch span.switchHandle.left{
|
37
|
+
background-image: url("/images/admin/plugins/toggle_handle_left-bg.png");
|
38
|
+
}
|
39
|
+
|
40
|
+
div.toggleSwitch span.switchHandle.right{
|
41
|
+
background-image: url("/images/admin/plugins/toggle_handle_right-bg.png");
|
42
|
+
}
|
data/spec/factories.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
## Site ##
|
2
|
+
Factory.define :site do |s|
|
3
|
+
s.name 'Acme Website'
|
4
|
+
s.subdomain 'acme'
|
5
|
+
s.created_at Time.now
|
6
|
+
end
|
7
|
+
|
8
|
+
# Accounts ##
|
9
|
+
Factory.define :account do |a|
|
10
|
+
a.name 'Bart Simpson'
|
11
|
+
a.email 'bart@simpson.net'
|
12
|
+
a.password 'easyone'
|
13
|
+
a.password_confirmation 'easyone'
|
14
|
+
a.locale 'en'
|
15
|
+
end
|
16
|
+
|
17
|
+
## Memberships ##
|
18
|
+
Factory.define :membership do |m|
|
19
|
+
m.association :account, :factory => :account
|
20
|
+
m.admin true
|
21
|
+
end
|
22
|
+
|
23
|
+
## Pages ##
|
24
|
+
Factory.define :page do |p|
|
25
|
+
p.association :site, :factory => :site
|
26
|
+
p.title 'Home page'
|
27
|
+
p.slug 'index'
|
28
|
+
end
|
29
|
+
|
30
|
+
## Liquid templates ##
|
31
|
+
Factory.define :liquid_template do |t|
|
32
|
+
t.association :site, :factory => :site
|
33
|
+
t.name 'Simple one'
|
34
|
+
t.slug 'simple_one'
|
35
|
+
t.value %{simple liquid template}
|
36
|
+
end
|
37
|
+
|
38
|
+
## Layouts ##
|
39
|
+
Factory.define :layout do |l|
|
40
|
+
l.association :site, :factory => :site
|
41
|
+
l.name '1 main column + sidebar'
|
42
|
+
l.value %{<html>
|
43
|
+
<head>
|
44
|
+
<title>My website</title>
|
45
|
+
</head>
|
46
|
+
<body>
|
47
|
+
<div id="sidebar">\{\{ content_for_sidebar "Left Sidebar"\}\}</div>
|
48
|
+
<div id="main">\{\{ content_for_layout \}\}</div>
|
49
|
+
</body>
|
50
|
+
</html>}
|
51
|
+
end
|
52
|
+
|
53
|
+
## Snippets ##
|
54
|
+
Factory.define :snippet do |s|
|
55
|
+
s.association :site, :factory => :site
|
56
|
+
s.name 'My website title'
|
57
|
+
s.slug 'header'
|
58
|
+
s.value %{<title>Acme</title>}
|
59
|
+
end
|
60
|
+
|
61
|
+
## Theme assets ##
|
62
|
+
Factory.define :theme_asset do |a|
|
63
|
+
a.association :site
|
64
|
+
end
|
65
|
+
|
66
|
+
## Asset collections ##
|
67
|
+
Factory.define :asset_collection do |s|
|
68
|
+
s.association :site, :factory => :site
|
69
|
+
s.name 'Trip to Chicago'
|
70
|
+
end
|
71
|
+
|
72
|
+
## Content types ##
|
73
|
+
Factory.define :content_type do |t|
|
74
|
+
t.association :site, :factory => :site
|
75
|
+
t.name 'My project'
|
76
|
+
end
|
77
|
+
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Locomotive::Liquid::Filters::Html do
|
4
|
+
|
5
|
+
include Locomotive::Liquid::Filters::Html
|
6
|
+
|
7
|
+
it 'should return a link tag for a stylesheet file' do
|
8
|
+
result = "<link href=\"main.css\" media=\"screen\" rel=\"stylesheet\" type=\"text/css\" />"
|
9
|
+
stylesheet_tag('main.css').should == result
|
10
|
+
stylesheet_tag('main').should == result
|
11
|
+
stylesheet_tag(nil).should == ''
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should return a script tag for a javascript file' do
|
15
|
+
result = %{<script src="main.js" type="text/javascript"></script>}
|
16
|
+
javascript_tag('main.js').should == result
|
17
|
+
javascript_tag('main').should == result
|
18
|
+
javascript_tag(nil).should == ''
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should return an image tag without paramaters' do
|
22
|
+
image_tag('foo.jpg').should == "<img src=\"/foo.jpg\" />"
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should return an image tag with size' do
|
26
|
+
image_tag('foo.jpg', 'width:100', 'height:50').should == "<img src=\"/foo.jpg\" height=\"50\" width=\"100\" />"
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should return a flash tag without parameters' do
|
30
|
+
flash_tag('foo.flv').should == %{
|
31
|
+
<object>
|
32
|
+
<param name="movie" value="foo.flv" />
|
33
|
+
<embed src="foo.flv" />
|
34
|
+
</embed>
|
35
|
+
</object>
|
36
|
+
}.strip
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should return a flash tag with size' do
|
40
|
+
flash_tag('foo.flv', 'width:100', 'height:50').should == %{
|
41
|
+
<object height=\"50\" width=\"100\">
|
42
|
+
<param name="movie" value="foo.flv" />
|
43
|
+
<embed src="foo.flv" height=\"50\" width=\"100\" />
|
44
|
+
</embed>
|
45
|
+
</object>
|
46
|
+
}.strip
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should return a navigation block for the pagination' do
|
50
|
+
pagination = {
|
51
|
+
"previous" => nil,
|
52
|
+
"parts" => [
|
53
|
+
{ 'title' => '1', 'is_link' => false },
|
54
|
+
{ 'title' => '2', 'is_link' => true, 'url' => '/?page=2' },
|
55
|
+
{ 'title' => '…', 'is_link' => false, 'hellip_break' => true },
|
56
|
+
{ 'title' => '5', 'is_link' => true, 'url' => '/?page=5' }
|
57
|
+
],
|
58
|
+
"next" => { 'title' => 'next', 'is_link' => true, 'url' => '/?page=2' }
|
59
|
+
}
|
60
|
+
html = default_pagination(pagination, 'css:flickr_pagination')
|
61
|
+
html.should match(/<div class="pagination flickr_pagination">/)
|
62
|
+
html.should match(/<span class="disabled prev_page">« Previous<\/span>/)
|
63
|
+
html.should match(/<a href="\/\?page=2">2<\/a>/)
|
64
|
+
html.should match(/<span class=\"gap\">\…<\/span>/)
|
65
|
+
html.should match(/<a href="\/\?page=2" class="next_page">Next »<\/a>/)
|
66
|
+
|
67
|
+
pagination.merge!({
|
68
|
+
'previous' => { 'title' => 'previous', 'is_link' => true, 'url' => '/?page=4' },
|
69
|
+
'next' => nil
|
70
|
+
})
|
71
|
+
|
72
|
+
html = default_pagination(pagination, 'css:flickr_pagination')
|
73
|
+
html.should_not match(/<span class="disabled prev_page">« Previous<\/span>/)
|
74
|
+
html.should match(/<a href="\/\?page=4" class="prev_page">« Previous<\/a>/)
|
75
|
+
html.should match(/<span class="disabled next_page">Next »<\/span>/)
|
76
|
+
|
77
|
+
pagination.merge!({ 'parts' => [] })
|
78
|
+
html = default_pagination(pagination, 'css:flickr_pagination')
|
79
|
+
html.should == ''
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Locomotive::Liquid::Filters::Misc do
|
4
|
+
|
5
|
+
include Locomotive::Liquid::Filters::Misc
|
6
|
+
|
7
|
+
it 'should underscore an input' do
|
8
|
+
underscore('foo').should == 'foo'
|
9
|
+
underscore('home page').should == 'home_page'
|
10
|
+
underscore('My foo Bar').should == 'my_foo_bar'
|
11
|
+
underscore('foo/bar').should == 'foo_bar'
|
12
|
+
underscore('foo/bar/index').should == 'foo_bar_index'
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should dasherize an input' do
|
16
|
+
dasherize('foo').should == 'foo'
|
17
|
+
dasherize('foo_bar').should == 'foo-bar'
|
18
|
+
dasherize('foo/bar').should == 'foo-bar'
|
19
|
+
dasherize('foo/bar/index').should == 'foo-bar-index'
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should concat strings' do
|
23
|
+
concat('foo', 'bar').should == 'foobar'
|
24
|
+
concat('hello', 'foo', 'bar').should == 'hellofoobar'
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should return the input string every n occurences' do
|
28
|
+
modulo('foo', 0, 3).should == ''
|
29
|
+
modulo('foo', 1, 3).should == ''
|
30
|
+
modulo('foo', 2, 3).should == 'foo'
|
31
|
+
modulo('foo', 3, 3).should == ''
|
32
|
+
modulo('foo', 4, 3).should == ''
|
33
|
+
modulo('foo', 5, 3).should == 'foo'
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Locomotive::Liquid::Tags::Paginate do
|
4
|
+
|
5
|
+
it 'should have a valid syntax' do
|
6
|
+
markup = "contents.projects by 5"
|
7
|
+
lambda do
|
8
|
+
Locomotive::Liquid::Tags::Paginate.new('paginate', markup, ["{% endpaginate %}"])
|
9
|
+
end.should_not raise_error
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should raise an error if the syntax is incorrect' do
|
13
|
+
["contents.projects by a", "contents.projects", "contents.projects 5"].each do |markup|
|
14
|
+
lambda do
|
15
|
+
Locomotive::Liquid::Tags::Paginate.new('paginate', markup, ["{% endpaginate %}"])
|
16
|
+
end.should raise_error
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should paginate the collection' do
|
21
|
+
template = Liquid::Template.parse(default_template)
|
22
|
+
text = template.render!(liquid_context)
|
23
|
+
|
24
|
+
text.should match /!Ruby on Rails!/
|
25
|
+
text.should match /!jQuery!/
|
26
|
+
text.should_not match /!mongodb!/
|
27
|
+
|
28
|
+
text = template.render!(liquid_context(:page => 2))
|
29
|
+
|
30
|
+
text.should_not match /!jQuery!/
|
31
|
+
text.should match /!mongodb!/
|
32
|
+
text.should match /!Liquid!/
|
33
|
+
text.should_not match /!sqlite3!/
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should not paginate if collection is nil or empty' do
|
37
|
+
template = Liquid::Template.parse(default_template)
|
38
|
+
|
39
|
+
lambda do
|
40
|
+
template.render!(liquid_context(:collection => nil))
|
41
|
+
end.should raise_error
|
42
|
+
|
43
|
+
lambda do
|
44
|
+
template.render!(liquid_context(:collection => PaginatedCollection.new))
|
45
|
+
end.should raise_error
|
46
|
+
end
|
47
|
+
|
48
|
+
# ___ helpers methods ___ #
|
49
|
+
|
50
|
+
def liquid_context(options = {})
|
51
|
+
::Liquid::Context.new({
|
52
|
+
'projects' => options.has_key?(:collection) ? options[:collection] : PaginatedCollection.new(['Ruby on Rails', 'jQuery', 'mongodb', 'Liquid', 'sqlite3']),
|
53
|
+
'current_page' => options[:page] || 1
|
54
|
+
}, {}, true)
|
55
|
+
end
|
56
|
+
|
57
|
+
def default_template
|
58
|
+
"{% paginate projects by 2 %}
|
59
|
+
{% for project in paginate.collection %}
|
60
|
+
!{{ project }}!
|
61
|
+
{% endfor %}
|
62
|
+
{% endpaginate %}"
|
63
|
+
end
|
64
|
+
|
65
|
+
class PaginatedCollection
|
66
|
+
|
67
|
+
def initialize(collection)
|
68
|
+
@collection = collection || []
|
69
|
+
end
|
70
|
+
|
71
|
+
def paginate(options = {})
|
72
|
+
total_pages = (@collection.size.to_f / options[:per_page].to_f).to_f.ceil + 1
|
73
|
+
offset = (options[:page] - 1) * options[:per_page]
|
74
|
+
|
75
|
+
{
|
76
|
+
:collection => @collection[offset..(offset + options[:per_page]) - 1],
|
77
|
+
:current_page => options[:page],
|
78
|
+
:previous_page => options[:page] == 1 ? 1 : options[:page] - 1,
|
79
|
+
:next_page => options[:page] == total_pages ? total_pages : options[:page] + 1,
|
80
|
+
:total_entries => @collection.size,
|
81
|
+
:total_pages => total_pages,
|
82
|
+
:per_page => options[:per_page]
|
83
|
+
}
|
84
|
+
end
|
85
|
+
|
86
|
+
def each(&block)
|
87
|
+
@collection.each(&block)
|
88
|
+
end
|
89
|
+
|
90
|
+
def method_missing(method, *args)
|
91
|
+
@collection.send(method, *args)
|
92
|
+
end
|
93
|
+
|
94
|
+
def to_liquid
|
95
|
+
self
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Locomotive::Liquid::Tags::Snippet do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
Site.any_instance.stubs(:create_default_pages!).returns(true)
|
7
|
+
site = Factory.build(:site)
|
8
|
+
snippet = Factory.build(:snippet, :site => site)
|
9
|
+
snippet.send(:store_template)
|
10
|
+
site.snippets.stubs(:where).returns([snippet])
|
11
|
+
@context = ::Liquid::Context.new({}, { :site => site })
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should render it' do
|
15
|
+
template = ::Liquid::Template.parse("{% include 'header' %}")
|
16
|
+
text = template.render(@context)
|
17
|
+
text.should == "<title>Acme</title>"
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Locomotive::Liquid::Tags::WithScope do
|
4
|
+
|
5
|
+
it 'should decode options (boolean, interger, ...)' do
|
6
|
+
scope = Locomotive::Liquid::Tags::WithScope.new('with_scope', 'active:true price:42 title:\'foo\' hidden:false', ["{% endwith_scope %}"])
|
7
|
+
attributes = scope.send(:decode, scope.instance_variable_get(:@attributes))
|
8
|
+
attributes['active'].should == true
|
9
|
+
attributes['price'].should == 42
|
10
|
+
attributes['title'].should == 'foo'
|
11
|
+
attributes['hidden'].should == false
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should store attributes in the context' do
|
15
|
+
template = ::Liquid::Template.parse("{% with_scope active:true title:'foo' %}{{ with_scope.active }}-{{ with_scope.title }}{% endwith_scope %}")
|
16
|
+
text = template.render
|
17
|
+
text.should == "true-foo"
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Locomotive rendering system' do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@controller = Locomotive::TestController.new
|
7
|
+
Site.any_instance.stubs(:create_default_pages!).returns(true)
|
8
|
+
@site = Factory.build(:site)
|
9
|
+
Site.stubs(:find).returns(@site)
|
10
|
+
@controller.current_site = @site
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'setting the response' do
|
14
|
+
|
15
|
+
before(:each) do
|
16
|
+
@controller.send(:prepare_and_set_response, 'Hello world !')
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should have a html content type' do
|
20
|
+
@controller.response.headers["Content-Type"].should == 'text/html; charset=utf-8'
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should display the output' do
|
24
|
+
@controller.output.should == 'Hello world !'
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'when retrieving page' do
|
30
|
+
|
31
|
+
before(:each) do
|
32
|
+
@page = Factory.build(:page, :site => nil, :published => true)
|
33
|
+
@controller
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should retrieve the index page /' do
|
37
|
+
@controller.request.fullpath = '/'
|
38
|
+
@controller.current_site.pages.expects(:where).with({ :fullpath => 'index' }).returns([@page])
|
39
|
+
@controller.send(:locomotive_page).should_not be_nil
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should also retrieve the index page (index.html)' do
|
43
|
+
@controller.request.fullpath = '/index.html'
|
44
|
+
@controller.current_site.pages.expects(:where).with({ :fullpath => 'index' }).returns([@page])
|
45
|
+
@controller.send(:locomotive_page).should_not be_nil
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should retrieve it based on the full path' do
|
49
|
+
@controller.request.fullpath = '/about_us/team.html'
|
50
|
+
@controller.current_site.pages.expects(:where).with({ :fullpath => 'about_us/team' }).returns([@page])
|
51
|
+
@controller.send(:locomotive_page).should_not be_nil
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should return the 404 page if the page does not exist' do
|
55
|
+
@controller.request.fullpath = '/contact'
|
56
|
+
@controller.current_site.pages.expects(:not_found).returns([true])
|
57
|
+
@controller.send(:locomotive_page).should be_true
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'non published page' do
|
61
|
+
|
62
|
+
before(:each) do
|
63
|
+
@page.published = false
|
64
|
+
@controller.current_account = nil
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should return the 404 page if the page has not been published yet' do
|
68
|
+
@controller.request.fullpath = '/contact'
|
69
|
+
@controller.current_site.pages.expects(:where).with({ :fullpath => 'contact' }).returns([@page])
|
70
|
+
@controller.current_site.pages.expects(:not_found).returns([true])
|
71
|
+
@controller.send(:locomotive_page).should be_true
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'should not return the 404 page if the page has not been published yet and admin is logged in' do
|
75
|
+
@controller.current_account = true
|
76
|
+
@controller.request.fullpath = '/contact'
|
77
|
+
@controller.current_site.pages.expects(:where).with({ :fullpath => 'contact' }).returns([@page])
|
78
|
+
@controller.send(:locomotive_page).should == @page
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|