announcement_category edit

This commit is contained in:
unknown 2012-02-06 15:23:27 +08:00 committed by Christophe Vilayphiou
parent 65901edf6f
commit f097f83f2b
25 changed files with 286 additions and 122 deletions

View File

@ -1,3 +1,7 @@
$('.bulletin_urls_block a.delete').live('click', function(){
$(this).parents('.list_item').remove();
});
$('.bulletin_files_block a.delete').live('click', function(){
$(this).parents('.list_item').remove();
});

View File

@ -7,7 +7,6 @@ PrototypeR4::Application.routes.draw do
match '/site/public_key', :to => CentralServerExchangeApp
match '/site/update', :to => GithubApp
match '/purchase/:type', :to => CentralServerExchangeApp
# routes for admin
namespace :admin do

View File

@ -4,10 +4,14 @@ class Panel::Announcement::BackEnd::BulletinCategorysController < ApplicationCon
def index
@bulletin_categorys = BulletinCategory.all
@bulletin_category = BulletinCategory.new(:display => 'List')
@url = panel_announcement_back_end_bulletin_categorys_path
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @bulletins }
# format.xml { render :xml => @bulletins }
format.js
end
end
@ -18,25 +22,47 @@ class Panel::Announcement::BackEnd::BulletinCategorysController < ApplicationCon
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @bulletin_category }
# format.xml { render :xml => @bulletin_category }
format.js
end
end
# GET /bulletins/new
# GET /bulletins/new.xml
def new
@bulletin_category = BulletinCategory.new
@bulletin_category = BulletinCategory.new(:display => 'List')
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @bulletin_category }
# format.xml { render :xml => @bulletin_category }
format.js
end
end
def quick_edit
# debugger
@bulletin_category = BulletinCategory.find(params[:bulletin_category_id])
@url = panel_announcement_back_end_bulletin_category_path(@bulletin_category)
respond_to do |format|
format.js
end
end
# GET /bulletins/1/edit
def edit
@bulletin_category = BulletinCategory.find(params[:id])
@i18n_variable = @bulletin_category.i18n_variable
@i18n_variable = @bulletin_category.i18n_variable
@url = panel_announcement_back_end_bulletin_category_path(@bulletin_category)
respond_to do |format|
format.html
format.js
end
end
# POST /bulletins
@ -46,12 +72,14 @@ class Panel::Announcement::BackEnd::BulletinCategorysController < ApplicationCon
respond_to do |format|
if @bulletin_category.save
# format.html { redirect_to(panel_announcement_back_end_bulletin_url(@bulletin_category), :notice => t('announcement.create_bulletin_success')) }
# format.html { redirect_to @bulletin_category, notice: 'Entry was successfully created.' }
format.html { redirect_to(panel_announcement_back_end_bulletin_categorys_url, :notice => t('announcement.create_bulletin_category_success')) }
format.xml { render :xml => @bulletin_category, :status => :created, :location => @bulletin_category }
# format.xml { render :xml => @bulletin_category, :status => :created, :location => @bulletin_category }
format.js
else
format.html { render :action => "new" }
format.xml { render :xml => @bulletin_category.errors, :status => :unprocessable_entity }
# format.xml { render :xml => @bulletin_category.errors, :status => :unprocessable_entity }
format.js { render action: "new" }
end
end
end
@ -60,15 +88,19 @@ class Panel::Announcement::BackEnd::BulletinCategorysController < ApplicationCon
# PUT /bulletins/1.xml
def update
@bulletin_category = BulletinCategory.find(params[:id])
@url = panel_announcement_back_end_bulletin_category_path(@bulletin_category)
respond_to do |format|
if @bulletin_category.update_attributes(params[:bulletin_category])
# format.html { redirect_to(panel_announcement_back_end_bulletin_category_url(@bulletin_category), :notice => t('bulletin_category.update_bulletin_category_success')) }
format.html { redirect_to(panel_announcement_back_end_bulletin_categorys_url, :notice => t('bulletin_category.update_bulletin_category_success')) }
format.xml { head :ok }
# format.xml { head :ok }
format.js
else
format.html { render :action => "edit" }
format.xml { render :xml => @bulletin_category.errors, :status => :unprocessable_entity }
format.js { render :action => "edit" }
# format.xml { render :xml => @bulletin_category.errors, :status => :unprocessable_entity }
end
end
end
@ -81,7 +113,8 @@ class Panel::Announcement::BackEnd::BulletinCategorysController < ApplicationCon
respond_to do |format|
format.html { redirect_to(panel_announcement_back_end_bulletin_categorys_url) }
format.xml { head :ok }
# format.xml { head :ok }
format.js
end
end
end

View File

@ -120,19 +120,20 @@ class Panel::Announcement::BackEnd::BulletinsController < ApplicationController
respond_to do |format|
format.html { redirect_to(panel_announcement_back_end_bulletins_url) }
format.xml { head :ok }
# format.xml { head :ok }
format.js
end
end
def top_edit
# def top_edit
Bulletin.where(id: params[:id]).update_all( is_top: true )
respond_to do |format|
format.html { redirect_to(panel_announcement_back_end_bulletins_url) }
format.xml { head :ok }
end
# Bulletin.where(id: params[:id]).update_all( is_top: true )
# respond_to do |format|
# format.html { redirect_to(panel_announcement_back_end_bulletins_url) }
# format.xml { head :ok }
# end
end
# end
protected

View File

@ -6,15 +6,15 @@ class Bulletin
include Mongoid::MultiParameterAttributes
# field :category_id, :type => Integer
# field :title
has_one :title_variable, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy
has_one :subtitle_variable, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy
has_one :text_variable, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy
# field :subtitle
# field :text
field :title
# has_one :title_variable, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy
# has_one :subtitle_variable, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy
# has_one :text_variable, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy
field :subtitle
field :text
field :postdate , :type => Date
field :deadline , :type => Date
field :url
# field :url
field :create_user_id
field :update_user_id
@ -24,15 +24,18 @@ class Bulletin
belongs_to :bulletin_category
# embeds_many :bulletin_files
embeds_many :bulletin_links, :cascade_callbacks => true
embeds_many :bulletin_files, :cascade_callbacks => true
# has_many :bulletin_files, :autosave => true, :dependent => :destroy
accepts_nested_attributes_for :bulletin_files, :allow_destroy => true
accepts_nested_attributes_for :bulletin_links, :allow_destroy => true
validates_presence_of :title_variable
# validates_presence_of :title_variable
validates_presence_of :title
after_save :save_bulletin_links
after_save :save_bulletin_files
@ -79,6 +82,14 @@ class Bulletin
self.is_top
end
def save_bulletin_links
self.bulletin_links.each do |t|
if t.should_destroy
t.destroy
end
end
end
def save_bulletin_files
self.bulletin_files.each do |t|
if t.should_destroy

View File

@ -5,8 +5,11 @@ class BulletinCategory
include Mongoid::Timestamps
# include Mongoid::MultiParameterAttributes
PAYMENT_TYPES = [ "List", "Picture" ]
field :key
# field :name
field :display
has_one :i18n_variable, :as => :language_value, :autosave => true, :dependent => :destroy
has_many :bulletins

View File

@ -0,0 +1,13 @@
class BulletinLink
include Mongoid::Document
include Mongoid::Timestamps
field :url
field :name
field :should_destroy, :type => Boolean
embedded_in :bulletin
end

View File

@ -0,0 +1,13 @@
<tr id="<%= dom_id bulletin_category %>">
<td><%= bulletin_category.key %></td>
<% @site_valid_locales.each do |locale| %>
<td><%= bulletin_category.i18n_variable[locale] rescue nil %></td>
<% end %>
<td><%= bulletin_category.display %></td>
<td>
<%= link_to t('bulletin_category.edit'), edit_panel_announcement_back_end_bulletin_category_path(bulletin_category), :remote => true %> |
<%= link_to t('bulletin_category.quick_edit'), panel_announcement_back_end_bulletin_category_quick_edit_path(bulletin_category), :remote => true %> |
<%= link_to t('bulletin_category.delete'), panel_announcement_back_end_bulletin_category_path(bulletin_category), :confirm => t('announcement.sure?'), :method => :delete, :remote => true %>
</td>
</tr>

View File

@ -1,29 +1,37 @@
<% # encoding: utf-8 %>
<div class="bulletin_categorys">
<table border="0" cellspacing="0" cellpadding="0">
<thead class="list_head">
<tr>
<td><%= t('bulletin_category.key') %></td>
<% @site_valid_locales.each do |locale| %>
<td><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></td>
<% end %>
</tr>
</thead>
<tbody>
<tr class="list_item">
<td><%= f.text_field :key %>
<%= f.fields_for :i18n_variable, (@bulletin_category.new_record? ? @bulletin_category.build_i18n_variable : @bulletin_category.i18n_variable) do |f| %>
<% @site_valid_locales.each do |locale| %>
<td><%= f.text_field locale, :style => "width:130px" %></td>
<% end %>
<% end %>
</tr>
</tbody>
</table>
</div>
<%= form_for(@bulletin_category, :remote => true, :url => @url) do |f| %>
<%#= form_for(@bulletin_category, :remote => true, :url => panel_announcement_back_end_bulletin_category_path(@bulletin_category)) do |f| %>
<div class="field">
<%= f.label :key %><br />
<%= f.text_field :key %>
</div>
<div class="field">
<%= f.label :name %><br />
<%= f.fields_for :i18n_variable, (@bulletin_category.new_record? ? @bulletin_category.build_i18n_variable : @bulletin_category.i18n_variable) do |f| %>
<% @site_valid_locales.each do |locale| %>
<%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
<%= f.text_field locale, :style => "width:130px" %>
<% end %>
<% end %>
</div>
<div class="field">
<%= f.label :display %> <br />
<%#= f.select :display, BulletinCategory::PAYMENT_TYPES, :prompt => 'Select a display method' %>
<%= f.radio_button :display, "List" %>List
<%#= f.label :display, 'list', :value => '1', :checked => @a %>
<%= f.radio_button :display, "Picture" %>Picture
<%#= f.label :display, 'picture', :value => '2', :checked => @b %>
<br />顯示方式是設定在前台頁面時,資訊所呈現的樣式
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>

View File

@ -0,0 +1,35 @@
<% # encoding: utf-8 %>
<div class="field">
<%= f.label :key %><br />
<%= f.text_field :key %>
</div>
<div class="field">
<%= f.label :name %><br />
<%= f.fields_for :i18n_variable, (@bulletin_category.new_record? ? @bulletin_category.build_i18n_variable : @bulletin_category.i18n_variable) do |f| %>
<% @site_valid_locales.each do |locale| %>
<%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
<%= f.text_field locale, :style => "width:130px" %>
<% end %>
<% end %>
</div>
<div class="field">
<%= f.label :display %> <br />
<%#= f.select :display, BulletinCategory::PAYMENT_TYPES, :prompt => 'Select a display method' %>
<%= f.radio_button :display, "List" %>List
<%#= f.label :display, 'list', :value => '1', :checked => @a %>
<%= f.radio_button :display, "Picture" %>Picture
<%#= f.label :display, 'picture', :value => '2', :checked => @b %>
<br />顯示方式是設定在前台頁面時,資訊所呈現的樣式
</div>
<div class="actions">
<%= f.submit %>
</div>

View File

@ -0,0 +1,2 @@
$('<%= j render :partial => 'bulletin_category', :collection => [@bulletin_category] %>').appendTo('#bulletin_categorys').hide().fadeIn();
$("#new_bulletin_category")[0].reset();

View File

@ -0,0 +1 @@
$("#<%= dom_id @bulletin_category %>").remove();

View File

@ -0,0 +1 @@
$("#form > form").replaceWith("<%= j render "form" %>");

View File

@ -5,7 +5,7 @@
<br />
<br />
<ul class="list">
<li><%= link_to t('bulletin_category.new_announcement_class'), new_panel_announcement_back_end_bulletin_category_path, :class => 'seclink1' %></li>
<li><%#= link_to t('bulletin_category.new_announcement_class'), new_panel_announcement_back_end_bulletin_category_path, :class => 'seclink1' %></li>
</ul>
<% end -%>
@ -17,28 +17,28 @@
<br />
<br />
<br />
<table>
<table id="bulletin_categorys">
<tr>
<th><%= t('bulletin_category.key') %></th>
<% @site_valid_locales.each do |locale| %>
<th><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></th>
<% end %>
<th><%= t('bulletin_category.display') %></th>
<th><%= t('bulletin.action') %></th>
</tr>
<% @bulletin_categorys.each do |post| %>
<tr>
<td><%= post.key %></td>
<% @site_valid_locales.each do |locale| %>
<td><%= post.i18n_variable[locale] rescue nil %></td>
<% end %>
<td>
<%= link_to t('bulletin_category.edit'), edit_panel_announcement_back_end_bulletin_category_path(post) %> |
<%= link_to t('bulletin_category.delete'), panel_announcement_back_end_bulletin_category_path(post), :confirm => t('announcement.sure?'), :method => :delete %>
</td>
</tr>
<% end %>
<%# @bulletin_categorys.each do |post| %>
<%= render :partial => 'bulletin_category', :collection => @bulletin_categorys %>
<%# end %>
</table>
<br />
<br />
<br />
<br />
<h2>Add New</h2>
<div id="form"><%= render :partial => "form" %></div>

View File

@ -0,0 +1 @@
$("#form > form").replaceWith("<%= j render "form" %>");

View File

@ -0,0 +1,3 @@
$.each($(".quick_edit"),function(obj){ $(this).remove(); });
$("#<%= dom_id @bulletin_category %>").append("<div class='quick_edit'><%= j render "form" %></div>");
//$("#form > form").replaceWith("<%= j render "form" %>");

View File

@ -0,0 +1,4 @@
$("#<%= dom_id @bulletin_category %>").replaceWith("<%= j render :partial => 'bulletin_category', :collection => [@bulletin_category] %>");
<% @bulletin_category = BulletinCategory.new(:display => 'List') # reset for new form %>
$(".edit_bulletin_category").replaceWith("<%= j render "form" %>")
$(".new_bulletin_category")[0].reset();

View File

@ -0,0 +1,21 @@
<div id="<%= "bulletin_#{bulletin_link.id}" if !bulletin_link.new_record? %>" class='list_item'>
<div class="field">
<%= f.label :link_url %>
<%= f.text_field :url %>
<%= f.label :link_name %>
<%= f.text_field :name %>
<span class="action">
<% if bulletin_link.new_record? %>
<a href="#" class="delete"><%= t(:delete) %></a>
<% else %>
<%= f.hidden_field :id %>
<a href="#" class="remove_existing_record"><%= t(:delete) %></a>
<%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %>
<% end %>
</span>
</div>
</div>

View File

@ -0,0 +1,18 @@
<tr id="<%= dom_id post %>">
<td></td>
<td><%= post.bulletin_category.i18n_variable[I18n.locale] %></td>
<td><%#= link_to post.title, panel_announcement_front_end_bulletin_path(post) %>
<%= link_to post.title, panel_announcement_back_end_bulletin_path(post) %>
</td>
<td><%= post.postdate %></td>
<td><%= (post.deadline) ? post.deadline : t('bulletin.no_deadline') %></td>
<td>
<%= link_to t('bulletin.edit'), edit_panel_announcement_back_end_bulletin_path(post) %> |
<%= link_to t(:set_top), eval("panel_announcement_back_end_bulletin_path(post, :authenticity_token => form_authenticity_token, :bulletin => {:is_top => true})"), :remote => true, :method => :put, :id => "disable_#{post.id}", :style => "display:#{post.is_top? ? 'none' : ''}", :class => 'switch' %>
<%= link_to t(:cancel_top), eval("panel_announcement_back_end_bulletin_path(post, :authenticity_token => form_authenticity_token, :bulletin => {:is_top => false})"), :remote => true, :method => :put, :id => "enable_#{post.id}", :style => "display:#{post.is_top? ? '' : 'none'}", :class => 'switch' %>
| <%= link_to t('bulletin.delete'), panel_announcement_back_end_bulletin_path(post), :confirm => t('announcement.sure?'), :method => :delete, :remote => true %>
</td>
</tr>

View File

@ -18,35 +18,17 @@
<div class="field">
<%= f.label :title %><br />
<%#= f.text_field :title %>
<%= f.fields_for :title_variable, (@bulletin.new_record? ? @bulletin.build_title_variable : @bulletin.title_variable) do |f| %>
<% @site_valid_locales.each do |locale| %>
<%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
<%= f.text_field locale, :style => "width:130px" %>
<% end %>
<% end %>
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :subtitle %><br />
<%#= f.text_area :subtitle, :rows => 10, :cols => 40 %>
<%= f.fields_for :subtitle_variable, (@bulletin.new_record? ? @bulletin.build_subtitle_variable : @bulletin.subtitle_variable) do |f| %>
<% @site_valid_locales.each do |locale| %>
<%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
<%= f.text_area locale, :rows => 10, :cols => 40 %>
<% end %>
<% end %>
<%= f.text_area :subtitle, :rows => 10, :cols => 40 %>
</div>
<div class="field">
<%= f.label :text %><br />
<%#= f.text_area :text, :rows => 10, :cols => 40 %>
<%= f.fields_for :text_variable, (@bulletin.new_record? ? @bulletin.build_text_variable : @bulletin.text_variable) do |f| %>
<% @site_valid_locales.each do |locale| %>
<%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %>
<%= f.text_area locale, :rows => 10, :cols => 40 %>
<% end %>
<% end %>
<%= f.text_area :text, :rows => 10, :cols => 40 %>
</div>
<div class="field">
@ -62,11 +44,31 @@
</div>
<div class="field">
<%= f.label :url %><br />
<%= f.text_field :url, :size => 60 %>
<%#= f.label :url %><br />
<%#= f.text_field :url, :size => 60 %>
</div>
<div id='bulletin_links' class="bulletin_links_block <%= @class %>">
<div id='add_bulletin_link' class="info_input bulletin_links_block">
<h2>Bulletin links</h2>
<%= hidden_field_tag 'bulletin_link_field_count', @bulletin.bulletin_links.count %>
<a href="#" class="add"><%= t(:add) %></a>
</div>
<%#= render :partial => 'link', :locals => { :bulletin_links => @bulletin.bulletin_links , :f => f} %>
<% @bulletin.bulletin_links.each_with_index do |bulletin_link, i| %>
<%#= fields_for "bulletin[bulletin_links][]", bulletin_link do |f| %>
<%= f.fields_for :bulletin_links, bulletin_link do |f| %>
<%= render :partial => 'bulletin_link', :object => bulletin_link, :locals => {:f => f, :i => i} %>
<% end %>
<% end %>
</div>
<div id='bulletin_files' class="bulletin_files_block <%= @class %>">
@ -101,6 +103,12 @@
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "bulletin_form" %>
<script>
$('#add_bulletin_link a.add').live('click', function(){
var new_id = $(this).prev().attr('value');
var old_id = new RegExp("new_bulletin_links", "g");
$(this).prev().attr('value', parseInt(new_id) + 1);
$('#bulletin_links').append(("<%= escape_javascript(add_attribute 'bulletin_link', f, :bulletin_links) %>").replace(old_id, new_id));
});
$('#add_bulletin_file a.add').live('click', function(){
var new_id = $(this).prev().attr('value');
var old_id = new RegExp("new_bulletin_files", "g");

View File

@ -0,0 +1 @@
$("#<%= dom_id @bulletin %>").remove();

View File

@ -46,34 +46,16 @@
<table>
<tr>
<th><%= t('bulletin.status') %></th>
<th><%= t('bulletin.postdate') %></th>
<th><%= t('bulletin.deadline') %></th>
<th><%= t('bulletin.category') %></th>
<th><%= t('bulletin.title') %></th>
<th><%= t('bulletin.postdate') %></th>
<th><%= t('bulletin.deadline') %></th>
<th><%= t('bulletin.action') %></th>
</tr>
<% @bulletins.each do |post| %>
<tr>
<td></td>
<td><%= post.postdate %></td>
<td><%= (post.deadline) ? post.deadline : t('bulletin.no_deadline') %></td>
<td><%= post.bulletin_category.i18n_variable[I18n.locale] %></td>
<td><%#= link_to post.title, panel_announcement_front_end_bulletin_path(post) %>
<%= link_to post.title_variable[I18n.locale], panel_announcement_back_end_bulletin_path(post) %>
</td>
<td>
<%= link_to t('bulletin.edit'), edit_panel_announcement_back_end_bulletin_path(post) %> |
<%= link_to t(:set_top), eval("panel_announcement_back_end_bulletin_path(post, :authenticity_token => form_authenticity_token, :bulletin => {:is_top => true})"), :remote => true, :method => :put, :id => "disable_#{post.id}", :style => "display:#{post.is_top? ? 'none' : ''}", :class => 'switch' %>
<%= link_to t(:cancel_top), eval("panel_announcement_back_end_bulletin_path(post, :authenticity_token => form_authenticity_token, :bulletin => {:is_top => false})"), :remote => true, :method => :put, :id => "enable_#{post.id}", :style => "display:#{post.is_top? ? '' : 'none'}", :class => 'switch' %>
| <%= link_to t('bulletin.delete'), panel_announcement_back_end_bulletin_path(post), :confirm => t('announcement.sure?'), :method => :delete %>
</td>
</tr>
<% end %>
<%= render :partial => 'bulletins', :locals => {:post => post} %>
<% end %>
</table>
<br />

View File

@ -17,7 +17,7 @@
</li>
<li>
<b><%= t('announcement.title') %></b>
<%= @bulletin.title_variable[I18n.locale] %>
<%= @bulletin.title %>
</li>
<li>
<%#= image_tag(@bulletin.image.url, :size => "320x240") if @bulletin.image.file %>
@ -25,11 +25,11 @@
</li>
<li>
<b><%= t('announcement.subtitle') %></b>
<%= @bulletin.subtitle_variable[I18n.locale] %>
<%= @bulletin.subtitle %>
</li>
<li>
<b><%= t('announcement.text') %></b>
<%= @bulletin.text_variable[I18n.locale] %>
<%= @bulletin.text %>
</li>
<li>
<li>

View File

@ -33,18 +33,18 @@
</li>
<li>
<li>
<b><%= t('announcement.link') %></b>
<% @bulletin.bulletin_links.each do | blink | %>
<%= link_to blink.name, blink.url, :target => '_blank' %>
<% end %>
</li>
<li>
<b><%= t('announcement.file') %></b>
<% @bulletin.bulletin_files.each do | bfile | %>
<%= link_to bfile.filetitle, bfile.file.url, {:target => '_blank', :title => bfile.description} if bfile.file.file %>
<% end %>
</li>
<li>
<% if @bulletin.url? %>
<b><%= t('announcement.url') %></b>
<%= link_to @bulletin.url, @bulletin.url, :target => '_blank' %>
<% end %>
</li>
<li>
<b><%= t('announcement.張貼者') %></b>
<%= User.find(@bulletin.create_user_id).name %>
</li>

View File

@ -5,7 +5,9 @@ Rails.application.routes.draw do
namespace :back_end do
root :to => "bulletins#index"
resources :bulletins
resources :bulletin_categorys, :controller => 'bulletin_categorys'
resources :bulletin_categorys, :controller => 'bulletin_categorys' do
match "quick_edit/:bulletin_category_id" => "bulletin_categorys#quick_edit" ,:as => :quick_edit
end
end
namespace :front_end do
root :to => "bulletins#index"