├── .gitignore
├── .gpig
├── Gemfile
├── Gemfile.lock
├── MIT-LICENSE
├── README.md
├── Rakefile
├── app
├── assets
│ ├── fonts
│ │ ├── caboose
│ │ │ ├── caboose-admin-menu.eot
│ │ │ ├── caboose-admin-menu.svg
│ │ │ ├── caboose-admin-menu.ttf
│ │ │ └── caboose-admin-menu.woff
│ │ ├── icomoon.eot
│ │ ├── icomoon.svg
│ │ ├── icomoon.ttf
│ │ └── icomoon.woff
│ ├── images
│ │ └── caboose
│ │ │ ├── .gitkeep
│ │ │ ├── caboose_logo.png
│ │ │ ├── caboose_logo_small.png
│ │ │ ├── caboose_nav.png
│ │ │ ├── caboose_nav_black.png
│ │ │ ├── credit_cards.png
│ │ │ ├── default_user_pic.png
│ │ │ ├── file_types
│ │ │ ├── doc.png
│ │ │ ├── docx.png
│ │ │ ├── gif.png
│ │ │ ├── jpeg.png
│ │ │ ├── jpg.png
│ │ │ ├── mp3.png
│ │ │ ├── mp4.png
│ │ │ ├── pdf.png
│ │ │ ├── png.png
│ │ │ ├── pps.png
│ │ │ ├── ppt.png
│ │ │ ├── pptx.png
│ │ │ ├── psd.png
│ │ │ ├── rtf.png
│ │ │ ├── tiff.png
│ │ │ ├── xls.png
│ │ │ ├── xlsx.png
│ │ │ └── zip.png
│ │ │ ├── grid.png
│ │ │ ├── icons
│ │ │ ├── copy.png
│ │ │ ├── delete.png
│ │ │ ├── down.png
│ │ │ ├── left.png
│ │ │ ├── right.png
│ │ │ └── up.png
│ │ │ ├── loading2.gif
│ │ │ ├── loading_black_on_white.gif
│ │ │ ├── loading_black_on_yellow.gif
│ │ │ ├── loading_green.gif
│ │ │ ├── loading_small_black_on_white.gif
│ │ │ ├── loading_small_white_on_black.gif
│ │ │ ├── loading_white_on_black.gif
│ │ │ ├── lock.png
│ │ │ ├── login_image.png
│ │ │ ├── modal_overlay.png
│ │ │ ├── password_image.png
│ │ │ └── search.png
│ ├── javascripts
│ │ ├── caboose
│ │ │ ├── admin.js
│ │ │ ├── admin
│ │ │ │ └── application.js
│ │ │ ├── admin_block_edit.js
│ │ │ ├── admin_block_type_parser_controller.js
│ │ │ ├── admin_edit_invoice.js
│ │ │ ├── admin_edit_modifications.js
│ │ │ ├── admin_main.js
│ │ │ ├── admin_media_index.js
│ │ │ ├── admin_media_index_new.js
│ │ │ ├── admin_page_new_blocks.js
│ │ │ ├── admin_post_edit_content.js
│ │ │ ├── admin_products.js
│ │ │ ├── application.js
│ │ │ ├── assets_controller.js
│ │ │ ├── authorize.net.js
│ │ │ ├── block_content_controller.js
│ │ │ ├── block_content_controller_dragdrop.js
│ │ │ ├── block_media_controller.js
│ │ │ ├── block_modal_controllers
│ │ │ │ ├── block_dd_modal_controller.js
│ │ │ │ ├── block_modal_controller.js
│ │ │ │ ├── button_modal_controller.js
│ │ │ │ ├── media_modal_controller.js
│ │ │ │ └── richtext_modal_controller.js
│ │ │ ├── card.js
│ │ │ ├── cart.js
│ │ │ ├── cart_old.js
│ │ │ ├── checkout.js
│ │ │ ├── checkout
│ │ │ │ ├── .checkout_stripe.js.marks
│ │ │ │ ├── authnet_payment_method_controller.js
│ │ │ │ ├── billing_address_controller.js
│ │ │ │ ├── cart_controller.js
│ │ │ │ ├── checkout_controller.js
│ │ │ │ ├── gift_cards_controller.js
│ │ │ │ ├── shipping_address_controller.js
│ │ │ │ ├── shipping_method_controller.js
│ │ │ │ └── stripe_payment_method_controller.js
│ │ │ ├── checkout_addresses.js
│ │ │ ├── checkout_confirm_without_payment.js
│ │ │ ├── checkout_gift_cards.js
│ │ │ ├── checkout_login_register.js
│ │ │ ├── checkout_module.js
│ │ │ ├── checkout_payment_authnet.js
│ │ │ ├── checkout_payment_stripe.js
│ │ │ ├── checkout_shipping.js
│ │ │ ├── class.js
│ │ │ ├── clipboard.js
│ │ │ ├── date_format.js
│ │ │ ├── google_spreadsheets.js
│ │ │ ├── imageZoom.js
│ │ │ ├── jquery-ui.drag-multiple.min.js
│ │ │ ├── jquery.datetimepicker.js
│ │ │ ├── jquery.detect.js
│ │ │ ├── jquery.fileupload.js
│ │ │ ├── jquery.iframe-transport.js
│ │ │ ├── jquery.nestable.js
│ │ │ ├── jquery.payment.js
│ │ │ ├── jquery.placeholder.js
│ │ │ ├── jquery.timepicker.js
│ │ │ ├── lodash.min.js
│ │ │ ├── main.js
│ │ │ ├── media_browser.js
│ │ │ ├── modal.js
│ │ │ ├── modal_controller.js
│ │ │ ├── modal_integration.js
│ │ │ ├── model.form.page.js
│ │ │ ├── model.form.user.js
│ │ │ ├── model
│ │ │ │ ├── all.js
│ │ │ │ ├── attribute.js
│ │ │ │ ├── bound_checkbox.js
│ │ │ │ ├── bound_checkbox_multiple.js
│ │ │ │ ├── bound_code.js
│ │ │ │ ├── bound_color.js
│ │ │ │ ├── bound_control.js
│ │ │ │ ├── bound_date.js
│ │ │ │ ├── bound_date_time.js
│ │ │ │ ├── bound_file.js
│ │ │ │ ├── bound_image.js
│ │ │ │ ├── bound_image_bak.js
│ │ │ │ ├── bound_media_image.js
│ │ │ │ ├── bound_richtext.js
│ │ │ │ ├── bound_s3_image.js
│ │ │ │ ├── bound_select.js
│ │ │ │ ├── bound_select_simple.js
│ │ │ │ ├── bound_text.js
│ │ │ │ ├── bound_textarea.js
│ │ │ │ ├── bound_time.js
│ │ │ │ ├── class.js
│ │ │ │ ├── index_table.js
│ │ │ │ ├── index_table_bak.js
│ │ │ │ ├── model.js
│ │ │ │ ├── model_binder.js
│ │ │ │ ├── pager.js
│ │ │ │ └── s3.js
│ │ │ ├── my_account_edit_invoice.js
│ │ │ ├── my_account_payment_method_controller.js
│ │ │ ├── product.js
│ │ │ ├── s3upload.js
│ │ │ ├── shortcut.js
│ │ │ ├── sidebar_controller.js
│ │ │ ├── spectrum.js
│ │ │ ├── station.js
│ │ │ ├── tinymce_init.js
│ │ │ ├── united_states.js
│ │ │ └── variant_children_controller.js
│ │ ├── chartjs
│ │ │ ├── Chart.min.js
│ │ │ └── gulpfile.js
│ │ └── tinymce
│ │ │ └── plugins
│ │ │ └── caboose
│ │ │ └── plugin.js
│ ├── stylesheets
│ │ └── caboose
│ │ │ ├── admin.css
│ │ │ ├── admin
│ │ │ ├── _config.scss
│ │ │ ├── application.css
│ │ │ ├── component.css
│ │ │ ├── froala.min.css
│ │ │ ├── ie.scss
│ │ │ ├── integrations
│ │ │ │ ├── main.scss
│ │ │ │ └── shopify.scss
│ │ │ ├── jquery-ui-subnav-theme.min.css
│ │ │ ├── layout.scss
│ │ │ ├── main.scss
│ │ │ ├── modules
│ │ │ │ ├── body.scss
│ │ │ │ ├── buttons.scss
│ │ │ │ ├── countdown.css
│ │ │ │ ├── crumbtrail.scss
│ │ │ │ ├── data_table.scss
│ │ │ │ ├── footer.scss
│ │ │ │ ├── forms.scss
│ │ │ │ ├── functions.scss
│ │ │ │ ├── grid.scss
│ │ │ │ ├── header.scss
│ │ │ │ ├── headings.scss
│ │ │ │ ├── main_nav.scss
│ │ │ │ ├── message_boxes.scss
│ │ │ │ ├── model_binder.scss
│ │ │ │ ├── navigation.scss
│ │ │ │ ├── order_bumps.scss
│ │ │ │ ├── pager.scss
│ │ │ │ ├── product_images.scss
│ │ │ │ ├── products.css
│ │ │ │ ├── search.scss
│ │ │ │ ├── selects.scss
│ │ │ │ ├── subnav_tabs.scss
│ │ │ │ └── tabs.scss
│ │ │ ├── page_edit
│ │ │ │ ├── block_anchors.scss
│ │ │ │ ├── block_overlays.scss
│ │ │ │ ├── device_selector.scss
│ │ │ │ ├── froala.scss
│ │ │ │ ├── group_overlay.scss
│ │ │ │ ├── layout.scss
│ │ │ │ ├── main.scss
│ │ │ │ ├── modal.scss
│ │ │ │ ├── preview.scss
│ │ │ │ ├── publish.scss
│ │ │ │ ├── revisions.scss
│ │ │ │ ├── subnav.scss
│ │ │ │ └── top_nav.scss
│ │ │ ├── pages
│ │ │ │ ├── .page_edit.scss.marks
│ │ │ │ ├── assets_index.css
│ │ │ │ ├── block_edit_image.css.scss
│ │ │ │ ├── media_index.css.scss
│ │ │ │ ├── new_block.css
│ │ │ │ ├── page_edit.scss
│ │ │ │ ├── page_edit_content.scss
│ │ │ │ ├── pages_index.scss
│ │ │ │ └── post_edit_content.css
│ │ │ ├── print.css
│ │ │ └── slack.scss
│ │ │ ├── admin_assets_index.css
│ │ │ ├── admin_block_edit_image.css.scss
│ │ │ ├── admin_crumbtrail.css.scss
│ │ │ ├── admin_edit_page_content.scss
│ │ │ ├── admin_edit_page_content_dragdrop.scss
│ │ │ ├── admin_main.css.scss
│ │ │ ├── admin_media_index.css.scss
│ │ │ ├── admin_menu_icons.css
│ │ │ ├── admin_new_block.css
│ │ │ ├── admin_page_edit_content.css
│ │ │ ├── admin_post_edit_content.css
│ │ │ ├── admin_products.css
│ │ │ ├── application.css
│ │ │ ├── bound_input.css
│ │ │ ├── caboose.css
│ │ │ ├── cart.css.scss
│ │ │ ├── checkout.css.scss
│ │ │ ├── fonts.css
│ │ │ ├── icomoon_fonts.css
│ │ │ ├── icons.txt
│ │ │ ├── jquery.datetimepicker.css
│ │ │ ├── jquery.timepicker.css
│ │ │ ├── login.scss
│ │ │ ├── message_boxes.css.scss
│ │ │ ├── modal.css
│ │ │ ├── modal_inline.css
│ │ │ ├── modal_main.css
│ │ │ ├── model_binder.css
│ │ │ ├── my_account.scss
│ │ │ ├── my_account_edit_invoice.css.scss
│ │ │ ├── nestable.css
│ │ │ ├── page_bar_generator.css
│ │ │ ├── print.css
│ │ │ ├── product_images.css.scss
│ │ │ ├── product_options.css.scss
│ │ │ ├── register.css
│ │ │ ├── responsive.css.scss
│ │ │ ├── spectrum.css
│ │ │ ├── station_modal.css
│ │ │ ├── station_sidebar.css
│ │ │ └── tinymce.css
│ └── templates
│ │ └── caboose
│ │ ├── cart
│ │ ├── add_to_cart.jst.ejs
│ │ └── line_items.jst.ejs
│ │ ├── checkout
│ │ ├── address.jst.ejs
│ │ ├── forms
│ │ │ ├── guest.jst.ejs
│ │ │ ├── register.jst.ejs
│ │ │ └── signin.jst.ejs
│ │ ├── line_items.jst.ejs
│ │ ├── login.jst.ejs
│ │ ├── payment.jst.ejs
│ │ └── shipping.jst.ejs
│ │ ├── messages
│ │ └── error.jst.ejs
│ │ └── product
│ │ ├── images.jst.ejs
│ │ ├── images_old.jst.ejs
│ │ └── options.jst.ejs
├── controllers
│ └── caboose
│ │ ├── ab_options_controller.rb
│ │ ├── ab_variants_controller.rb
│ │ ├── admin_controller.rb
│ │ ├── application_controller.rb
│ │ ├── assets_controller.rb
│ │ ├── billing_addresses_controller.rb
│ │ ├── block_type_categories_controller.rb
│ │ ├── block_type_sources_controller.rb
│ │ ├── block_type_store_controller.rb
│ │ ├── block_types_controller.rb
│ │ ├── blocks_controller.rb
│ │ ├── calendars_controller.rb
│ │ ├── cart_controller.rb
│ │ ├── categories_controller.rb
│ │ ├── checkout_controller.rb
│ │ ├── checkout_controller_bak.rb
│ │ ├── domains_controller.rb
│ │ ├── event_custom_field_values_controller.rb
│ │ ├── event_custom_fields_controller.rb
│ │ ├── event_groups_controller.rb
│ │ ├── events_controller.rb
│ │ ├── fonts_controller.rb
│ │ ├── gift_cards_controller.rb
│ │ ├── google_spreadsheets_controller.rb
│ │ ├── inbox_controller.rb
│ │ ├── invoice_packages_controller.rb
│ │ ├── invoice_reports_controller.rb
│ │ ├── invoice_transactions_controller.rb
│ │ ├── invoices_controller.rb
│ │ ├── line_items_controller.rb
│ │ ├── login_controller.rb
│ │ ├── login_logs_controller.rb
│ │ ├── logout_controller.rb
│ │ ├── media_categories_controller.rb
│ │ ├── media_controller.rb
│ │ ├── modal_controller.rb
│ │ ├── modification_value_input_fields_controller.rb
│ │ ├── modification_values_controller.rb
│ │ ├── modifications_controller.rb
│ │ ├── my_account_controller.rb
│ │ ├── my_account_invoices_controller.rb
│ │ ├── my_account_line_items_controller.rb
│ │ ├── page_custom_field_values_controller.rb
│ │ ├── page_custom_fields_controller.rb
│ │ ├── page_permissions_controller.rb
│ │ ├── page_templates_controller.rb
│ │ ├── pages_controller.rb
│ │ ├── permissions_controller.rb
│ │ ├── post_categories_controller.rb
│ │ ├── post_custom_field_values_controller.rb
│ │ ├── post_custom_fields_controller.rb
│ │ ├── posts_controller.rb
│ │ ├── product_images_controller.rb
│ │ ├── products_controller.rb
│ │ ├── redirects_controller.rb
│ │ ├── register_controller.rb
│ │ ├── retargeting_controller.rb
│ │ ├── reviews_controller.rb
│ │ ├── roles_controller.rb
│ │ ├── settings_controller.rb
│ │ ├── shipping_addresses_controller.rb
│ │ ├── shipping_packages_controller.rb
│ │ ├── sites_controller.rb
│ │ ├── smtp_controller.rb
│ │ ├── sns_controller.rb
│ │ ├── social_controller.rb
│ │ ├── stackable_groups_controller.rb
│ │ ├── station_controller.rb
│ │ ├── store_controller.rb
│ │ ├── subscriptions_controller.rb
│ │ ├── theme_files_controller.rb
│ │ ├── themes_controller.rb
│ │ ├── users_controller.rb
│ │ ├── variant_children_controller.rb
│ │ ├── variant_limits_controller.rb
│ │ ├── variants_controller.rb
│ │ └── vendors_controller.rb
├── helpers
│ └── caboose
│ │ ├── application_helper.rb
│ │ ├── categories_helper.rb
│ │ ├── checkout_helper.rb
│ │ ├── pages_helper.rb
│ │ ├── permissions_helper.rb
│ │ └── products_helper.rb
├── mailers
│ └── caboose
│ │ ├── caboose_mailer.rb
│ │ ├── invoices_mailer.rb
│ │ └── login_mailer.rb
├── models
│ └── caboose
│ │ ├── ab_option.rb
│ │ ├── ab_testing.rb
│ │ ├── ab_value.rb
│ │ ├── ab_variant.rb
│ │ ├── address.rb
│ │ ├── approval_request.rb
│ │ ├── asset.rb
│ │ ├── asset_manager.rb
│ │ ├── asset_manifest.rb
│ │ ├── authenticator.rb
│ │ ├── authnet.rb
│ │ ├── block.rb
│ │ ├── block_cache.rb
│ │ ├── block_cache_file.rb
│ │ ├── block_cache_image.rb
│ │ ├── block_type.rb
│ │ ├── block_type_category.rb
│ │ ├── block_type_icons.rb
│ │ ├── block_type_parser.rb
│ │ ├── block_type_site_membership.rb
│ │ ├── block_type_source.rb
│ │ ├── block_type_summary.rb
│ │ ├── caboose_plugin.rb
│ │ ├── calendar.rb
│ │ ├── calendar_event.rb
│ │ ├── calendar_event_group.rb
│ │ ├── category.rb
│ │ ├── category_membership.rb
│ │ ├── comment_routes.rb
│ │ ├── core_plugin.rb
│ │ ├── crumbtrail.rb
│ │ ├── customization_membership.rb
│ │ ├── database_session.rb
│ │ ├── discount.rb
│ │ ├── domain.rb
│ │ ├── domain_constraint.rb
│ │ ├── event_custom_field.rb
│ │ ├── event_custom_field_value.rb
│ │ ├── export.rb
│ │ ├── font.rb
│ │ ├── font_family.rb
│ │ ├── font_variant.rb
│ │ ├── form_submission.rb
│ │ ├── ga.rb
│ │ ├── gift_card.rb
│ │ ├── invoice.rb
│ │ ├── invoice_discount.rb
│ │ ├── invoice_log.rb
│ │ ├── invoice_package.rb
│ │ ├── invoice_package_calculator.rb
│ │ ├── invoice_pdf.rb
│ │ ├── invoice_reporter.rb
│ │ ├── invoice_transaction.rb
│ │ ├── letsencrypt_plugin_challenge.rb
│ │ ├── letsencrypt_plugin_setting.rb
│ │ ├── line_item.rb
│ │ ├── line_item_modification.rb
│ │ ├── login_log.rb
│ │ ├── media.rb
│ │ ├── media_category.rb
│ │ ├── menu_block.rb
│ │ ├── message.rb
│ │ ├── mimetype.rb
│ │ ├── model_binder.rb
│ │ ├── modification.rb
│ │ ├── modification_value.rb
│ │ ├── modification_value_input_field.rb
│ │ ├── page.rb
│ │ ├── page_bar_generator.rb
│ │ ├── page_cache.rb
│ │ ├── page_cacher.rb
│ │ ├── page_custom_field.rb
│ │ ├── page_custom_field_value.rb
│ │ ├── page_permission.rb
│ │ ├── page_tag.rb
│ │ ├── page_template.rb
│ │ ├── page_template_category.rb
│ │ ├── pager.rb
│ │ ├── payment_processors
│ │ ├── authorizenet.rb
│ │ └── base.rb
│ │ ├── pending_invoices_pdf.rb
│ │ ├── permanent_redirect.rb
│ │ ├── permission.rb
│ │ ├── post.rb
│ │ ├── post_category.rb
│ │ ├── post_category_membership.rb
│ │ ├── post_custom_field.rb
│ │ ├── post_custom_field_value.rb
│ │ ├── product.rb
│ │ ├── product_category_sort.rb
│ │ ├── product_default.rb
│ │ ├── product_image.rb
│ │ ├── product_image_variant.rb
│ │ ├── retargeting_config.rb
│ │ ├── review.rb
│ │ ├── rich_text_block_parser.rb
│ │ ├── role.rb
│ │ ├── role_membership.rb
│ │ ├── role_permission.rb
│ │ ├── schema.rb
│ │ ├── search_filter.rb
│ │ ├── setting.rb
│ │ ├── shipping_calculator.rb
│ │ ├── shipping_method.rb
│ │ ├── shipping_method_loader.rb
│ │ ├── shipping_package.rb
│ │ ├── shipping_package_method.rb
│ │ ├── site.rb
│ │ ├── site_membership.rb
│ │ ├── smtp_config.rb
│ │ ├── social_config.rb
│ │ ├── stackable_group.rb
│ │ ├── states.rb
│ │ ├── std_class.rb
│ │ ├── store_config.rb
│ │ ├── subscription.rb
│ │ ├── tax_calculator.rb
│ │ ├── tax_line.rb
│ │ ├── theme.rb
│ │ ├── theme_file.rb
│ │ ├── theme_file_membership.rb
│ │ ├── user.rb
│ │ ├── utilities
│ │ └── schema.rb
│ │ ├── variant.rb
│ │ ├── variant_child.rb
│ │ ├── variant_default.rb
│ │ ├── variant_limit.rb
│ │ ├── vendor.rb
│ │ ├── wish_list.rb
│ │ └── wish_list_line_item.rb
└── views
│ ├── caboose
│ ├── ab_variants
│ │ ├── admin_edit.html.erb
│ │ ├── admin_index.html.erb
│ │ └── admin_new.html.erb
│ ├── admin
│ │ ├── _content.html.erb
│ │ ├── _fonts.html.erb
│ │ ├── _footer.html.erb
│ │ ├── _header.html.erb
│ │ ├── _icons.html.erb
│ │ ├── _mobile_navigation.html.erb
│ │ ├── _post.html.erb
│ │ └── index.html.erb
│ ├── application
│ │ ├── show.html.erb
│ │ └── under_construction.html.erb
│ ├── assets
│ │ ├── admin_ace.html.erb
│ │ └── admin_index.html.erb
│ ├── block_type_categories
│ │ ├── admin_edit.html.erb
│ │ ├── admin_index.html.erb
│ │ └── admin_new.html.erb
│ ├── block_type_sources
│ │ ├── admin_edit.html.erb
│ │ ├── admin_index.html.erb
│ │ └── admin_new.html.erb
│ ├── block_type_store
│ │ ├── admin_details.html.erb
│ │ └── admin_index.html.erb
│ ├── block_types
│ │ ├── admin_edit.html.erb
│ │ ├── admin_edit_btsm_css.html.erb
│ │ ├── admin_edit_btsm_html.html.erb
│ │ ├── admin_edit_icon.html.erb
│ │ ├── admin_edit_render_function.html.erb
│ │ ├── admin_edit_sass.html.erb
│ │ ├── admin_error_log.html.erb
│ │ ├── admin_index.html.erb
│ │ ├── admin_new.html.erb
│ │ └── admin_parse_form.html.erb
│ ├── blocks
│ │ ├── ._post.html.erb.marks
│ │ ├── _block.html.erb
│ │ ├── _checkbox.html.erb
│ │ ├── _controller_view_content.html.erb
│ │ ├── _file.html.erb
│ │ ├── _ga.html.erb
│ │ ├── _ga_events.html.erb
│ │ ├── _ga_old.html.erb
│ │ ├── _google_spreadsheet_cell_value.html.erb
│ │ ├── _heading.html.erb
│ │ ├── _html.html.erb
│ │ ├── _image.html.erb
│ │ ├── _image2.html.erb
│ │ ├── _layout_basic.html.erb
│ │ ├── _layout_basic_content.html.erb
│ │ ├── _layout_basic_footer.html.erb
│ │ ├── _layout_basic_header.html.erb
│ │ ├── _layout_left_sidebar.html.erb
│ │ ├── _layout_left_sidebar_content.html.erb
│ │ ├── _layout_left_sidebar_footer.html.erb
│ │ ├── _layout_left_sidebar_header.html.erb
│ │ ├── _layout_left_sidebar_sidebar.html.erb
│ │ ├── _layout_post.html.erb
│ │ ├── _layout_post_content.html.erb
│ │ ├── _layout_post_footer.html.erb
│ │ ├── _layout_post_header.html.erb
│ │ ├── _layout_right_sidebar.html.erb
│ │ ├── _layout_right_sidebar_content.html.erb
│ │ ├── _layout_right_sidebar_footer.html.erb
│ │ ├── _layout_right_sidebar_header.html.erb
│ │ ├── _layout_right_sidebar_sidebar.html.erb
│ │ ├── _post.html.erb
│ │ ├── _product_category.html.erb
│ │ ├── _product_crumbtrail.html.erb
│ │ ├── _product_details.html.erb
│ │ ├── _product_sales.html.erb
│ │ ├── _products.html.erb
│ │ ├── _render_function.html.erb
│ │ ├── _retargeting.html.erb
│ │ ├── _richtext.html.erb
│ │ ├── _ruby_block.html.erb
│ │ ├── _select.html.erb
│ │ ├── _selector_switch_one.html.erb
│ │ ├── _selector_switch_three.html.erb
│ │ ├── _selector_switch_two.html.erb
│ │ ├── _text.html.erb
│ │ ├── admin_edit.html.erb
│ │ ├── admin_edit_advanced.html.erb
│ │ ├── admin_edit_custom.html.erb
│ │ ├── admin_edit_file.html.erb
│ │ ├── admin_edit_h1.html.erb
│ │ ├── admin_edit_h2.html.erb
│ │ ├── admin_edit_h3.html.erb
│ │ ├── admin_edit_h4.html.erb
│ │ ├── admin_edit_h5.html.erb
│ │ ├── admin_edit_h6.html.erb
│ │ ├── admin_edit_heading_old.html
│ │ ├── admin_edit_image.html.erb
│ │ ├── admin_edit_richtextold.html.erb
│ │ ├── admin_new.html.erb
│ │ ├── admin_render_second_level.json.erb
│ │ └── tinymce.js.erb
│ ├── calendars
│ │ ├── admin_edit.html.erb
│ │ ├── admin_edit_old.html.erb
│ │ └── admin_index.html.erb
│ ├── cart
│ │ └── index.html.erb
│ ├── categories
│ │ ├── admin_edit.html.erb
│ │ ├── admin_index.html.erb
│ │ ├── admin_new.html.erb
│ │ └── admin_sort_children.html.erb
│ ├── checkout
│ │ ├── _address_form.html.erb
│ │ ├── _billing_form.html.erb
│ │ ├── _cart.html.erb
│ │ ├── _cart_old.html.erb
│ │ ├── _confirm.html.erb
│ │ ├── _confirm_table.html.erb
│ │ ├── _order_discount.html.erb
│ │ ├── _shipping_address.html.erb
│ │ ├── _shipping_method.html.erb
│ │ ├── _shipping_method_form.html.erb
│ │ ├── addresses.html.erb
│ │ ├── authnet.html.erb
│ │ ├── authnet_profile_form.html.erb
│ │ ├── authnet_relay.html.erb
│ │ ├── authnet_response.html.erb
│ │ ├── authnet_response_handler.html.erb
│ │ ├── billing.html.erb
│ │ ├── checkout.html.erb
│ │ ├── confirm_without_payment.html.erb
│ │ ├── discount.html.erb
│ │ ├── empty.html.erb
│ │ ├── error.html.erb
│ │ ├── gift_cards.html.erb
│ │ ├── index.html.erb
│ │ ├── login.html.erb
│ │ ├── payment_authnet.html.erb
│ │ ├── payment_stripe.html.erb
│ │ ├── payscape_relay.html.erb
│ │ ├── relay_old.html.erb
│ │ ├── relay_postMessage.html.erb
│ │ ├── shipping.html.erb
│ │ └── thanks.html.erb
│ ├── event_custom_fields
│ │ ├── admin_edit.html.erb
│ │ └── admin_index.html.erb
│ ├── events
│ │ ├── admin_edit.html.erb
│ │ ├── admin_index.html.erb
│ │ ├── admin_new.html.erb
│ │ └── show.html.erb
│ ├── extras
│ │ ├── error.html.erb
│ │ ├── error404.html.erb
│ │ └── error_invalid_site.html.erb
│ ├── fonts
│ │ └── admin_index.html.erb
│ ├── gift_cards
│ │ ├── admin_edit.html.erb
│ │ └── admin_index.html.erb
│ ├── inbox
│ │ ├── admin_index.html.erb
│ │ ├── admin_show.html.erb
│ │ └── admin_spam.html.erb
│ ├── invoices
│ │ ├── _admin_footer.html.erb
│ │ ├── _admin_header.html.erb
│ │ ├── _quickbooks_invoice.html.erb
│ │ ├── admin_city_report.html.erb
│ │ ├── admin_delete_form.html.erb
│ │ ├── admin_edit.html.erb
│ │ ├── admin_index.html.erb
│ │ ├── admin_invalid_order.html.erb
│ │ ├── admin_new.html.erb
│ │ ├── admin_print.html.erb
│ │ ├── admin_summary_report.html.erb
│ │ └── admin_user_edit.html.erb
│ ├── invoices_mailer
│ │ ├── customer_new_invoice.html.erb
│ │ ├── customer_payment_authorization.html.erb
│ │ ├── customer_receipt.html.erb
│ │ ├── customer_status_updated.html.erb
│ │ ├── fulfillment_new_invoice.html.erb
│ │ ├── shipping_invoice_ready.html.erb
│ │ └── test_email.html.erb
│ ├── line_items
│ │ └── admin_new.html.erb
│ ├── login
│ │ ├── forgot_password_form.html.erb
│ │ ├── index.html.erb
│ │ └── reset_password_form.html.erb
│ ├── login_logs
│ │ ├── admin_index.html.erb
│ │ └── admin_index_for_user.html.erb
│ ├── login_mailer
│ │ ├── forgot_password_email.html.erb
│ │ └── locked_account.html.erb
│ ├── media
│ │ ├── admin_edit.html.erb
│ │ ├── admin_edit_description.html.erb
│ │ └── admin_index.html.erb
│ ├── modal
│ │ └── index.html.erb
│ ├── modification_value_input_fields
│ │ └── admin_edit.html.erb
│ ├── my_account
│ │ ├── index.html.erb
│ │ └── index_old.html.erb
│ ├── my_account_invoices
│ │ ├── authnet_relay.html.erb
│ │ ├── authnet_response.html.erb
│ │ ├── edit.html.erb
│ │ ├── index.html.erb
│ │ └── payment_form.html.erb
│ ├── page_custom_fields
│ │ ├── admin_edit.html.erb
│ │ └── admin_index.html.erb
│ ├── page_templates
│ │ ├── admin_edit.html.erb
│ │ ├── admin_index.html.erb
│ │ └── admin_new.html.erb
│ ├── pages
│ │ ├── _admin_footer.html.erb
│ │ ├── _admin_header.html.erb
│ │ ├── _content.html.erb
│ │ ├── _new_block_header.html.erb
│ │ ├── admin_delete_form.html.erb
│ │ ├── admin_duplicate_form.html.erb
│ │ ├── admin_edit_child_sort_order.html.erb
│ │ ├── admin_edit_content.html.erb
│ │ ├── admin_edit_css.html.erb
│ │ ├── admin_edit_custom_fields.html.erb
│ │ ├── admin_edit_general.html.erb
│ │ ├── admin_edit_js.html.erb
│ │ ├── admin_edit_layout.html.erb
│ │ ├── admin_edit_permissions.html.erb
│ │ ├── admin_edit_seo.html.erb
│ │ ├── admin_index.html.erb
│ │ ├── admin_new.html.erb
│ │ ├── admin_new_old.html.erb
│ │ ├── admin_sitemap.html.erb
│ │ ├── preview.html.erb
│ │ ├── show.html.erb
│ │ ├── test.html.erb
│ │ ├── update_pic.html.erb
│ │ └── update_resume.html.erb
│ ├── permissions
│ │ ├── edit.html.erb
│ │ ├── index.html.erb
│ │ └── new.html.erb
│ ├── post_categories
│ │ ├── admin_edit.html.erb
│ │ ├── admin_index.html.erb
│ │ └── admin_new.html.erb
│ ├── post_custom_fields
│ │ ├── admin_edit.html.erb
│ │ └── admin_index.html.erb
│ ├── posts
│ │ ├── _admin_footer.html.erb
│ │ ├── _admin_header.html.erb
│ │ ├── admin_delete_form.html.erb
│ │ ├── admin_edit_categories.html.erb
│ │ ├── admin_edit_content.html.erb
│ │ ├── admin_edit_content_old.html.erb
│ │ ├── admin_edit_general.html.erb
│ │ ├── admin_edit_layout.html.erb
│ │ ├── admin_edit_preview.html.erb
│ │ ├── admin_index.html.erb
│ │ ├── admin_new.html.erb
│ │ ├── admin_preview_post.html.erb
│ │ ├── detail.html.erb
│ │ ├── index.html.erb
│ │ └── show.html.erb
│ ├── products
│ │ ├── _admin_footer.html.erb
│ │ ├── _admin_header.html.erb
│ │ ├── _sort_options.html.erb
│ │ ├── admin_add_upcs.html.erb
│ │ ├── admin_alternate_ids.html.erb
│ │ ├── admin_delete_form.html.erb
│ │ ├── admin_edit_categories.html.erb
│ │ ├── admin_edit_category_images.html.erb
│ │ ├── admin_edit_description.html.erb
│ │ ├── admin_edit_general.html.erb
│ │ ├── admin_edit_images.html.erb
│ │ ├── admin_edit_options.html.erb
│ │ ├── admin_edit_seo.html.erb
│ │ ├── admin_group_variants.html.erb
│ │ ├── admin_index.html.erb
│ │ ├── admin_new.html.erb
│ │ ├── admin_sort.html copy.erb
│ │ ├── admin_sort.html.erb
│ │ ├── details.html.erb
│ │ ├── index.html.erb
│ │ ├── not_available.html.erb
│ │ └── sales.html.erb
│ ├── redirects
│ │ ├── admin_edit.html.erb
│ │ ├── admin_index.html.erb
│ │ └── admin_new.html.erb
│ ├── register
│ │ └── index.html.erb
│ ├── retargeting
│ │ └── admin_edit.html.erb
│ ├── roles
│ │ ├── edit.html.erb
│ │ ├── index.html.erb
│ │ └── new.html.erb
│ ├── settings
│ │ ├── edit.html.erb
│ │ ├── index.html.erb
│ │ └── new.html.erb
│ ├── shipping_packages
│ │ ├── admin_edit.html.erb
│ │ └── admin_index.html.erb
│ ├── sites
│ │ ├── _admin_footer.html.erb
│ │ ├── _admin_header.html.erb
│ │ ├── admin_delete_form.html.erb
│ │ ├── admin_edit.html.erb
│ │ ├── admin_edit_block_types.html.erb
│ │ ├── admin_edit_code.html.erb
│ │ ├── admin_edit_codes.html.erb
│ │ ├── admin_edit_contact.html.erb
│ │ ├── admin_edit_css.html.erb
│ │ ├── admin_edit_js.html.erb
│ │ ├── admin_index.html.erb
│ │ ├── admin_new.html.erb
│ │ ├── robots.text.erb
│ │ └── sitemap.xml.erb
│ ├── smtp
│ │ └── admin_edit.html.erb
│ ├── social
│ │ ├── admin_edit.html.erb
│ │ └── analytics.html.erb
│ ├── stackable_groups
│ │ └── admin_index.html.erb
│ ├── station
│ │ └── index.html.erb
│ ├── store
│ │ ├── _admin_footer.html.erb
│ │ ├── _admin_header.html.erb
│ │ ├── admin_edit_defaults.html.erb
│ │ ├── admin_edit_general.html.erb
│ │ ├── admin_edit_packages.html.erb
│ │ ├── admin_edit_payment.html.erb
│ │ ├── admin_edit_shipping.html.erb
│ │ └── admin_edit_tax.html.erb
│ ├── subscriptions
│ │ ├── admin_edit.html.erb
│ │ ├── admin_index.html.erb
│ │ └── admin_user_index.html.erb
│ ├── theme_files
│ │ ├── admin_edit.html.erb
│ │ └── admin_index.html.erb
│ ├── themes
│ │ ├── admin_edit.html.erb
│ │ └── admin_sass.html.erb
│ ├── users
│ │ ├── _admin_footer.html.erb
│ │ ├── _admin_header.html.erb
│ │ ├── admin_delete_form.html.erb
│ │ ├── admin_edit.html.erb
│ │ ├── admin_edit_password.html.erb
│ │ ├── admin_edit_payment_method.html.erb
│ │ ├── admin_edit_roles.html.erb
│ │ ├── admin_import_form.html.erb
│ │ ├── admin_index.html.erb
│ │ ├── admin_new.html.erb
│ │ └── admin_update_pic.html.erb
│ ├── variant_limits
│ │ ├── admin_edit.html.erb
│ │ └── admin_user_index.html.erb
│ ├── variants
│ │ ├── admin_edit.html.erb
│ │ ├── admin_edit_option1_media.html.erb
│ │ ├── admin_edit_option2_media.html.erb
│ │ ├── admin_edit_option3_media.html.erb
│ │ ├── admin_edit_sort_order.html.erb
│ │ ├── admin_group.html.erb
│ │ ├── admin_index.html.erb
│ │ └── admin_new.html.erb
│ └── vendors
│ │ ├── admin_edit.html.erb
│ │ ├── admin_index.html.erb
│ │ └── admin_new.html.erb
│ └── layouts
│ └── caboose
│ ├── _content.html.erb
│ ├── _station.html.erb
│ ├── _station_link.html.erb
│ ├── _top_nav.html.erb
│ ├── admin.html.erb
│ ├── admin_empty.html.erb
│ ├── application.html.erb
│ ├── empty.html.erb
│ ├── error404.html.erb
│ ├── modal.html.erb
│ ├── no_layout.html.erb
│ └── store
│ ├── _banner.html.erb
│ ├── _banner2.html.erb
│ ├── _footer.html.erb
│ ├── _header.html.erb
│ ├── _sidebar.html.erb
│ ├── application.html.erb
│ ├── authorize_net.erb
│ ├── layout_about.html.erb
│ ├── layout_blog.html.erb
│ ├── layout_confirm.html.erb
│ ├── layout_contact.html.erb
│ ├── layout_default.html.erb
│ ├── layout_detail.html.erb
│ ├── layout_order.html.erb
│ ├── layout_pricing.html.erb
│ ├── layout_product.html.erb
│ ├── layout_profile.html.erb
│ ├── layout_single.html.erb
│ ├── layout_testimonial.html.erb
│ └── layout_testing.html.erb
├── bin
└── caboose
├── caboose-cms.gemspec
├── changelog.txt
├── config
├── routes.rb
├── routes_old.rb
└── tinymce.yml
├── db
└── migrate
│ └── 000_add_linked_resources_to_page.rb
├── eval_test.rb
├── lib
├── caboose.rb
├── caboose
│ ├── caboose_helper.rb
│ ├── engine.rb
│ └── version.rb
└── tasks
│ ├── caboose.rake
│ └── caboose_sync.rake
├── psd
├── magnifying_glass.psd
└── search.png
├── script
└── rails
├── spec
├── factories
│ ├── caboose_blocks.rb
│ └── caboose_users.rb
└── models
│ ├── block_spec.rb
│ └── user_spec.rb
└── test
├── caboose_test.rb
├── dummy
├── README.rdoc
├── Rakefile
├── app
│ ├── assets
│ │ ├── javascripts
│ │ │ └── application.js
│ │ └── stylesheets
│ │ │ └── application.css
│ ├── controllers
│ │ └── application_controller.rb
│ ├── helpers
│ │ └── application_helper.rb
│ ├── mailers
│ │ └── .gitkeep
│ ├── models
│ │ └── .gitkeep
│ └── views
│ │ └── layouts
│ │ └── application.html.erb
├── config.ru
├── config
│ ├── application.rb
│ ├── boot.rb
│ ├── database.yml
│ ├── environment.rb
│ ├── environments
│ │ ├── development.rb
│ │ ├── production.rb
│ │ └── test.rb
│ ├── initializers
│ │ ├── backtrace_silencers.rb
│ │ ├── inflections.rb
│ │ ├── mime_types.rb
│ │ ├── secret_token.rb
│ │ ├── session_store.rb
│ │ └── wrap_parameters.rb
│ ├── locales
│ │ └── en.yml
│ └── routes.rb
├── db
│ └── test.sqlite3
├── lib
│ └── assets
│ │ └── .gitkeep
├── log
│ ├── .gitkeep
│ └── test.log
├── public
│ ├── 404.html
│ ├── 422.html
│ ├── 500.html
│ └── favicon.ico
└── script
│ └── rails
├── integration
└── navigation_test.rb
└── test_helper.rb
/.gitignore:
--------------------------------------------------------------------------------
1 | *.rbc
2 | *.sassc
3 | .sass-cache
4 | capybara-*.html
5 | .rspec
6 | /.bundle
7 | /vendor/bundle
8 | /log/*
9 | /tmp/*
10 | /db/*.sqlite3
11 | /public/system/*
12 | /coverage/
13 | /spec/tmp/*
14 | /chester
15 | **.orig
16 | rerun.txt
17 | pickle-email-*.html
18 | *.gem
19 | .DS_Store
20 |
--------------------------------------------------------------------------------
/.gpig:
--------------------------------------------------------------------------------
1 |
2 | version_file: lib/caboose/version.rb
3 | repo_url: https://github.com/williambarry007/caboose-cms.git
4 |
5 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | # Caboose CMS
2 |
3 | source "http://rubygems.org"
4 |
5 | # Declare your gem's dependencies in caboose.gemspec.
6 | # Bundler will treat runtime dependencies like base dependencies, and
7 | # development dependencies will be added by default to the :development group.
8 | gemspec
9 |
--------------------------------------------------------------------------------
/MIT-LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2013 William Barry
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/Rakefile:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env rake
2 | begin
3 | require 'bundler/setup'; Bundler.setup(:default, :development)
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("../spec/dummy/Rakefile", __FILE__)
9 | load 'rails/tasks/engine.rake'
10 |
11 | Bundler::GemHelper.install_tasks
12 |
13 | Dir[File.join(File.dirname(__FILE__), 'tasks/**/*.rake')].each {|f| load f }
14 |
15 | require 'rspec/core'
16 | require 'rspec/core/rake_task'
17 |
18 | desc "Run all specs in spec directory (excluding plugin specs)"
19 | RSpec::Core::RakeTask.new(:spec => 'app:db:test:prepare')
20 |
21 | #task :default => :test
22 | task :default => :spec
23 | task :test => :spec
--------------------------------------------------------------------------------
/app/assets/fonts/caboose/caboose-admin-menu.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/fonts/caboose/caboose-admin-menu.eot
--------------------------------------------------------------------------------
/app/assets/fonts/caboose/caboose-admin-menu.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/fonts/caboose/caboose-admin-menu.ttf
--------------------------------------------------------------------------------
/app/assets/fonts/caboose/caboose-admin-menu.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/fonts/caboose/caboose-admin-menu.woff
--------------------------------------------------------------------------------
/app/assets/fonts/icomoon.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/fonts/icomoon.eot
--------------------------------------------------------------------------------
/app/assets/fonts/icomoon.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/fonts/icomoon.ttf
--------------------------------------------------------------------------------
/app/assets/fonts/icomoon.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/fonts/icomoon.woff
--------------------------------------------------------------------------------
/app/assets/images/caboose/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/.gitkeep
--------------------------------------------------------------------------------
/app/assets/images/caboose/caboose_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/caboose_logo.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/caboose_logo_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/caboose_logo_small.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/caboose_nav.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/caboose_nav.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/caboose_nav_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/caboose_nav_black.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/credit_cards.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/credit_cards.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/default_user_pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/default_user_pic.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/doc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/doc.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/docx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/docx.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/gif.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/gif.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/jpeg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/jpeg.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/jpg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/jpg.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/mp3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/mp3.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/mp4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/mp4.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/pdf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/pdf.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/png.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/png.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/pps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/pps.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/ppt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/ppt.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/pptx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/pptx.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/psd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/psd.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/rtf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/rtf.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/tiff.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/tiff.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/xls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/xls.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/xlsx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/xlsx.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/file_types/zip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/file_types/zip.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/grid.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/icons/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/icons/copy.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/icons/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/icons/delete.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/icons/down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/icons/down.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/icons/left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/icons/left.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/icons/right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/icons/right.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/icons/up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/icons/up.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/loading2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/loading2.gif
--------------------------------------------------------------------------------
/app/assets/images/caboose/loading_black_on_white.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/loading_black_on_white.gif
--------------------------------------------------------------------------------
/app/assets/images/caboose/loading_black_on_yellow.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/loading_black_on_yellow.gif
--------------------------------------------------------------------------------
/app/assets/images/caboose/loading_green.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/loading_green.gif
--------------------------------------------------------------------------------
/app/assets/images/caboose/loading_small_black_on_white.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/loading_small_black_on_white.gif
--------------------------------------------------------------------------------
/app/assets/images/caboose/loading_small_white_on_black.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/loading_small_white_on_black.gif
--------------------------------------------------------------------------------
/app/assets/images/caboose/loading_white_on_black.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/loading_white_on_black.gif
--------------------------------------------------------------------------------
/app/assets/images/caboose/lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/lock.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/login_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/login_image.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/modal_overlay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/modal_overlay.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/password_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/password_image.png
--------------------------------------------------------------------------------
/app/assets/images/caboose/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/images/caboose/search.png
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/admin.js:
--------------------------------------------------------------------------------
1 | // This is a manifest file that'll be compiled into application.js, which will include all the files
2 | // listed below.
3 | //
4 | // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5 | // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6 | //
7 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8 | // the compiled file.
9 | //
10 | // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11 | // GO AFTER THE REQUIRES BELOW.
12 | //
13 | //= require jquery
14 | //= require jquery_ujs
15 | //= require jquery-ui
16 | //= require colorbox-rails
17 | //= require caboose/jquery.datetimepicker
18 | //= require caboose/jquery.placeholder
19 | //= require caboose/modal_integration
20 | //= require caboose/admin_main
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/admin/application.js:
--------------------------------------------------------------------------------
1 | // This is a manifest file that'll be compiled into application.js, which will include all the files
2 | // listed below.
3 | //
4 | // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5 | // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6 | //
7 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8 | // the compiled file.
9 | //
10 | // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11 | // GO AFTER THE REQUIRES BELOW.
12 | //
13 | //= require jquery
14 | //= require jquery_ujs
15 | //= require jquery-ui
16 | //= require colorbox-rails
17 | //= require caboose/jquery.datetimepicker
18 | //= require caboose/jquery.placeholder
19 | //= require caboose/modal_integration
20 | //= require caboose/admin_main
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/admin_main.js:
--------------------------------------------------------------------------------
1 |
2 | function curr(x)
3 | {
4 | if (!x) return '0.00'
5 | var t = typeof x;
6 | if (t == 'boolean') return '0.00';
7 | if (t == 'number') return x.toFixed(2);
8 | if (t == 'string') return parseFloat(x).toFixed(2);
9 | console.log("curr doesn't know what this is:");
10 | console.log(x);
11 | console.log(t);
12 | return 'STAHP'
13 | }
14 |
15 | function add_to_crumbtrail(href, text)
16 | {
17 | var c = $('#crumbtrail');
18 | c.append($(' ').attr('href', href).html(text));
19 | }
20 |
21 | $(window).load(function() {
22 | $("#top_nav ul.quick > li").mouseenter(function() {
23 | $(this).find("ul").show();
24 | $(this).children('a, span').addClass('hovered');
25 | });
26 | $("#top_nav ul.quick > li").mouseleave(function() {
27 | $(this).find("ul").hide();
28 | $(this).children('a, span').removeClass('hovered');
29 | });
30 | });
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/admin_page_new_blocks.js:
--------------------------------------------------------------------------------
1 |
2 | var PageContentEditor = function(page_id, auth_token) {
3 | this.page_id = page_id;
4 | this.auth_token = auth_token;
5 | this.add_controls();
6 | this.render_blocks();
7 | };
8 |
9 | PageContentEditor.prototype = {
10 |
11 | page_id: false,
12 | current_block_id: false,
13 | block_types: { h1: 'Heading 1', h2: 'Heading 2', h3: 'Heading 3', h4: 'Heading 4', h5: 'Heading 5', h6: 'Heading 6', richtext: 'Rich Text'},
14 |
15 | add_controls: function(id)
16 | {
17 | var that = this;
18 | //$('#block_controls').empty();
19 | //$('#block_controls')
20 | // .append($('
').attr('id', 'edit_blocks_header').html('Edit Blocks'))
21 | // .append($('
').addClass('content').append($('
').html('Select a block to edit.')));
22 | $('#blocks').selectable({
23 | filter: "li",
24 | cancel: ".handle",
25 | selected: function(e, ui) {
26 | var block_id = ui.selected.id.replace("block_container_", "");
27 | that.edit_block(block_id);
28 | }
29 | });
30 | },
31 | };
32 |
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/application.js:
--------------------------------------------------------------------------------
1 | // /app/assets/caboose/application.js
2 | // Caboose Javascript
3 | //
4 | //= require jquery
5 | //= require jquery_ujs
6 | //= require colorbox-rails
7 | //= require underscore
8 | //= require caboose/jquery.detect
9 | //= require caboose/jquery.placeholder
10 | //= require caboose/modal_integration
11 | //= require caboose/main
12 | //= require_tree ../../templates
13 |
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/checkout/.checkout_stripe.js.marks:
--------------------------------------------------------------------------------
1 | !d;1609;1609
2 |
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/checkout_confirm_without_payment.js:
--------------------------------------------------------------------------------
1 |
2 | Caboose.Store.Modules.CheckoutPayment = (function() {
3 |
4 | self = {
5 | is_confirm: false
6 | };
7 |
8 | self.initialize = function() {
9 | $('#checkout-continue button').click(self.continue_handler);
10 | };
11 |
12 | self.continue_handler = function(event) {
13 | $('#message').html("Processing...
");
14 | $.ajax({
15 | url: '/checkout/confirm',
16 | type: 'post',
17 | success: function(resp)
18 | {
19 | if (resp.success == true)
20 | {
21 | if (resp.redirect)
22 | window.location = resp.redirect;
23 | else
24 | window.location = '/checkout/thanks';
25 | }
26 | else if (resp.error)
27 | $('#message').html("" + resp.error + "
");
28 | else
29 | $('#message').html("There was an error processing your payment.
");
30 | }
31 | });
32 | };
33 |
34 | return self
35 | }).call(Caboose.Store);
36 |
37 |
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/google_spreadsheets.js:
--------------------------------------------------------------------------------
1 |
2 | var google_spreadsheets = false;
3 |
4 | function google_csv_data(spreadsheet_id, col, row)
5 | {
6 | var csv_array = false;
7 | if (!google_spreadsheets) google_spreadsheets = {};
8 | if (!google_spreadsheets[spreadsheet_id])
9 | {
10 | $.ajax({
11 | url: "/google-spreadsheets/" + spreadsheet_id + "/csv",
12 | type: 'get',
13 | success: function(arr){ google_spreadsheets[spreadsheet_id] = arr; },
14 | async: false
15 | });
16 | }
17 | var arr = google_spreadsheets[spreadsheet_id];
18 | var c = column_name_to_int(col);
19 | return arr[parseInt(row)-1][c];
20 | }
21 |
22 | function column_name_to_int(col)
23 | {
24 | var c = 0;
25 | if (col.length > 0)
26 | {
27 | var l = col.length;
28 | for (var i=l-1; i >=0; i--)
29 | c += Math.pow(25, l-i-1) * (col.charCodeAt(i) - 65);
30 | }
31 | return c;
32 | }
33 |
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/jquery.placeholder.js:
--------------------------------------------------------------------------------
1 | // Placeholder IE Fix
2 |
3 | $(document).ready(function() {
4 | $('[placeholder]').focus(function() {
5 | var input = $(this);
6 | if (input.val() == input.attr('placeholder')) {
7 | input.val('');
8 | input.removeClass('placeholder_js');
9 | }
10 | }).blur(function() {
11 | var input = $(this);
12 | if (input.val() == '' || input.val() == input.attr('placeholder')) {
13 | input.addClass('placeholder_js');
14 | input.val(input.attr('placeholder'));
15 | }
16 | }).blur().parents('form').submit(function() {
17 | $(this).find('[placeholder]').each(function() {
18 | var input = $(this);
19 | if (input.val() == input.attr('placeholder')) {
20 | input.val('');
21 | }
22 | })
23 | });
24 | });
25 |
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/modal.js:
--------------------------------------------------------------------------------
1 | // This is a manifest file that'll be compiled into application.js, which will include all the files
2 | // listed below.
3 | //
4 | // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5 | // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6 | //
7 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8 | // the compiled file.
9 | //
10 | // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11 | // GO AFTER THE REQUIRES BELOW.
12 | //
13 | //= require_tree ../../templates
14 | //= require jquery
15 | //= require jquery_ujs
16 | //= require jquery-ui
17 | //= require colorbox-rails
18 | //= require caboose/jquery.datetimepicker
19 | //= require caboose/jquery.placeholder
20 | //= require caboose/jquery.detect
21 | //= require caboose/modal_integration
22 | //= require caboose/admin_main
23 |
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/model.form.page.js:
--------------------------------------------------------------------------------
1 |
2 | Model.Form.Page = Model.Form.extend({
3 |
4 | class_name: 'Model.Form.Page',
5 |
6 | // Returns the form for editing a model or false for an embedded form.
7 | edit: function()
8 | {
9 | var m = this.model;
10 |
11 | var this2 = this;
12 | var div = $('
');
13 | $(m.attributes).each(function(i, a) {
14 | if (a.type == 'hidden')
15 | return;
16 | div.append(
17 | $('
').attr('id', m.name + '_' + m.id + '_' + a.name + '_container')
18 | );
19 | });
20 |
21 | div.append($('
').attr('id', this.message))
22 | .append($('
')
23 | .append($(' ').attr('type', 'button').val('Back').click(function() { caboose_station.close_url('/pages/'+m.id+'/redirect'); }))
24 | .append(' ')
25 | .append($(' ').attr('type', 'button').val('Delete ' + m.name).click(function() { m.ajax_delete(); }))
26 | );
27 | return div;
28 | }
29 |
30 | });
31 |
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/model/all.js:
--------------------------------------------------------------------------------
1 | //= require caboose/spectrum
2 | //= require caboose/model/class
3 | //= require caboose/model/model
4 | //= require caboose/model/s3
5 | //= require caboose/model/attribute
6 | //= require caboose/model/index_table
7 | //= require caboose/model/model_binder
8 | //= require caboose/model/bound_control
9 | //= require caboose/model/bound_color
10 | //= require caboose/model/bound_checkbox
11 | //= require caboose/model/bound_checkbox_multiple
12 | //= require caboose/model/bound_date
13 | //= require caboose/model/bound_time
14 | //= require caboose/model/bound_date_time
15 | //= require caboose/model/bound_image
16 | //= require caboose/model/bound_s3_image
17 | //= require caboose/model/bound_file
18 | //= require caboose/model/bound_select
19 | //= require caboose/model/bound_text
20 | //= require caboose/model/bound_textarea
21 | //= require caboose/model/bound_richtext
22 |
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/model/pager.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/javascripts/caboose/model/pager.js
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/model/s3.js:
--------------------------------------------------------------------------------
1 |
2 | var S3 = function(params) {
3 | for (var thing in params)
4 | this[thing] = params[thing];
5 | };
6 |
7 | S3.prototype = {
8 | bucket: '',
9 | access_key_id: '',
10 | acl: 'public-read',
11 | policy: '',
12 | signature: '',
13 | key: ''
14 | };
15 |
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/shortcut.js:
--------------------------------------------------------------------------------
1 |
2 | lastkeys = "";
3 | $(document).keyup(function(e) {
4 | if (e.keyCode == 13 && lastkeys == "caboose") // Enter
5 | {
6 |
7 | }
8 | if (lastkeys.length > 7)
9 | lastkeys = "";
10 | lastkeys += String.fromCharCode(e.keyCode);
11 | });
12 |
--------------------------------------------------------------------------------
/app/assets/javascripts/caboose/tinymce_init.js:
--------------------------------------------------------------------------------
1 |
2 | tinymce.init({
3 | selector: 'textarea.tinymce',
4 | width: '800px',
5 | height: '300px',
6 | convert_urls: false,
7 | plugins: 'advlist autolink lists link image charmap print preview hr anchor pagebreak searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking table contextmenu directionality emoticons template paste textcolor caboose',
8 | toolbar1: 'caboose_save caboose_cancel | bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image',
9 | image_advtab: true,
10 | external_plugins: { 'caboose': '//d9hjv462jiw15.cloudfront.net/assets/tinymce/plugins/caboose/plugin.js' },
11 | setup: function(editor) {
12 | var control = ModelBinder.tinymce_control(editor.id);
13 | editor.on('keyup', function(e) { control.tinymce_change(editor); });
14 | }
15 | });
16 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin.css:
--------------------------------------------------------------------------------
1 | /*
2 | * This is a manifest file that'll be compiled into application.css, which will include all the files
3 | * listed below.
4 | *
5 | * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6 | * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7 | *
8 | * You're free to add application-wide styles to this file and they'll appear at the top of the
9 | * compiled file, but it's generally better to create a new file per style scope.
10 | *
11 | *= require colorbox-rails
12 | *= require jquery-ui
13 | *= require caboose/jquery.datetimepicker
14 | *= require caboose/fonts
15 | *= require caboose/caboose
16 | *= require caboose/message_boxes
17 | *= require caboose/model_binder
18 | *= require caboose/admin_main
19 | *= require caboose/admin_crumbtrail
20 | */
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/application.css:
--------------------------------------------------------------------------------
1 | /*
2 | * /app/assets/stylsheets/caboose/admin/application.css
3 | *
4 | *= require_self
5 | *= require colorbox-rails
6 | *= require jquery-ui
7 | *= require caboose/jquery.datetimepicker
8 | *= require caboose/admin/jquery-ui-subnav-theme.min
9 | *= require caboose/admin/main
10 | *= require caboose/admin/component
11 | */
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/integrations/main.scss:
--------------------------------------------------------------------------------
1 | .integration-selector {
2 | select {
3 | width: 100%;
4 | font-size: 12pt;
5 | }
6 | }
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/modules/countdown.css:
--------------------------------------------------------------------------------
1 | .countdown {
2 | text-align: center;
3 | }
4 | .countdown ul {
5 | width: 100%;
6 | height: 100%;
7 | }
8 | .countdown ul li {
9 | display: inline-block;
10 | font-weight: bold;
11 | position: relative;
12 | margin: 0;
13 | height: 100%;
14 | overflow: hidden;
15 | }
16 |
17 | .countdown ul li.date_part span {
18 | display: block;
19 | justify-content: center;
20 | align-content: center;
21 | }
22 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/modules/functions.scss:
--------------------------------------------------------------------------------
1 | @import "caboose/admin/config";
2 |
3 | .conceal {
4 | @include big {
5 | display: none !important;
6 | }
7 | @include small {
8 | display: inherit;
9 | }
10 | }
11 |
12 | .reveal {
13 | @include big {
14 | display: inherit;
15 | }
16 | @include small {
17 | display: none !important;
18 | }
19 | }
20 |
21 | .reveal-m {
22 | @include big {
23 | display: inherit;
24 | }
25 | @include small {
26 | display: none !important;
27 | }
28 | @include medium {
29 | display: none !important;
30 | }
31 | }
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/modules/headings.scss:
--------------------------------------------------------------------------------
1 | @import "caboose/admin/config";
2 |
3 | h1,h2,h3,h4,h5,h6 {
4 | font: $heading-font;
5 | line-height: 1em;
6 | margin-bottom: $font-size * 0.8;
7 | &.heading-block {
8 | color: $color-main;
9 | clear: both;
10 | }
11 | }
12 | h1 {
13 | font-size: 2em;
14 | }
15 | h2 {
16 | font-size: 1.8em;
17 | }
18 | h3 {
19 | font-size: 1.6em;
20 | }
21 | h4 {
22 | font-size: 1.4em;
23 | }
24 | h5 {
25 | font-size: 1.2em;
26 | }
27 | h6 {
28 | font-size: 1em;
29 | }
30 | em, i {
31 | font-style: italic;
32 | }
33 | b, strong {
34 | font-weight: bold;
35 | }
36 | span.bold {
37 | font-weight: bold;
38 | }
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/modules/pager.scss:
--------------------------------------------------------------------------------
1 |
2 | .page_links {
3 |
4 | }
5 |
6 | .page_links a {
7 | display: inline-block;
8 | margin: 0 2px;
9 | padding: 5px 8px 3px 8px;
10 |
11 | border: #333 1px solid;
12 | background: #333;
13 | color: #fff;
14 | text-decoration: none;
15 | }
16 |
17 | .page_links a:hover {
18 | background: #505050;
19 | color: #fff;
20 | }
21 |
22 | .page_links .middle_links a {
23 |
24 | }
25 |
26 | .page_links span.current_page {
27 | display: inline-block;
28 | padding: 5px 8px 3px 8px;
29 |
30 | border: #333 1px solid;
31 | background: #ccc;
32 | color: #000;
33 | text-decoration: none;
34 | }
35 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/modules/product_images.scss:
--------------------------------------------------------------------------------
1 |
2 | .product_images {
3 | .large_image img { width: 400px; }
4 | .thumbnails img { width: 100px; }
5 | .spacer { line-height: 0; clear: left; }
6 | }
7 |
8 | .product_images_edit_thumbs {
9 | div {
10 | width: 72px;
11 | height: 72px;
12 | background-size: contain;
13 | background-repeat: no-repeat;
14 | background-position: center center;
15 | margin: 0 4px 4px 0;
16 | float: left;
17 | }
18 | .selected {
19 | border: #ff0000 2px solid;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/modules/search.scss:
--------------------------------------------------------------------------------
1 | @import "caboose/admin/config";
2 |
3 | .search-results-container {
4 | max-width: $max-width;
5 | margin: 0 auto;
6 | padding: 20px 2%;
7 | .intro {
8 | font-size: 1.1em;
9 | margin-bottom: 20px;
10 | }
11 | .results {
12 | list-style-type: none;
13 | li {
14 | display: block;
15 | padding: 10px 2%;
16 | color: $color-dark;
17 | &:nth-of-type(odd) {
18 | background: rgb(240, 240, 240);
19 | }
20 | a, .event-title {
21 | color: $color-main;
22 | }
23 | .post-meta {
24 | font-size: 0.95em;
25 | margin-top: 2px;
26 | padding-left: 18px;
27 | color: #5A5A5A;
28 | .author {
29 | font-style: italic;
30 | font-size: 14px;
31 | }
32 | }
33 | .result-text {
34 | margin-top: 4px;
35 | font-size: 0.9em;
36 | }
37 | .date {
38 | margin-top: 3px;
39 | font-size: 0.85em;
40 | color: rgb(121, 121, 121);
41 | }
42 | .highlight {
43 | background: rgb(249, 249, 176);
44 | display: inline-block;
45 | padding: 1px;
46 | }
47 | }
48 | }
49 | }
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/modules/selects.scss:
--------------------------------------------------------------------------------
1 | @import "caboose/admin/config";
2 |
3 | .admin_container select {
4 | background: #fff none repeat scroll 0 0;
5 | border-color: #2475a5;
6 | border-radius: 2px;
7 | border-style: solid;
8 | border-width: 1px;
9 | color: #505050;
10 | font: 1em "body-font",sans-serif;
11 | padding: 9px 0px;
12 | }
13 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/modules/subnav_tabs.scss:
--------------------------------------------------------------------------------
1 |
2 | #admin_subnav_content {
3 | #tabs {
4 | list-style: none;
5 | margin: 0;
6 | padding: 0;
7 |
8 | li {
9 | list-style: none;
10 | margin: 0;
11 | padding: 0;
12 |
13 | a {
14 | display: block;
15 | text-decoration: none;
16 | color: #7b7d7f;
17 | margin: 0 -20px 0 -10px;
18 | padding: 8px 20px 8px 10px;
19 | }
20 |
21 | &.selected {
22 | background: #f9f9fb;
23 | a {
24 | background: #f9f9fb;
25 | color: #000;
26 | border-left: #dededf 1px solid;
27 | border-top: #dededf 1px solid;
28 | border-bottom: #dededf 1px solid;
29 | }
30 | }
31 | }
32 | }
33 | }
34 |
35 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/page_edit/main.scss:
--------------------------------------------------------------------------------
1 | /*
2 | * /app/assets/stylsheets/caboose/admin/page_edit/main.scss
3 | *
4 | *= require_self
5 | *= require caboose/admin/page_edit/block_overlays
6 | *= require caboose/admin/page_edit/block_anchors
7 | *= require caboose/admin/page_edit/device_selector
8 | *= require caboose/admin/page_edit/froala
9 | *= require caboose/admin/page_edit/group_overlay
10 | *= require caboose/admin/page_edit/layout
11 | *= require caboose/admin/page_edit/preview
12 | *= require caboose/admin/page_edit/publish
13 | *= require caboose/admin/page_edit/revisions
14 | *= require caboose/admin/page_edit/subnav
15 | *= require caboose/admin/page_edit/top_nav
16 | *= require caboose/admin/page_edit/modal
17 | */
18 | @import url('https://fonts.googleapis.com/css?family=Open+Sans');
19 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/page_edit/modal.scss:
--------------------------------------------------------------------------------
1 | #the_modal {
2 | text-align: left;
3 | p {
4 | margin-bottom: 10px;
5 | }
6 | .note {
7 | input {
8 | text-align: left;
9 | }
10 | }
11 | }
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/page_edit/preview.scss:
--------------------------------------------------------------------------------
1 | #preview_confirm {
2 | position: absolute;
3 | top: 48px;
4 | right: 10px;
5 | z-index: 1000;
6 | width: 300px;
7 | padding: 10px;
8 | border-radius: 6px 6px 6px 6px;
9 | border-color: #EDEEF0;
10 | border-width: 0 2px 2px 2px;
11 | border-style: solid;
12 | background: #3893e5;
13 | font-size: 14px;
14 | color: #fff;
15 | text-align: center;
16 | p { margin-bottom: 8px; }
17 |
18 | select, input[type=text] {
19 | margin: 0;
20 | padding: 4px 8px;
21 | border: #ccc 1px solid;
22 | font-size: 14px;
23 | width: 250px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/page_edit/publish.scss:
--------------------------------------------------------------------------------
1 | #publish_confirm {
2 | position: absolute;
3 | top: 48px;
4 | right: 10px;
5 | z-index: 1000;
6 | width: 300px;
7 | padding: 10px;
8 | border-radius: 6px 0 6px 6px;
9 | border-color: #EDEEF0;
10 | border-width: 0 2px 2px 2px;
11 | border-style: solid;
12 | background: #6cb049;
13 | font-size: 14px;
14 | color: #fff;
15 | text-align: center;
16 | p { margin-bottom: 8px; }
17 |
18 | select, input[type=text] {
19 | margin: 0;
20 | padding: 4px 8px;
21 | border: #ccc 1px solid;
22 | font-size: 14px;
23 | width: 250px;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/pages/.page_edit.scss.marks:
--------------------------------------------------------------------------------
1 | !t;2021;2021
2 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/pages/assets_index.css:
--------------------------------------------------------------------------------
1 |
2 | #manifest {
3 | position: absolute;
4 | top: 0;
5 | left: 0;
6 | width: 280px;
7 | height: 100px;
8 | overflow-y: scroll;
9 | }
10 |
11 | #manifest ul {
12 | list-style: none;
13 | margin: 0;
14 | padding: 0;
15 | }
16 |
17 | #manifest ul ul {
18 | padding-left: 4px;
19 | }
20 |
21 | #manifest li {
22 | list-style: none;
23 | margin: 0;
24 | padding: 0;
25 | }
26 |
27 | #manifest a {
28 | display: block;
29 | margin: 0;
30 | padding: 4px 8px;
31 | border: #999 1px solid;
32 | background: #ccc;
33 | }
34 |
35 | #editor {
36 | margin: 0;
37 | padding-top: 20px;
38 | padding-left: 280px;
39 | }
40 |
41 | #editor p {
42 | margin-top: 0;
43 | padding-top: 0;
44 | }
45 |
46 | #editor textarea {
47 | margin: 0;
48 | }
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/pages/new_block.css:
--------------------------------------------------------------------------------
1 |
2 | #modal_content div.icons { height: 400px; overflow-y: scroll; }
3 | #modal_content div.icons h2 { clear: both; padding: 20px 0px 10px 0; text-align: center; }
4 | #modal_content div.icons a { display: block; float: left; margin: 4px; border: #fff 0px solid; width: 120px; height: 100px; text-align: center; vertical-align: middle; border: #666 4px solid; }
5 | #modal_content div.icons a span.icon { display: block; padding: 10px 20px; font-size: 24pt; color: #fff; }
6 | #modal_content div.icons a span.name { display: block; }
7 | #modal_content div.icons a:hover { background: #fff69f; color: #000; border: #666 0px solid; border: #666 4px solid; }
8 | #modal_content div.icons a:hover span.icon { color: #000; }
9 | #modal_content div.icons a:hover span.name { color: #000; }
10 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin/print.css:
--------------------------------------------------------------------------------
1 | body {
2 |
3 | }
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin_assets_index.css:
--------------------------------------------------------------------------------
1 |
2 | #manifest {
3 | position: absolute;
4 | top: 0;
5 | left: 0;
6 | width: 280px;
7 | height: 100px;
8 | overflow-y: scroll;
9 | }
10 |
11 | #manifest ul {
12 | list-style: none;
13 | margin: 0;
14 | padding: 0;
15 | }
16 |
17 | #manifest ul ul {
18 | padding-left: 4px;
19 | }
20 |
21 | #manifest li {
22 | list-style: none;
23 | margin: 0;
24 | padding: 0;
25 | }
26 |
27 | #manifest a {
28 | display: block;
29 | margin: 0;
30 | padding: 4px 8px;
31 | border: #999 1px solid;
32 | background: #ccc;
33 | }
34 |
35 | #editor {
36 | margin: 0;
37 | padding-top: 20px;
38 | padding-left: 280px;
39 | }
40 |
41 | #editor p {
42 | margin-top: 0;
43 | padding-top: 0;
44 | }
45 |
46 | #editor textarea {
47 | margin: 0;
48 | }
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/admin_new_block.css:
--------------------------------------------------------------------------------
1 |
2 | #modal_content div.icons { height: 400px; overflow-y: scroll; }
3 | #modal_content div.icons h2 { clear: both; padding: 20px 0px 10px 0; text-align: center; }
4 | #modal_content div.icons a { display: block; float: left; margin: 4px; border: #fff 0px solid; width: 120px; height: 100px; text-align: center; vertical-align: middle; border: #666 4px solid; }
5 | #modal_content div.icons a span.icon { display: block; padding: 10px 20px; font-size: 24pt; color: #fff; }
6 | #modal_content div.icons a span.name { display: block; }
7 | #modal_content div.icons a:hover { background: #fff69f; color: #000; border: #666 0px solid; border: #666 4px solid; }
8 | #modal_content div.icons a:hover span.icon { color: #000; }
9 | #modal_content div.icons a:hover span.name { color: #000; }
10 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/application.css:
--------------------------------------------------------------------------------
1 | /*
2 | * This is a manifest file that'll be compiled into application.css, which will include all the files
3 | * listed below.
4 | *
5 | * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6 | * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7 | *
8 | * You're free to add application-wide styles to this file and they'll appear at the top of the
9 | * compiled file, but it's generally better to create a new file per style scope.
10 | *
11 | *= require colorbox-rails
12 | *= require caboose/page_bar_generator
13 | *= require caboose/model_binder
14 | */
15 |
16 | #cboxLoadedContent { margin-bottom: 0; }
17 |
18 | #cboxTopLeft,
19 | #cboxTopRight,
20 | #cboxBottomLeft,
21 | #cboxBottomRight,
22 | #cboxMiddleLeft,
23 | #cboxMiddleRight,
24 | #cboxTopCenter,
25 | #cboxBottomCenter,
26 | #cboxClose { background: #111; }
27 | #cboxWrapper { border-radius: 7px !important; }
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/bound_input.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/caboose.css:
--------------------------------------------------------------------------------
1 |
2 | body {
3 | font-family: 'Roboto', Tahoma, Arial;
4 | }
5 |
6 | input[type='text'].placeholder_js {
7 | color: #757575;
8 | }
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/fonts.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css?family=Roboto:400,400i,700,700i');
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/modal.css:
--------------------------------------------------------------------------------
1 | /*
2 | * /app/assets/stylesheets/caboose/modal.css
3 | *
4 | *= require jquery-ui
5 | *= require caboose/jquery.datetimepicker
6 | *= require colorbox-rails
7 | *= require caboose/fonts
8 | *= require caboose/caboose
9 | *= require caboose/model_binder
10 | *= require caboose/modal_main
11 | */
12 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/page_bar_generator.css:
--------------------------------------------------------------------------------
1 |
2 | .page_links {
3 |
4 | }
5 |
6 | .page_links a {
7 | display: inline-block;
8 | margin: 0 2px;
9 | padding: 5px 8px 3px 8px;
10 |
11 | border: #505050 1px solid;
12 | background: #e1e1e1;
13 | color: #505050;
14 | text-decoration: none;
15 | }
16 |
17 | .page_links a:hover {
18 | background: #505050;
19 | color: #fff;
20 | }
21 |
22 | .page_links .middle_links a {
23 |
24 | }
25 |
26 | .page_links span.current_page {
27 | display: inline-block;
28 | padding: 5px 8px 3px 8px;
29 |
30 | border: #941403 1px solid;
31 | background: #941403;
32 | color: #fff;
33 | text-decoration: none;
34 | }
35 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/print.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/stylesheets/caboose/print.css
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/product_images.css.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Product Images
3 | //
4 |
5 | #product-images {
6 | width: 40%;
7 | float: left;
8 | }
9 |
10 | #product-images figure {
11 | background-position: center center;
12 | background-repeat: no-repeat;
13 | background-size: cover;
14 | cursor: pointer;
15 | height: 100%;
16 | width: 100%;
17 | }
18 |
19 | #product-images > figure { height: 350px }
20 |
21 | #product-images ul {
22 | overflow: hidden;
23 | padding: 6px 0 24px;
24 | }
25 | #product-images ul li {
26 | float: left;
27 | height: 115px;
28 | margin: 0 6px 6px 0;
29 | width: 115px;
30 | }
31 |
32 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/product_options.css.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Product Options
3 | //
4 |
5 | #product-options { margin: 0 0 24px }
6 |
7 | #product-options h1,
8 | #product-options h2,
9 | #product-options h3,
10 | #product-options h4,
11 | #product-options h5,
12 | #product-options h6 { line-height: 60px }
13 |
14 | #product-options ul { overflow: hidden }
15 |
16 | #product-options ul li {
17 | background: #d0d0d0;
18 | cursor: pointer;
19 | display: block;
20 | float: left;
21 | font-family: 'Roboto';
22 | font-weight: 400;
23 | padding: 6px 12px;
24 | margin: 0 6px 6px 0;
25 | &.selected {
26 | background: #981919;
27 | color: #fff;
28 | }
29 | &.unavailable {
30 | background: lighten(#d0d0d0, 6%);
31 | color: darken(#d0d0d0, 12%);
32 | text-decoration: line-through;
33 | }
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/register.css:
--------------------------------------------------------------------------------
1 |
2 | #register_form .other_options {
3 | position: absolute;
4 | top: -4px;
5 | right: 0;
6 | }
7 |
8 | input#first_name,
9 | input#last_name,
10 | input#email,
11 | input#phone,
12 | input#pass1,
13 | input#pass2 {
14 | font-size: 18px;
15 | width: 95%;
16 | margin: 0 0 8px 0;
17 | padding: 7px;
18 | }
19 |
20 | input#btn_register {
21 | font-size: 18px;
22 | }
23 |
24 | input#btn_cancel {
25 | font-size: 18px;
26 | }
27 |
--------------------------------------------------------------------------------
/app/assets/stylesheets/caboose/tinymce.css:
--------------------------------------------------------------------------------
1 |
2 | body, td, pre {
3 | color: #000000;
4 | font-family: Verdana,Arial,Helvetica,sans-serif;
5 | font-size: inherit;
6 | }
7 | body {
8 | background: none repeat scroll 0 0 #FFFFFF;
9 | }
10 | body.mceForceColors {
11 | background: none repeat scroll 0 0 #FFFFFF;
12 | color: #000000;
13 | }
14 | body.mceBrowserDefaults {
15 | background: none repeat scroll 0 0 transparent;
16 | color: inherit;
17 | font-family: inherit;
18 | font-size: inherit;
19 | }
20 | h1 { font-size: inherit; }
21 | h2 { font-size: inherit; }
22 | h3 { font-size: inherit; }
23 | h4 { font-size: inherit; }
24 | h5 { font-size: inherit; }
25 | h6 { font-size: inherit; }
26 |
27 | body.dirty {
28 | background: #fff799;
29 | }
30 |
--------------------------------------------------------------------------------
/app/assets/templates/caboose/cart/add_to_cart.jst.ejs:
--------------------------------------------------------------------------------
1 |
6 |
7 |
--------------------------------------------------------------------------------
/app/assets/templates/caboose/checkout/forms/guest.jst.ejs:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/assets/templates/caboose/checkout/forms/register.jst.ejs:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
--------------------------------------------------------------------------------
/app/assets/templates/caboose/checkout/forms/signin.jst.ejs:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/app/assets/templates/caboose/checkout/login.jst.ejs:
--------------------------------------------------------------------------------
1 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/assets/templates/caboose/checkout/payment.jst.ejs:
--------------------------------------------------------------------------------
1 |
2 |
Complete my purchase
3 | <%= form %>
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/assets/templates/caboose/checkout/shipping.jst.ejs:
--------------------------------------------------------------------------------
1 | <% if (rates) { %>
2 |
3 |
4 |
Shipping Method
5 |
Please select how you would like your products to be delivered
6 |
7 |
8 | Choose a shipping method
9 |
10 | <% _.each(rates, function(rate) { %>
11 | selected<% } %>>
12 | <%= '$' + parseFloat(rate.total_price).toFixed(2) + ' - ' + rate.service_name %>
13 |
14 | <% }); %>
15 |
16 |
17 |
18 | <% } %>
19 |
--------------------------------------------------------------------------------
/app/assets/templates/caboose/messages/error.jst.ejs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/assets/templates/caboose/messages/error.jst.ejs
--------------------------------------------------------------------------------
/app/assets/templates/caboose/product/images.jst.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <% _.each(images, function(image) { %>
5 |
6 | <% }); %>
7 |
8 |
--------------------------------------------------------------------------------
/app/assets/templates/caboose/product/images_old.jst.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <% _.each(images, function(image) { %>
5 |
6 | <% }); %>
7 |
8 |
--------------------------------------------------------------------------------
/app/assets/templates/caboose/product/options.jst.ejs:
--------------------------------------------------------------------------------
1 | <% _.each(options, function(option, index) { %>
2 | <%= option.name %>
3 |
4 | <%
5 | for (var k in option.values) {
6 | var url = option.values[k]
7 | if (url) { %>
<% }
8 | else { %><%= k %> <% }
9 | }
10 | %>
11 |
12 | <% }); %>
13 |
14 |
--------------------------------------------------------------------------------
/app/controllers/caboose/admin_controller.rb:
--------------------------------------------------------------------------------
1 |
2 | module Caboose
3 | class AdminController < ApplicationController
4 |
5 | # @route GET /admin
6 | def index
7 | return if !user_is_allowed('admin', 'view')
8 | @return_url = params[:return_url].nil? ? '/admin/pages' : params[:return_url]
9 | end
10 |
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/app/controllers/caboose/event_custom_field_values_controller.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class EventCustomFieldValuesController < ApplicationController
3 |
4 | # @route PUT /admin/event-custom-field-values/:id
5 | def admin_update
6 | return if !user_is_allowed('eventcustomfieldvalues', 'edit')
7 |
8 | resp = Caboose::StdClass.new
9 | fv = EventCustomFieldValue.find(params[:id])
10 |
11 | save = true
12 | params.each do |k, v|
13 | case k
14 | when 'value' then fv.value = v
15 | end
16 | end
17 | resp.success = save && fv.save
18 | render :json => resp
19 | end
20 |
21 | end
22 | end
--------------------------------------------------------------------------------
/app/controllers/caboose/google_spreadsheets_controller.rb:
--------------------------------------------------------------------------------
1 | require 'httparty'
2 |
3 | module Caboose
4 | class GoogleSpreadsheetsController < Caboose::ApplicationController
5 |
6 | # @route GET /google-spreadsheets/:spreadsheet_id/csv
7 | def csv_data
8 | spreadsheet_id = params[:spreadsheet_id]
9 | #url = "https://docs.google.com/spreadsheets/d/#{spreadsheet_id}/export?format=csv&id=#{spreadsheet_id}&gid=0"
10 | url = "https://docs.google.com/spreadsheets/d/#{spreadsheet_id}/pub?output=csv&single=true&gid=0"
11 | resp = HTTParty.get(url)
12 | arr = nil
13 | begin
14 | arr = CSV.parse(resp.body)
15 | rescue
16 | Caboose.log("Error parsing CSV in spreadsheet #{spreadsheet_id}:\n\n#{resp.body}")
17 | end
18 | render :json => arr
19 | end
20 |
21 | end
22 | end
23 |
--------------------------------------------------------------------------------
/app/controllers/caboose/logout_controller.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class LogoutController < ApplicationController
3 |
4 | # @route GET /logout
5 | def index
6 | Caboose.plugin_hook('before_logout')
7 | logout_user
8 | elo = User.logged_out_user(@site.id)
9 | login_user(elo)
10 | redirect_to params[:return_url] ? params[:return_url] : "/"
11 | end
12 |
13 | end
14 | end
--------------------------------------------------------------------------------
/app/controllers/caboose/modal_controller.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class ModalController < Caboose::ApplicationController
3 | layout 'caboose/application'
4 |
5 | # @route GET /modal
6 | def layout
7 | render 'layouts/caboose/modal', layout: false
8 | end
9 |
10 | # @route GET /modal/:url
11 | # @route_constraints {:url => /.*/}
12 | def index
13 | @url = "/#{params[:url]}"
14 | @url << "?#{request.query_string}" if request.query_string
15 | end
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/app/controllers/caboose/page_custom_field_values_controller.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class PageCustomFieldValuesController < ApplicationController
3 |
4 | # @route PUT /admin/page-custom-field-values/:id
5 | def admin_update
6 | return if !user_is_allowed('pagecustomfieldvalues', 'edit')
7 |
8 | resp = Caboose::StdClass.new
9 | fv = PageCustomFieldValue.find(params[:id])
10 |
11 | save = true
12 | params.each do |k, v|
13 | case k
14 | when 'value' then fv.value = v
15 | end
16 | end
17 | resp.success = save && fv.save
18 | render :json => resp
19 | end
20 |
21 | end
22 | end
23 |
--------------------------------------------------------------------------------
/app/controllers/caboose/post_custom_field_values_controller.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class PostCustomFieldValuesController < ApplicationController
3 |
4 | # @route PUT /admin/post-custom-field-values/:id
5 | def admin_update
6 | return if !user_is_allowed('postcustomfieldvalues', 'edit')
7 |
8 | resp = Caboose::StdClass.new
9 | fv = PostCustomFieldValue.find(params[:id])
10 |
11 | save = true
12 | params.each do |k, v|
13 | case k
14 | when 'value' then fv.value = v
15 | end
16 | end
17 | resp.success = save && fv.save
18 | render :json => resp
19 | end
20 |
21 | end
22 | end
23 |
--------------------------------------------------------------------------------
/app/controllers/caboose/reviews_controller.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class ReviewsController < Caboose::ApplicationController
3 |
4 | # @route POST /reviews/add
5 | def add
6 | content = params[:content]
7 | product_id = params[:product_id]
8 | rating = params[:rating]
9 | name = params[:name]
10 | r = Review.new(:content => content, :product_id => product_id, :rating => rating, :name => name)
11 | r.save
12 | render :json => true
13 | end
14 |
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/app/controllers/caboose/station_controller.rb:
--------------------------------------------------------------------------------
1 |
2 | module Caboose
3 | class StationController < ApplicationController
4 | layout 'caboose/modal'
5 |
6 | # @route GET /station
7 | def index
8 | @user = logged_in_user
9 | page_id = params['page_id'].nil? ? Page.index_page(@site.id).id : params['page_id']
10 | @page = Page.find(page_id)
11 | @tab = params['tab']
12 |
13 | if @user.nil? || @user.id == Caboose::User.logged_out_user_id(@site.id)
14 | redirect_to "/login"
15 | end
16 | end
17 |
18 | # @route GET /station/plugin-count
19 | def plugin_count
20 | render :json => Caboose::plugins.count
21 | end
22 |
23 | # @route PUT /admin/station
24 | def index_admin
25 | session[:caboose_station_state] = params[:state]
26 | session[:caboose_station_open_tabs] = params[:open_tabs]
27 | session[:caboose_station_return_url] = params[:return_url]
28 | render :json => true
29 | end
30 | end
31 | end
32 |
--------------------------------------------------------------------------------
/app/helpers/caboose/permissions_helper.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | module PermissionsHelper
3 | end
4 | end
5 |
--------------------------------------------------------------------------------
/app/helpers/caboose/products_helper.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | module ProductsHelper
3 |
4 | def average_review(product_id)
5 | all_reviews = Review.where(:product_id => product_id)
6 | score = 0
7 | count = 0
8 | all_reviews.each do |r|
9 | if r.rating && r.rating != 0
10 | score += r.rating
11 | count += 1
12 | end
13 | end
14 | return score/count if count > 0
15 | return 0
16 | end
17 |
18 | def active_products
19 | Caboose::Product.active
20 | end
21 |
22 | def caboose_sort_options
23 | render :partial => '/caboose/products/sort_options'
24 | end
25 |
26 | end
27 | end
28 |
--------------------------------------------------------------------------------
/app/mailers/caboose/caboose_mailer.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class CabooseMailer < ActionMailer::Base
3 | include AbstractController::Callbacks
4 |
5 | default :from => Caboose::email_from
6 |
7 | cattr_accessor :site
8 | @@site = nil
9 |
10 | before_filter do |mailer|
11 | puts "Configuring mailer..."
12 | config = SmtpConfig.where(:site_id => @@site.id).first
13 | self.smtp_settings['user_name'] = config.user_name
14 | self.smtp_settings['password'] = config.password
15 | self.smtp_settings['address'] = config.address
16 | self.smtp_settings['port'] = config.port
17 | self.smtp_settings['domain'] = config.domain
18 | self.smtp_settings['authentication'] = config.authentication
19 | self.smtp_settings['enable_starttls_auto'] = config.enable_starttls_auto
20 | end
21 |
22 | end
23 | end
24 |
--------------------------------------------------------------------------------
/app/mailers/caboose/login_mailer.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class LoginMailer < CabooseMailer #ActionMailer::Base
3 |
4 | def forgot_password_email(user)
5 | @user = user
6 | mail(:to => user.email, :subject => "#{user.site.description} Forgot Password")
7 | end
8 |
9 | def locked_account(user)
10 | @user = user
11 | admin_email = user.site.contact_email
12 | mail(:to => admin_email, :subject => "#{user.site.description} Locked Account") if !admin_email.blank?
13 | end
14 |
15 | end
16 | end
--------------------------------------------------------------------------------
/app/models/caboose/ab_option.rb:
--------------------------------------------------------------------------------
1 | class Caboose::AbOption < ActiveRecord::Base
2 |
3 | self.table_name = "ab_options"
4 | belongs_to :ab_variant
5 | has_many :ab_values, :dependent => :destroy
6 | attr_accessible :value, :ab_variant_id
7 |
8 | end
9 |
--------------------------------------------------------------------------------
/app/models/caboose/ab_value.rb:
--------------------------------------------------------------------------------
1 | class Caboose::AbValue < ActiveRecord::Base
2 |
3 | self.table_name = "ab_values"
4 | belongs_to :ab_variant
5 | belongs_to :ab_option
6 | attr_accessible :session_id, :ab_variant_id, :ab_option_id
7 |
8 | def keyval
9 | return "#{ab_variant.analytics_name}=#{ab_option_id}"
10 | end
11 |
12 | end
13 |
--------------------------------------------------------------------------------
/app/models/caboose/ab_variant.rb:
--------------------------------------------------------------------------------
1 | # Class for A-B testing variants. A variant is a set of changes
2 | # to the same element on a page. For example, a variant can be used
3 | # to change the button text, or images displayed, or even more
4 | # complicated behavior
5 | class Caboose::AbVariant < ActiveRecord::Base
6 | self.table_name = "ab_variants"
7 |
8 | has_many :ab_options, -> { order(:id) }, :dependent => :destroy
9 | has_many :ab_values, :dependent => :destroy
10 | attr_accessible :name, :analytics_name
11 |
12 | def random_option
13 | return nil if self.ab_options.nil? || self.ab_options.count == 0
14 | return self.ab_options.sample
15 | end
16 |
17 | end
18 |
--------------------------------------------------------------------------------
/app/models/caboose/address.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class Address < ActiveRecord::Base
3 | self.table_name = 'store_addresses'
4 |
5 | attr_accessible :id,
6 | :name,
7 | :first_name,
8 | :last_name,
9 | :street,
10 | :address1,
11 | :address2,
12 | :company,
13 | :city,
14 | :state,
15 | :province,
16 | :province_code,
17 | :zip,
18 | :country,
19 | :country_code,
20 | :phone
21 |
22 | def name_and_address
23 | str = "#{self.first_name} #{self.last_name}"
24 | str << " #{self.address1}"
25 | str << " #{self.address2}" if self.address2 && self.address2.length > 0
26 | str << " #{self.city}, #{self.state} #{self.zip}"
27 | return str
28 | end
29 |
30 | end
31 | end
32 |
33 |
--------------------------------------------------------------------------------
/app/models/caboose/approval_request.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::ApprovalRequest < ActiveRecord::Base
3 | self.table_name = "approval_reqests"
4 | belongs_to :page
5 | belongs_to :user
6 | belongs_to :reviewer, :class_name => 'User', :foreign_key => 'reviewer_id'
7 | attr_accessible :page_id, :user_id, :reviewer_id, :date_requested, :date_reviewed, :notes, :reviewer_notes, :status
8 |
9 | #const STATUS_APPROVED = 'approved';
10 | #const STATUS_DENIED = 'denied';
11 | #const STATUS_PENDING = 'pending';
12 |
13 | end
14 |
--------------------------------------------------------------------------------
/app/models/caboose/asset.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::Asset < ActiveRecord::Base
3 | self.table_name = "assets"
4 | belongs_to :page
5 | attr_accessible :page_id, :uploaded_by_id, :date_uploaded, :name, :filename, :description, :extension
6 |
7 | def sanitize_name(str)
8 | return str.gsub(' ', '_').downcase
9 | end
10 |
11 | def assets_with_uri(host_with_port, uri)
12 | uri[0] = '' if uri.start_with? '/'
13 |
14 | page = Page.page_with_uri(host_with_port, File.dirname(uri), false)
15 | return false if page.nil?
16 |
17 | asset = Asset.where(:page_id => page.id,:filename => File.basename(uri)).first
18 | return false if asset.nil?
19 |
20 | return asset
21 | end
22 |
23 | end
24 |
--------------------------------------------------------------------------------
/app/models/caboose/block_cache_file.rb:
--------------------------------------------------------------------------------
1 |
2 | module Caboose
3 | class BlockCacheFile
4 |
5 | def initialize(file)
6 | @_url = file.url
7 | end
8 |
9 | def url(style = nil)
10 | return @_url
11 | end
12 |
13 | def marshal_dump
14 | [@_url]
15 | end
16 |
17 | def marshal_load array
18 | @url = array.first
19 | end
20 |
21 | end
22 | end
23 |
--------------------------------------------------------------------------------
/app/models/caboose/block_type_site_membership.rb:
--------------------------------------------------------------------------------
1 | class Caboose::BlockTypeSiteMembership < ActiveRecord::Base
2 | self.table_name = "block_type_site_memberships"
3 | belongs_to :site
4 | belongs_to :block_type
5 | attr_accessible :id, :site_id, :block_type_id, :custom_css, :custom_html
6 | end
7 |
--------------------------------------------------------------------------------
/app/models/caboose/block_type_summary.rb:
--------------------------------------------------------------------------------
1 | require 'httparty'
2 |
3 | class Caboose::BlockTypeSummary < ActiveRecord::Base
4 | self.table_name = "block_type_summaries"
5 |
6 | belongs_to :block_type_source
7 | attr_accessible :id,
8 | :block_type_source_id,
9 | :name,
10 | :description
11 |
12 | def source
13 | self.block_type_source
14 | end
15 |
16 | def parse_api_hash(h)
17 | self.name = h['name']
18 | self.description = h['description']
19 | end
20 |
21 | end
22 |
--------------------------------------------------------------------------------
/app/models/caboose/caboose_plugin.rb:
--------------------------------------------------------------------------------
1 | class Caboose::CaboosePlugin
2 |
3 | def self.page_content(str)
4 | return str
5 | end
6 |
7 | def self.post_content(post)
8 | return post
9 | end
10 |
11 | def self.event_content(event)
12 | return event
13 | end
14 |
15 | def self.admin_nav(nav, user, page, site)
16 | return nav
17 | end
18 |
19 | def self.login_success(return_url, user_id)
20 | return return_url
21 | end
22 |
23 | end
24 |
--------------------------------------------------------------------------------
/app/models/caboose/calendar.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class Calendar < ActiveRecord::Base
3 | self.table_name = "calendars"
4 | has_many :calendar_events, :dependent => :destroy
5 | attr_accessible :id, :site_id, :name, :description, :color
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/app/models/caboose/category_membership.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class CategoryMembership < ActiveRecord::Base
3 | self.table_name = 'store_category_memberships'
4 |
5 | belongs_to :category
6 | belongs_to :product
7 |
8 | attr_accessible :category_id, :product_id
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/app/models/caboose/crumbtrail.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class Crumbtrail
3 |
4 | @_crumbtrail = nil
5 |
6 | def add(url, text = nil)
7 | @_crumbtrail = [] if @_crumbtrail.nil?
8 | if url.is_a?(Hash)
9 | url.each do |url2, text2|
10 | @_crumbtrail << [url2, text2]
11 | end
12 | else
13 | @_crumbtrail << [url, text]
14 | end
15 | end
16 |
17 | def print(url = nil, text = nil)
18 | if url
19 | self.add(url, text)
20 | end
21 |
22 | str = ""
23 | count = @_crumbtrail.count
24 | @_crumbtrail.each_with_index do |arr, i|
25 | is_last = i == (count - 1)
26 | str << "#{arr[1]} "
27 | end
28 | str << " "
29 | return str
30 | end
31 |
32 | end
33 | end
34 |
--------------------------------------------------------------------------------
/app/models/caboose/customization_membership.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class CustomizationMembership < ActiveRecord::Base
3 | self.table_name = 'store_customization_memberships'
4 |
5 | belongs_to :product
6 | belongs_to :customization, :class_name => 'Caboose::Product'
7 |
8 | attr_accessible :product_id, :customization_id
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/app/models/caboose/database_session.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::DatabaseSession < ActiveRecord::Base
3 | self.table_name = "sessions"
4 | attr_accessible :session_id, :data, :created_at, :updated_at
5 | end
6 |
--------------------------------------------------------------------------------
/app/models/caboose/discount.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class Discount < ActiveRecord::Base
3 | self.table_name = 'store_invoice_discounts'
4 | self.primary_key = 'id'
5 |
6 | belongs_to :gift_card
7 | belongs_to :invoice
8 | attr_accessible :id,
9 | :gift_card_id,
10 | :invoice_id,
11 | :amount
12 |
13 | after_find do |d|
14 | d.amount = 0.00 if d.amount.nil?
15 | end
16 |
17 | def calculate_amount
18 | gc = self.gift_card
19 | self.amount = case self.gift_card.card_type
20 | when GiftCard::CARD_TYPE_AMOUNT then (self.invoice.total >= gc.balance ? gc.balance : self.invoice.total)
21 | when GiftCard::CARD_TYPE_PERCENTAGE then self.invoice.subtotal * gc.total
22 | when GiftCard::CARD_TYPE_NO_SHIPPING then self.invoice.shipping
23 | when GiftCard::CARD_TYPE_NO_TAX then self.invoice.tax
24 | end
25 | self.save
26 | end
27 |
28 | end
29 | end
30 |
--------------------------------------------------------------------------------
/app/models/caboose/domain.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::Domain < ActiveRecord::Base
3 | self.table_name = "domains"
4 |
5 | belongs_to :site, :class_name => 'Caboose::Site'
6 | attr_accessible :id, :site_id, :domain, :primary, :under_construction, :forward_to_primary, :forward_to_uri, :force_ssl
7 |
8 | end
9 |
--------------------------------------------------------------------------------
/app/models/caboose/domain_constraint.rb:
--------------------------------------------------------------------------------
1 | class Caboose::DomainConstraint
2 | def initialize(domains)
3 | @domains = domains.is_a?(Array) ? domains.flatten : [domains].flatten
4 | end
5 |
6 | def matches?(request)
7 | m = false
8 | @domains.each do |d|
9 | if request.host =~ /#{d.gsub("\\","\\\\")}/
10 | m = true
11 | break
12 | end
13 | end
14 | return m
15 | #return @domains.include?(request.host)
16 | end
17 | end
18 |
--------------------------------------------------------------------------------
/app/models/caboose/event_custom_field.rb:
--------------------------------------------------------------------------------
1 | class Caboose::EventCustomField < ActiveRecord::Base
2 | self.table_name = "event_custom_fields"
3 |
4 | belongs_to :site
5 | attr_accessible :id ,
6 | :site_id ,
7 | :key ,
8 | :name ,
9 | :field_type ,
10 | :default_value ,
11 | :options ,
12 | :options_url ,
13 | :sort_order
14 |
15 | FIELD_TYPE_TEXT = 'text'
16 | FIELD_TYPE_SELECT = 'select'
17 | FIELD_TYPE_CHECKBOX = 'checkbox'
18 | FIELD_TYPE_DATE = 'date'
19 | FIELD_TYPE_DATETIME = 'datetime'
20 |
21 | end
--------------------------------------------------------------------------------
/app/models/caboose/event_custom_field_value.rb:
--------------------------------------------------------------------------------
1 | class Caboose::EventCustomFieldValue < ActiveRecord::Base
2 | self.table_name = "event_custom_field_values"
3 |
4 | belongs_to :calendar_event
5 | belongs_to :event_custom_field
6 | attr_accessible :id ,
7 | :calendar_event_id ,
8 | :event_custom_field_id ,
9 | :key ,
10 | :value ,
11 | :sort_order
12 |
13 | end
--------------------------------------------------------------------------------
/app/models/caboose/font.rb:
--------------------------------------------------------------------------------
1 | class Caboose::Font < ActiveRecord::Base
2 | self.table_name = "fonts"
3 |
4 | belongs_to :site, :class_name => 'Caboose::Site'
5 | attr_accessible :id, :site_id, :name, :family, :variant, :url
6 |
7 | end
--------------------------------------------------------------------------------
/app/models/caboose/font_family.rb:
--------------------------------------------------------------------------------
1 | class Caboose::FontFamily < ActiveRecord::Base
2 | self.table_name = "font_families"
3 | has_many :font_variants, :class_name => 'Caboose::FontVariant', :dependent => :delete_all
4 | attr_accessible :id, :name
5 | end
--------------------------------------------------------------------------------
/app/models/caboose/font_variant.rb:
--------------------------------------------------------------------------------
1 | class Caboose::FontVariant < ActiveRecord::Base
2 | self.table_name = "font_variants"
3 | belongs_to :font_family, :class_name => 'Caboose::FontFamily'
4 | attr_accessible :id, :ttf_url, :font_family_id, :variant, :weight, :style, :sort_order
5 | end
--------------------------------------------------------------------------------
/app/models/caboose/ga.rb:
--------------------------------------------------------------------------------
1 | require 'httparty'
2 |
3 | module Caboose
4 | class GA # Google Analytics
5 |
6 | def self.event(site_id, category, action, label = nil, value = nil)
7 |
8 | site = Site.where(:id => site_id).first
9 | return if site.nil?
10 | sc = site.social_config
11 | ga_id = sc.google_analytics_id
12 | return if ga_id.nil? || ga_id.strip.length == 0
13 |
14 | params = {
15 | 'v' => 1,
16 | 'tid' => ga_id,
17 | 'cid' => site.id,
18 | 't' => "event",
19 | 'ec' => category,
20 | 'ea' => action
21 | }
22 | params['el'] = label if label
23 | params['ev'] = value if value
24 |
25 | HTTParty.post('http://www.google-analytics.com/collect', :body => params)
26 | end
27 |
28 | end
29 | end
30 |
--------------------------------------------------------------------------------
/app/models/caboose/invoice_discount.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class InvoiceDiscount < ActiveRecord::Base
3 | self.table_name = 'store_invoice_discounts'
4 |
5 | belongs_to :invoice
6 | belongs_to :discount
7 |
8 | attr_accessible :invoice_id, :discount_id
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/app/models/caboose/invoice_log.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class InvoiceLog < ActiveRecord::Base
3 | self.table_name = 'store_invoice_logs'
4 |
5 | belongs_to :invoice
6 | belongs_to :user
7 | attr_accessible :id ,
8 | :invoice_id ,
9 | :invoice_package_id ,
10 | :line_item_id ,
11 | :user_id ,
12 | :date_logged ,
13 | :invoice_action ,
14 | :field ,
15 | :old_value ,
16 | :new_value
17 |
18 | ACTION_INVOICE_CREATED = 'invoice created'
19 | ACTION_INVOICE_UPDATED = 'invoice updated'
20 | ACTION_INVOICE_DELETED = 'invoice deleted'
21 | ACTION_INVOICE_PACKAGE_CREATED = 'invoice package created'
22 | ACTION_INVOICE_PACKAGE_UPDATED = 'invoice package updated'
23 | ACTION_INVOICE_PACKAGE_DELETED = 'invoice package deleted'
24 | ACTION_LINE_ITEM_CREATED = 'line item created'
25 | ACTION_LINE_ITEM_UPDATED = 'line item updated'
26 | ACTION_LINE_ITEM_DELETED = 'line item deleted'
27 |
28 | end
29 | end
30 |
--------------------------------------------------------------------------------
/app/models/caboose/letsencrypt_plugin_challenge.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class LetsencryptPluginChallenge < ActiveRecord::Base
3 | self.table_name = 'letsencrypt_plugin_challenges'
4 | # t.text :response
5 | end
6 | end
7 |
--------------------------------------------------------------------------------
/app/models/caboose/letsencrypt_plugin_setting.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class LetsencryptPluginSetting < ActiveRecord::Base
3 | self.table_name = 'letsencrypt_plugin_settings'
4 | # t.text :private_key
5 | end
6 | end
7 |
--------------------------------------------------------------------------------
/app/models/caboose/line_item_modification.rb:
--------------------------------------------------------------------------------
1 |
2 | module Caboose
3 | class LineItemModification < ActiveRecord::Base
4 | self.table_name = 'store_line_item_modifications'
5 | self.primary_key = 'id'
6 |
7 | belongs_to :line_item, :class_name => 'Caboose::LineItem'
8 | belongs_to :modification, :class_name => 'Caboose::Modification'
9 | belongs_to :modification_value, :class_name => 'Caboose::ModificationValue'
10 | attr_accessible :id,
11 | :line_item_id,
12 | :modification_id,
13 | :modification_value_id,
14 | :input
15 |
16 | end
17 | end
18 |
19 |
--------------------------------------------------------------------------------
/app/models/caboose/login_log.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::LoginLog < ActiveRecord::Base
3 | self.table_name = "login_logs"
4 |
5 | belongs_to :site, :class_name => 'Caboose::Site'
6 | belongs_to :user, :class_name => 'Caboose::User'
7 |
8 | attr_accessible :id,
9 | :site_id ,
10 | :username ,
11 | :user_id ,
12 | :date_attempted ,
13 | :ip ,
14 | :success
15 |
16 | def self.fail_count(user)
17 | last_successful_login = Caboose::LoginLog.where(:user_id => user.id, :success => true).reorder("date_attempted desc").first
18 | id = last_successful_login ? last_successful_login.id : 1
19 | return Caboose::LoginLog.where("user_id = ? and success = ? and id > ?", user.id, false, id).count
20 | end
21 |
22 | end
23 |
--------------------------------------------------------------------------------
/app/models/caboose/menu_block.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::MenuBlock
3 |
4 | attr_accessor :title, :title_id, :links
5 |
6 | end
7 |
--------------------------------------------------------------------------------
/app/models/caboose/message.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class Message
3 | include ActiveModel::Validations
4 | include ActiveModel::Conversion
5 | extend ActiveModel::Naming
6 |
7 | attr_accessor :name, :email, :body
8 |
9 | validates :name, :email, :body, presence: true
10 | validates :email, format: { :with => %r{.+@.+\..+} }, allow_blank: false
11 |
12 | def initialize(attributes={})
13 | attributes.each { |name, value| send("#{name}=", value) }
14 | end
15 |
16 | def persisted?
17 | false
18 | end
19 | end
20 | end
21 |
--------------------------------------------------------------------------------
/app/models/caboose/modification.rb:
--------------------------------------------------------------------------------
1 |
2 | module Caboose
3 | class Modification < ActiveRecord::Base
4 | self.table_name = 'store_modifications'
5 | self.primary_key = 'id'
6 |
7 | belongs_to :product, :class_name => 'Caboose::Product'
8 | has_many :modification_values, -> { order(:sort_order) }, :class_name => 'Caboose::ModificationValue'
9 | attr_accessible :id,
10 | :product_id,
11 | :sort_order,
12 | :name
13 |
14 | def values
15 | return self.modification_values
16 | end
17 |
18 | end
19 | end
20 |
21 |
--------------------------------------------------------------------------------
/app/models/caboose/modification_value.rb:
--------------------------------------------------------------------------------
1 |
2 | module Caboose
3 | class ModificationValue < ActiveRecord::Base
4 | self.table_name = 'store_modification_values'
5 | self.primary_key = 'id'
6 |
7 | belongs_to :modification, :class_name => 'Caboose::Modification'
8 | attr_accessible :id,
9 | :modification_id,
10 | :sort_order,
11 | :value,
12 | :is_default,
13 | :price,
14 | :requires_input,
15 | :input_description
16 |
17 | end
18 | end
19 |
20 |
--------------------------------------------------------------------------------
/app/models/caboose/modification_value_input_field.rb:
--------------------------------------------------------------------------------
1 |
2 | module Caboose
3 | class ModificationValueInputField < ActiveRecord::Base
4 | self.table_name = 'store_modification_value_input_fields'
5 | self.primary_key = 'id'
6 |
7 | belongs_to :modification_value, :class_name => 'Caboose::ModificationValue'
8 | attr_accessible :id,
9 | :modification_value_id,
10 | :sort_order,
11 | :name,
12 | :description,
13 | :field_type,
14 | :default_value,
15 | :width,
16 | :height,
17 | :options,
18 | :options_url
19 |
20 | end
21 | end
22 |
--------------------------------------------------------------------------------
/app/models/caboose/page_cache.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class PageCache < ActiveRecord::Base
3 | self.table_name = "page_cache"
4 |
5 | belongs_to :page
6 | attr_accessible :id,
7 | :page_id,
8 | :render_function,
9 | :block
10 |
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/app/models/caboose/page_custom_field_value.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::PageCustomFieldValue < ActiveRecord::Base
3 | self.table_name = "page_custom_field_values"
4 |
5 | belongs_to :page
6 | belongs_to :page_custom_field
7 | attr_accessible :id ,
8 | :page_id ,
9 | :page_custom_field_id ,
10 | :key ,
11 | :value ,
12 | :sort_order
13 |
14 | def duplicate(page_id, page_custom_field_id)
15 | v = Caboose::PageCustomFieldValue.create(
16 | :page_id => page_id,
17 | :page_custom_field_id => page_custom_field_id,
18 | :key => self.key,
19 | :value => self.value,
20 | :sort_order => self.sort_order
21 | )
22 | return v
23 | end
24 |
25 | end
26 |
--------------------------------------------------------------------------------
/app/models/caboose/page_permission.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::PagePermission < ActiveRecord::Base
3 | self.table_name = "page_permissions"
4 | belongs_to :page
5 | belongs_to :role
6 | attr_accessible :page_id, :role_id, :action
7 | end
8 |
--------------------------------------------------------------------------------
/app/models/caboose/page_tag.rb:
--------------------------------------------------------------------------------
1 | class Caboose::PageTag < ActiveRecord::Base
2 | self.table_name = "page_tags"
3 | belongs_to :page
4 | attr_accessible :id, :page_id, :tag
5 | end
6 |
--------------------------------------------------------------------------------
/app/models/caboose/page_template.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class PageTemplate < ActiveRecord::Base
3 | self.table_name = "page_templates"
4 | belongs_to :page
5 | belongs_to :category, :class_name => "Caboose::PageTemplateCategory"
6 | attr_accessible :page_id, :site_id, :title, :description, :created_at, :updated_at, :category_id, :sort_order
7 | has_attached_file :screenshot,
8 | :path => ':caboose_prefixpage_templates/:id_screenshot_:style.:extension',
9 | :default_url => "https://cabooseit.s3.amazonaws.com/assets/shared/template.png",
10 | :styles => {
11 | :small => '300x300>',
12 | :medium => '600x600>',
13 | :large => '1000x1000>'
14 | }
15 | do_not_validate_attachment_file_type :screenshot
16 | end
17 | end
--------------------------------------------------------------------------------
/app/models/caboose/page_template_category.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class PageTemplateCategory < ActiveRecord::Base
3 | self.table_name = "page_template_categories"
4 | has_many :page_templates, :foreign_key => "category_id"
5 | attr_accessible :title, :description, :sort_order, :superadmin_only
6 |
7 | def self.all_options(blank)
8 | if blank
9 | options = [{'value' => '','text' => ''}]
10 | else
11 | options = []
12 | end
13 | PageTemplateCategory.order(:title).all.each do |s|
14 | options << { 'value' => s.id, 'text' => s.title }
15 | end
16 | return options.to_json
17 | end
18 |
19 | end
20 | end
--------------------------------------------------------------------------------
/app/models/caboose/pager.rb:
--------------------------------------------------------------------------------
1 | class Caboose::Pager < Caboose::PageBarGenerator
2 | end
3 |
--------------------------------------------------------------------------------
/app/models/caboose/permanent_redirect.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::PermanentRedirect < ActiveRecord::Base
3 | self.table_name = "permanent_redirects"
4 |
5 | attr_accessible :id,
6 | :site_id,
7 | :priority,
8 | :is_regex,
9 | :old_url,
10 | :new_url
11 |
12 | validates :old_url, :presence => { :message => 'The old URL is required.' }
13 | validates :new_url, :presence => { :message => 'The new URL is required.' }
14 |
15 | def self.match(site_id, uri)
16 | Caboose::PermanentRedirect.where(:site_id => site_id).reorder(:priority).all.each do |pr|
17 | if pr.is_regex
18 | return uri.gsub(/#{pr.old_url}/, pr.new_url) if uri =~ /#{pr.old_url}/
19 | else
20 | return pr.new_url if uri == pr.old_url
21 | end
22 | end
23 | return false
24 | end
25 |
26 | end
27 |
--------------------------------------------------------------------------------
/app/models/caboose/permission.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::Permission < ActiveRecord::Base
3 | self.table_name = "permissions"
4 |
5 | belongs_to :site
6 | has_many :role_permissions
7 | has_many :roles, :through => :role_permissions
8 | attr_accessible :action, :resource, :site_id
9 |
10 | def self.allow(role_id, resource, action)
11 | role = Role.find(role_id)
12 | perm = Permission.where(:resource => resource, :action => action).first
13 | return if role.nil? || perm.nil?
14 | role.permissions.push(perm)
15 | role.save
16 | end
17 | end
--------------------------------------------------------------------------------
/app/models/caboose/post_category.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::PostCategory < ActiveRecord::Base
3 | self.table_name = "post_categories"
4 |
5 | has_many :post_category_memberships
6 | has_many :posts, :through => :post_category_memberships
7 |
8 | attr_accessible :id, :site_id, :name
9 |
10 | end
11 |
--------------------------------------------------------------------------------
/app/models/caboose/post_category_membership.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::PostCategoryMembership < ActiveRecord::Base
3 | self.table_name = "post_category_memberships"
4 |
5 | belongs_to :post_category
6 | belongs_to :post
7 | attr_accessible :post_id, :post_category_id
8 |
9 | end
10 |
--------------------------------------------------------------------------------
/app/models/caboose/post_custom_field.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::PostCustomField < ActiveRecord::Base
3 | self.table_name = "post_custom_fields"
4 |
5 | belongs_to :site
6 | attr_accessible :id ,
7 | :site_id ,
8 | :key ,
9 | :name ,
10 | :field_type ,
11 | :default_value ,
12 | :options ,
13 | :options_url ,
14 | :sort_order
15 |
16 | FIELD_TYPE_TEXT = 'text'
17 | FIELD_TYPE_SELECT = 'select'
18 | FIELD_TYPE_CHECKBOX = 'checkbox'
19 | FIELD_TYPE_DATE = 'date'
20 | FIELD_TYPE_DATETIME = 'datetime'
21 |
22 | end
23 |
--------------------------------------------------------------------------------
/app/models/caboose/post_custom_field_value.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::PostCustomFieldValue < ActiveRecord::Base
3 | self.table_name = "post_custom_field_values"
4 |
5 | belongs_to :post
6 | belongs_to :post_custom_field
7 | attr_accessible :id ,
8 | :post_id ,
9 | :post_custom_field_id ,
10 | :key ,
11 | :value ,
12 | :sort_order
13 |
14 | end
15 |
--------------------------------------------------------------------------------
/app/models/caboose/product_category_sort.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class ProductCategorySort < ActiveRecord::Base
3 | self.table_name = 'store_product_category_sorts'
4 | self.primary_key = 'id'
5 |
6 | belongs_to :product
7 | belongs_to :category
8 | attr_accessible :id,
9 | :product_id,
10 | :category_id,
11 | :sort_order
12 |
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/app/models/caboose/product_default.rb:
--------------------------------------------------------------------------------
1 | #
2 | # ProductDefault
3 | #
4 | # :: Class Methods
5 | # :: Instance Methods
6 |
7 | module Caboose
8 | class ProductDefault < ActiveRecord::Base
9 | self.table_name = 'store_product_defaults'
10 |
11 | belongs_to :site
12 | belongs_to :vendor
13 | attr_accessible :id ,
14 | :site_id ,
15 | :vendor_id ,
16 | :option1 ,
17 | :option2 ,
18 | :option3 ,
19 | :status ,
20 | :on_sale ,
21 | :allow_gift_wrap ,
22 | :gift_wrap_price
23 |
24 | end
25 | end
26 |
--------------------------------------------------------------------------------
/app/models/caboose/product_image_variant.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class ProductImageVariant < ActiveRecord::Base
3 | self.table_name = 'store_product_image_variants'
4 |
5 | belongs_to :product_image
6 | belongs_to :variant
7 |
8 | attr_accessible :product_image_id, :variant_id
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/app/models/caboose/review.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class Review < ActiveRecord::Base
3 | self.table_name = 'store_reviews'
4 |
5 | belongs_to :product
6 |
7 | attr_accessible :id,
8 | :product_id,
9 | :name,
10 | :rating,
11 | :content
12 | end
13 | end
--------------------------------------------------------------------------------
/app/models/caboose/role_membership.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::RoleMembership < ActiveRecord::Base
3 | self.table_name = "role_memberships"
4 |
5 | belongs_to :user
6 | belongs_to :role
7 | attr_accessible :user_id, :role_id
8 |
9 | end
10 |
--------------------------------------------------------------------------------
/app/models/caboose/role_permission.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::RolePermission < ActiveRecord::Base
3 | self.table_name = "role_permissions"
4 |
5 | belongs_to :permission
6 | belongs_to :role
7 | attr_accessible :permission_id, :role_id
8 |
9 | end
10 |
--------------------------------------------------------------------------------
/app/models/caboose/setting.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::Setting < ActiveRecord::Base
3 | self.table_name = "settings"
4 | attr_accessible :id, :site_id, :name, :value
5 |
6 | def self.value_for(name)
7 | s = self.where(:name => name).first
8 | return '' if s.nil?
9 | return s.value
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/app/models/caboose/shipping_method.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class ShippingMethod < ActiveRecord::Base
3 | self.table_name = 'store_shipping_methods'
4 |
5 | attr_accessible :id,
6 | :carrier,
7 | :service_code,
8 | :service_name
9 |
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/app/models/caboose/shipping_package_method.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class ShippingPackageMethod < ActiveRecord::Base
3 | self.table_name = 'store_shipping_package_methods'
4 |
5 | belongs_to :shipping_package
6 | belongs_to :shipping_method
7 | attr_accessible :id,
8 | :shipping_package_id,
9 | :shipping_method_id
10 |
11 | end
12 | end
13 |
--------------------------------------------------------------------------------
/app/models/caboose/site_membership.rb:
--------------------------------------------------------------------------------
1 |
2 | class Caboose::SiteMembership < ActiveRecord::Base
3 | self.table_name = "site_membership"
4 |
5 | belongs_to :site, :class_name => 'Caboose::Site'
6 | belongs_to :user, :class_name => 'Caboose::User'
7 | attr_accessible :id, :site_id, :user_id, :role
8 |
9 | ROLE_ADMIN = 'Admin'
10 | ROLE_USER = 'User'
11 |
12 | end
13 |
--------------------------------------------------------------------------------
/app/models/caboose/social_config.rb:
--------------------------------------------------------------------------------
1 | class Caboose::SocialConfig < ActiveRecord::Base
2 | self.table_name = "social_configs"
3 |
4 | belongs_to :site, :class_name => "Caboose::Site"
5 |
6 | attr_accessible :id,
7 | :site_id ,
8 | :facebook_page_id ,
9 | :twitter_username ,
10 | :instagram_username ,
11 | :instagram_user_id ,
12 | :instagram_access_token,
13 | :youtube_url ,
14 | :pinterest_url ,
15 | :vimeo_url ,
16 | :rss_url ,
17 | :google_plus_url ,
18 | :linkedin_url ,
19 | :google_analytics_id ,
20 | :facebook_pixel
21 |
22 | has_attached_file :share_image,
23 | :path => 'share_images/:id_:style.:extension',
24 | :default_url => 'http://placehold.it/800x500',
25 | :s3_protocol => :https,
26 | :styles => {
27 | large: '1200x1200>'
28 | }
29 | do_not_validate_attachment_file_type :share_image
30 |
31 | end
--------------------------------------------------------------------------------
/app/models/caboose/stackable_group.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class StackableGroup < ActiveRecord::Base
3 | self.table_name = 'store_stackable_groups'
4 |
5 | has_many :products
6 | attr_accessible :id,
7 | :name,
8 | :extra_length,
9 | :extra_width,
10 | :extra_height,
11 | :max_length,
12 | :max_width,
13 | :max_height
14 |
15 | end
16 | end
17 |
--------------------------------------------------------------------------------
/app/models/caboose/std_class.rb:
--------------------------------------------------------------------------------
1 | require "ostruct"
2 | module Caboose
3 | class StdClass < OpenStruct
4 | def as_json(options = nil)
5 | @table.as_json(options)
6 | end
7 | end
8 | end
9 |
--------------------------------------------------------------------------------
/app/models/caboose/tax_line.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class TaxLine < ActiveRecord::Base
3 | attr_accessible :id,
4 | :title, # The name of the tax, eg. QST or VAT
5 | :price, # The amount
6 | :rate, # The rate. It will return 0.175 if it is 17.5%
7 | :rate_percentage # The tax rate in human readable form. It will return 17.5 if the rate is 0.175
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/app/models/caboose/theme_file.rb:
--------------------------------------------------------------------------------
1 | class Caboose::ThemeFile < ActiveRecord::Base
2 | self.table_name = "theme_files"
3 |
4 | attr_accessible :filename, :nice_name, :default_included, :code
5 |
6 | end
--------------------------------------------------------------------------------
/app/models/caboose/theme_file_membership.rb:
--------------------------------------------------------------------------------
1 | class Caboose::ThemeFileMembership < ActiveRecord::Base
2 | self.table_name = "theme_file_memberships"
3 |
4 | belongs_to :theme
5 | belongs_to :theme_file
6 | attr_accessible :theme_id, :theme_file_id
7 |
8 | end
--------------------------------------------------------------------------------
/app/models/caboose/variant_child.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | class VariantChild < ActiveRecord::Base
3 | self.table_name = 'store_variant_children'
4 |
5 | belongs_to :parent , :class_name => 'Caboose::Variant', :foreign_key => 'parent_id'
6 | belongs_to :variant , :class_name => 'Caboose::Variant', :foreign_key => 'variant_id'
7 | attr_accessible :id,
8 | :parent_id,
9 | :variant_id,
10 | :quantity
11 |
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/app/models/caboose/vendor.rb:
--------------------------------------------------------------------------------
1 |
2 | module Caboose
3 | class Vendor < ActiveRecord::Base
4 | self.table_name = 'store_vendors'
5 |
6 | belongs_to :site
7 | has_many :products
8 | has_attached_file :image,
9 | :path => ':caboose_prefixvendors/:id_:style.:extension',
10 | :default_url => 'http://placehold.it/300x300',
11 | :styles => {
12 | :tiny => '150x200>',
13 | :thumb => '300x400>',
14 | :large => '600x800>'
15 | }
16 | do_not_validate_attachment_file_type :image
17 | attr_accessible :id,
18 | :site_id,
19 | :alternate_id,
20 | :name,
21 | :status,
22 | :sort_order,
23 | :email
24 | after_save :clear_filters
25 |
26 | def self.active
27 | where(:status => 'Active')
28 | end
29 |
30 | def update_products
31 | self.products.each { |product| product.update_attribute(:vendor_status, self.status) }
32 | end
33 |
34 | def clear_filters
35 | SearchFilter.delete_all
36 | end
37 | end
38 | end
39 |
--------------------------------------------------------------------------------
/app/models/caboose/wish_list.rb:
--------------------------------------------------------------------------------
1 |
2 | module Caboose
3 | class WishList < ActiveRecord::Base
4 | self.table_name = "wish_lists"
5 |
6 | belongs_to :user, :class_name => 'Caboose::User'
7 | has_many :wish_list_line_items, :class_name => 'Caboose::WishListLineItem'
8 | attr_accessible :id,
9 | :user_id,
10 | :name,
11 | :date_created
12 |
13 | end
14 | end
15 |
--------------------------------------------------------------------------------
/app/models/caboose/wish_list_line_item.rb:
--------------------------------------------------------------------------------
1 |
2 | module Caboose
3 | class WishListLineItem < ActiveRecord::Base
4 | self.table_name = "wish_list_line_item"
5 |
6 | belongs_to :wish_list, :class_name => 'Caboose::WishList'
7 | belongs_to :variant, :class_name => 'Caboose::Variant'
8 | attr_accessible :id,
9 | :variant_id,
10 | :quantity
11 |
12 | end
13 | end
14 |
--------------------------------------------------------------------------------
/app/views/caboose/ab_variants/admin_index.html.erb:
--------------------------------------------------------------------------------
1 | A/B Test Variants
2 |
3 | New Variant
4 | <% if (@variants.count > 0) %>
5 |
6 | <%= raw @gen.sortable_table_headings({'name' => 'Variant Name', 'analytics_name' => 'Analytics Name'}) %>
7 | <% @variants.each do |v| %>
8 |
9 | <%= v.name %>
10 | <%= v.analytics_name %>
11 |
12 | <% end %>
13 |
14 | <%= raw @gen.generate %>
15 | <% else %>
16 | No A/B variants found.
17 | <% end %>
18 |
--------------------------------------------------------------------------------
/app/views/caboose/admin/_footer.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/caboose/admin/_header.html.erb:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/app/views/caboose/admin/_icons.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/views/caboose/admin/_mobile_navigation.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
22 |
--------------------------------------------------------------------------------
/app/views/caboose/application/show.html.erb:
--------------------------------------------------------------------------------
1 | <% content_for :page_title do %><%= @page.title %><% end %>
2 | <% content_for :page_content do %><%= @page.content %><% end %>
3 |
--------------------------------------------------------------------------------
/app/views/caboose/application/under_construction.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Under Construction
5 |
9 |
10 |
11 |
12 |
We apologize for the inconvenience, but we're in the process of upgrading our site. We'll be finished very soon!
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/views/caboose/assets/admin_index.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
Admin >
3 | Assets
4 |
5 |
6 | <%= raw asset_path('test.gif') %>
7 |
8 |
9 |
10 |
11 | <% content_for :caboose_js do %>
12 | <%= javascript_include_tag 'caboose/class' %>
13 | <%= javascript_include_tag 'caboose/model/all' %>
14 | <%= javascript_include_tag 'caboose/assets_controller' %>
15 |
16 |
27 | <% end %>
28 |
29 | <% content_for :caboose_js do %>
30 | <%= stylesheet_link_tag 'caboose/admin_assets_index' %>
31 | <% end %>
32 |
--------------------------------------------------------------------------------
/app/views/caboose/block_type_categories/admin_index.html.erb:
--------------------------------------------------------------------------------
1 | Block Type Categories
2 |
3 |
4 | <% @btc.each do |btc| %>
5 |
6 | <%= btc.name %>
7 |
8 | <% btc.children.each do |btc2| %>
9 |
10 | <%= btc2.name %>
11 |
12 | <% btc2.children.each do |btc3| %>
13 |
14 | <%= btc3.name %>
15 |
16 | <% end %>
17 |
18 |
19 | <% end %>
20 |
21 |
22 | <% end %>
23 |
24 |
25 | New Category
--------------------------------------------------------------------------------
/app/views/caboose/block_type_categories/admin_new.html.erb:
--------------------------------------------------------------------------------
1 |
2 | New Block Type Category
3 |
4 |
5 |
6 |
7 |
8 | <% content_for :caboose_js do %>
9 | <%= javascript_include_tag "caboose/model/all" %>
10 |
32 | <% end %>
33 |
--------------------------------------------------------------------------------
/app/views/caboose/block_type_sources/admin_index.html.erb:
--------------------------------------------------------------------------------
1 |
6 |
7 | Block Type Sources
8 |
9 | New Source
10 |
11 | <% if (@block_type_sources.count > 0) %>
12 |
13 |
14 |
15 | Name
16 | URL
17 |
18 | <% @block_type_sources.each do |bts| %>
19 |
20 | <%= bts.name %>
21 | <%= bts.url %>
22 |
23 | <% end %>
24 |
25 |
26 | <% else %>
27 |
28 | There are no sources.
29 |
30 | <% end %>
--------------------------------------------------------------------------------
/app/views/caboose/block_types/admin_error_log.html.erb:
--------------------------------------------------------------------------------
1 | Error Log
2 |
3 | Back
4 |
5 | <% if !@block_type.latest_error.blank? %>
6 |
7 | <%== @block_type.latest_error.gsub("\n"," ") %>
8 |
9 | <% end %>
--------------------------------------------------------------------------------
/app/views/caboose/block_types/admin_parse_form.html.erb:
--------------------------------------------------------------------------------
1 |
6 |
7 | Block Type Parser
8 |
9 |
10 |
11 | <% content_for :caboose_js do %>
12 | <%= javascript_include_tag 'caboose/model/all' %>
13 | <%= javascript_include_tag 'caboose/admin_block_type_parser_controller' %>
14 |
25 | <% end %>
26 | <% content_for :caboose_css do %>
27 |
32 | <% end %>
--------------------------------------------------------------------------------
/app/views/caboose/blocks/._post.html.erb.marks:
--------------------------------------------------------------------------------
1 | !r;936;936
2 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_block.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <% if block.children.count > 0 %>
3 | <% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
4 | <% elsif editing %>
5 | <%= raw empty_text %>
6 | <% end %>
7 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_checkbox.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | checked = block.value
3 | checked = 0 if checked.nil?
4 | checked = checked == 1 || checked == '1' ? true : false
5 | %>
6 | <% if editing %>
7 | <%= raw block.block_type.description %> = <%= (checked ? "Yes" : "No") %>
8 | <% else %>
9 | <%= raw block.block_type.description %>
10 | <% end %>
11 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_controller_view_content.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <% if editing %>
3 |
Controller view content
4 | <% else %>
5 | <%= raw controller_view_content %>
6 | <% end %>
7 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_file.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | url = nil
3 | name = nil
4 | if block.media
5 | url = block.media.file_url
6 | name = block.media.file_file_name
7 | name = block.media.image_file_name if name.nil?
8 | elsif block.file
9 | url = block.file.url
10 | name = block.file_file_name
11 | end
12 |
13 | if editing
14 | if url.nil? || url.starts_with?('http://placehold.it') || url.include?('missing')
15 | %><%
16 | else
17 | %><%
18 | end
19 | elsif url
20 | %><%
21 | end
22 | %>
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_ga.html.erb:
--------------------------------------------------------------------------------
1 | <% sc = site.social_config %>
2 |
3 | <% if sc.auto_ga_js && !sc.google_analytics_id.blank? %>
4 |
5 |
14 | <% end %>
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_ga_events.html.erb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/views/caboose/blocks/_ga_events.html.erb
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_google_spreadsheet_cell_value.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | spreadsheet_id = block.child_value('spreadsheet_id')
3 | row = block.child_value('row')
4 | col = block.child_value('column')
5 | %>
6 |
7 | <% if editing && (spreadsheet_id.nil? || spreadsheet_id.strip.length == 0) %>
8 | [Empty spreadsheet ID]
9 | <% elsif editing && (row.nil? || row.strip.length == 0) %>
10 | [Empty spreadsheet row]
11 | <% elsif editing && (col.nil? || col.strip.length == 0) %>
12 | [Empty spreadsheet column]
13 | <% elsif !editing && spreadsheet_id && row && col %><% end %>
14 |
15 | <% if spreadsheet_id && row && col %>
16 | <%= content_for :js do %>
17 | <%= javascript_include_tag('caboose/google_spreadsheets') %>
18 |
24 | <% end %>
25 | <% end %>
26 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_heading.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | size = block.child_value('size')
3 | text = block.child_value('text')
4 | style = block.child_value('style')
5 | size = 1 if size.nil?
6 | text = (empty_text ? empty_text : "") if text.nil? || text == ""
7 |
8 | if editing %> style='<%= style %>'><%= raw text %> >
<%
9 | else %> id='block_<%= block.id %>' style='<%= style %>'><%= raw text %> ><% end %>
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_html.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | html = block.value
3 | if html.nil? || html == ""
4 | html = (empty_text ? "#{empty_text}
" : "")
5 | end
6 |
7 | %><%= raw html %>
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_layout_basic_content.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 | <% if controller_view_content && controller_view_content.strip.length > 0 %>
4 | <%= raw controller_view_content %>
5 | <% elsif block.children.count > 0 %>
6 | <% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
7 | <% end %>
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_layout_basic_footer.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_layout_basic_header.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_layout_left_sidebar_content.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 | <% if editing %>
<% end %>
4 | <% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
5 | <% if editing %>
<% end %>
6 |
7 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_layout_left_sidebar_footer.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_layout_left_sidebar_header.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_layout_left_sidebar_sidebar.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_layout_post_content.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 | <% if post.body %>
4 |
<%= raw post.title %>
5 | <%= raw post.body %>
6 | <% else %>
7 | <% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
8 | <% end %>
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_layout_post_footer.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_layout_post_header.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_layout_right_sidebar_content.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 | <% if block.children.count > 0 %>
4 | <% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
5 | <% end %>
6 |
7 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_layout_right_sidebar_footer.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_layout_right_sidebar_header.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_layout_right_sidebar_sidebar.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_product_category.html.erb:
--------------------------------------------------------------------------------
1 | This is a category.
2 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_product_crumbtrail.html.erb:
--------------------------------------------------------------------------------
1 | Product crumbtrail.
2 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_product_details.html.erb:
--------------------------------------------------------------------------------
1 | This is a product.
2 |
3 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_product_sales.html.erb:
--------------------------------------------------------------------------------
1 | These are the product sales.
2 |
3 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_products.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | # Note: This block is in the content area for the /products pages.
3 | # It's set up like this so that each site can have custom views.
4 |
5 | if editing %>Products block, click to edit
<% # Something to click on when we're editing the page
6 | elsif @sale_categories %><%= block.partial('product_sales' , local_assigns) %><% # Products on sale
7 | elsif @product %><%= block.partial('product_details' , local_assigns) %><% # Single product
8 | elsif @category && params[:vendor_id] %><%= block.partial('vendor_products' , local_assigns) %><% # Products for vendor
9 | elsif @category && params[:query] %><%= block.partial('search_results' , local_assigns) %><% # Products for search query
10 | elsif @category %><%= block.partial('product_index' , local_assigns) %><% # Products for category
11 | else %>Invalid product.
<% # Invalid product
12 | end
13 | %>
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_render_function.html.erb:
--------------------------------------------------------------------------------
1 | <%== ERB.new(render_function).result(self.instance_eval { binding }) %>
2 |
3 | <% if caboose_js && caboose_js.length > 1 %>
4 | <% caboose_js.to_a.each_with_index do |js, ind| %>
5 | <% next if ind == 0 %>
6 | <% content_for :js do %>
7 | <% begin %>
8 | <% erb = ERB.new(js).result(self.instance_eval { binding }) %>
9 | <%== erb %>
10 | <% rescue %>
11 | <% Caboose.log("JS ERROR for block #{block.id}") %>
12 | <% end %>
13 | <% end %>
14 | <% end %>
15 | <% end %>
16 | <% if caboose_css && caboose_css.length > 1 %>
17 | <% caboose_css.to_a.each_with_index do |css, ind| %>
18 | <% next if ind == 0 %>
19 | <% content_for :css do %>
20 | <% begin %>
21 | <% erb = ERB.new(css).result(self.instance_eval { binding }) %>
22 | <%== erb %>
23 | <% rescue %>
24 | <% Caboose.log("CSS ERROR for block #{block.id}") %>
25 | <% end %>
26 | <% end %>
27 | <% end %>
28 | <% end %>
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_richtext.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | text = block.value
3 | text = "#{empty_text}
" if editing && (text.nil? || text.strip.length == 0)
4 | %>
5 | <%= raw text %>
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_ruby_block.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | # This block should only be available to technical admins
3 | %><%
4 | if block.value && block.value.strip.length > 0
5 | %><%= ERB.new(block.value).result(self.instance_eval { binding }) %><%
6 | elsif editing
7 | %>
[Empty ruby block]
<%
8 | end
9 | %>
10 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_select.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | text = block.value
3 | if text.nil? || text.strip.length == 0
4 | text = empty_text ? "#{empty_text}
" : ""
5 | end
6 |
7 | %>
8 | <% if editing %>
9 | <%= raw text %>
10 | <% else %>
11 | <%= raw text %>
12 | <% end %>
13 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_selector_switch_one.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <% if block.children.count > 0 %>
3 | <% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
4 | <% elsif editing %>
5 | <%= raw empty_text %>
6 | <% end %>
7 | <% if editing && modal %>
8 |
9 |
Add a child block!
10 | <% end %>
11 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_selector_switch_three.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <% if block.children.count > 0 %>
3 | <% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
4 | <% elsif editing %>
5 | <%= raw empty_text %>
6 | <% end %>
7 | <% if editing && modal %>
8 |
9 |
Add a child block!
10 | <% end %>
11 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_selector_switch_two.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <% if block.children.count > 0 %>
3 | <% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
4 | <% elsif editing %>
5 | <%= raw empty_text %>
6 | <% end %>
7 | <% if editing && modal %>
8 |
9 |
Add a child block!
10 | <% end %>
11 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/_text.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | text = block.value
3 | if text.nil? || text.strip.length == 0
4 | text = empty_text ? "#{empty_text}
" : ""
5 | end
6 |
7 | %>
8 | <% if editing %>
9 | <%= raw text %>
10 | <% else %>
11 | <%= raw text %>
12 | <% end %>
13 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/admin_edit_custom.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | obj = block.value && block.value != "" ? JSON.parse(block.value) : nil
3 | %>
4 |
5 |
6 | <% content_for :caboose_js do %>
7 | <%= javascript_include_tag "caboose/model/all" %>
8 |
35 | <% end %>
36 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/admin_edit_h1.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <% content_for :caboose_js do %>
5 | <%= javascript_include_tag "caboose/model/all" %>
6 |
33 | <% end %>
34 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/admin_edit_h2.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <% content_for :caboose_js do %>
5 | <%= javascript_include_tag "caboose/model/all" %>
6 |
33 | <% end %>
34 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/admin_edit_h3.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <% content_for :caboose_js do %>
5 | <%= javascript_include_tag "caboose/model/all" %>
6 |
33 | <% end %>
34 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/admin_edit_h4.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <% content_for :caboose_js do %>
5 | <%= javascript_include_tag "caboose/model/all" %>
6 |
33 | <% end %>
34 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/admin_edit_h5.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <% content_for :caboose_js do %>
5 | <%= javascript_include_tag "caboose/model/all" %>
6 |
33 | <% end %>
34 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/admin_edit_h6.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <% content_for :caboose_js do %>
5 | <%= javascript_include_tag "caboose/model/all" %>
6 |
33 | <% end %>
34 |
--------------------------------------------------------------------------------
/app/views/caboose/blocks/admin_render_second_level.json.erb:
--------------------------------------------------------------------------------
1 | <%
2 | blocks = @p.block.children.collect do |b|
3 | {
4 | :id => b.id,
5 | :block_type_id => b.block_type.id,
6 | :sort_order => b.sort_order,
7 | :html => b.render(b, {
8 | :view => self,
9 | #:controller_view_content => yield,
10 | :modal => false,
11 | :empty_text => @empty_text,
12 | :editing => true
13 | })
14 | }
15 | end
16 | %><%= raw blocks.to_json %>
--------------------------------------------------------------------------------
/app/views/caboose/blocks/tinymce.js.erb:
--------------------------------------------------------------------------------
1 | <%= raw caboose_tinymce %>
2 |
--------------------------------------------------------------------------------
/app/views/caboose/cart/index.html.erb:
--------------------------------------------------------------------------------
1 |
8 |
9 | <% content_for :caboose_css do %>
10 | <%= stylesheet_link_tag 'caboose/message_boxes' %>
11 | <%= stylesheet_link_tag 'caboose/model_binder' %>
12 | <%= stylesheet_link_tag 'caboose/cart' %>
13 | <% end %>
14 |
15 | <% content_for :caboose_js do %>
16 | <%= javascript_include_tag 'caboose/model/all' %>
17 | <%= javascript_include_tag 'caboose/cart' %>
18 |
31 | <% end %>
32 |
--------------------------------------------------------------------------------
/app/views/caboose/categories/admin_index.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 |
3 | def category_list(cat)
4 | str = ""
5 | str << category_list_items(cat)
6 | str << " "
7 | return str
8 | end
9 |
10 | def category_list_items(cat)
11 | str = "#{cat.name} "
12 | cat.children.each{ |kid| str << category_list(kid) } if cat.children && cat.children.count > 0
13 | str << " "
14 | return str
15 | end
16 |
17 | %>
18 |
19 | Categories
20 | New Category
21 | <%= category_list(@top_cat) %>
22 |
23 | <% content_for :caboose_js do %>
24 |
27 | <% end %>
--------------------------------------------------------------------------------
/app/views/caboose/checkout/_confirm_table.html.erb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/views/caboose/checkout/_confirm_table.html.erb
--------------------------------------------------------------------------------
/app/views/caboose/checkout/_shipping_address.html.erb:
--------------------------------------------------------------------------------
1 | <% @shipping_address ||= @invoice.shipping_address %>
2 |
3 |
4 | <%= "#{@shipping_address.first_name} #{@shipping_address.last_name}" %>
5 | <%= @shipping_address.address1 %>
6 | <%= "#{@shipping_address.address2}" if @shipping_address.address2 and not @shipping_address.address2.empty? %>
7 | <%= "#{@shipping_address.city}, #{@shipping_address.state} #{@shipping_address.zip}" %>
8 |
9 |
10 | Edit shipping address
11 |
--------------------------------------------------------------------------------
/app/views/caboose/checkout/_shipping_method.html.erb:
--------------------------------------------------------------------------------
1 | <%= @invoice.shipping_method %> - <%= number_to_currency(@invoice.shipping) %>
2 | Edit shipping method
--------------------------------------------------------------------------------
/app/views/caboose/checkout/_shipping_method_form.html.erb:
--------------------------------------------------------------------------------
1 |
22 |
--------------------------------------------------------------------------------
/app/views/caboose/checkout/authnet_profile_form.html.erb:
--------------------------------------------------------------------------------
1 | <% if @logged_in_user.payment_profile_id %>
2 |
6 | <% else %>
7 |
11 | <% end %>
12 |
15 |
--------------------------------------------------------------------------------
/app/views/caboose/checkout/authnet_relay.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | # This relay page is rendered from the authorize.net server in a hidden iframe
3 | # on the host application's checkout page.
4 | #
5 | # Since security rules in browsers disallow javascript access to and from
6 | # iframes with pages in different domains, we need to send things back to
7 | # a page on our own domain so we can bubble up the response.
8 | #
9 | %>
10 |
11 |
12 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/views/caboose/checkout/authnet_response.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | # This page is rendered from the host application's domain, and thus is allowed
3 | # to access the parent's DOM via javascript.
4 | #
5 | %>
6 |
7 |
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/views/caboose/checkout/authnet_response_handler.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/caboose/checkout/billing.html.erb:
--------------------------------------------------------------------------------
1 | Checkout
2 | <%= render :partial => '/caboose/checkout/cart' %>
3 |
4 | Shipping Address
5 | <%= render :partial => '/caboose/checkout/shipping_address' %>
6 |
7 | Shipping Method
8 | <%= render :partial => '/caboose/checkout/shipping_method' %>
9 |
10 | Billing Information
11 | <%= render :partial => '/caboose/checkout/billing_form' %>
12 |
--------------------------------------------------------------------------------
/app/views/caboose/checkout/discount.html.erb:
--------------------------------------------------------------------------------
1 | Checkout
2 | <%= render :partial => '/caboose/checkout/cart' %>
3 |
4 | Shipping Address
5 | <%= render :partial => '/caboose/checkout/shipping_address' %>
6 |
7 | Shipping Method
8 | <%= render :partial => '/caboose/checkout/shipping_method' %>
9 |
10 | Discount
11 | <%= render :partial => '/caboose/checkout/invoice_discount' %>
12 |
--------------------------------------------------------------------------------
/app/views/caboose/checkout/empty.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 | <% content_for :caboose_css do %>
8 | <%= stylesheet_link_tag 'caboose/message_boxes' %>
9 | <% end %>
--------------------------------------------------------------------------------
/app/views/caboose/checkout/error.html.erb:
--------------------------------------------------------------------------------
1 | Sorry, there was an error processing your transaction.
2 | Try Again
3 |
--------------------------------------------------------------------------------
/app/views/caboose/checkout/gift_cards.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Gift Cards
4 |
5 |
6 |
7 | Redeem Code
8 |
9 |
10 |
11 |
12 |
17 |
18 |
19 | <%= content_for :caboose_js do %>
20 | <%= javascript_include_tag 'caboose/model/all' %>
21 | <%= javascript_include_tag 'caboose/cart' %>
22 | <%= javascript_include_tag 'caboose/checkout_gift_cards' %>
23 |
34 | <% end %>
35 | <%= content_for :caboose_css do %>
36 | <%= stylesheet_link_tag 'caboose/cart' %>
37 | <%= stylesheet_link_tag 'caboose/checkout' %>
38 | <% end %>
39 |
--------------------------------------------------------------------------------
/app/views/caboose/checkout/login.html.erb:
--------------------------------------------------------------------------------
1 | Login or Signup
2 |
3 |
--------------------------------------------------------------------------------
/app/views/caboose/checkout/payscape_relay.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <% if Caboose::payment_processor == 'payscape' %>
5 |
11 | <% end %>
12 |
13 | <% if Caboose::payment_processor == 'authorize.net' %>
14 |
20 | <% end %>
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/views/caboose/checkout/relay_old.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/views/caboose/checkout/relay_postMessage.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/views/caboose/events/show.html.erb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/views/caboose/events/show.html.erb
--------------------------------------------------------------------------------
/app/views/caboose/extras/error.html.erb:
--------------------------------------------------------------------------------
1 | Error
2 | <%= @error %>
3 | Login as a different user
--------------------------------------------------------------------------------
/app/views/caboose/extras/error404.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Oops!
4 |
The page you are looking for could not be found.
5 |
--------------------------------------------------------------------------------
/app/views/caboose/extras/error_invalid_site.html.erb:
--------------------------------------------------------------------------------
1 | Invalid Site
2 |
3 | It doesn't look like this site is configured for the current domain. Please configure your sites .
4 |
--------------------------------------------------------------------------------
/app/views/caboose/invoices/_admin_footer.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/views/caboose/invoices/_quickbooks_invoice.html.erb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/views/caboose/invoices/_quickbooks_invoice.html.erb
--------------------------------------------------------------------------------
/app/views/caboose/invoices/admin_delete_form.html.erb:
--------------------------------------------------------------------------------
1 | <%= render :partial => 'invoices/admin_header' %>
2 |
3 |
6 |
7 | <%= render :partial => 'invoices/admin_footer' %>
8 |
9 | <% content_for :caboose_js do %>
10 |
18 | <% end %>
19 |
--------------------------------------------------------------------------------
/app/views/caboose/invoices/admin_invalid_order.html.erb:
--------------------------------------------------------------------------------
1 |
2 | Invalid Invoice Number
3 |
4 |
--------------------------------------------------------------------------------
/app/views/caboose/invoices_mailer/shipping_invoice_ready.html.erb:
--------------------------------------------------------------------------------
1 | Order is ready for shipping
2 |
--------------------------------------------------------------------------------
/app/views/caboose/invoices_mailer/test_email.html.erb:
--------------------------------------------------------------------------------
1 | Test <%= DateTime.now.strftime('%H:%M:%S') %>
--------------------------------------------------------------------------------
/app/views/caboose/login_mailer/forgot_password_email.html.erb:
--------------------------------------------------------------------------------
1 | <% if @user && @user.site %>
2 | <%
3 | site = @user.site
4 | pd = site.primary_domain
5 | url = "http://#{pd.domain}/login/reset-password/#{@user.password_reset_id}"
6 | %>
7 | To reset your password for <%= site.description %>, click the link below:
8 | <%= url %>
9 | <% end %>
--------------------------------------------------------------------------------
/app/views/caboose/login_mailer/locked_account.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | d = @user.site.primary_domain
3 | d = @user.site.domains.first if d.nil?
4 | %>
5 |
6 | Account Locked
7 | The account for <%= @user.email %> on the site "<%= @user.site.description %>" has been locked due to too many failed login attempts.
8 | Manage this user
9 |
--------------------------------------------------------------------------------
/app/views/caboose/media/admin_edit_description.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | m = @media
3 | %>
4 | Edit Description
5 |
6 |
7 |
8 |
9 |
10 | <% content_for :caboose_js do %>
11 | <%= javascript_include_tag "caboose/model/all" %>
12 |
32 | <% end %>
33 |
--------------------------------------------------------------------------------
/app/views/caboose/modal/index.html.erb:
--------------------------------------------------------------------------------
1 | <%= content_for :caboose_js do %>
2 |
9 | <% end %>
--------------------------------------------------------------------------------
/app/views/caboose/my_account_invoices/authnet_relay.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | # This relay page is rendered from the authorize.net server in a hidden iframe
3 | # on the host application's checkout page.
4 | #
5 | # Since security rules in browsers disallow javascript access to and from
6 | # iframes with pages in different domains, we need to send things back to
7 | # a page on our own domain so we can bubble up the response.
8 | #
9 | %>
10 |
11 |
12 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/views/caboose/my_account_invoices/authnet_response.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | # This page is rendered from the host application's domain, and thus is allowed
3 | # to access the parent's DOM via javascript.
4 | #
5 | %>
6 |
7 |
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/views/caboose/page_templates/admin_index.html.erb:
--------------------------------------------------------------------------------
1 | Page Templates
2 |
3 |
4 | <% @categories.each do |cat| %>
5 |
6 |
<%= cat.title %>
7 |
<%= cat.description %>
8 |
19 |
22 |
23 | <% end %>
24 |
--------------------------------------------------------------------------------
/app/views/caboose/pages/_admin_footer.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/views/caboose/pages/_content.html.erb:
--------------------------------------------------------------------------------
1 | <% page.blocks.each do |b| %>
2 | <%= render :partial => "caboose/blocks/#{b.block_type}", :locals => { :block => b, :empty_text => empty_text } %>
3 | <% end %>
--------------------------------------------------------------------------------
/app/views/caboose/pages/admin_delete_form.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <%= render :partial => 'caboose/pages/admin_header' %>
3 |
4 |
11 |
12 | <%= render :partial => 'caboose/pages/admin_footer' %>
13 | <% content_for :caboose_js do %>
14 | <%= javascript_include_tag "caboose/model/all" %>
15 |
31 | <% end %>
32 |
--------------------------------------------------------------------------------
/app/views/caboose/pages/admin_sitemap.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <%= render :partial => 'caboose/pages/admin_header' %>
3 |
4 | <%= raw pages_list(@page) %>
5 |
6 | <%= render :partial => 'caboose/pages/admin_footer' %>
7 |
--------------------------------------------------------------------------------
/app/views/caboose/pages/preview.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/caboose/pages/show.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <% if params[:edit] %>
3 | <% content_for :caboose_js do %>
4 | <%= javascript_include_tag "caboose/admin" %>
5 | <%= javascript_include_tag "caboose/model/all" %>
6 | <%
7 | #= javascript_include_tag 'caboose/admin_page_edit_content'
8 | %>
9 |
17 | <% end %>
18 | <% end %>
19 |
--------------------------------------------------------------------------------
/app/views/caboose/pages/update_pic.html.erb:
--------------------------------------------------------------------------------
1 | <% content_for :caboose_js do %>
2 |
16 | <% end %>
17 |
--------------------------------------------------------------------------------
/app/views/caboose/pages/update_resume.html.erb:
--------------------------------------------------------------------------------
1 | <% content_for :caboose_js do %>
2 |
14 | <% end %>
15 |
--------------------------------------------------------------------------------
/app/views/caboose/permissions/edit.html.erb:
--------------------------------------------------------------------------------
1 |
2 | Edit Permission
3 |
4 |
5 |
6 | <% content_for :caboose_js do %>
7 | <%= javascript_include_tag "caboose/model/all" %>
8 |
31 | <% end %>
32 |
--------------------------------------------------------------------------------
/app/views/caboose/permissions/index.html.erb:
--------------------------------------------------------------------------------
1 | Permissions
2 |
3 |
9 |
10 | <% if (@permissions.count > 0) %>
11 |
12 |
13 |
14 | <%= raw @gen.sortable_table_headings({
15 | 'resource' => 'Resource',
16 | 'action' => 'Action'
17 | })
18 | %>
19 |
20 | <% @permissions.each do |perm| %>
21 |
22 | <%= perm.resource %>
23 | <%= perm.action %>
24 |
25 | <% end %>
26 |
27 | <%= raw @gen.generate %>
28 |
29 | <% else %>
30 |
31 | There are no permissions.
32 |
33 | <% end %>
--------------------------------------------------------------------------------
/app/views/caboose/permissions/new.html.erb:
--------------------------------------------------------------------------------
1 |
2 | New permission
3 |
4 |
5 | <% content_for :caboose_js do %>
6 |
25 | <% end %>
26 |
--------------------------------------------------------------------------------
/app/views/caboose/post_categories/admin_index.html.erb:
--------------------------------------------------------------------------------
1 | Post Categories
2 | New Category
3 |
4 | <% cats = Caboose::PostCategory.where(:site_id => @site.id).reorder(:name).all %>
5 |
10 |
11 |
12 | <% content_for :caboose_js do %>
13 |
16 | <% end %>
17 |
--------------------------------------------------------------------------------
/app/views/caboose/posts/_admin_footer.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/views/caboose/posts/_admin_header.html.erb:
--------------------------------------------------------------------------------
1 | <% content_for :caboose_css do %>
2 | <% end %>
3 | <% content_for :caboose_js do %>
4 | <%= javascript_include_tag "caboose/model/all" %>
5 | <% end %>
6 |
7 | Edit Post
8 |
24 |
25 |
--------------------------------------------------------------------------------
/app/views/caboose/posts/admin_delete_form.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <%= render :partial => 'caboose/posts/admin_header' %>
3 |
4 |
10 |
11 | <%= render :partial => 'caboose/posts/admin_footer' %>
12 | <% content_for :caboose_js do %>
13 | <%= javascript_include_tag "caboose/model/all" %>
14 |
30 | <% end %>
31 |
--------------------------------------------------------------------------------
/app/views/caboose/posts/admin_edit_content_old.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <%= render :partial => 'caboose/posts/admin_header' %>
3 |
4 |
5 |
6 | <%= render :partial => 'caboose/posts/admin_footer' %>
7 |
8 | <% content_for :caboose_js do %>
9 | <%= javascript_include_tag "caboose/model/all" %>
10 |
30 |
31 | <%= raw caboose_tinymce %>
32 | <% end %>
33 |
--------------------------------------------------------------------------------
/app/views/caboose/posts/admin_edit_preview.html.erb:
--------------------------------------------------------------------------------
1 | <%= render :partial => 'caboose/posts/admin_header' %>
2 |
3 |
4 |
5 | <%= render :partial => 'caboose/posts/admin_footer' %>
6 |
7 | <% content_for :caboose_js do %>
8 | <%= javascript_include_tag "caboose/model/all" %>
9 |
24 | <%= raw caboose_tinymce %>
25 | <% end %>
26 |
--------------------------------------------------------------------------------
/app/views/caboose/posts/admin_new.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
New Post
3 |
4 |
5 |
6 |
7 |
8 | <% content_for :caboose_js do %>
9 | <%= javascript_include_tag "caboose/model/all" %>
10 |
37 | <% end %>
38 |
--------------------------------------------------------------------------------
/app/views/caboose/posts/admin_preview_post.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/caboose/posts/detail.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
<%= raw @post[:title] %>
4 |
5 |
<%= raw @article[:body] %>
6 |
7 |
--------------------------------------------------------------------------------
/app/views/caboose/posts/index.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 | <% if @posts && @posts.count > 0 %>
4 |
17 | <% else %>
18 |
There are no posts right now.
19 | <% end %>
20 |
21 |
22 | <% content_for :caboose_css do %>
23 |
29 | <% end %>
--------------------------------------------------------------------------------
/app/views/caboose/posts/show.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <% if params[:edit] %>
3 | <% content_for :caboose_js do %>
4 | <%= javascript_include_tag "caboose/admin" %>
5 | <%= javascript_include_tag "caboose/model/all" %>
6 | <%= javascript_include_tag 'caboose/admin_post_edit_content' %>
7 |
15 | <% end %>
16 | <% end %>
17 |
--------------------------------------------------------------------------------
/app/views/caboose/products/_admin_footer.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/views/caboose/products/_sort_options.html.erb:
--------------------------------------------------------------------------------
1 |
2 | Sort by:
3 |
4 |
5 | <% @sort_options.each do |sort_option| %>
6 | ><%= sort_option[:name] %>
7 | <% end %>
8 |
9 |
10 |
11 | <% content_for :caboose_js do %>
12 |
19 | <% end %>
20 |
--------------------------------------------------------------------------------
/app/views/caboose/products/admin_delete_form.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | p = @product
3 | %>
4 | <%= render :partial => 'caboose/products/admin_header' %>
5 |
6 |
9 |
10 | <%= render :partial => 'caboose/products/admin_footer' %>
11 |
12 | <% content_for :caboose_js do %>
13 |
21 | <% end %>
22 |
--------------------------------------------------------------------------------
/app/views/caboose/products/details.html.erb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/views/caboose/products/details.html.erb
--------------------------------------------------------------------------------
/app/views/caboose/products/index.html.erb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/views/caboose/products/index.html.erb
--------------------------------------------------------------------------------
/app/views/caboose/products/sales.html.erb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/app/views/caboose/products/sales.html.erb
--------------------------------------------------------------------------------
/app/views/caboose/redirects/admin_index.html.erb:
--------------------------------------------------------------------------------
1 | Permanent Redirects
2 |
3 | New Redirect
4 |
5 | <% if @redirects && @redirects.count > 0 %>
6 |
7 |
8 | Priority
9 | Is Regex
10 | Old URL
11 | New URL
12 |
13 | <% @redirects.each do |pr| %>
14 |
15 | <%= pr.priority %>
16 | <%= pr.is_regex ? 'Yes' : 'No' %>
17 | <%= raw pr.old_url %>
18 | <%= raw pr.new_url %>
19 |
20 | <% end %>
21 |
22 | <% else %>
23 | There are no redirects right now.
24 | <% end %>
25 |
--------------------------------------------------------------------------------
/app/views/caboose/roles/index.html.erb:
--------------------------------------------------------------------------------
1 | Roles
2 | New Role
3 |
4 |
5 |
6 | Name
7 |
8 | <% @roles.each do |r| %>
9 |
10 | <%= r['text'] %>
11 |
12 | <% end %>
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/views/caboose/settings/edit.html.erb:
--------------------------------------------------------------------------------
1 |
2 | Edit Setting
3 |
4 |
5 |
6 |
7 |
8 | <% content_for :caboose_js do %>
9 | <%= javascript_include_tag "caboose/model/all" %>
10 |
26 | <% end %>
27 |
--------------------------------------------------------------------------------
/app/views/caboose/settings/index.html.erb:
--------------------------------------------------------------------------------
1 | Settings
2 |
3 |
9 |
10 | <% if (@settings.count > 0) %>
11 |
12 |
13 |
14 | <%= raw @gen.sortable_table_headings({
15 | 'name' => 'Name',
16 | 'value' => 'Value'
17 | })
18 | %>
19 |
20 | <% @settings.each do |setting| %>
21 |
22 | <%= setting.name %>
23 | <%= setting.value %>
24 |
25 | <% end %>
26 |
27 | <%= raw @gen.generate %>
28 |
29 | <% else %>
30 |
31 | There are no settings.
32 |
33 | <% end %>
--------------------------------------------------------------------------------
/app/views/caboose/settings/new.html.erb:
--------------------------------------------------------------------------------
1 |
2 | New Setting
3 |
4 |
5 | <% content_for :caboose_js do %>
6 |
25 | <% end %>
26 |
--------------------------------------------------------------------------------
/app/views/caboose/sites/_admin_footer.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/views/caboose/sites/admin_new.html.erb:
--------------------------------------------------------------------------------
1 |
2 | New Site
3 |
4 |
10 |
11 | <% content_for :caboose_js do %>
12 |
33 | <% end %>
34 |
--------------------------------------------------------------------------------
/app/views/caboose/sites/robots.text.erb:
--------------------------------------------------------------------------------
1 | <% if @site && !@site.robots_txt.blank? %><%== @site.robots_txt %>
2 | <% else %>
3 | User-agent: *
4 | Disallow: /admin
5 | <% end %>
--------------------------------------------------------------------------------
/app/views/caboose/store/_admin_footer.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/views/caboose/store/_admin_header.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <% content_for :caboose_css do %>
3 |
6 | <% end %>
7 |
8 | <% content_for :caboose_js do %>
9 | <%= javascript_include_tag "caboose/model/all" %>
10 | <% end %>
11 |
12 | Edit Store
13 |
14 | <%
15 | tabs = {
16 | 'General' => "/admin/store",
17 | 'Defaults' => "/admin/store/defaults",
18 | 'Payment Processor' => "/admin/store/payment",
19 | 'Tax' => "/admin/store/tax",
20 | 'Order Packages' => "/admin/store/packages",
21 | 'Shipping' => "/admin/store/shipping"
22 | }
23 |
24 | %>
25 | <% tabs.each do |text, href| %>
26 | ><%= raw text %>
27 | <% end %>
28 |
29 |
30 |
--------------------------------------------------------------------------------
/app/views/caboose/users/_admin_footer.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/views/caboose/users/admin_update_pic.html.erb:
--------------------------------------------------------------------------------
1 | <% content_for :caboose_js do %>
2 |
16 | <% end %>
17 |
--------------------------------------------------------------------------------
/app/views/layouts/caboose/_content.html.erb:
--------------------------------------------------------------------------------
1 | <% if (yield && yield.strip.length > 0) %>
2 | <%= yield %>
3 | <% elsif (!@page.nil?) %>
4 | <%= @page.title %>
5 | <%= raw @page.content %>
6 | <% end %>
--------------------------------------------------------------------------------
/app/views/layouts/caboose/_station_link.html.erb:
--------------------------------------------------------------------------------
1 | <%
2 | if (@user.nil? || @user == Caboose::User.logged_out_user)
3 | %>Login <%
4 | else
5 | %>Control Panel <%
6 | end
7 | %>
--------------------------------------------------------------------------------
/app/views/layouts/caboose/_top_nav.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | <%= render :partial => 'layouts/caboose/station_link' %>
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/views/layouts/caboose/admin_empty.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Caboose Admin
6 | <%= stylesheet_link_tag "caboose/admin", :media => "all" %>
7 | <% if File.exists?("#{Rails.root}/app/assets/stylesheets/admin.css") %>
8 | <%= stylesheet_link_tag "admin", :media => "all" %>
9 | <% end %>
10 | <%= yield :caboose_css %>
11 | <%= csrf_meta_tags %>
12 |
13 |
14 |
15 | <%= javascript_include_tag "caboose/admin" %>
16 | <%= yield :caboose_js %>
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/views/layouts/caboose/empty.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Empty Page
6 |
7 |
8 | <%= yield %>
9 |
10 |
--------------------------------------------------------------------------------
/app/views/layouts/caboose/error404.html.erb:
--------------------------------------------------------------------------------
1 | Error: File not found
2 | <%= yield %>
--------------------------------------------------------------------------------
/app/views/layouts/caboose/no_layout.html.erb:
--------------------------------------------------------------------------------
1 | <%= yield %>
2 |
--------------------------------------------------------------------------------
/app/views/layouts/caboose/store/_banner.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
// <%= @page.title %>
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/views/layouts/caboose/store/_banner2.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
// <%= @page.title %>
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/views/layouts/caboose/store/_sidebar.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
27 |
--------------------------------------------------------------------------------
/app/views/layouts/caboose/store/application.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Tuskwear
5 | <%= stylesheet_link_tag "application", :media => "all" %>
6 | <%= javascript_include_tag "application" %>
7 | <%= csrf_meta_tags %>
8 |
27 |
28 |
29 |
30 | <%= yield %>
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/app/views/layouts/caboose/store/authorize_net.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Direct Post Sample App
5 |
14 |
15 |
16 | <%= yield %>
17 |
18 |
--------------------------------------------------------------------------------
/app/views/layouts/caboose/store/layout_default.html.erb:
--------------------------------------------------------------------------------
1 | <%= render 'layouts/header' %>
2 |
3 |
4 | <% if (yield && yield.strip.length > 0) %>
5 | <%= yield %>
6 | <% elsif (!@page.nil?) %>
7 | <%= raw @page.content %>
8 | <% end %>
9 |
10 | <%= render 'layouts/footer' %>
--------------------------------------------------------------------------------
/app/views/layouts/caboose/store/layout_single.html.erb:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/views/layouts/caboose/store/layout_testing.html.erb:
--------------------------------------------------------------------------------
1 |
2 | <%= foo %>
3 |
4 | <%= raw @page.content %>
5 |
--------------------------------------------------------------------------------
/changelog.txt:
--------------------------------------------------------------------------------
1 | Version 0.2.1
2 |
3 | 0.2.1 Changed to modal dialogs for admin pages.
4 |
5 |
6 |
--------------------------------------------------------------------------------
/config/routes.rb:
--------------------------------------------------------------------------------
1 | Caboose::Engine.routes.draw do
2 |
3 | # Note: this needs to be at the top of the application routes file for caboose routes to work
4 | #if Caboose::use_comment_routes
5 | # eval(Caboose::CommentRoutes.controller_routes)
6 | #end
7 |
8 | get '*path' => 'pages#show'
9 | root :to => 'pages#show'
10 |
11 | end
12 |
--------------------------------------------------------------------------------
/config/tinymce.yml:
--------------------------------------------------------------------------------
1 |
2 | caboose:
3 | theme_advanced_toolbar_location: top
4 | theme_advanced_toolbar_align: left
5 | theme_advanced_statusbar_location: bottom
6 | theme_advanced_buttons3_add:
7 | - tablecontrols
8 | - fullscreen
9 | plugins:
10 | - table
11 | - fullscreen
--------------------------------------------------------------------------------
/db/migrate/000_add_linked_resources_to_page.rb:
--------------------------------------------------------------------------------
1 | class AddLinkedResourcesToPage
2 | def up(c)
3 | c.add_column :pages, :linked_resources, :text, :default => ''
4 | end
5 |
6 | def down(c)
7 | c.remove_column :pages, :linked_resources
8 | end
9 | end
--------------------------------------------------------------------------------
/eval_test.rb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/eval_test.rb
--------------------------------------------------------------------------------
/lib/caboose/version.rb:
--------------------------------------------------------------------------------
1 | module Caboose
2 | VERSION = '1.0.2'
3 | end
4 |
--------------------------------------------------------------------------------
/psd/magnifying_glass.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/psd/magnifying_glass.psd
--------------------------------------------------------------------------------
/psd/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/psd/search.png
--------------------------------------------------------------------------------
/script/rails:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3 |
4 | ENGINE_ROOT = File.expand_path('../..', __FILE__)
5 | ENGINE_PATH = File.expand_path('../../lib/caboose/engine', __FILE__)
6 |
7 | require 'rails/all'
8 | require 'rails/engine/commands'
9 |
--------------------------------------------------------------------------------
/spec/factories/caboose_blocks.rb:
--------------------------------------------------------------------------------
1 | require 'faker'
2 |
3 | FactoryGirl.define do
4 | factory :caboose_block, :class => Caboose::Block do |f|
5 | f.page_id { nil }
6 | f.parent_id { nil }
7 | f.block_type_id { nil }
8 | f.sort_order { rand(0..10) }
9 | f.name { Faker::Internet.user_name }
10 | f.value { Faker::Lorem.sentence }
11 | f.file_file_name { "#{Faker::Lorem.word}.#{['pdf','xls','csv'].sample}" }
12 | f.file_content_type { ['application/pdf','application/xls'].sample }
13 | f.file_file_size { rand(100..100000) }
14 | f.file_updated_at { Faker::Time.between(1.month.ago, Time.now, :all) }
15 | f.image_file_name { "#{Faker::Lorem.word}.#{['gif','jpg','png'].sample}" }
16 | f.image_content_type { ['image/gif','image/jpeg','image/png'].sample }
17 | f.image_file_size { rand(100..100000) }
18 | f.image_updated_at { Faker::Time.between(1.month.ago, Time.now, :all) }
19 | end
20 | end
21 |
--------------------------------------------------------------------------------
/spec/factories/caboose_users.rb:
--------------------------------------------------------------------------------
1 | require 'faker'
2 |
3 | FactoryGirl.define do
4 | factory :caboose_user, :class => Caboose::User do |f|
5 | f.first_name { Faker::Name.first_name }
6 | f.last_name { Faker::Name.last_name }
7 | f.username { Faker::Internet.user_name }
8 | f.email { Faker::Internet.email }
9 | f.address { Faker::Address.street_address }
10 | f.address2 { Faker::Address.secondary_address }
11 | f.city { Faker::Address.city }
12 | f.state { Faker::Address.state }
13 | f.zip { Faker::Address.zip }
14 | f.phone { Faker::PhoneNumber.phone_number }
15 | f.fax { Faker::PhoneNumber.phone_number }
16 | f.password { Faker::Internet.password(20) }
17 | f.date_created { Faker::Time.between(1.year.ago, Time.now, :all) }
18 | end
19 | end
20 |
--------------------------------------------------------------------------------
/spec/models/user_spec.rb:
--------------------------------------------------------------------------------
1 |
2 | describe Caboose::User do
3 | it "has a valid factory" do
4 | expect(FactoryGirl.create(:caboose_user)).to be_valid
5 | end
6 | it "is invalid without an email" do
7 | expect(FactoryGirl.build(:caboose_user, :email => nil)).to_not be_valid
8 | end
9 | end
10 |
--------------------------------------------------------------------------------
/test/caboose_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 |
3 | class CabooseTest < ActiveSupport::TestCase
4 | test "truth" do
5 | assert_kind_of Module, Caboose
6 | end
7 | end
8 |
--------------------------------------------------------------------------------
/test/dummy/Rakefile:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env rake
2 | # Add your own tasks in files placed in lib/tasks ending in .rake,
3 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
4 |
5 | require File.expand_path('../config/application', __FILE__)
6 |
7 | Dummy::Application.load_tasks
8 |
--------------------------------------------------------------------------------
/test/dummy/app/assets/javascripts/application.js:
--------------------------------------------------------------------------------
1 | // This is a manifest file that'll be compiled into application.js, which will include all the files
2 | // listed below.
3 | //
4 | // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5 | // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6 | //
7 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8 | // the compiled file.
9 | //
10 | // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11 | // GO AFTER THE REQUIRES BELOW.
12 | //
13 | //= require jquery
14 | //= require jquery_ujs
15 | //= require_tree .
16 |
--------------------------------------------------------------------------------
/test/dummy/app/assets/stylesheets/application.css:
--------------------------------------------------------------------------------
1 | /*
2 | * This is a manifest file that'll be compiled into application.css, which will include all the files
3 | * listed below.
4 | *
5 | * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6 | * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7 | *
8 | * You're free to add application-wide styles to this file and they'll appear at the top of the
9 | * compiled file, but it's generally better to create a new file per style scope.
10 | *
11 | *= require_self
12 | *= require_tree .
13 | */
14 |
--------------------------------------------------------------------------------
/test/dummy/app/controllers/application_controller.rb:
--------------------------------------------------------------------------------
1 | class ApplicationController < ActionController::Base
2 | protect_from_forgery
3 | end
4 |
--------------------------------------------------------------------------------
/test/dummy/app/helpers/application_helper.rb:
--------------------------------------------------------------------------------
1 | module ApplicationHelper
2 | end
3 |
--------------------------------------------------------------------------------
/test/dummy/app/mailers/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/test/dummy/app/mailers/.gitkeep
--------------------------------------------------------------------------------
/test/dummy/app/models/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/test/dummy/app/models/.gitkeep
--------------------------------------------------------------------------------
/test/dummy/app/views/layouts/application.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Dummy
5 | <%= stylesheet_link_tag "application", :media => "all" %>
6 | <%= javascript_include_tag "application" %>
7 | <%= csrf_meta_tags %>
8 |
9 |
10 |
11 | <%= yield %>
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/test/dummy/config.ru:
--------------------------------------------------------------------------------
1 | # This file is used by Rack-based servers to start the application.
2 |
3 | require ::File.expand_path('../config/environment', __FILE__)
4 | run Dummy::Application
5 |
--------------------------------------------------------------------------------
/test/dummy/config/boot.rb:
--------------------------------------------------------------------------------
1 | require 'rubygems'
2 | gemfile = File.expand_path('../../../../Gemfile', __FILE__)
3 |
4 | if File.exist?(gemfile)
5 | ENV['BUNDLE_GEMFILE'] = gemfile
6 | require 'bundler'
7 | Bundler.setup
8 | end
9 |
10 | $:.unshift File.expand_path('../../../../lib', __FILE__)
--------------------------------------------------------------------------------
/test/dummy/config/database.yml:
--------------------------------------------------------------------------------
1 | # SQLite version 3.x
2 | # gem install sqlite3
3 | #
4 | # Ensure the SQLite 3 gem is defined in your Gemfile
5 | # gem 'sqlite3'
6 | development:
7 | adapter: sqlite3
8 | database: db/development.sqlite3
9 | pool: 5
10 | timeout: 5000
11 |
12 | # Warning: The database defined as "test" will be erased and
13 | # re-generated from your development database when you run "rake".
14 | # Do not set this db to the same as development or production.
15 | test:
16 | adapter: sqlite3
17 | database: db/test.sqlite3
18 | pool: 5
19 | timeout: 5000
20 |
21 | production:
22 | adapter: sqlite3
23 | database: db/production.sqlite3
24 | pool: 5
25 | timeout: 5000
26 |
--------------------------------------------------------------------------------
/test/dummy/config/environment.rb:
--------------------------------------------------------------------------------
1 | # Load the rails application
2 | require File.expand_path('../application', __FILE__)
3 |
4 | # Initialize the rails application
5 | Dummy::Application.initialize!
6 |
--------------------------------------------------------------------------------
/test/dummy/config/initializers/backtrace_silencers.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
4 | # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5 |
6 | # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
7 | # Rails.backtrace_cleaner.remove_silencers!
8 |
--------------------------------------------------------------------------------
/test/dummy/config/initializers/inflections.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Add new inflection rules using the following format
4 | # (all these examples are active by default):
5 | # ActiveSupport::Inflector.inflections do |inflect|
6 | # inflect.plural /^(ox)$/i, '\1en'
7 | # inflect.singular /^(ox)en/i, '\1'
8 | # inflect.irregular 'person', 'people'
9 | # inflect.uncountable %w( fish sheep )
10 | # end
11 | #
12 | # These inflection rules are supported but not enabled by default:
13 | # ActiveSupport::Inflector.inflections do |inflect|
14 | # inflect.acronym 'RESTful'
15 | # end
16 |
--------------------------------------------------------------------------------
/test/dummy/config/initializers/mime_types.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Add new mime types for use in respond_to blocks:
4 | # Mime::Type.register "text/richtext", :rtf
5 | # Mime::Type.register_alias "text/html", :iphone
6 |
--------------------------------------------------------------------------------
/test/dummy/config/initializers/secret_token.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | # Your secret key for verifying the integrity of signed cookies.
4 | # If you change this key, all old signed cookies will become invalid!
5 | # Make sure the secret is at least 30 characters and all random,
6 | # no regular words or you'll be exposed to dictionary attacks.
7 | Dummy::Application.config.secret_token = '80d8133eb1abe7ca94719bcbff9222b7043a4d156aeccf6a66be20bd2cab6491265a2efc566e26642e4b8e1a6da418ef15b2673d48d32db2c253ecbb1875f375'
8 |
--------------------------------------------------------------------------------
/test/dummy/config/initializers/session_store.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 |
3 | Dummy::Application.config.session_store :cookie_store, key: '_dummy_session'
4 |
5 | # Use the database for sessions instead of the cookie-based default,
6 | # which shouldn't be used to store highly confidential information
7 | # (create the session table with "rails generate session_migration")
8 | # Dummy::Application.config.session_store :active_record_store
9 |
--------------------------------------------------------------------------------
/test/dummy/config/initializers/wrap_parameters.rb:
--------------------------------------------------------------------------------
1 | # Be sure to restart your server when you modify this file.
2 | #
3 | # This file contains settings for ActionController::ParamsWrapper which
4 | # is enabled by default.
5 |
6 | # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
7 | ActiveSupport.on_load(:action_controller) do
8 | wrap_parameters format: [:json]
9 | end
10 |
11 | # Disable root element in JSON by default.
12 | ActiveSupport.on_load(:active_record) do
13 | self.include_root_in_json = false
14 | end
15 |
--------------------------------------------------------------------------------
/test/dummy/config/locales/en.yml:
--------------------------------------------------------------------------------
1 | # Sample localization file for English. Add more files in this directory for other locales.
2 | # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3 |
4 | en:
5 | hello: "Hello world"
6 |
--------------------------------------------------------------------------------
/test/dummy/config/routes.rb:
--------------------------------------------------------------------------------
1 | Rails.application.routes.draw do
2 |
3 | mount Caboose::Engine => "/caboose"
4 | end
5 |
--------------------------------------------------------------------------------
/test/dummy/db/test.sqlite3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/test/dummy/db/test.sqlite3
--------------------------------------------------------------------------------
/test/dummy/lib/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/test/dummy/lib/assets/.gitkeep
--------------------------------------------------------------------------------
/test/dummy/log/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/test/dummy/log/.gitkeep
--------------------------------------------------------------------------------
/test/dummy/public/404.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | The page you were looking for doesn't exist (404)
5 |
17 |
18 |
19 |
20 |
21 |
22 |
The page you were looking for doesn't exist.
23 |
You may have mistyped the address or the page may have moved.
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/test/dummy/public/422.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | The change you wanted was rejected (422)
5 |
17 |
18 |
19 |
20 |
21 |
22 |
The change you wanted was rejected.
23 |
Maybe you tried to change something you didn't have access to.
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/test/dummy/public/500.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | We're sorry, but something went wrong (500)
5 |
17 |
18 |
19 |
20 |
21 |
22 |
We're sorry, but something went wrong.
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/test/dummy/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/williambarry007/caboose-cms/7c112911318f94cc89dba86091903a3acaf0a833/test/dummy/public/favicon.ico
--------------------------------------------------------------------------------
/test/dummy/script/rails:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3 |
4 | APP_PATH = File.expand_path('../../config/application', __FILE__)
5 | require File.expand_path('../../config/boot', __FILE__)
6 | require 'rails/commands'
7 |
--------------------------------------------------------------------------------
/test/integration/navigation_test.rb:
--------------------------------------------------------------------------------
1 | require 'test_helper'
2 |
3 | class NavigationTest < ActionDispatch::IntegrationTest
4 | fixtures :all
5 |
6 | # test "the truth" do
7 | # assert true
8 | # end
9 | end
10 |
11 |
--------------------------------------------------------------------------------
/test/test_helper.rb:
--------------------------------------------------------------------------------
1 | # Configure Rails Environment
2 | ENV["RAILS_ENV"] = "test"
3 |
4 | require File.expand_path("../dummy/config/environment.rb", __FILE__)
5 | require "rails/test_help"
6 |
7 | Rails.backtrace_cleaner.remove_silencers!
8 |
9 | # Load support files
10 | Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
11 |
12 | # Load fixtures from the engine
13 | if ActiveSupport::TestCase.method_defined?(:fixture_path=)
14 | ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
15 | end
16 |
--------------------------------------------------------------------------------