Basic function for AdBanner

This commit is contained in:
Matthew Kaito Juyuan Fu 2012-01-31 18:31:31 +08:00
parent ec428f240c
commit dcecb78afb
15 changed files with 298 additions and 0 deletions

View File

@ -0,0 +1,18 @@
$("button.multi_files").live("click", function(){
$(this).parent().prev("ul").append("<li>" + $(this).val() +'Time:'+ $(this).siblings('.ad_time').val()+'Link:'+$(this).siblings('.ad_out_link').val()+ "</li>");
new_node = $(this).parent().clone();
$(this).parent().css("display","none");
new_node.children('input.multi_files').val("");
$(this).parent().before(new_node);
return false;
});
$('a.remove_mark').live("click",function(){
$(this).prev("input").val("true");
$(this).parent().css("text-decoration","line-through")
$(this).parent().removeClass("r_snapshot");
$(this).next().remove();
$(this).remove();
return false;
});

View File

@ -0,0 +1,43 @@
class Admin::AdBannersController < ApplicationController
layout "admin"
before_filter :authenticate_user!
before_filter :is_admin?
def destroy
@ad_banner = AdBanner.find(params[:id])
@ad_banner.destroy
redirect_to admin_ad_banners_url
end
def show
@ad_banner = AdBanner.find(params[:id])
end
def new
@ad_banner = AdBanner.new
end
def create
@ad_banner = AdBanner.new(params[:ad_banner])
@ad_banner.save
redirect_to admin_ad_banners_url
end
def edit
@ad_banner = AdBanner.find(params[:id])
end
def update
@ad_banner = AdBanner.find(params[:id])
@ad_banner.update_attributes(params[:ad_banner])
@ad_banner.save
redirect_to admin_ad_banners_url
end
def index
@ad_banners = AdBanner.all
end
end

View File

@ -0,0 +1,2 @@
module Admin::AdBannerHelper
end

44
app/models/ad_banner.rb Normal file
View File

@ -0,0 +1,44 @@
class AdBanner
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::MultiParameterAttributes
field :title
field :picture_position
field :post_date,type: Date
field :unpost_date,type: Date
field :context
field :direct_to_after_click,type: Boolean
field :ad_style #TODO Design should explain
before_save :save_or_destroy
embeds_many :ad_images, :cascade_callbacks => true
def new_ad_images=(*attrs)
attrs[0].each do |attr| #Loop by JSs,Themes,Imgs
unless attr[:file].nil?
self.ad_images << AdImage.new(attr)
end
end
end
def existing_ad_images=(*attrs)
attrs[0].each do |attr| #Loop by JSs,Themes,Imgs
ad_image = self.ad_images.find attr[0]
ad_image.update_attributes(attr[1])
end
end
def save_or_destroy
self.ad_images.each do |ad_image|
if ad_image.to_save?
ad_image.save
end
if ad_image.to_destroy?
ad_image.destroy
end
end
end
end

16
app/models/ad_image.rb Normal file
View File

@ -0,0 +1,16 @@
class AdImage
include Mongoid::Document
include Mongoid::Timestamps
mount_uploader :file, ImageUploader
field :time_to_next #Weight
field :picture_intro
field :out_link
field :to_save, :type => Boolean
field :to_destroy, :type => Boolean
embedded_in :ad_banner
end

View File

@ -0,0 +1,7 @@
<div id="basic_block" class="roles_block">
<%= image_tag ad_image.file %>
Time to next: <%= ad_image.time_to_next %>
Intro: <%= ad_image.picture_intro %>
Out Link <%= link_to ad_image.out_link %>
<%= render :partial => "ad_image_update", :locals => { :ad_image => ad_image } %>
</div>

View File

@ -0,0 +1,3 @@
Time: <%= f.text_field :time_to_next ,:class=> 'ad_time'%>
Link:<%= f.text_field :out_link ,:class=> 'ad_out_link'%>
<%= f.hidden_field :to_save %>

View File

@ -0,0 +1,8 @@
<%= fields_for "ad_banner[existing_ad_images][#{ad_image.id}]", ad_image do |f| %>
<p class="new_file">
Destroy?<%= f.check_box :to_destroy %>
<%= render :partial => "ad_image_form", :locals => { :f => f } %>
</p>
<% end %>

View File

@ -0,0 +1,51 @@
<% content_for :page_specific_css do %>
<%= stylesheet_link_tag "ad_banner" %>
<% end %>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "ad_banner" %>
<% end %>
<p>
<%= f.label :title, t('admin.title') %>
<%= f.text_field :title, :class => 'text' %>
</p>
<p>
<%= f.label :picture_position, t('admin.picture_position') %>
<%= f.text_field :picture_position, :class => 'text' %>
</p>
<p>
<%= f.label :post_date, t('admin.post_date') %>
<%= f.date_select :post_date, :order => [:year, :month, :day], :use_month_numbers => true %>
</p>
<p>
<%= f.label :unpost_date, t('admin.unpost_date') %>
<%= f.date_select :unpost_date, :order => [:year, :month, :day], :use_month_numbers => true %>
</p>
<p>
<%= f.label :context, t('admin.context') %>
<%= f.text_field :context, :class => 'text' %>
</p>
<p>
<%= f.label :direct_to_after_click, t('admin.direct_to_after_click') %>
<%= f.check_box :direct_to_after_click %>
</p>
<p>
<%= f.label :ad_images, t('admin.ad_images') %>
<ul>
<% @ad_banner.ad_images.each do |ad_image| %>
<%= render :partial => 'ad_image', :object => ad_image, :locals => { :field_name => "ad_images", :f => f, :classes => "r_destroy, r_edit" } %>
<% end %>
</ul>
<%= render :partial => 'new_add_banner_file', :object => @ad_banner.ad_images.build, :locals => { :field_name => "new_ad_images[]", :f => f, :classes => "r_destroy" } %>
</p>
<p>
<%#= render :partial => 'new_design_file', :object => @design.themes.build, :locals => { :field_name => "themes", :f => f, :classes => "r_destroy" } %>
</p>

View File

@ -0,0 +1,7 @@
<%= f.fields_for field_name, new_add_banner_file do |f| %>
<p class="new_file">
<%= f.file_field :file %>
<%= render :partial => "ad_image_form", :locals => { :f => f } %>
<%= button_tag '+', :class => "multi_files"%>
</p>
<% end %>

View File

@ -0,0 +1,11 @@
<div id="search">
<input id="user_search" name="user[username]" size="30" type="text" />
</div>
<div class="member_setup <%= @class %>">
<h1><%= t('admin.setup_member') %></h1>
<ul class="list">
<li class="set_1"><%= link_to content_tag(:span, t('admin.list_users')), admin_users_path %></li>
<li class="set_2"><%= link_to content_tag(:span, t('admin.list_roles')), admin_roles_path %></li>
<li class="set_3"><%= link_to content_tag(:span, t('admin.list_infos')), admin_infos_path %></li>
</ul>
</div>

View File

@ -0,0 +1,11 @@
<h1><%= t('admin.editing_ad_banner') %></h1>
<%= form_for @ad_banner, :url => admin_ad_banner_path(@ad_banner),:html => {:multipart => true} do |f| %>
<%= f.error_messages %>
<%= render :partial => "form", :locals => { :f => f } %>
<p>
<%= f.submit t('update') %> <%= link_back %>
</p>
<% end %>
<br /><br/>

View File

@ -0,0 +1,46 @@
<% content_for :secondary do %>
<div class="ad_banners_setup">
<h1><%= t('admin.setup_ad_banners') %></h1>
<ul class="list">
<li><%= link_to content_tag(:span, t('admin.new_ad_banner')), new_admin_ad_banner_path, :class => 'seclink1' %></li>
</ul>
</div>
<% end -%>
<%= flash_messages %>
<div class="main2">
<h1><%= t('admin.list_ad_banners') %></h1>
<table>
<thead>
<tr>
<td><%= t('admin.title') %></td>
<td><%= t('admin.picture_position') %></td>
<td><%= t('admin.post_date') %></td>
<td><%= t('admin.unpost_date') %></td>
<td><%= t('admin.context') %></td>
<td><%= t('admin.direct_to_after_click') %></td>
</tr>
</thead>
<% @ad_banners.each do |ad_banner| %>
<tr class="have">
<td><%= ad_banner.title %></td>
<td><%= ad_banner.picture_position %></td>
<td><%= ad_banner.post_date %></td>
<td><%= ad_banner.unpost_date %></td>
<td><%= ad_banner.context %></td>
<td><%= ad_banner.direct_to_after_click %></td>
<td class="action">
<%= link_to t(:show), admin_ad_banner_path(ad_banner), :class => 'show' %>
<%= link_to t(:edit), edit_admin_ad_banner_path(ad_banner), :class => 'edit' %>
<%= link_to t(:delete), admin_ad_banner_path(ad_banner), :confirm => t('sure?'), :method => :delete, :class => 'delete' %>
</td>
</tr>
<tr></tr>
<% end %>
</table>
</div>
<div class="button_bar">
<%= link_to t('admin.new_ad_banner'), new_admin_ad_banner_path, :class => 'new' %>
</div>

View File

@ -0,0 +1,13 @@
<div class="main2">
<h1><%= t('admin.new_ad_banner') %></h1>
<%= form_for :ad_banner, :url => admin_ad_banners_path, :html => {:multipart => true} do |f| %>
<%= f.error_messages %>
<%= render :partial => "form", :locals => { :f => f } %>
<div class="button_bar">
<%= link_back %>
<%= f.submit t('create') %>
</div>
<% end %>
</div>

View File

@ -0,0 +1,18 @@
<% content_for :secondary do %>
<%= render 'side_bar' %>
<% end %>
<br /><br /><br /><br />
<ul>
<li><%=t('admin.ad_banner.title') %> <%= @ad_banner.title %></li>
<li><%=t('admin.ad_banner.picture_position') %> <%= @ad_banner.picture_position %></li>
<li><%=t('admin.ad_banner.post_date') %> <%= @ad_banner.post_date %></li>
<li><%=t('admin.ad_banner.unpost_date') %> <%= @ad_banner.unpost_date %></li>
<li><%=t('admin.ad_banner.context') %> <%= @ad_banner.context %></li>
<li><%=t('admin.ad_banner.direct_to_after_click') %> <%= @ad_banner.direct_to_after_click %></li>
<li><%=t('admin.ad_banner.ad_style') %> <%= @ad_banner.ad_style %></li>
</ul>
<%= render :partial => "admin/ad_banners/ad_image", :collection => @ad_banner.ad_images %>