From 56d7747f54e86993415b76c92e101608e5ea44e2 Mon Sep 17 00:00:00 2001 From: James Thompson Date: Wed, 14 Mar 2012 11:40:16 +0200 Subject: initial commit --- .../refinery/banners/admin/banners_controller.rb | 12 ++++ .../refinery/banners/banners_controller.rb | 34 ++++++++++ app/models/refinery/banners/banner.rb | 27 ++++++++ .../banners/admin/banners/_actions.html.erb | 25 ++++++++ .../banners/admin/banners/_banner.html.erb | 20 ++++++ .../banners/admin/banners/_banners.html.erb | 2 + .../refinery/banners/admin/banners/_form.html.erb | 74 ++++++++++++++++++++++ .../banners/admin/banners/_records.html.erb | 18 ++++++ .../banners/admin/banners/_sortable_list.html.erb | 5 ++ .../refinery/banners/admin/banners/edit.html.erb | 1 + .../refinery/banners/admin/banners/index.html.erb | 7 ++ .../refinery/banners/admin/banners/new.html.erb | 1 + .../refinery/banners/shared/_banner_image.html.erb | 1 + .../refinery/banners/shared/_banners.html.erb | 9 +++ 14 files changed, 236 insertions(+) create mode 100644 app/controllers/refinery/banners/admin/banners_controller.rb create mode 100644 app/controllers/refinery/banners/banners_controller.rb create mode 100644 app/models/refinery/banners/banner.rb create mode 100644 app/views/refinery/banners/admin/banners/_actions.html.erb create mode 100644 app/views/refinery/banners/admin/banners/_banner.html.erb create mode 100644 app/views/refinery/banners/admin/banners/_banners.html.erb create mode 100644 app/views/refinery/banners/admin/banners/_form.html.erb create mode 100644 app/views/refinery/banners/admin/banners/_records.html.erb create mode 100644 app/views/refinery/banners/admin/banners/_sortable_list.html.erb create mode 100644 app/views/refinery/banners/admin/banners/edit.html.erb create mode 100644 app/views/refinery/banners/admin/banners/index.html.erb create mode 100644 app/views/refinery/banners/admin/banners/new.html.erb create mode 100644 app/views/refinery/banners/shared/_banner_image.html.erb create mode 100644 app/views/refinery/banners/shared/_banners.html.erb (limited to 'app') diff --git a/app/controllers/refinery/banners/admin/banners_controller.rb b/app/controllers/refinery/banners/admin/banners_controller.rb new file mode 100644 index 0000000..1992bcf --- /dev/null +++ b/app/controllers/refinery/banners/admin/banners_controller.rb @@ -0,0 +1,12 @@ +module Refinery + module Banners + module Admin + class BannersController < ::Refinery::AdminController + + crudify :'refinery/banners/banner', + :title_attribute => 'name', :xhr_paging => true + + end + end + end +end diff --git a/app/controllers/refinery/banners/banners_controller.rb b/app/controllers/refinery/banners/banners_controller.rb new file mode 100644 index 0000000..5ada5e0 --- /dev/null +++ b/app/controllers/refinery/banners/banners_controller.rb @@ -0,0 +1,34 @@ +module Refinery + module Banners + class BannersController < ::ApplicationController + + before_filter :find_all_banners + before_filter :find_page + + def index + # you can use meta fields from your model instead (e.g. browser_title) + # by swapping @page for @banner in the line below: + present(@page) + end + + def show + @banner = Banner.find(params[:id]) + + # you can use meta fields from your model instead (e.g. browser_title) + # by swapping @page for @banner in the line below: + present(@page) + end + + protected + + def find_all_banners + @banners = Banner.order('position ASC') + end + + def find_page + @page = ::Refinery::Page.where(:link_url => "/banners").first + end + + end + end +end diff --git a/app/models/refinery/banners/banner.rb b/app/models/refinery/banners/banner.rb new file mode 100644 index 0000000..eaa1713 --- /dev/null +++ b/app/models/refinery/banners/banner.rb @@ -0,0 +1,27 @@ +module Refinery + module Banners + class Banner < Refinery::Core::BaseModel + self.table_name = 'refinery_banners' + + acts_as_indexed :fields => [:name, :url, :title, :description] + + validates :name, :presence => true + validates_presence_of :start_date + validates_length_of :title, :in => 0..255, :allow_nil => true + validates_length_of :description, :in => 0..255, :allow_nil => true + + belongs_to :image, :class_name => '::Refinery::Image' + has_and_belongs_to_many :pages, :class_name => '::Refinery::Page', :join_table => 'refinery_banners_pages' + + scope :not_expired, lambda { + banners = Arel::Table.new(::Refinery::Banners::Banner.table_name) + where(banners[:expiry_date].eq(nil).or(banners[:expiry_date].gt(Time.now))) + } + scope :active, where(:is_active => true) + scope :published, lambda { + not_expired.active.where("start_date <= ?", Time.now).order(:position) + } + + end + end +end \ No newline at end of file diff --git a/app/views/refinery/banners/admin/banners/_actions.html.erb b/app/views/refinery/banners/admin/banners/_actions.html.erb new file mode 100644 index 0000000..f2a1681 --- /dev/null +++ b/app/views/refinery/banners/admin/banners/_actions.html.erb @@ -0,0 +1,25 @@ + diff --git a/app/views/refinery/banners/admin/banners/_banner.html.erb b/app/views/refinery/banners/admin/banners/_banner.html.erb new file mode 100644 index 0000000..9a362a2 --- /dev/null +++ b/app/views/refinery/banners/admin/banners/_banner.html.erb @@ -0,0 +1,20 @@ +
  • + + <%= banner.name %> + + + + + <%= link_to refinery_icon_tag("application_go.png"), refinery.banners_banner_path(banner), + :title => t('.view_live_html'), + :target => "_blank" %> + + <%= link_to refinery_icon_tag("application_edit.png"), refinery.edit_banners_admin_banner_path(banner), + :title => t('.edit') %> + <%= link_to refinery_icon_tag("delete.png"), refinery.banners_admin_banner_path(banner), + :class => "cancel confirm-delete", + :title => t('.delete'), + :confirm => t('message', :scope => 'refinery.admin.delete', :title => banner.name), + :method => :delete %> + +
  • diff --git a/app/views/refinery/banners/admin/banners/_banners.html.erb b/app/views/refinery/banners/admin/banners/_banners.html.erb new file mode 100644 index 0000000..0027493 --- /dev/null +++ b/app/views/refinery/banners/admin/banners/_banners.html.erb @@ -0,0 +1,2 @@ +<%= will_paginate @banners if Refinery::Banners::Admin::BannersController.pageable? %> +<%= render 'sortable_list' %> diff --git a/app/views/refinery/banners/admin/banners/_form.html.erb b/app/views/refinery/banners/admin/banners/_form.html.erb new file mode 100644 index 0000000..2cd827f --- /dev/null +++ b/app/views/refinery/banners/admin/banners/_form.html.erb @@ -0,0 +1,74 @@ +<%= form_for [refinery, :banners_admin, @banner] do |f| -%> + <%= render '/refinery/admin/error_messages', + :object => @banner, + :include_object_name => true %> + + <%= hidden_field_tag 'banner[page_ids][]' %> + +
    + <%= f.label :name -%> + <%= f.text_field :name, :class => 'larger widest' -%> + +
    + +
    + <%= f.label :title -%> + <%= f.text_field :title -%> + +
    + +
    + <%= f.label :description -%> + <%= f.text_field :description -%> + +
    + +
    + <%= f.label :image -%> + <%= render '/refinery/admin/image_picker', + :f => f, + :field => :image_id, + :image => @banner.image, + :toggle_image_display => false %> + +
    + +
    + <%= f.label :url -%> + <%= f.text_field :url -%> + +
    + +
    + <%= f.label :is_active -%> + <%= f.check_box :is_active, :checked => @banner[:is_active] -%> + +
    + +
    + <%= f.label :start_date -%> + <%= f.date_select :start_date -%> + +
    + +
    + <%= f.label :expiry_date -%> + <%= f.date_select :expiry_date -%> + +
    + +
    + <%= f.label :pages %> + <% Refinery::Page.all.each do |page| %> +
    + <%= check_box_tag "banner[page_ids][]", page.id, @banner.pages.include?(page) %> + <%= page.title %> +
    + <% end %> +
    + + <%= render '/refinery/admin/form_actions', :f => f, + :continue_editing => false, + :delete_title => t('delete', :scope => 'refinery.banners.admin.banners.banner'), + :delete_confirmation => t('message', :scope => 'refinery.admin.delete', :title => @banner.name) %> +<% end -%> diff --git a/app/views/refinery/banners/admin/banners/_records.html.erb b/app/views/refinery/banners/admin/banners/_records.html.erb new file mode 100644 index 0000000..109fb04 --- /dev/null +++ b/app/views/refinery/banners/admin/banners/_records.html.erb @@ -0,0 +1,18 @@ +<% if searching? %> +

    <%= t('results_for', :scope => 'refinery.admin.search', :query => params[:search]) %>

    +<% end %> +
    + <% if @banners.any? %> + <%= render 'banners' %> + <% else %> +

    + <% unless searching? %> + + <%= t('.no_items_yet') %> + + <% else %> + <%= t('no_results', :scope => 'refinery.admin.search') %> + <% end %> +

    + <% end %> +
    diff --git a/app/views/refinery/banners/admin/banners/_sortable_list.html.erb b/app/views/refinery/banners/admin/banners/_sortable_list.html.erb new file mode 100644 index 0000000..0a0aac1 --- /dev/null +++ b/app/views/refinery/banners/admin/banners/_sortable_list.html.erb @@ -0,0 +1,5 @@ + +<%= render '/refinery/admin/sortable_list', + :continue_reordering => (local_assigns.keys.include?(:continue_reordering)) ? continue_reordering : true %> diff --git a/app/views/refinery/banners/admin/banners/edit.html.erb b/app/views/refinery/banners/admin/banners/edit.html.erb new file mode 100644 index 0000000..2d34363 --- /dev/null +++ b/app/views/refinery/banners/admin/banners/edit.html.erb @@ -0,0 +1 @@ +<%= render 'form' %> diff --git a/app/views/refinery/banners/admin/banners/index.html.erb b/app/views/refinery/banners/admin/banners/index.html.erb new file mode 100644 index 0000000..5413e3c --- /dev/null +++ b/app/views/refinery/banners/admin/banners/index.html.erb @@ -0,0 +1,7 @@ +
    + <%= render 'records' %> +
    + +<%= render '/refinery/admin/make_sortable', :tree => false if !searching? and ::Refinery::Banners::Admin::BannersController.sortable? and ::Refinery::Banners::Banner.count > 1 %> diff --git a/app/views/refinery/banners/admin/banners/new.html.erb b/app/views/refinery/banners/admin/banners/new.html.erb new file mode 100644 index 0000000..2d34363 --- /dev/null +++ b/app/views/refinery/banners/admin/banners/new.html.erb @@ -0,0 +1 @@ +<%= render 'form' %> diff --git a/app/views/refinery/banners/shared/_banner_image.html.erb b/app/views/refinery/banners/shared/_banner_image.html.erb new file mode 100644 index 0000000..74eebb4 --- /dev/null +++ b/app/views/refinery/banners/shared/_banner_image.html.erb @@ -0,0 +1 @@ +<%= image_fu(banner_image.image, '960x310#c') %> \ No newline at end of file diff --git a/app/views/refinery/banners/shared/_banners.html.erb b/app/views/refinery/banners/shared/_banners.html.erb new file mode 100644 index 0000000..d436cc7 --- /dev/null +++ b/app/views/refinery/banners/shared/_banners.html.erb @@ -0,0 +1,9 @@ +
    + <% if @page.present? and @page.banners.published.present? %> + <%= render :partial => 'refinery/banners/shared/banner_image', :collection => @page.banners.published %> + <% elsif @banners.present? then %> + <%= render :partial => 'refinery/banners/shared/banner_image', :collection => @banners %> + <% else %> + + <% end %> +
    \ No newline at end of file -- cgit v1.2.3