Announcement modifications and tags
This commit is contained in:
		
							parent
							
								
									f57e9f19f7
								
							
						
					
					
						commit
						3e70634add
					
				|  | @ -16,7 +16,7 @@ $(document).ready(function(){ | |||
| 	 | ||||
| 	$(function() { | ||||
| 		var $role = $('.select-role'); | ||||
| 		$('[name="privacy"]').each(function($i) { | ||||
| 		$('.privacy').each(function($i) { | ||||
| 			$(this).click(function() { | ||||
| 				switch ($i) { | ||||
| 					case 0: | ||||
|  |  | |||
|  | @ -0,0 +1,48 @@ | |||
| class Admin::TagsController < ApplicationController | ||||
|    | ||||
|   layout 'new_admin' | ||||
|   before_filter :authenticate_user! | ||||
|   before_filter :is_admin? | ||||
|   before_filter :set_module_app | ||||
|     | ||||
|   def index | ||||
|     get_tags | ||||
|     @module_app_id = @module_app.id rescue nil | ||||
|   end | ||||
| 
 | ||||
|   def new | ||||
| 
 | ||||
|   end | ||||
|    | ||||
|   def edit | ||||
|     @tag = Tag.find(params[:id]) | ||||
|   end | ||||
| 
 | ||||
|   def create | ||||
|     @tag = Tag.create(params[:tag]) | ||||
|   end | ||||
| 
 | ||||
|   def update | ||||
|     @tag = Tag.find(params[:id]) | ||||
|     @tag.update_attributes(params[:tag]) | ||||
|   end | ||||
| 
 | ||||
|   def destroy | ||||
|     @tag = Tag.find(params[:id]) | ||||
|     @tag.destroy | ||||
|     respond_to do |format| | ||||
|       format.js { render 'js/remove_element', :locals => {:id => "#{dom_id @tag}"} } | ||||
|     end | ||||
|   end | ||||
|    | ||||
|   protected | ||||
|    | ||||
|   def set_module_app | ||||
|     @module_app ||= ModuleApp.first(:conditions => {:key => @app_title.underscore}) rescue nil | ||||
|   end | ||||
|    | ||||
|   def get_tags | ||||
|     @tags = (@module_app ?  @module_app.tags : Tag.all) | ||||
|   end | ||||
|    | ||||
| end | ||||
|  | @ -17,4 +17,8 @@ class I18nVariable | |||
|     end | ||||
|   end | ||||
|    | ||||
|   def self.from_locale(locale) | ||||
|     I18nVariable.first(:conditions => {:key => locale})[I18n.locale] | ||||
|   end | ||||
|    | ||||
| end | ||||
|  |  | |||
|  | @ -18,6 +18,8 @@ class ModuleApp | |||
|   has_many :managers,as: :managing_app ,:class_name => "AppManager" #,:dependent => :destroy,:foreign_key => "managing_app_id",:inverse_of => :managing_app | ||||
|   has_many :sub_managers,as: :sub_managing_app ,:class_name => "AppManager"#, :dependent => :destroy,:foreign_key => "sub_managing_app_id",:inverse_of => :sub_managing_app | ||||
|    | ||||
|   has_many :tags | ||||
|    | ||||
|   has_one :app_auth,dependent: :delete | ||||
|    | ||||
|   before_save :set_key | ||||
|  |  | |||
|  | @ -0,0 +1,9 @@ | |||
| class Tag | ||||
|    | ||||
|   include Mongoid::Document | ||||
|   include Mongoid::Timestamps | ||||
|    | ||||
|   belongs_to :module_app | ||||
|   has_and_belongs_to_many :bulletins | ||||
|    | ||||
| end | ||||
|  | @ -0,0 +1,7 @@ | |||
| <%= form_for :tag, :url => admin_tags_path, :remote => true, :html => {:id => 'tag_form'} do |f| %> | ||||
| 	<% @site_valid_locales.each do |locale| %> | ||||
| 	  <%= I18nVariable.from_locale(locale) %>:<%= f.text_field locale %> | ||||
| 	<% end %> | ||||
| 	<%= f.hidden_field :module_app_id, :value => @module_app_id %> | ||||
| 	<%= f.submit %> | ||||
| <% end %> | ||||
|  | @ -0,0 +1,7 @@ | |||
| <%= form_for tag, :url => admin_tag_path(tag), :remote => true do |f| %> | ||||
| 	<% @site_valid_locales.each do |locale| %> | ||||
| 	  <%= I18nVariable.from_locale(locale) %>:<%= f.text_field locale %> | ||||
| 	<% end %> | ||||
| 	<%= f.hidden_field :module_app_id, :value => tag.module_app_id %> | ||||
| 	<%= f.submit %> | ||||
| <% end %> | ||||
|  | @ -0,0 +1,8 @@ | |||
| <div id="<%= dom_id tag %>" > | ||||
| 	<% @site_valid_locales.each do |locale| %> | ||||
| 	  <%= I18nVariable.from_locale(locale) %>: | ||||
| 		<%= tag[locale] %> | ||||
| 	<% end %> | ||||
| 	<%= link_to t(:edit), edit_admin_tag_path(tag), :remote => true  %> | ||||
| 	<%= link_to t(:delete), admin_tag_path(tag), :confirm => t('sure?'), :method => :delete, :remote => true  %> | ||||
| </div> | ||||
|  | @ -0,0 +1,4 @@ | |||
| $('#tag_form').each(function(){ | ||||
| 	this.reset(); | ||||
| }); | ||||
| $('#tags').append("<%= j render :partial => 'tag', :object => @tag %>") | ||||
|  | @ -0,0 +1 @@ | |||
| $('#<%= dom_id @tag %>').html("<%= j render :partial => 'form', :locals => {:tag => @tag} %>") | ||||
|  | @ -0,0 +1,6 @@ | |||
| <div id='tags'> | ||||
| 	<%= render :partial => 'tag', :collection => @tags %> | ||||
| </div> | ||||
| ------------------------- | ||||
| <br/> | ||||
| <%= render 'add' %> | ||||
|  | @ -0,0 +1 @@ | |||
| $('#<%= dom_id @tag %>').html("<%= j render :partial => 'tag', :object => @tag %>") | ||||
|  | @ -0,0 +1,11 @@ | |||
| <%# Link to the "First" page | ||||
|   - available local variables | ||||
|     url:           url to the first page | ||||
|     current_page:  a page object for the currently displayed page | ||||
|     num_pages:     total number of pages | ||||
|     per_page:      number of items to fetch per page | ||||
|     remote:        data-remote | ||||
| -%> | ||||
| <span class="first"> | ||||
|   <%= link_to_unless current_page.first?, raw(t 'views.pagination.first'), url, :remote => remote %> | ||||
| </span> | ||||
|  | @ -0,0 +1,8 @@ | |||
| <%# Non-link tag that stands for skipped pages... | ||||
|   - available local variables | ||||
|     current_page:  a page object for the currently displayed page | ||||
|     num_pages:     total number of pages | ||||
|     per_page:      number of items to fetch per page | ||||
|     remote:        data-remote | ||||
| -%> | ||||
| <span class="page gap"><%= raw(t 'views.pagination.truncate') %></span> | ||||
|  | @ -0,0 +1,11 @@ | |||
| <%# Link to the "Last" page | ||||
|   - available local variables | ||||
|     url:           url to the last page | ||||
|     current_page:  a page object for the currently displayed page | ||||
|     num_pages:     total number of pages | ||||
|     per_page:      number of items to fetch per page | ||||
|     remote:        data-remote | ||||
| -%> | ||||
| <span class="last"> | ||||
|   <%= link_to_unless current_page.last?, raw(t 'views.pagination.last'), url, {:remote => remote} %> | ||||
| </span> | ||||
|  | @ -0,0 +1,11 @@ | |||
| <%# Link to the "Next" page | ||||
|   - available local variables | ||||
|     url:           url to the next page | ||||
|     current_page:  a page object for the currently displayed page | ||||
|     num_pages:     total number of pages | ||||
|     per_page:      number of items to fetch per page | ||||
|     remote:        data-remote | ||||
| -%> | ||||
| <span class="next"> | ||||
|   <%= link_to_unless current_page.last?, raw(t 'views.pagination.next'), url, :rel => 'next', :remote => remote %> | ||||
| </span> | ||||
|  | @ -0,0 +1,12 @@ | |||
| <%# Link showing page number | ||||
|   - available local variables | ||||
|     page:          a page object for "this" page | ||||
|     url:           url to this page | ||||
|     current_page:  a page object for the currently displayed page | ||||
|     num_pages:     total number of pages | ||||
|     per_page:      number of items to fetch per page | ||||
|     remote:        data-remote | ||||
| -%> | ||||
| <span class="page<%= ' current' if page.current? %>"> | ||||
|   <%= link_to_unless page.current?, page, url, opts = {:remote => remote, :rel => page.next? ? 'next' : page.prev? ? 'prev' : nil} %> | ||||
| </span> | ||||
|  | @ -0,0 +1,23 @@ | |||
| <%# The container tag | ||||
|   - available local variables | ||||
|     current_page:  a page object for the currently displayed page | ||||
|     num_pages:     total number of pages | ||||
|     per_page:      number of items to fetch per page | ||||
|     remote:        data-remote | ||||
|     paginator:     the paginator that renders the pagination tags inside | ||||
| -%> | ||||
| <%= paginator.render do -%> | ||||
|   <nav class="pagination"> | ||||
|     <%= first_page_tag unless current_page.first? %> | ||||
|     <%= prev_page_tag unless current_page.first? %> | ||||
|     <% each_page do |page| -%> | ||||
|       <% if page.left_outer? || page.right_outer? || page.inside_window? -%> | ||||
|         <%= page_tag page %> | ||||
|       <% elsif !page.was_truncated? -%> | ||||
|         <%= gap_tag %> | ||||
|       <% end -%> | ||||
|     <% end -%> | ||||
|     <%= next_page_tag unless current_page.last? %> | ||||
|     <%= last_page_tag unless current_page.last? %> | ||||
|   </nav> | ||||
| <% end -%> | ||||
|  | @ -0,0 +1,11 @@ | |||
| <%# Link to the "Previous" page | ||||
|   - available local variables | ||||
|     url:           url to the previous page | ||||
|     current_page:  a page object for the currently displayed page | ||||
|     num_pages:     total number of pages | ||||
|     per_page:      number of items to fetch per page | ||||
|     remote:        data-remote | ||||
| -%> | ||||
| <span class="prev"> | ||||
|   <%= link_to_unless current_page.first?, raw(t 'views.pagination.previous'), url, :rel => 'prev', :remote => remote %> | ||||
| </span> | ||||
|  | @ -9,6 +9,7 @@ en: | |||
|    | ||||
|   add: Add | ||||
|   back: Back | ||||
|   cancel: Cancel | ||||
|   create: Create | ||||
|   delete: Delete | ||||
|   disable: Disable | ||||
|  | @ -24,6 +25,7 @@ en: | |||
|   nothing: Nothing | ||||
|   password: Password | ||||
|   show: Show | ||||
|   submit: Submit | ||||
|   sure?: Are you sure? | ||||
|   update: Update | ||||
|   yes_: "Yes" | ||||
|  | @ -31,6 +33,7 @@ en: | |||
|   admin: | ||||
|     action: Action | ||||
|     ad_banner: AD Banner | ||||
|     add: Add | ||||
|     add_language: Add language | ||||
|     add_drop_down_item: +Add Menu Item | ||||
|     admin: Admin | ||||
|  |  | |||
|  | @ -81,6 +81,7 @@ PrototypeR4::Application.routes.draw do | |||
|     end | ||||
|     resources :sites | ||||
|     resources :snippets | ||||
|     resources :tags | ||||
|     resources :translations | ||||
|     resources :users | ||||
|   end | ||||
|  |  | |||
|  | @ -13,6 +13,10 @@ class Panel::Announcement::BackEnd::BulletinsController < ApplicationController | |||
|     # @bulletins = Bulletin.where("bulletin_category_id" => params[:bulletin_category_id]).desc("postdate") if params[:bulletin_category_id] | ||||
|      | ||||
|   	@bulletins = Bulletin.search(params[:search],params[:category_id]) | ||||
|   	@bulletin_categories = BulletinCategory.all | ||||
|   	 | ||||
|   	module_app = ModuleApp.first(:conditions => {:key => 'announcement'}) | ||||
|   	@tags = Tag.all(:conditions => {:module_app_id => module_app.id}) | ||||
| 
 | ||||
|     respond_to do |format| | ||||
|       format.html # index.html.erb | ||||
|  |  | |||
|  | @ -0,0 +1,8 @@ | |||
| class Panel::Announcement::BackEnd::TagsController < Admin::TagsController | ||||
|    | ||||
|   def initialize | ||||
|     super | ||||
|     @app_title = 'announcement' | ||||
|   end | ||||
|    | ||||
| end | ||||
|  | @ -8,6 +8,7 @@ class Bulletin | |||
|   has_one :title, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy | ||||
|   has_one :subtitle, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy | ||||
|   has_one :text, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy | ||||
|   has_and_belongs_to_many :tags | ||||
| 
 | ||||
|   field :postdate , :type => Date | ||||
|   field :deadline , :type => Date | ||||
|  | @ -19,6 +20,8 @@ class Bulletin | |||
|   field :is_hot, :type => Boolean, :default => false | ||||
|   field :is_hidden, :type => Boolean, :default => false | ||||
|    | ||||
|   field :public, :type => Boolean, :default => true | ||||
|    | ||||
|   mount_uploader :image, ImageUploader | ||||
|    | ||||
|   belongs_to :bulletin_category | ||||
|  | @ -30,9 +33,6 @@ class Bulletin | |||
|    | ||||
|   accepts_nested_attributes_for :bulletin_files, :allow_destroy => true | ||||
|   accepts_nested_attributes_for :bulletin_links, :allow_destroy => true | ||||
|   accepts_nested_attributes_for :title, :allow_destroy => true | ||||
|   accepts_nested_attributes_for :subtitle, :allow_destroy => true | ||||
|   accepts_nested_attributes_for :text, :allow_destroy => true | ||||
|    | ||||
|   validates_presence_of :title | ||||
|    | ||||
|  |  | |||
|  | @ -1,9 +0,0 @@ | |||
| class BulletinImage < BulletinFile | ||||
| 
 | ||||
|   field :name | ||||
|    | ||||
|   embedded_in :bulletin | ||||
|    | ||||
|   mount_uploader :file, ImageUploader | ||||
|    | ||||
| end | ||||
|  | @ -0,0 +1,48 @@ | |||
| <tr id="<%= dom_id bulletin %>"> | ||||
| 	<td><input type="checkbox"></td> | ||||
| 	<td> | ||||
| 		<% if bulletin.is_top? %> | ||||
| 			<span class="label label-success"><%= t(:top) %></span> | ||||
| 		<% end %> | ||||
| 		<% if bulletin.is_hot? %> | ||||
| 			<span class="label label-important"><%= t(:hot) %></span> | ||||
| 		<% end %> | ||||
| 		<% if bulletin.is_hidden? %> | ||||
| 			<span class="label"><%= t(:hidden) %></span> | ||||
| 		<% end %> | ||||
| 		<div class="quick-edit"> | ||||
| 			<ul class="nav nav-pills hide"> | ||||
| 				<li><%= link_to t('bulletin.edit'), edit_panel_announcement_back_end_bulletin_path(bulletin) %></li> | ||||
| 				<li class="dropdown"> | ||||
| 					<a href="#" data-toggle="dropdown" class="dropdown-toggle">Quick Edit<b class="caret"></b></a> | ||||
| 					<ul class="dropdown-menu" id="menu1"> | ||||
| 						<li><a href="#">Basic</a></li> | ||||
| 						<li><a href="#">Picture</a></li> | ||||
| 						<li><a href="#">Tags</a></li> | ||||
| 						<li><a href="#">Link</a></li> | ||||
| 						<li><a href="#">File</a></li> | ||||
| 					</ul> | ||||
| 				</li> | ||||
| 				<li class="dropdown"><%= link_to t('bulletin.delete'), panel_announcement_back_end_bulletin_path(bulletin), :confirm => t('announcement.sure?'), :method => :delete, :remote => true %></li> | ||||
| 			</ul> | ||||
| 		</div> | ||||
| 	</td> | ||||
| 	<td><%= bulletin.bulletin_category.i18n_variable[I18n.locale] %></td> | ||||
| 	<td><%= link_to bulletin.title[I18n.locale], panel_announcement_back_end_bulletin_path(bulletin) %></td> | ||||
| 	<td><%= bulletin.postdate %></td> | ||||
| 	<td><%= (bulletin.deadline) ? bulletin.deadline : t('bulletin.no_deadline') %></td> | ||||
| 	<td> | ||||
| 		<% bulletin.tags.each do |tag| %> | ||||
| 			<span class="label label-tags"><%= tag[I18n.locale] %></span> | ||||
| 		<% end %> | ||||
| 	</td> | ||||
| 	<td>rulingcom</td> | ||||
| </tr> | ||||
| 
 | ||||
| <%= render :partial => 'quick_edit', :locals => {:bulletin => bulletin} %> | ||||
| 
 | ||||
| <% content_for :page_specific_javascript do %> | ||||
| 	<script> | ||||
| 
 | ||||
| 	</script> | ||||
| <% end %> | ||||
|  | @ -1,18 +0,0 @@ | |||
| 
 | ||||
| <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> | ||||
|  | @ -0,0 +1,56 @@ | |||
| <div class="subnav"> | ||||
|     <ul class="nav nav-pills filter"> | ||||
|         <li class="accordion-group"> | ||||
|             <div class="accordion-heading"> | ||||
|                 <a href="#collapse-status" data-toggle="collapse" data-parent=".filters" class="accordion-toggle"><%= t(:status) %> <b class="web-symbol"></b></a> | ||||
|             </div> | ||||
|         </li> | ||||
|         <li class="accordion-group"> | ||||
|             <div class="accordion-heading"> | ||||
|                 <a href="#collapse-category" data-toggle="collapse" data-parent=".filters" class="accordion-toggle"><%= t(:category) %> <b class="web-symbol"></b></a> | ||||
|             </div> | ||||
|         </li> | ||||
|         <li class="accordion-group"> | ||||
|             <div class="accordion-heading"> | ||||
|                 <a href="#collapse-tags" data-toggle="collapse" data-parent=".filters" class="accordion-toggle"><%= t(:tags) %> <b class="web-symbol"></b></a> | ||||
|             </div> | ||||
|         </li> | ||||
|     </ul> | ||||
|     <div class="filters"> | ||||
|         <div class="accordion-body collapse" id="collapse-status"> | ||||
|             <div class="accordion-inner" data-toggle="buttons-checkbox"> | ||||
|                 <a href="#" class="btn">Category1</a> | ||||
|                 <a href="#" class="btn">Category2</a> | ||||
|             </div> | ||||
|             <div class="filter-clear"> | ||||
|                 <a href="#" class="btn"><i class="icons-brush-large"></i>Clear/重置</a> | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="accordion-body collapse" id="collapse-category"> | ||||
|             <div class="accordion-inner" data-toggle="buttons-checkbox"> | ||||
|                 <a href="#" class="btn">Category1</a> | ||||
|                 <a href="#" class="btn">Category2</a> | ||||
|             </div> | ||||
|             <div class="filter-clear"> | ||||
|                 <a href="#" class="btn"><i class="icons-brush-large"></i>Clear/重置</a> | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="accordion-body collapse" id="collapse-tags"> | ||||
|             <div class="accordion-inner" data-toggle="buttons-checkbox"> | ||||
|                 <a href="#" class="btn">Tag1</a> | ||||
|                 <a href="#" class="btn">Tag2</a> | ||||
|                 <a href="#" class="btn">Tag3</a> | ||||
|                 <a href="#" class="btn">Tag4</a> | ||||
|                 <a href="#" class="btn">Tag5</a> | ||||
|                 <a href="#" class="btn">Tag6</a> | ||||
|                 <a href="#" class="btn">Tag7</a> | ||||
|                 <a href="#" class="btn">Tag8</a> | ||||
|                 <a href="#" class="btn">Tag9</a> | ||||
|                 <a href="#" class="btn">Tag10</a> | ||||
|             </div> | ||||
|             <div class="filter-clear"> | ||||
|                 <a href="#" class="btn"><i class="icons-brush-large"></i>Clear/重置</a> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| </div> | ||||
|  | @ -20,7 +20,10 @@ | |||
|     <%= f.label :title %> | ||||
| 		<%= f.fields_for :title, (@bulletin.new_record? ? @bulletin.build_title : @bulletin.title ) do |f| %> | ||||
| 		  <% @site_valid_locales.each do |locale| %> | ||||
| 		    <td><%= f.text_field locale %></td> | ||||
| 		    <td> | ||||
| 					<%= I18nVariable.from_locale(locale) %> | ||||
| 					<%= f.text_field locale %> | ||||
| 				</td> | ||||
| 		  <% end %> | ||||
| 		<% end %> | ||||
| 	</div> | ||||
|  | @ -29,7 +32,10 @@ | |||
| 		<%= f.label :subtitle %> | ||||
| 		<%= f.fields_for :subtitle, (@bulletin.new_record? ? @bulletin.build_subtitle : @bulletin.subtitle ) do |f| %> | ||||
| 			<% @site_valid_locales.each do |locale| %> | ||||
| 				<td><%= f.text_area locale, :rows => 10, :cols => 40 %></td> | ||||
| 				<td> | ||||
| 					<%= I18nVariable.from_locale(locale) %> | ||||
| 					<%= f.text_area locale, :rows => 10, :cols => 40 %> | ||||
| 				</td> | ||||
| 			<% end %> | ||||
| 		<% end %> | ||||
| 	</div> | ||||
|  | @ -38,7 +44,10 @@ | |||
| 		<%= f.label :text %> | ||||
| 		<%= f.fields_for :text, (@bulletin.new_record? ? @bulletin.build_text : @bulletin.text ) do |f| %> | ||||
| 			<% @site_valid_locales.each do |locale| %> | ||||
| 				<td><%= f.text_area locale, :rows => 10, :cols => 40 %></td> | ||||
| 				<td> | ||||
| 					<%= I18nVariable.from_locale(locale) %> | ||||
| 					<%= f.text_area locale, :rows => 10, :cols => 40 %> | ||||
| 				</td> | ||||
| 			<% end %> | ||||
| 		<% end %> | ||||
| 	</div> | ||||
|  |  | |||
|  | @ -0,0 +1,16 @@ | |||
| <!-- <tr class="qe-block hide"> --> | ||||
| <tr class="qe-block"> | ||||
| 	<td colspan="8"> | ||||
| 		<legend>Quick Edit - Basic / Picture / Tags / Link / File</legend> | ||||
| 		<%= form_for bulletin, :url => panel_announcement_back_end_bulletin_path(bulletin), :html => {:class => 'form-horizontal'} do |f| %> | ||||
| 			<%= render :partial => "quick_edit_basic", :locals => { :f => f, :bulletin => bulletin } %> | ||||
| 			<%= render :partial => "quick_edit_picture", :locals => { :f => f, :bulletin => bulletin } %> | ||||
| 			<%#= render :partial => "quick_edit_links", :locals => { :f => f, :bulletin => bulletin } %> | ||||
| 			<%= render :partial => "quick_edit_tags", :locals => { :f => f, :bulletin => bulletin } %> | ||||
| 			<div class="form-actions"> | ||||
| 				<%= f.submit t(:submit), :class => 'btn btn-primary' %> | ||||
| 				<%= f.submit t(:cancel), :class => 'btn', :type => 'reset' %> | ||||
| 			</div> | ||||
| 		<% end %> | ||||
| 	</td> | ||||
| </tr> | ||||
|  | @ -0,0 +1,62 @@ | |||
| <div id="qe-basic"> | ||||
| 	<div id="widget-category"> | ||||
| 		<div class="control-group"> | ||||
| 			<label class="control-label"><%= t(:category) %></label> | ||||
| 			<div class="controls"> | ||||
| 				<%= f.select :bulletin_category_id, @bulletin_categories.collect {|t| [ t.i18n_variable[I18n.locale], t.id ]}, {}, :class => 'input-large' %> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
| 	 | ||||
| 	<div id="widget-title"> | ||||
| 		<%= f.fields_for :title, bulletin.title  do |f| %> | ||||
| 		  <% @site_valid_locales.each do |locale| %> | ||||
| 				<div class="control-group"> | ||||
| 					<%= label_tag "title-#{locale}", "Title-#{I18nVariable.from_locale(locale)}", :class => 'control-label' %> | ||||
| 					<div class="controls"> | ||||
| 						<%= f.text_field locale, :class => 'input-xxlarge' %> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 		  <% end %> | ||||
| 		<% end %> | ||||
| 	</div> | ||||
| 	 | ||||
| 	<div id="widget-date"> | ||||
| 		<div class="control-group"> | ||||
| 			<label class="control-label"><%= t(:start) %></label> | ||||
| 			<div class="controls"> | ||||
| 				<%= f.date_select :postdate, {}, :class => 'input-small' %> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 		<div class="control-group"> | ||||
| 			<label class="control-label"><%= t(:end) %></label> | ||||
| 			<div class="controls"> | ||||
| 				<%= f.date_select :deadline, {}, :class => 'input-small' %> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
| 	<div id="widget-status"> | ||||
| 		<div class="control-group"> | ||||
| 			<label class="control-label"><%= t(:status) %></label> | ||||
| 			<div class="controls"> | ||||
| 				<label class="checkbox inline"><%= f.check_box :is_hot %><%= t(:hot) %></label> | ||||
| 				<label class="checkbox inline"><%= f.check_box :is_top %><%= t(:top) %></label> | ||||
| 				<label class="checkbox inline"><%= f.check_box :is_hidden %><%= t(:hidden) %></label> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
| 	<div id="widget-role"> | ||||
| 		<div class="control-group"> | ||||
| 			<label class="control-label">Role</label> | ||||
| 			<div class="controls"> | ||||
| 				<label class="radio inline"><%= f.radio_button :public, true, :class => 'privacy' %>Public</label> | ||||
| 				<label class="radio inline"><%= f.radio_button :public, false, :class => 'privacy' %>Private</label> | ||||
| 				<div class="well select-role" style="display:<%= bulletin.public ? 'none' : 'block' %>;"> | ||||
| 					<label class="checkbox inline"><input type="checkbox" value="student">Student</label> | ||||
| 					<label class="checkbox inline"><input type="checkbox" value="teacher">Teacher</label> | ||||
| 					<label class="checkbox inline"><input type="checkbox" value="staff">Staff</label> | ||||
| 				</div> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
| </div> | ||||
|  | @ -0,0 +1,62 @@ | |||
| <div id="qe-file"> | ||||
|     <div id="widget-file"> | ||||
|         <div class="control-group"> | ||||
|             <table class="table table-condensed"> | ||||
|                 <thead> | ||||
|                     <tr> | ||||
|                         <th>Chinese</th> | ||||
|                         <th>English</th> | ||||
|                         <th class="span1"></th> | ||||
|                     </tr> | ||||
|                 </thead> | ||||
|                 <tfoot> | ||||
|                     <tr> | ||||
|                         <td style="text-align:center" colspan="3"> | ||||
|                             <a class="btn btn-primary btn-small" href="#modal-file" data-toggle="modal"><i class="icon-plus icon-white"></i> ADD/新增</a> | ||||
|                         </td> | ||||
|                     </tr> | ||||
|                 </tfoot> | ||||
|                 <tbody> | ||||
|                     <tr> | ||||
|                         <td>…</td> | ||||
|                         <td>…</td> | ||||
|                         <td><a href="#modal-file" data-toggle="modal" class="action"><i class="icon-pencil"></i></a><a href class="action"><i class="icon-remove"></i></a></td> | ||||
|                     </tr> | ||||
|                 </tbody> | ||||
|             </table> | ||||
|         </div> | ||||
|         <div id="modal-file" class="modal hide fade"> | ||||
|             <div class="modal-header"> | ||||
|                 <a class="close" data-dismiss="modal">×</a> | ||||
|                 <h3>Add File / Edit File</h3> | ||||
|             </div> | ||||
|             <div class="modal-body form-horizontal"> | ||||
|                 <div class="controls file-upload"> | ||||
|                 <label class="control-label btn" for="input-upload"> | ||||
|                     Browse | ||||
|                     <input id="input-upload" class="upload" type="file" name="upload" onchange="document.getElementById('fn').innerHTML = this.value;"> | ||||
|                 </label> | ||||
|                 <span id='fn' class="file-name"></span> | ||||
|                 </div> | ||||
|                 <div class="control-group"> | ||||
|                     <label for="file-zh-tw" class="control-label">Chinese</label> | ||||
|                     <div class="controls"> | ||||
|                     <input type="text" value="" id="file-zh-tw" class="input-xlarge"> | ||||
|                     <span class="help-inline">Please correct the error</span> | ||||
|                     </div> | ||||
|                 </div> | ||||
|                 <div class="control-group"> | ||||
|                     <label for="file-en" class="control-label">English</label> | ||||
|                     <div class="controls"> | ||||
|                     <input type="text" value="" id="file-en" class="input-xlarge"> | ||||
|                     <span class="help-inline">Please correct the error</span> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div class="modal-footer"> | ||||
|                 <a class="btn btn-primary" href="#">Submit/確定</a> | ||||
|                 <a class="btn" data-dismiss="modal" href="#">Cancel/取消</a> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| </div> | ||||
|  | @ -0,0 +1,62 @@ | |||
| <div id="qe-link"> | ||||
|     <div id="widget-link"> | ||||
|         <div class="control-group"> | ||||
|             <table class="table table-condensed"> | ||||
|                 <thead> | ||||
|                     <tr> | ||||
|                         <th>Chinese</th> | ||||
|                         <th>English</th> | ||||
|                         <th class="span1"></th> | ||||
|                     </tr> | ||||
|                 </thead> | ||||
|                 <tfoot> | ||||
|                     <tr> | ||||
|                         <td style="text-align:center" colspan="3"> | ||||
|                             <a class="btn btn-primary btn-small" href="#modal-link" data-toggle="modal"><i class="icon-plus icon-white"></i> ADD/新增</a> | ||||
|                         </td> | ||||
|                     </tr> | ||||
|                 </tfoot> | ||||
|                 <tbody> | ||||
|                     <tr> | ||||
|                         <td>…</td> | ||||
|                         <td>…</td> | ||||
|                         <td><a href="#modal-link" data-toggle="modal" class="action"><i class="icon-pencil"></i></a><a href class="action"><i class="icon-remove"></i></a></td> | ||||
|                     </tr> | ||||
|                 </tbody> | ||||
|             </table> | ||||
|         </div> | ||||
|         <div id="modal-link" class="modal hide fade"> | ||||
|             <div class="modal-header"> | ||||
|                 <a class="close" data-dismiss="modal">×</a> | ||||
|                 <h3>Add Link / Edit Link</h3> | ||||
|             </div> | ||||
|             <div class="modal-body form-horizontal"> | ||||
|                 <div class="control-group"> | ||||
|                     <label for="http" class="control-label">http://</label> | ||||
|                     <div class="controls"> | ||||
|                     <input type="text" value="" id="http" class="input-xlarge"> | ||||
|                     <span class="help-inline">Please correct the error</span> | ||||
|                     </div> | ||||
|                 </div> | ||||
|                 <div class="control-group error"> | ||||
|                     <label for="link-zh-tw" class="control-label">Chinese</label> | ||||
|                     <div class="controls"> | ||||
|                     <input type="text" value="" id="link-zh-tw" class="input-xlarge"> | ||||
|                     <span class="help-inline">Please correct the error</span> | ||||
|                     </div> | ||||
|                 </div> | ||||
|                 <div class="control-group"> | ||||
|                     <label for="link-en" class="control-label">English</label> | ||||
|                     <div class="controls"> | ||||
|                     <input type="text" value="" id="link-en" class="input-xlarge"> | ||||
|                     <span class="help-inline">Please correct the error</span> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div class="modal-footer"> | ||||
|                 <a class="btn btn-primary" href="#">Submit/確定</a> | ||||
|                 <a class="btn" data-dismiss="modal" href="#">Cancel/取消</a> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| </div> | ||||
|  | @ -0,0 +1,19 @@ | |||
| <div id="qe-picture"> | ||||
|     <div id="widget-picture"> | ||||
|         <div class="control-group"> | ||||
|             <label class="control-label">Picture</label> | ||||
|             <div class="control-group"> | ||||
|                 <img class="pull-left upload-picture" src="img/default-img.png" /> | ||||
|                 <div class="controls file-upload"> | ||||
|                 <label class="control-label btn" for="input-upload"> | ||||
|                     Browse/選擇檔案 | ||||
|                     <input id="input-upload" class="upload" type="file" name="upload" onchange="document.getElementById('fu').innerHTML = this.form.fu.value = this.value;"> | ||||
|                 </label> | ||||
|                 <span id='fu' class="file-name"></span> | ||||
|                 <br> | ||||
|                 <input name='fu' class="input-large" type="text"> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| </div> | ||||
|  | @ -0,0 +1,44 @@ | |||
| <!-- <div id="qe-tags"> | ||||
|     <div id="widget-tags"> | ||||
|         <div class="form-horizontal"> | ||||
|             <div class="control-group error"> | ||||
|                 <label class="control-label" for="tags-zh-tw"> | ||||
|                     Chinese | ||||
|                 </label> | ||||
|                 <div class="controls"> | ||||
|                     <input id='tags-zh-tw' class="input-prepend" type="text"> | ||||
|                     <span class="help-inline">Please correct the error</span> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div class="control-group"> | ||||
|                 <label class="control-label" for="tags-en"> | ||||
|                     English | ||||
|                 </label> | ||||
|                 <div class="controls"> | ||||
|                     <input id='tags-en' class="input-prepend" type="text"> | ||||
|                     <span class="help-inline">Please correct the error</span> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div class="control-group"> | ||||
|                 <div class="controls"> | ||||
|                     <hr> | ||||
|                     <span class="label label-tags">Default<a href><i class="icon-remove icon-white"></i></a></span> | ||||
|                     <span class="label label-tags">Default<a href><i class="icon-remove icon-white"></i></a></span> | ||||
|                     <span class="label label-tags">Default<a href><i class="icon-remove icon-white"></i></a></span> | ||||
|                     <span class="label label-tags">Default<a href><i class="icon-remove icon-white"></i></a></span> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| </div> --> | ||||
| 
 | ||||
| <div id="qe-tags"> | ||||
| 	<div id="widget-tags"> | ||||
| 		<div class="form-horizontal"> | ||||
| 			<% @tags.each do |tag| %> | ||||
| 			<%= check_box_tag 'bulletin[tag_ids][]', tag.id, bulletin.tag_ids.include?(tag.id)%> | ||||
| 			<%= tag[I18n.locale] %> | ||||
| 			<% end %> | ||||
| 		</div> | ||||
| 	</div> | ||||
| </div> | ||||
|  | @ -39,95 +39,33 @@ | |||
| <br /> | ||||
| <br /> | ||||
| 
 | ||||
| <h1><%= t('bulletin.list_announcement') %></h1> | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	<table> | ||||
| 	  <tr> | ||||
| 		<th><%= t('bulletin.status') %></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| %> | ||||
| 		<%= render :partial => 'bulletins', :locals => {:post => post} %> | ||||
| 	<% end %>	 | ||||
| 	</table> | ||||
| 
 | ||||
| <br /> | ||||
|  --> | ||||
| 
 | ||||
| <%= render 'filter' %> | ||||
| <table class="table main-list"> | ||||
| 	<thead> | ||||
| 		<tr> | ||||
| 			<th class="span1 strong"> | ||||
| 				<input type="checkbox"> | ||||
| 				<a href class="list-remove"><i class="icon-trash"></i></a> | ||||
| 			</th> | ||||
| 			<th class="span1"><%= t('bulletin.status') %></th> | ||||
| 			<th class="span1-2"><%= t('bulletin.category') %></th> | ||||
| 			<th class="span7 select"><%= t('bulletin.title') %></th> | ||||
| 			<th class="span1-2"><%= t('bulletin.start_date') %></th> | ||||
| 			<th class="span1-2"><%= t('bulletin.end_date') %></th> | ||||
| 			<th class="span1-2"><%= t('bulletin.tags') %></th> | ||||
| 			<th class="span1-2"><%= t('bulletin.last_modified') %></th> | ||||
| 		</tr> | ||||
| 	</thead> | ||||
| 	<tbody> | ||||
| 		<%= render :partial => 'bulletin', :collection => @bulletins %> | ||||
| 	</tbody> | ||||
| </table> | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| <div class="subnav"> | ||||
|     <ul class="nav nav-pills filter"> | ||||
|         <li class="accordion-group"> | ||||
|             <div class="accordion-heading"> | ||||
|                 <a href="#collapse-status" data-toggle="collapse" data-parent=".filters" class="accordion-toggle">Status <b class="web-symbol"></b></a> | ||||
|             </div> | ||||
|         </li> | ||||
|         <li class="accordion-group"> | ||||
|             <div class="accordion-heading"> | ||||
|                 <a href="#collapse-category" data-toggle="collapse" data-parent=".filters" class="accordion-toggle">Category <b class="web-symbol"></b></a> | ||||
|             </div> | ||||
|         </li> | ||||
|         <li class="accordion-group"> | ||||
|             <div class="accordion-heading"> | ||||
|                 <a href="#collapse-tags" data-toggle="collapse" data-parent=".filters" class="accordion-toggle">Tags <b class="web-symbol"></b></a> | ||||
|             </div> | ||||
|         </li> | ||||
|     </ul> | ||||
|     <div class="filters"> | ||||
|         <div class="accordion-body collapse" id="collapse-status"> | ||||
|             <div class="accordion-inner" data-toggle="buttons-checkbox"> | ||||
|                 <a href="#" class="btn">Category1</a> | ||||
|                 <a href="#" class="btn">Category2</a> | ||||
|             </div> | ||||
|             <div class="filter-clear"> | ||||
|                 <a href="#" class="btn"><i class="icons-brush-large"></i>Clear/重置</a> | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="accordion-body collapse" id="collapse-category"> | ||||
|             <div class="accordion-inner" data-toggle="buttons-checkbox"> | ||||
|                 <a href="#" class="btn">Category1</a> | ||||
|                 <a href="#" class="btn">Category2</a> | ||||
|             </div> | ||||
|             <div class="filter-clear"> | ||||
|                 <a href="#" class="btn"><i class="icons-brush-large"></i>Clear/重置</a> | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="accordion-body collapse" id="collapse-tags"> | ||||
|             <div class="accordion-inner" data-toggle="buttons-checkbox"> | ||||
|                 <a href="#" class="btn">Tag1</a> | ||||
|                 <a href="#" class="btn">Tag2</a> | ||||
|                 <a href="#" class="btn">Tag3</a> | ||||
|                 <a href="#" class="btn">Tag4</a> | ||||
|                 <a href="#" class="btn">Tag5</a> | ||||
|                 <a href="#" class="btn">Tag6</a> | ||||
|                 <a href="#" class="btn">Tag7</a> | ||||
|                 <a href="#" class="btn">Tag8</a> | ||||
|                 <a href="#" class="btn">Tag9</a> | ||||
|                 <a href="#" class="btn">Tag10</a> | ||||
|                 <a href="#" class="btn">Tag11</a> | ||||
|                 <a href="#" class="btn">Tag12</a> | ||||
|                 <a href="#" class="btn">Tag13</a> | ||||
|                 <a href="#" class="btn">Tag14</a> | ||||
|                 <a href="#" class="btn">Tag15</a> | ||||
|                 <a href="#" class="btn">Tag16</a> | ||||
|                 <a href="#" class="btn">Tag17</a> | ||||
|                 <a href="#" class="btn">Tag18</a> | ||||
|                 <a href="#" class="btn">Tag19</a> | ||||
|                 <a href="#" class="btn">Tag20</a> | ||||
|             </div> | ||||
|             <div class="filter-clear"> | ||||
|                 <a href="#" class="btn"><i class="icons-brush-large"></i>Clear/重置</a> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| <div class="form-actions"> | ||||
| 	<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t('admin.add'), new_panel_announcement_back_end_bulletin_path, :class => 'btn btn-primary' %> | ||||
| </div> | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,24 +1,6 @@ | |||
| <br /> | ||||
| <br /> | ||||
| <br /> | ||||
| <br /> | ||||
| 
 | ||||
| <% content_for :secondary do %> | ||||
|   <ul class="list"> | ||||
| 	  <li><%= link_to t('bulletin.index'), panel_announcement_back_end_bulletins_path, :class => 'seclink2' %></li> | ||||
|   </ul> | ||||
| <% end -%> | ||||
| 
 | ||||
| <%= flash_messages %> | ||||
| <h1><%= t('bulletin.new_announcement') %></h1> | ||||
| <%= form_for @bulletin, :url => panel_announcement_back_end_bulletins_path do |f| %> | ||||
| 	<%= render :partial => 'form', :locals => {:f => f} %> | ||||
| <% end %> | ||||
| 
 | ||||
| <%= link_back %> | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
|  <br /> | ||||
|  <br /> | ||||
|  <br /> | ||||
|  | @ -8,6 +8,7 @@ Rails.application.routes.draw do | |||
|         resources :bulletin_categorys, :controller => 'bulletin_categorys' do | ||||
|           match "quick_edit/:bulletin_category_id" => "bulletin_categorys#quick_edit" ,:as => :quick_edit | ||||
|         end | ||||
|         resources :tags | ||||
|       end | ||||
|       namespace :front_end do | ||||
|         root :to => "bulletins#index" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue