Separate announcement and news

This commit is contained in:
Christophe Vilayphiou 2012-04-30 06:27:38 +08:00
parent 63ee8eaca9
commit b8f52fa1ec
152 changed files with 4008 additions and 18 deletions

View File

@ -27,8 +27,10 @@ class Admin::PagePartsController < ApplicationController
@r_tag = @part.public_r_tag.blank? ? LIST[:public_r_tags][0] : @part.public_r_tag @r_tag = @part.public_r_tag.blank? ? LIST[:public_r_tags][0] : @part.public_r_tag
@tag_objects = @r_tag.classify.constantize.all rescue nil @tag_objects = @r_tag.classify.constantize.all rescue nil
case @module_app.key case @module_app.key
when 'bulletin' when 'announcement'
@categories = BulletinCategory.all @categories = BulletinCategory.all
when 'news'
@categories = NewsBulletinCategory.all
when 'web_resource' when 'web_resource'
@categories = WebLinkCategory.all @categories = WebLinkCategory.all
end end
@ -67,6 +69,8 @@ class Admin::PagePartsController < ApplicationController
case @module_app.key case @module_app.key
when 'announcement' when 'announcement'
@categories = BulletinCategory.all @categories = BulletinCategory.all
when 'news'
@categories = NewsBulletinCategory.all
when 'web_resource' when 'web_resource'
@categories = WebLinkCategory.all @categories = WebLinkCategory.all
end end

View File

@ -31,7 +31,18 @@ class Admin::PagesController < ApplicationController
@designs = Design.all.entries @designs = Design.all.entries
@design = @item.design ? @item.design : @designs.first @design = @item.design ? @item.design : @designs.first
@app_frontend_urls = @item.module_app.app_pages if @item.module_app @app_frontend_urls = @item.module_app.app_pages if @item.module_app
@categories = BulletinCategory.all if @item.module_app && @item.module_app.key.eql?('announcement') if @item.module_app
case @item.module_app.key
when 'announcement'
@categories = BulletinCategory.all
when 'news'
@categories = NewsBulletinCategory.all
when 'web_resource'
@categories = WebLinkCategory.all
end
else
@categories = nil
end
end end
def create def create

View File

@ -33,9 +33,9 @@ class PagesController < ApplicationController
def index_from_link def index_from_link
if params[:page] if params[:page]
redirect_to "/#{@item.full_name}?page=#{params[:page]}" redirect_to "/#{@item.full_name}?page=#{params[:page]}&category_id=#{params[:category_id]}&tag_id=#{params[:tag_id]}"
else else
redirect_to "/#{@item.full_name}" redirect_to "/#{@item.full_name}?category_id=#{params[:category_id]}&tag_id=#{params[:tag_id]}"
end end
end end
@ -51,11 +51,11 @@ class PagesController < ApplicationController
def get_item def get_item
module_app = ModuleApp.first(:conditions => {:key => params[:app_name]}) module_app = ModuleApp.first(:conditions => {:key => params[:app_name]})
if params[:category_id] # if params[:category_id]
@item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category => params[:category_id]}) # @item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category => params[:category_id]})
else # else
@item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action]}) @item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action]})
end # end
end end
end end

View File

@ -25,8 +25,8 @@ module OrbitBackendHelper
content_tag :thead do content_tag :thead do
content_tag :tr, :class => "sort-header" do content_tag :tr, :class => "sort-header" do
concat (content_tag :th, :class => "span1 strong" do concat (content_tag :th, :class => "span1 strong" do
check_box_tag :check_all concat check_box_tag :check_all
link_to content_tag(:i, nil, :class => "icon-trash"), '#', :class => "list-remove" concat link_to content_tag(:i, nil, :class => "icon-trash"), '#', :class => "list-remove"
end) if delete_all end) if delete_all
titles.each do |title| titles.each do |title|
concat render_title(title[0], title[1], title[2], title[3]) concat render_title(title[0], title[1], title[2], title[3])

View File

@ -1 +1 @@
<%= select 'page_part', 'category', @categories.collect{|category| [category.i18n_variable[I18n.locale], category.id]}, :selected => (@part ? @part[:category] : nil) if @categories && @categories.size > 0 %> <%= select 'page_part', 'category', @categories.collect{|category| [category.i18n_variable[I18n.locale], category.id]}, :selected => (@part ? @part[:category] : nil), :include_blank => true if @categories && @categories.size > 0 %>

View File

@ -27,7 +27,7 @@
<%= t('admin.module_app') %> <%= t('admin.module_app') %>
<%= render :partial => "app_selector", :locals => { :f => f } %> <%= render :partial => "app_selector", :locals => { :f => f } %>
<span id="app_page_url"><%= select('page','app_frontend_url', @app_frontend_urls, :selected => @item.app_frontend_url ) rescue ''%> </span> <span id="app_page_url"><%= select('page','app_frontend_url', @app_frontend_urls, :selected => @item.app_frontend_url ) rescue ''%> </span>
<span id="app_page_category"><%= select('page','category', @categories.collect{|category| [category.i18n_variable[I18n.locale], category.id]}, :selected => @item[:category] ) rescue ''%> </span> <span id="app_page_category"><%= select('page','category', @categories.collect{|category| [category.i18n_variable[I18n.locale], category.id]}, :selected => @item[:category], :include_blank => true ) rescue ''%> </span>
</p> </p>
<p> <p>
<%= f.label :is_published, "#{t('admin.is_published')} ?" %> <%= f.label :is_published, "#{t('admin.is_published')} ?" %>

View File

@ -16,6 +16,18 @@
<% end -%> <% end -%>
<%= content_tag :li, :class => active_for_controllers('news_bulletins', '/panel/news/back_end/tags', 'news_bulletin_categorys', 'news_approvals') do -%>
<%= link_to content_tag(:i, nil, :class => 'icons-announcement') + t('admin.news'), panel_news_back_end_news_bulletins_path %>
<%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('news_bulletins', '/panel/news/back_end/tags', 'news_bulletin_categorys', 'news_approvals')) do -%>
<%= content_tag :li, link_to(t('news.all_articles'), panel_news_back_end_news_bulletins_path), :class => active_for_action('news_bulletins', 'index') %>
<%= content_tag :li, link_to(t('news.add_new'), new_panel_news_back_end_news_bulletin_path), :class => active_for_action('news_bulletins', 'new') %>
<%= content_tag :li, link_to(t('news.categories'), panel_news_back_end_news_bulletin_categorys_path), :class => active_for_action('news_bulletin_categorys', 'index') %>
<%= content_tag :li, link_to(t('news.tags'), panel_news_back_end_tags_path), :class => active_for_action('/panel/news/back_end/tags', 'index') %>
<%= content_tag :li, link_to(t('news.news_bulletin.approval_setting'), panel_news_back_end_news_approval_setting_path), :class => active_for_action('news_approvals', 'setting') if (is_manager? rescue nil) %>
<% end -%>
<% end -%>
<%#= content_tag :li, :class => active_for_controllers('users') do -%> <%#= content_tag :li, :class => active_for_controllers('users') do -%>
<%#= link_to content_tag(:i, nil, :class => 'icons-member') + t('admin.member'), admin_users_path %> <%#= link_to content_tag(:i, nil, :class => 'icons-member') + t('admin.member'), admin_users_path %>
<%# end -%> <%# end -%>

View File

@ -43,7 +43,9 @@ module ParserFrontEnd
ret << "<div id='appfrontend' class='dymanic_load' path='/panel/#{page.module_app.key}/front_end/#{page.app_frontend_url}" ret << "<div id='appfrontend' class='dymanic_load' path='/panel/#{page.module_app.key}/front_end/#{page.app_frontend_url}"
ret << "/#{id}" if id ret << "/#{id}" if id
ret << "?inner=true&page_id=#{page.id}" ret << "?inner=true&page_id=#{page.id}"
ret << "&category_id=#{page.category}" if page[:category] # ret << "&category_id=#{page.category}" if page[:category]
ret << "&category_id=#{params[:category_id]}" if !params[:category_id].blank?
ret << "&tag_id=#{params[:tag_id]}" if !params[:tag_id].blank?
ret << "'></div>" ret << "'></div>"
else else
part = page.page_parts.detect{ |p| p.name.to_s == content['name'].to_s } rescue nil part = page.page_parts.detect{ |p| p.name.to_s == content['name'].to_s } rescue nil
@ -51,8 +53,15 @@ module ParserFrontEnd
when 'text' when 'text'
ret << part.i18n_variable[I18n.locale] rescue '' ret << part.i18n_variable[I18n.locale] rescue ''
when 'module_widget' when 'module_widget'
if part[:category] # if part[:category]
ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true&category_id=#{part[:category]}'></div>" # ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true&category_id=#{part[:category]}'></div>"
# else
# ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true'></div>"
# end
if !params[:category_id].blank?
ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true&category_id=#{params[:category_id]}'></div>"
elsif !params[:tag_id].blank?
ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true&tag_id=#{params[:tag_id]}'></div>"
else else
ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true'></div>" ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true'></div>"
end end

View File

@ -11,8 +11,10 @@ class Panel::Announcement::FrontEnd::BulletinsController < OrbitWidgetController
def index def index
date_now = Time.now date_now = Time.now
if params[:category_id] if !params[:category_id].blank?
@bulletins = Bulletin.can_display.where(:bulletin_category_id => params[:category_id]).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10) @bulletins = Bulletin.can_display.where(:bulletin_category_id => params[:category_id]).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10)
elsif !params[:tag_id].blank?
@bulletins = AnnouncementTag.find(params[:tag_id]).bulletins.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10)
else else
@bulletins = Bulletin.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10) @bulletins = Bulletin.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10)
end end

View File

@ -13,8 +13,10 @@ class Panel::Announcement::Widget::BulletinsController < OrbitWidgetController
# deadline # deadline
# @bulletin_categorys = BulletinCategory.first; # @bulletin_categorys = BulletinCategory.first;
# @bulletins = Bulletin.widget_datas(@bulletin_categorys.id).limit(9) # @bulletins = Bulletin.widget_datas(@bulletin_categorys.id).limit(9)
if params[:category_id] if !params[:category_id].blank?
@bulletins = Bulletin.can_display.where(:bulletin_category_id => params[:category_id]).widget_datas.limit(9) @bulletins = Bulletin.can_display.where(:bulletin_category_id => params[:category_id]).widget_datas.limit(9)
elsif !params[:tag_id].blank?
@bulletins = AnnouncementTag.find(params[:tag_id]).bulletins.can_display.widget_datas.limit(9) rescue nil
else else
@bulletins = Bulletin.can_display.widget_datas.limit(9) @bulletins = Bulletin.can_display.widget_datas.limit(9)
end end
@ -40,6 +42,11 @@ class Panel::Announcement::Widget::BulletinsController < OrbitWidgetController
@selected_tag = AnnouncementTag.find(params[:tag_id]) @selected_tag = AnnouncementTag.find(params[:tag_id])
@web_links = WebResourceTag.first(:conditions => {:en => @selected_tag[:en]}).get_visible_links.page(params[:page]).per(5) rescue nil @web_links = WebResourceTag.first(:conditions => {:en => @selected_tag[:en]}).get_visible_links.page(params[:page]).per(5) rescue nil
end end
def bulletins_side_bar
@tags = AnnouncementTag.all
get_categorys
end
protected protected

View File

@ -0,0 +1,25 @@
<!-- <div class="search"> <input type="text" onfocus="this.value='';this.searchClickFlag=true;" onblur="if(this.value==''){this.value='公告搜尋';this.searchClickFlag=false;}" value="公告搜尋" id="q" class="search_key" name="q"/> <input type="submit" name="sa" id="sa" class="sa" value="." /> </div> -->
<div class="category_list">
<h3 class="h3"><%= t('announcement.categories') %></h3>
<ul class="list">
<% @bulletin_categorys.each do |category| %>
<li>
<%= link_to category.i18n_variable[I18n.locale], panel_announcement_front_end_bulletins_path(:category_id => category.id) %>
</li>
<% end %>
</ul>
</div>
<div class="tag_cloud">
<h3 class="h3"><%= t('announcement.tag_cloud') %></h3>
<ul class="cloud">
<% @tags.each do |tag| %>
<li class="hot<%#=rand(4) + 1%>">
<%= link_to tag[I18n.locale], panel_announcement_front_end_bulletins_path(:tag_id => tag.id) %>
</li>
<% end %>
</ul>
</div>
<!-- <div class="clear"></div> -->
<!-- <div class="rss_feed">
<a href="" class="rssimg"> Rss feed </a>
</div> -->

View File

@ -58,6 +58,7 @@ en:
announcement: announcement:
all_articles: List all_articles: List
add_new: Add add_new: Add
categories: Categories
sure?: Sure? sure?: Sure?
campus_news: Campus News campus_news: Campus News
more: more+ more: more+
@ -79,6 +80,8 @@ en:
approval_setting_window_title: 'Unit' approval_setting_window_title: 'Unit'
approval_user_list: 'Approval Users' approval_user_list: 'Approval Users'
cate_auth: Category Authorization cate_auth: Category Authorization
tag_cloud: Tag cloud
# admin: # admin:
# action: Action # action: Action
# add_language: Add language # add_language: Add language

View File

@ -61,7 +61,8 @@ zh_tw:
approval_setting_window_title: '單位' approval_setting_window_title: '單位'
approval_user_list: '審核者' approval_user_list: '審核者'
cate_auth: '分類授權' cate_auth: '分類授權'
tag_cloud: 標籤雲
bulletin: bulletin:
last_modified: 最後修改於 last_modified: 最後修改於
tags: 標籤 tags: 標籤

View File

@ -39,6 +39,7 @@ Rails.application.routes.draw do
match "bulletins_and_web_links" => "bulletins#bulletins_and_web_links" match "bulletins_and_web_links" => "bulletins#bulletins_and_web_links"
match "reload_bulletins" => "bulletins#reload_bulletins" match "reload_bulletins" => "bulletins#reload_bulletins"
match "reload_web_links" => "bulletins#reload_web_links" match "reload_web_links" => "bulletins#reload_web_links"
match "bulletins_side_bar" => "bulletins#bulletins_side_bar"
end end
end end
end end

View File

@ -0,0 +1,6 @@
.bundle/
log/*.log
pkg/
test/dummy/db/*.sqlite3
test/dummy/log/*.log
test/dummy/tmp/

17
vendor/built_in_modules/news/Gemfile vendored Normal file
View File

@ -0,0 +1,17 @@
source "http://rubygems.org"
# Declare your gem's dependencies in news.gemspec.
# Bundler will treat runtime dependencies like base dependencies, and
# development dependencies will be added by default to the :development group.
gemspec
# jquery-rails is used by the dummy application
gem "jquery-rails"
# Declare any dependencies that are still in development here instead of in
# your gemspec. These might include edge Rails or gems from your path or
# Git. Remember to move these dependencies to your gemspec before releasing
# your gem to rubygems.org.
# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'

View File

@ -0,0 +1,20 @@
Copyright 2011 YOURNAME
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,3 @@
= News
This project rocks and uses MIT-LICENSE.

39
vendor/built_in_modules/news/Rakefile vendored Normal file
View File

@ -0,0 +1,39 @@
#!/usr/bin/env rake
begin
require 'bundler/setup'
rescue LoadError
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
end
begin
require 'rdoc/task'
rescue LoadError
require 'rdoc/rdoc'
require 'rake/rdoctask'
RDoc::Task = Rake::RDocTask
end
RDoc::Task.new(:rdoc) do |rdoc|
rdoc.rdoc_dir = 'rdoc'
rdoc.title = 'News'
rdoc.options << '--line-numbers'
rdoc.rdoc_files.include('README.rdoc')
rdoc.rdoc_files.include('lib/**/*.rb')
end
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
load 'rails/tasks/engine.rake'
Bundler::GemHelper.install_tasks
require 'rake/testtask'
Rake::TestTask.new(:test) do |t|
t.libs << 'lib'
t.libs << 'test'
t.pattern = 'test/**/*_test.rb'
t.verbose = false
end
task :default => :test

View File

@ -0,0 +1,9 @@
// This is a manifest file that'll be compiled into including all the files listed below.
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
// be included in the compiled file accessible from http://example.com/assets/application.js
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
//= require jquery
//= require jquery_ujs
//= require news_link

View File

@ -0,0 +1,45 @@
$(document).ready(function(){
var topic1="0px";
var topic2="-948px";
var topic3="-1896px";
var topic_page=1;
$(".topic_prev").addClass("topic_prev_first");
$(document).on("click", ".topic_prev", function() {
if (topic_page !=1){
topic_page-=1;
}else{
}
if (topic_page == 1){
$("#topic_list").stop().animate({"left": topic1}, "slow");
$(".topic_prev").addClass("topic_prev_first");
}
if (topic_page == 2){
$("#topic_list").stop().animate({"left": topic2}, "slow");
$(".topic_prev").removeClass("topic_prev_first");
$(".topic_next").removeClass("topic_next_last");
}
if (topic_page == 3){
$("#topic_list").stop().animate({"left": topic3}, "slow");
$(".topic_prev").removeClass("topic_next_last");
}
});
$(document).on("click", ".topic_next", function() {
if (topic_page >=1 && topic_page <=2){
topic_page+=1;
}else{
}
if (topic_page == 1){
$("#topic_list").stop().animate({"left": topic1}, "slow");
$(".topic_prev").addClass("topic_prev_first");
}
if (topic_page == 2){
$("#topic_list").stop().animate({"left": topic2}, "slow");
$(".topic_prev").removeClass("topic_prev_first");
}
if (topic_page == 3){
$("#topic_list").stop().animate({"left": topic3}, "slow");
$(".topic_next").addClass("topic_next_last");
}
});
});

View File

View File

@ -0,0 +1,23 @@
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_locale
# Set I18n.locale
def set_locale
# update session if passed
session[:locale] = params[:locale] if params[:locale]
# set locale based on session or default
begin
# check if locale is valid for non site pages
if !VALID_LOCALES.include?(session[:locale])
I18n.locale = I18n.default_locale
else
I18n.locale = session[:locale]
end
rescue
I18n.locale = I18n.default_locale
end
end
end

View File

@ -0,0 +1,41 @@
class Panel::News::BackEnd::NewsApprovalsController < OrbitBackendController
before_filter :authenticate_user!
include AdminHelper
def setting
@news_bulletin_categorys = NewsBulletinCategory.all
if params.has_key?(:category_id)
first_category = NewsBulletinCategory.find params[:category_id]
if params[:commit] == 'Update'
privilege_users = params[:users].collect{|key,value| User.find key } rescue []
preload_object_auth_ary = first_category.object_auths.where(title: 'fact_check') || (first_category.object_auths.create :title=> 'fact_check')
preload_object_auth = preload_object_auth_ary.first
preload_object_auth.privilege_users = privilege_users
preload_object_auth.save!
end
else
first_category = @news_bulletin_categorys.first
end
preload_object_auth = first_category.object_auths.where(title: 'fact_check').empty?? (first_category.object_auths.create! :title=> 'fact_check') : first_category.object_auths.where(title: 'fact_check')
@users_array = preload_object_auth.first.privilege_users rescue []
respond_to do |format|
format.html
format.js
end
end
def update_setting
end
protected
def get_categorys(id = nil)
@news_bulletin_categorys = []
if(is_manager? || is_admin?)
@news_bulletin_categorys = (id ? NewsBulletinCategory.find(id).to_a : NewsBulletinCategory.excludes('disabled' => true))
elsif is_sub_manager?
@news_bulletin_categorys = NewsBulletinCategory.authed_for_user(current_user,'submit_new')
end
end
end

View File

@ -0,0 +1,118 @@
class Panel::News::BackEnd::NewsBulletinCategorysController < OrbitBackendController
def index
@news_bulletin_categorys = NewsBulletinCategory.all
@news_bulletin_category = NewsBulletinCategory.new(:display => 'List')
@url = panel_news_back_end_news_bulletin_categorys_path
respond_to do |format|
format.html # index.html.erb
# format.xml { render :xml => @news_bulletins }
format.js
end
end
# GET /news_bulletins/1
# GET /news_bulletins/1.xml
def show
@news_bulletin_category = NewsBulletinCategory.find(params[:id])
respond_to do |format|
format.html # show.html.erb
# format.xml { render :xml => @news_bulletin_category }
format.js
end
end
# GET /news_bulletins/new
# GET /news_bulletins/new.xml
def new
@news_bulletin_category = NewsBulletinCategory.new(:display => 'List')
respond_to do |format|
format.html # new.html.erb
# format.xml { render :xml => @news_bulletin_category }
format.js
end
end
def quick_edit
# debugger
@news_bulletin_category = NewsBulletinCategory.find(params[:news_bulletin_category_id])
@url = panel_news_back_end_news_bulletin_category_path(@news_bulletin_category)
respond_to do |format|
format.js
end
end
# GET /news_bulletins/1/edit
def edit
@news_bulletin_category = NewsBulletinCategory.find(params[:id])
@i18n_variable = @news_bulletin_category.i18n_variable
@url = panel_news_back_end_news_bulletin_category_path(@news_bulletin_category)
respond_to do |format|
format.html
format.js
end
end
# POST /news_bulletins
# POST /news_bulletins.xml
def create
@news_bulletin_category = NewsBulletinCategory.new(params[:news_bulletin_category])
respond_to do |format|
if @news_bulletin_category.save
# format.html { redirect_to @news_bulletin_category, notice: 'Entry was successfully created.' }
format.html { redirect_to(panel_news_back_end_news_bulletin_categorys_url, :notice => t('news.create_news_bulletin_category_success')) }
# format.xml { render :xml => @news_bulletin_category, :status => :created, :location => @news_bulletin_category }
format.js
else
format.html { render :action => "new" }
# format.xml { render :xml => @news_bulletin_category.errors, :status => :unprocessable_entity }
format.js { render action: "new" }
end
end
end
# PUT /news_bulletins/1
# PUT /news_bulletins/1.xml
def update
@news_bulletin_category = NewsBulletinCategory.find(params[:id])
@url = panel_news_back_end_news_bulletin_category_path(@news_bulletin_category)
respond_to do |format|
if @news_bulletin_category.update_attributes(params[:news_bulletin_category])
# format.html { redirect_to(panel_news_back_end_news_bulletin_category_url(@news_bulletin_category), :notice => t('news_bulletin_category.update_news_bulletin_category_success')) }
# format.html { redirect_to(panel_news_back_end_news_bulletin_categorys_url, :notice => t('news_bulletin_category.update_news_bulletin_category_success')) }
# format.xml { head :ok }
format.js
else
format.html { render :action => "edit" }
format.js { render :action => "edit" }
# format.xml { render :xml => @news_bulletin_category.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /news_bulletins/1
# DELETE /news_bulletins/1.xml
def destroy
@news_bulletin_category = NewsBulletinCategory.find(params[:id])
@news_bulletin_category.destroy
respond_to do |format|
format.html { redirect_to(panel_news_back_end_news_bulletin_categorys_url) }
# format.xml { head :ok }
format.js
end
end
end

View File

@ -0,0 +1,48 @@
class Panel::News::BackEnd::NewsBulletinFilesController < ApplicationController
layout 'new_admin'
def index
@news_bulletin_files = NewsBulletinFile.all
respond_to do |format|
format.html # index.html.erb
# format.xml { render :xml => @news_bulletins }
format.js
end
end
# POST /news_bulletins
# POST /news_bulletins.xml
def create
@news_bulletin_file = NewsBulletinFile.new(params[:news_bulletin_file])
respond_to do |format|
if @news_bulletin_file.save
format.html { redirect_to(panel_news_back_end_news_bulletins_url) }
format.js
else
format.html { render :action => "new" }
format.js { render action: "new" }
end
end
end
# PUT /news_bulletins/1
# PUT /news_bulletins/1.xml
def update
@news_bulletin_file = NewsBulletinFile.find(params[:id])
respond_to do |format|
if @news_bulletin_file.update_attributes(params[:news_bulletin_file])
format.html { redirect_to(panel_news_back_end_news_bulletins_url) }
format.js
else
format.html { render :action => "edit" }
format.js { render :action => "edit" }
end
end
end
end

View File

@ -0,0 +1,49 @@
class Panel::News::BackEnd::NewsBulletinLinksController < ApplicationController
layout 'new_admin'
def index
@news_bulletin_links = NewsBulletinLink.all
respond_to do |format|
format.html # index.html.erb
# format.xml { render :xml => @news_bulletins }
format.js
end
end
# POST /news_bulletins
# POST /news_bulletins.xml
def create
@news_bulletin_link = NewsBulletinLink.new(params[:news_bulletin_link])
# @news_bulletin_link.news_bulletin_id = params[:news_bulletin_link][:news_bulletin_id]
respond_to do |format|
if @news_bulletin_link.save
format.html { redirect_to(panel_news_back_end_news_bulletins_url) }
format.js
else
format.html { render :action => "new" }
format.js { render action: "new" }
end
end
end
# PUT /news_bulletins/1
# PUT /news_bulletins/1.xml
def update
@news_bulletin_link = NewsBulletinLink.find(params[:id])
respond_to do |format|
if @news_bulletin_link.update_attributes(params[:news_bulletin_link])
format.html { redirect_to(panel_news_back_end_news_bulletins_url) }
format.js
else
format.html { render :action => "edit" }
format.js { render :action => "edit" }
end
end
end
end

View File

@ -0,0 +1,408 @@
class Panel::News::BackEnd::NewsBulletinsController < OrbitBackendController
before_filter :authenticate_user!
before_filter :is_admin?
def index
# @news_bulletins = NewsBulletin.all
# @news_bulletins = NewsBulletin.desc("postdate desc")
get_categorys(params[:news_bulletin_category_id])
get_tags
@filter = params[:filter]
new_filter = params[:new_filter]
if @filter && params[:clear]
@filter.delete(params[:type])
elsif @filter && new_filter
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
elsif @filter.has_key?(new_filter[:type])
@filter[new_filter[:type]] << new_filter[:id].to_s
else
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
end
elsif new_filter
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
end
# @news_bulletins = NewsBulletin.where("news_bulletin_category_id" => params[:news_bulletin_category_id]).desc("postdate") if params[:news_bulletin_category_id]
# @news_bulletins = NewsBulletin.search(params[:search], params[:category_id])
# @news_bulletins = NewsBulletin.all.order_by([params[:sort], params[:direction]])
# @news_bulletins = (params[:sort] || @filter) ? get_sorted_and_filtered_news_bulletins : NewsBulletin.all.page(params[:page]).per(10)
@news_bulletins = (params[:sort] || @filter) ? get_sorted_and_filtered("news_bulletin") : NewsBulletin.all.page(params[:page]).per(10)
@news_bulletin_categories = NewsBulletinCategory.all
@news_bulletin_link = NewsBulletinLink.new
@link_url = panel_news_back_end_news_bulletins_path
@news_bulletin_file = NewsBulletinFile.new
@file_url = panel_news_back_end_news_bulletins_path
respond_to do |format|
format.html # index.html.erb
format.js { }
format.xml { render :xml => @news_bulletins }
end
end
# GET /news_bulletins/1
# GET /news_bulletins/1.xml
def show
@news_bulletin = NewsBulletin.find(params[:id])
get_tags
# get_categorys
# @news_bulletin_categorys = NewsBulletinCategory.where("_id" => params[:id])
# if params[:id]
# @news_bulletins = NewsBulletin.where("news_bulletin_category_id" => params[:id])
# else
# @news_bulletins = NewsBulletin.desc("postdate desc")
# end
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @news_bulletin }
end
end
# GET /news_bulletins/new
# GET /news_bulletins/new.xml
def new
@news_bulletin = NewsBulletin.new
@link_url = panel_news_back_end_news_bulletins_path
# @news_bulletin.news_bulletin_files.build
# @news_bulletin.news_bulletin_files.new
get_categorys
get_tags
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @news_bulletin }
end
end
# GET /news_bulletins/1/edit
def edit
@news_bulletin = NewsBulletin.find(params[:id])
if !current_user.admin? && (@news_bulletin.is_rejected? || @news_bulletin.is_checked?)
redirect_to :action => :index
else
# @summary_variable = @news_bulletin.summary_variable
@link_url = panel_news_back_end_news_bulletin_path(@news_bulletin)
get_categorys
get_tags
end
end
# POST /news_bulletins
# POST /news_bulletins.xml
def create
if params[:news_bulletin_link]
@news_bulletin_link = NewsBulletinLink.new(params[:news_bulletin_link])
respond_to do |format|
if @news_bulletin_link.save
format.js { render 'create_news_bulletin_link' }
end
end
elsif params[:news_bulletin_file]
@news_bulletin_file = NewsBulletinFile.new(params[:news_bulletin_file])
respond_to do |format|
if @news_bulletin_file.save
format.js { render 'create_news_bulletin_file' }
end
end
else
@news_bulletin = NewsBulletin.new(params[:news_bulletin])
@news_bulletin.create_user_id = current_user.id
@news_bulletin.update_user_id = current_user.id
respond_to do |format|
if @news_bulletin.save
# format.html { redirect_to(panel_news_back_end_news_bulletin_url(@news_bulletin), :notice => t('news.create_news_bulletin_success')) }
format.html { redirect_to(panel_news_back_end_news_bulletins_url, :notice => t('news.create_news_bulletin_success')) }
format.xml { render :xml => @news_bulletin, :status => :created, :location => @news_bulletin }
format.js
else
format.html { render :action => "new" }
format.xml { render :xml => @news_bulletin.errors, :status => :unprocessable_entity }
end
end
end
end
def link_quick_add
# debugger
@news_bulletin_link = NewsBulletinLink.new
@link_url = panel_news_back_end_news_bulletins_path
@news_bulletin_link.news_bulletin_id = params[:news_bulletin_id]
respond_to do |format|
format.js
end
end
def link_quick_edit
# debugger
@news_bulletin_link = NewsBulletinLink.find(params[:news_bulletin_id])
@link_url = panel_news_back_end_news_bulletin_path(@news_bulletin_link)
# @news_bulletin = NewsBulletin.find(params[:news_bulletin_id])
# @link_url = panel_news_back_end_news_bulletin_path(@news_bulletin)
respond_to do |format|
format.js
end
end
def file_quick_add
# debugger
@news_bulletin_file = NewsBulletinFile.new
@file_url = panel_news_back_end_news_bulletins_path
@news_bulletin_file.news_bulletin_id = params[:news_bulletin_id]
respond_to do |format|
format.js
end
end
def file_quick_edit
# debugger
@news_bulletin_file = NewsBulletinFile.find(params[:news_bulletin_id])
@file_url = panel_news_back_end_news_bulletin_path(@news_bulletin_file)
respond_to do |format|
format.js
end
end
# PUT /news_bulletins/1
# PUT /news_bulletins/1.xml
def update
if params[:news_bulletin_link]
@news_bulletin_link = NewsBulletinLink.find(params[:id])
@link_url = panel_news_back_end_news_bulletin_path(@news_bulletin_link)
respond_to do |format|
if @news_bulletin_link.update_attributes(params[:news_bulletin_link])
# format.html { redirect_to(panel_news_back_end_news_bulletins_url) }
format.js { render 'update_news_bulletin_link' }
end
end
elsif params[:news_bulletin_file]
@news_bulletin_file = NewsBulletinFile.find(params[:id])
@file_url = panel_news_back_end_news_bulletin_path(@news_bulletin_file)
respond_to do |format|
if @news_bulletin_file.update_attributes(params[:news_bulletin_file])
# format.html { redirect_to(panel_news_back_end_news_bulletins_url) }
format.js { render 'update_news_bulletin_file' }
end
end
else
@news_bulletin = NewsBulletin.find(params[:id])
@news_bulletin.update_user_id = current_user.id
# @news_bulletin.image.clear if params[:news_bulletin][:image_del] == '1'
# if params[:news_bulletin][:image_del] == '1'
# @news_bulletin.remove_image!
# @news_bulletin.image_del = nil
# params[:news_bulletin][:image_del] = nil
# end
respond_to do |format|
if @news_bulletin.update_attributes(params[:news_bulletin])
# format.html { redirect_to(panel_news_back_end_news_bulletin_url(@news_bulletin), :notice => t('news_bulletin.update_news_bulletin_success')) }
format.html { redirect_to(panel_news_back_end_news_bulletins_url, :notice => t('news_bulletin.update_news_bulletin_success')) }
format.js { render 'toggle_enable' }
format.xml { head :ok }
else
get_tags
get_categorys
format.html { render :action => "edit" }
format.xml { render :xml => @news_bulletin.errors, :status => :unprocessable_entity }
end
end
end
end
# DELETE /news_bulletins/1
# DELETE /news_bulletins/1.xml
def destroy
@news_bulletin = NewsBulletin.find(params[:id])
# @news_bulletin.news_bulletin_files.destroy
@news_bulletin.destroy
respond_to do |format|
format.html { redirect_to(panel_news_back_end_news_bulletins_url) }
# format.xml { head :ok }
format.js
end
end
# def top_edit
# NewsBulletin.where(id: params[:id]).update_all( is_top: true )
# respond_to do |format|
# format.html { redirect_to(panel_news_back_end_news_bulletins_url) }
# format.xml { head :ok }
# end
# end
def load_quick_edit
@news_bulletin = NewsBulletin.find(params[:id])
@type = params[:type]
@news_bulletin_categories = NewsBulletinCategory.all
get_tags
end
def delete
if params[:to_delete]
news_bulletins = NewsBulletin.any_in(:_id => params[:to_delete]).delete_all
end
redirect_to panel_news_back_end_news_bulletins_url(:filter => params[:filter], :direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end
protected
def get_categorys(id = nil)
@news_bulletin_categorys = []
if(is_manager? || is_admin?)
@news_bulletin_categorys = (id ? NewsBulletinCategory.find(id).to_a : NewsBulletinCategory.excludes('disabled' => true))
elsif is_sub_manager?
@news_bulletin_categorys = NewsBulletinCategory.authed_for_user(current_user,'submit_new')
end
end
def get_tags
module_app = ModuleApp.first(:conditions => {:key => 'news'})
@tags = Tag.all(:conditions => {:module_app_id => module_app.id}).order_by(I18n.locale, :asc)
end
def get_sorted_and_filtered_news_bulletins
news_bulletins = NewsBulletin.all
case params[:sort]
when 'postdate', 'deadline'
news_bulletins = news_bulletins.order_by([params[:sort], params[:direction]])
when 'category'
category_ids = news_bulletins.distinct(:news_bulletin_category_id)
categories = NewsBulletinCategory.find(category_ids) rescue nil
if categories
h = Hash.new
categories.each { |category| h[category.i18n_variable[I18n.locale]] = category.id }
sorted = params[:direction].eql?('asc') ? h.sort : h.sort.reverse!
sorted_categorys = sorted.collect {|a| news_bulletins.where(:news_bulletin_category_id => a[1]).entries }
news_bulletins = sorted_categorys.flatten!
end
when 'title'
h = Array.new
news_bulletins.each { |news_bulletin| h << [news_bulletin.title[I18n.locale].downcase, news_bulletin] }
sorted = params[:direction].eql?('asc') ? h.sort : h.sort.reverse!
news_bulletins = sorted.collect {|a| a[1] }
when 'status'
news_bulletins = news_bulletins.order_by(:is_top, params[:direction]).order_by(:is_hot, params[:direction]).order_by(:is_hidden, params[:direction]).order_by(:is_pending, params[:direction]).order_by(:is_checked, params[:direction]).order_by(:is_rejected, params[:direction])
when 'update_user_id'
user_ids = news_bulletins.distinct(:update_user_id)
users = User.find(user_ids) rescue nil
if users
h = Array.new
users.each { |user| h << [user.name, user.id] }
sorted = params[:direction].eql?('asc') ? h.sort : h.sort.reverse!
sorted_users = sorted.collect {|a| news_bulletins.where(:update_user_id => a[1]).entries }
news_bulletins = sorted_users.flatten
end
when 'tags'
a = Array.new
NewsTag.all.order_by(I18n.locale, params[:direction]).each { |tag| a << tag.news_bulletins }
a.flatten!
a.uniq!
tmp = Array.new
news_bulletins.where(:tag_ids => []).each { |news_bulletin| tmp << [news_bulletin.title[I18n.locale].downcase, news_bulletin] }
sorted = params[:direction].eql?('asc') ? tmp.sort : tmp.sort.reverse!
sorted_titles = sorted.collect {|a| a[1] }
a = params[:direction].eql?('asc') ? (sorted_titles + a) : (a + sorted_titles)
news_bulletins = a.flatten
end
if @filter
@filter.each do |key, value|
case key
when 'status'
a = Array.new
news_bulletins.each do |news_bulletin|
value.each do |v|
case v
when 'pending'
a << news_bulletin if news_bulletin.is_checked.nil?
when 'rejected'
a << news_bulletin if news_bulletin.is_checked.eql?(false)
else
a << news_bulletin if news_bulletin[v]
end
end
end
news_bulletins = a.uniq
when 'categories'
a = Array.new
news_bulletins.each do |news_bulletin|
a << news_bulletin if value.include?(news_bulletin.news_bulletin_category.id.to_s)
end
news_bulletins = a.uniq
when 'tags'
a = Array.new
news_bulletins.each do |news_bulletin|
news_bulletin.tags.each do |tag|
a << news_bulletin if value.include?(tag.id.to_s)
end
end
news_bulletins = a.uniq
end if value.size > 0
end
end
Kaminari.paginate_array(news_bulletins).page(params[:page]).per(10)
end
end

View File

@ -0,0 +1,8 @@
class Panel::News::BackEnd::TagsController < Admin::TagsController
def initialize
super
@app_title = 'news'
end
end

View File

@ -0,0 +1,38 @@
class Panel::News::FrontEnd::NewsBulletinsController < OrbitWidgetController
def initialize
super
@app_title = 'news'
end
# GET /news_bulletins
# GET /news_bulletins.xml
def index
date_now = Time.now
if !params[:category_id].blank?
@news_bulletins = NewsBulletin.can_display.where(:news_bulletin_category_id => params[:category_id]).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10)
elsif !params[:tag_id].blank?
@news_bulletins = NewsTag.find(params[:tag_id]).news_bulletins.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10)
else
@news_bulletins = NewsBulletin.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10)
end
get_categorys
@current_category = NewsBulletinCategory.from_id(params[:category_id]) rescue nil
end
def show
@news_bulletin = NewsBulletin.can_display.where(_id: params[:id]).first
get_categorys
end
protected
def get_categorys
@news_bulletin_categorys = NewsBulletinCategory.excludes('disabled' => true)
end
end

View File

@ -0,0 +1,58 @@
class Panel::News::Widget::NewsBulletinsController < OrbitWidgetController
def initialize
super
@app_title = 'news'
end
# GET /news_bulletins
# GET /news_bulletins.xml
def index
# deadline
# @news_bulletin_categorys = NewsBulletinCategory.first;
# @news_bulletins = NewsBulletin.widget_datas(@news_bulletin_categorys.id).limit(9)
if !params[:category_id].blank?
@news_bulletins = NewsBulletin.can_display.where(:news_bulletin_category_id => params[:category_id]).widget_datas.limit(9)
elsif !params[:tag_id].blank?
@news_bulletins = NewsTag.find(params[:tag_id]).news_bulletins.can_display.widget_datas.limit(9) rescue nil
else
@news_bulletins = NewsBulletin.can_display.widget_datas.limit(9)
end
get_categorys
end
def news_bulletins_and_web_links
@tags = NewsTag.all
@selected_tag = NewsTag.find(params[:id]) rescue @tags[0]
@news_bulletins = @selected_tag.get_visible_news_bulletins.can_display.page(params[:page]).per(5) rescue nil
@web_links = WebResourceTag.first(:conditions => {:en => @selected_tag[:en]}).get_visible_links.page(params[:page]).per(5) rescue nil
render :layout => 'module_widget'
end
def reload_news_bulletins
@selected_tag = NewsTag.find(params[:tag_id])
@news_bulletins = @selected_tag.get_visible_news_bulletins.can_display.page(params[:page]).per(5) rescue nil
end
def reload_web_links
@selected_tag = NewsTag.find(params[:tag_id])
@web_links = WebResourceTag.first(:conditions => {:en => @selected_tag[:en]}).get_visible_links.page(params[:page]).per(5) rescue nil
end
def news_bulletins_side_bar
@tags = NewsTag.all
get_categorys
end
protected
def get_categorys
@news_bulletin_categorys = NewsBulletinCategory.excludes('disabled' => true)
end
end

View File

View File

View File

View File

@ -0,0 +1,182 @@
# encoding: utf-8
class NewsBulletin
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::MultiParameterAttributes
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, :class_name => "NewsTag"
field :postdate , :type => Date
field :deadline , :type => Date
# field :url
field :create_user_id
field :update_user_id, :class_name => "User"
field :is_top, :type => Boolean, :default => false
field :is_hot, :type => Boolean, :default => false
field :is_hidden, :type => Boolean, :default => false
field :is_checked, :type => Boolean, :default => false
field :is_pending, :type => Boolean, :default => true
field :is_rejected, :type => Boolean, :default => false
field :not_checked_reason
field :public, :type => Boolean, :default => true
scope :can_display,where(is_checked: true)
mount_uploader :image, ImageUploader
belongs_to :news_bulletin_category
# embeds_many :news_bulletin_links, :cascade_callbacks => true
# embeds_many :news_bulletin_files, :cascade_callbacks => true
has_many :news_bulletin_links, :autosave => true, :dependent => :destroy
has_many :news_bulletin_files, :autosave => true, :dependent => :destroy
accepts_nested_attributes_for :news_bulletin_files, :allow_destroy => true
accepts_nested_attributes_for :news_bulletin_links, :allow_destroy => true
validates_presence_of :title
before_save :set_key, :update_status
after_save :save_news_bulletin_links
after_save :save_news_bulletin_files
def self.search( search = nil, category_id = nil )
if category_id.to_s.size > 0 and search.to_s.size > 0
key = /#{search}/
find(:all, :conditions => {title: key, news_bulletin_category_id: category_id}).desc( :is_top, :postdate )
elsif category_id.to_s.size > 0 and search.to_s.size < 1
find(:all, :conditions => {news_bulletin_category_id: category_id}).desc( :is_top, :postdate )
elsif search.to_s.size > 0 and category_id.to_s.size < 1
key = /#{search}/
find(:all, :conditions => {title: key}).desc( :is_top, :postdate )
else
find(:all).desc( :is_top, :postdate)
end
end
def self.widget_datas( category_id = nil )
date_now = Time.now
# find(:all, :conditions => {:postdate => {"$lte" => Date.today}, deadline: nil} ).desc( :is_top, :postdate)
# where( :postdate.lte => date_now ).where( :deadline => nil ).desc(:is_top, :postdate)
# any_of({ :title => "test" },{:deadline => nil, :title => "123"})
if category_id.to_s.size > 0
find(:all, :conditions => {news_bulletin_category_id: category_id}).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate)
else
any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate)
end
end
def is_expired?
Date.today > self.deadline ? true : false rescue false
#some dates might sat as nil so rescue false
end
def is_top?
self.is_top
end
def is_hot?
self.is_hot
end
def is_hidden?
self.is_hidden
end
def is_checked?
self.is_checked
end
def is_pending?
self.is_pending
end
def is_rejected?
self.is_rejected
end
def save_news_bulletin_links
self.news_bulletin_links.each do |t|
if t.should_destroy
t.destroy
end
end
end
def save_news_bulletin_files
self.news_bulletin_files.each do |t|
if t.should_destroy
t.destroy
end
end
end
def title
@title ||= I18nVariable.first(:conditions => {:key => 'title', :language_value_id => self.id, :language_value_type => self.class}) rescue nil
end
def subtitle
@subtitle ||= I18nVariable.first(:conditions => {:key => 'subtitle', :language_value_id => self.id, :language_value_type => self.class}) rescue nil
end
def text
@text ||= I18nVariable.first(:conditions => {:key => 'text', :language_value_id => self.id, :language_value_type => self.class}) rescue nil
end
def self.filter(news_bulletins)
news_bulletins.each do |news_bulletin|
p "#{news_bulletin.id}/#{news_bulletin.is_top}/#{news_bulletin.is_hot}/#{news_bulletin.is_hidden}"
end
return nil
end
def sorted_tags
tags.order_by(I18n.locale, :asc)
end
protected
def set_key
if title.new_record?
title.key = 'title'
end
if subtitle.new_record?
subtitle.key = 'subtitle'
end
if text.new_record?
text.key = 'text'
end
end
def update_status
if !self.is_pending && !self.is_checked
self.is_pending = false
self.is_rejected = true
self.is_checked = false
elsif self.is_checked
self.is_pending = false
self.is_rejected = false
self.is_checked = true
end
end
end

View File

@ -0,0 +1,25 @@
# encoding: utf-8
class NewsBulletinCategory
include Mongoid::Document
include Mongoid::Timestamps
include OrbitCoreLib::ObjectAuthable
ObjectAuthTitlesOptions = %W{submit_new fact_check}
AfterObjectAuthUrl = '/panel/news/back_end/news_bulletin_categorys'
# include Mongoid::MultiParameterAttributes
PAYMENT_TYPES = [ "List", "Picture" ]
field :key
field :display
has_one :i18n_variable, :as => :language_value, :autosave => true, :dependent => :destroy
has_many :news_bulletins
def self.from_id(id)
NewsBulletinCategory.find(id) rescue nil
end
end

View File

@ -0,0 +1,40 @@
class NewsBulletinFile
include Mongoid::Document
include Mongoid::Timestamps
mount_uploader :file, AssetUploader
# field :filetitle
# field :description
has_one :filetitle, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy
has_one :description, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy
# field :to_save, :type => Boolean
field :should_destroy, :type => Boolean
belongs_to :news_bulletin
# embedded_in :news_bulletin
before_save :set_key
def filetitle
@filetitle ||= I18nVariable.first(:conditions => {:key => 'filetitle', :language_value_id => self.id, :language_value_type => self.class}) rescue nil
end
def description
@description ||= I18nVariable.first(:conditions => {:key => 'description', :language_value_id => self.id, :language_value_type => self.class}) rescue nil
end
protected
def set_key
if filetitle.new_record?
filetitle.key = 'filetitle'
end
if description.new_record?
description.key = 'description'
end
end
end

View File

@ -0,0 +1,15 @@
class NewsBulletinLink
include Mongoid::Document
include Mongoid::Timestamps
field :url
# field :name
has_one :i18n_variable, :as => :language_value, :autosave => true, :dependent => :destroy
field :should_destroy, :type => Boolean
# embedded_in :news_bulletin
belongs_to :news_bulletin
end

View File

@ -0,0 +1,11 @@
class NewsTag < Tag
has_and_belongs_to_many :news_bulletins
def get_visible_news_bulletins(sort = :name)
date_now = Time.now
self.news_bulletins.where(:is_hidden => false).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc(:is_top, sort)
end
end

View File

View File

@ -0,0 +1,46 @@
<% content_for :page_specific_css do %>
<%= stylesheet_link_tag "inc/permission-checkbox" %>
<% end %>
<% content_for :page_specific_javascript do %>
<<<<<<< HEAD
<%= javascript_include_tag "bootstrap" %>
<%#= javascript_include_tag "inc/permission-checkbox" %>
<%#= javascript_include_tag "inc/search" %>
=======
<%= javascript_include_tag "inc/permission-checkbox" %>
<%= javascript_include_tag "inc/search" %>
>>>>>>> 291d5e3a03ba7da62ceb5e3b18012f0c9198dfba
<% end %>
<%#= label_tag :fact_check_setting, t("news.news_bulletin.fact_check_setting") %>
<%= form_tag('', :remote => true) %>
<div class="subnav">
<ul class="nav nav-pills filter">
<li class="accordion-group">
<div class="form-search" style="margin: 5px 10px;">
<%= label_tag :category, t("news.news_bulletin.category") %>
<%= select_tag "category_id", options_from_collection_for_select(@news_bulletin_categorys, "id", "key") %>
<%= search_field_tag 'user_filter' %>
</div>
</li>
</ul>
</div>
<%#= label_tag :role, t("admin.roles") %>
<div class="clear">
<%= content_tag :div do -%>
<% form_tag :action => "update_setting" do %>
<%= render :partial => "privilege_user", :locals => {:users => @users_array} %>
<div class="form-actions pagination-centered">
<%= submit_tag "Update", :class => 'btn' %>
</div>
<% end -%>
<% end -%>
</div>
<script type="text/javascript" charset="utf-8">
var availableTags = [];
$(function() {
$('#category_id').change(function() {
$(this).parents('form').submit();
});
</script>

View File

@ -0,0 +1,15 @@
<h1><%= news_bulletin_category.key %></h1>
<table>
<tr>
<th><%= t('news_bulletin.status') %></th>
<th><%= t('news_bulletin.category') %></th>
<th><%= t('news_bulletin.title') %></th>
<th><%= t('news_bulletin.postdate') %></th>
<th><%= t('news_bulletin.deadline') %></th>
<th><%= t('news_bulletin.action') %></th>
</tr>
<% news_bulletin_category.news_bulletins.each do |post| %>
<%= render :partial => 'panel/news/back_end/news_bulletins/news_bulletins', :locals => {:post => post,:approval_allow=>true} %>
<% end %>
</table>

View File

@ -0,0 +1,26 @@
<%= content_tag :div ,:id => "users_checkbox_ary",:class => 'clear' do -%>
<% sys_users = User.all -%>
<% sys_users.each do |user| -%>
<div class="checkblock">
<% user.sub_roles.each do |sr| %>
<div class="for_unit" style="display:none;"> <%= sr.key %></div>
<% end %>
<%= content_tag :div,:data=>{'original-title'=>t('news.news_bulletin.approval_setting_window_title'),:content => "#{user.sub_roles.collect{|sr| sr.key}.join(',')}"},:class=>"checkbox clear" do %>
<div class="check-icon">
</div>
<div class='member-avatar'>
<% if user.avatar? %>
<%= image_tag(user.avatar.thumb.url,:class => "member-img") %>
<% else %>
<%= image_tag "person.png",:class => "member-img" %>
<% end %>
</div>
<%= label_tag "lab-user-#{user.id}", (user.name rescue ''),:class=>"member-name",:id=>nil -%>
<%= check_box_tag "[users][#{user.id}]", 'true',users.include?(user),:class => "check" -%>
<%end -%>
</div>
<% end -%>
<% end -%>

View File

@ -0,0 +1,50 @@
<%= render 'panel/news/back_end/news_bulletins/filter' %>
<table id="bulettin_sort_list" class="table main-list">
<%= render 'panel/news/back_end/news_bulletins/news_bulletins' %>
</table>
<div class="form-actions">
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t('admin.add'), new_panel_news_back_end_news_bulletin_path, :class => 'btn btn-primary' %>
</div>
<!--
<% content_for :secondary do %>
<%#= render :partial => '/panel/news/back_end/news_secondary' %>
<% end -%>
<%= flash_messages %>
<br />
<br />
<br />
<br />
<br />
<fieldset><legend><%= t('news_bulletin.search') %></legend>
<%= form_for :news_bulletin, :action => 'search', :method => 'get', :url => panel_news_back_end_news_bulletins_path do |f| %>
<%#= f.select :news_bulletin_category_id, @news_bulletin_categorys.collect {|t| [ t.i18n_variable[I18n.locale], t.id ] },{ :include_blank => t('news_bulletin.select') }%>
Category <%#= select_tag "category_id", options_for_select(@news_bulletin_categorys.collect{|t| [t.i18n_variable[I18n.locale], t.id]}), :prompt => t('news_bulletin.select') %>
KeyWord <%#= text_field_tag :search, params[:search], :id => 'search_field' %>
<%= submit_tag "Search", :name => nil %>
<% end %>
</fieldset>
<br />
<br />
<h1><%= t('news_bulletin.list_news') %></h1>
<div id="check_block">
<h1>Check Please</h1>
<%#= render :partial => "list_table", :collection => @news_bulletin_categorys_check,:as => :news_bulletin_category%>
</div>
<br />
-->

View File

@ -0,0 +1,40 @@
<% content_for :page_specific_css do %>
<%= stylesheet_link_tag "inc/permission-checkbox" %>
<% end %>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "inc/permission-checkbox" %>
<%= javascript_include_tag "inc/search" %>
<% end %>
<%#= label_tag :fact_check_setting, t("news.news_bulletin.fact_check_setting") %>
<%= form_tag('', :remote => true) %>
<div class="subnav">
<ul class="nav nav-pills filter">
<li class="accordion-group">
<div class="form-search" style="margin: 5px 10px;">
<%= label_tag :category, t("news.news_bulletin.category") %>
<%= select_tag "category_id", options_from_collection_for_select(@news_bulletin_categorys, "id", "key") %>
<%= search_field_tag 'user_filter' %>
</div>
</li>
</ul>
</div>
<%#= label_tag :role, t("admin.roles") %>
<div class="clear">
<%= content_tag :div do -%>
<% form_tag :action => "update_setting" do %>
<%= render :partial => "privilege_user", :locals => {:users => @users_array} %>
<div class="form-actions pagination-centered">
<%= submit_tag "Update", :class => 'btn' %>
</div>
<% end -%>
<% end -%>
</div>
<script type="text/javascript" charset="utf-8">
var availableTags = [];
$(function() {
$('#category_id').change(function() {
$(this).parents('form').submit();
});
</script>

View File

@ -0,0 +1 @@
$("#users_checkbox_ary").replaceWith('<%= (render :partial => 'privilege_user', :locals => {:users => @users_array}).html_safe%>');

View File

@ -0,0 +1,37 @@
<% # encoding: utf-8 %>
<%= form_for(@news_bulletin_category, :remote => true, :url => @url) do |f| %>
<h2><%= (@news_bulletin_category.new_record? ? 'Add' : 'Edit') %></h2>
<div id="widget-title">
<%= f.label :key %>
<%= f.text_field :key %>
</div>
<div id="widget-title">
<%= f.fields_for :i18n_variable, (@news_bulletin_category.new_record? ? @news_bulletin_category.build_i18n_variable : @news_bulletin_category.i18n_variable) do |f| %>
<% @site_valid_locales.each do |locale| %>
<div class="control-group">
<%= label_tag "name-#{locale}", "Name-#{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-title">
<%#= f.label :display %>
<%#= f.radio_button :display, "List" List%>
<%#= f.radio_button :display, "Picture" Picture%>
<%# <br />顯示方式是設定在前台頁面時,資訊所呈現的樣式 %>
</div>
<div class="form-actions">
<%= f.submit t('submit'), :class=>'btn btn-primary' %>
</div>
<% end %>

View File

@ -0,0 +1,15 @@
<tr id="<%= dom_id news_bulletin_category %>" class="with_action">
<td>
<%= news_bulletin_category.key %>
<div class="quick-edit">
<ul class="nav nav-pills hide">
<li><%= link_to t('news_bulletin_category.edit'), edit_panel_news_back_end_news_bulletin_category_path(news_bulletin_category), :remote => true %></li>
<li><%= link_to t('news_bulletin_category.delete'), panel_news_back_end_news_bulletin_category_path(news_bulletin_category), :confirm => t('news.sure?'), :method => :delete, :remote => true %></li>
</ul>
</div>
</td>
<% @site_valid_locales.each do |locale| %>
<td><%= news_bulletin_category.i18n_variable[locale] rescue nil %></td>
<% end %>
</tr>

View File

@ -0,0 +1,28 @@
<% # encoding: utf-8 %>
<div id="qe-basic" class="qe-edit-div">
<div id="widget-title">
<%= f.label :key %>
<%= f.text_field :key %>
</div>
<div id="widget-title">
<%= f.fields_for :i18n_variable, news_bulletin_category.i18n_variable 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-title">
<%= f.label :display %>
<%= f.radio_button :display, "List" %>List
<%= f.radio_button :display, "Picture" %>Picture
<br />顯示方式是設定在前台頁面時,資訊所呈現的樣式
</div>
</div>

View File

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

View File

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

View File

@ -0,0 +1,7 @@
<h1><%= t('news.editing_news_class') %></h1>
<%= form_for @news_bulletin_category, :url => panel_news_back_end_news_bulletin_category_path(@news_bulletin_category) do |f| %>
<%= render :partial => 'form', :locals => {:f => f} %>
<% end %>
<%= link_back %>

View File

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

View File

@ -0,0 +1,23 @@
<%= flash_messages %>
<table id="news_bulletin_categorys" class="table main-list">
<thead>
<tr>
<th class="span1-2"><%= t('news_bulletin_category.key') %></th>
<% @site_valid_locales.each do |locale| %>
<th class="span1-2"><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></th>
<% end %>
</tr>
</thead>
<tbody>
<%= render :partial => 'news_bulletin_category', :collection => @news_bulletin_categorys %>
</tbody>
</table>
<div id="form"><%= render :partial => "form" %></div>

View File

@ -0,0 +1,19 @@
<% content_for :secondary do %>
<%= render :partial => '/panel/news/back_end/news_secondary' %>
<% end -%>
<%= flash_messages %>
<br />
<br />
<br />
<br />
<br />
<h1><%= t('news_bulletin_category.new_news_class') %></h1>
<%= form_for @news_bulletin_category, :url => panel_news_back_end_news_bulletin_categorys_path do |f| %>
<%= render :partial => 'form', :locals => {:f => f} %>
<% end %>
<%= link_back %>

View File

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

View File

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

View File

@ -0,0 +1,3 @@
<div class="filter-clear">
<%= link_to content_tag(:i, nil, :class => 'icons-brush-large') + t(:clear), panel_news_back_end_news_bulletins_path(:filter => @filter, :sort => params[:sort], :direction => params[:direction], :clear => true, :type => type), :class => "btn js_history" %>
</div>

View File

@ -0,0 +1,37 @@
<div id='add_news_bulletin_files'>
<% news_bulletin_files.each do | news_bulletin_file | %>
<%= fields_for 'news_bulletin[news_bulletin_files][]', news_bulletin_file, :index => nil do |f| %>
<div id="<%= "news_bulletin_#{news_bulletin_file.id}" if !news_bulletin_file.new_record? %>" class='list_item'>
<div class="field">
<%= f.label :file %>
<%#= file_field_tag 'news_bulletin[file]' %>
<%= f.file_field :file %>
<%= f.label :file_title %>
<%= f.text_field :filetitle %>
<%= f.label :file_description %>
<%= f.text_field :description %>
<span class="action">
<% if news_bulletin_file.new_record? %>
<a href="#" class="delete"><%= t(:delete) %></a>
<% else %>
<%= f.hidden_field :id %>
<% if news_bulletin_file.is_built_in? %>
<a href="#" class="switch" id="<%= news_bulletin_file.id %>"></a>
<% else %>
<a href="#" class="remove_existing_record"><%= t(:delete) %></a>
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
<% end %>
<% end %>
</span>
</div>
</div>
<% end %>
<% end %>
</div>

View File

@ -0,0 +1,37 @@
<div id='filter' 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("news.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("news.categories") %> <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("news.tags") %> <b class="web-symbol"></b></a>
</div>
</li>
</ul>
<div class="filters">
<div class="accordion-body collapse" id="collapse-status">
<%= render 'filter_status' %>
</div>
<div class="accordion-body collapse" id="collapse-category">
<%= render 'filter_categories' %>
</div>
<div class="accordion-body collapse" id="collapse-tags">
<%= render 'filter_tags' %>
</div>
<div id="sort_headers" class="table-label">
<%= render 'sort_headers' %>
</div>
</div>
</div>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "sort_header" %>
<% end %>

View File

@ -0,0 +1,6 @@
<div class="accordion-inner" data-toggle="buttons-checkbox">
<% @news_bulletin_categories.each do |category| -%>
<%= link_to category.i18n_variable[I18n.locale], panel_news_back_end_news_bulletins_path(:filter => @filter, :new_filter => {:type => 'categories', :id => category.id}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn js_history#{is_filter_active?('categories', category.id)}" %>
<% end -%>
</div>
<%= render :partial => 'clear_filters', :locals => {:type => 'categories'} %>

View File

@ -0,0 +1,9 @@
<div class="accordion-inner" data-toggle="buttons-checkbox">
<%= link_to t(:top), panel_news_back_end_news_bulletins_path(:filter => @filter, :new_filter => {:type => 'status', :id => 'is_top'}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn js_history#{is_filter_active?('status', 'is_top')}" %>
<%= link_to t(:hot), panel_news_back_end_news_bulletins_path(:filter => @filter, :new_filter => {:type => 'status', :id => 'is_hot'}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn js_history#{is_filter_active?('status', 'is_hot')}" %>
<%= link_to t(:hidden), panel_news_back_end_news_bulletins_path(:filter => @filter, :new_filter => {:type => 'status', :id => 'is_hidden'}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn js_history#{is_filter_active?('status', 'is_hidden')}" %>
<%= link_to t(:pending), panel_news_back_end_news_bulletins_path(:filter => @filter, :new_filter => {:type => 'status', :id => 'is_pending'}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn js_history#{is_filter_active?('status', 'is_pending')}" %>
<%= link_to t(:passed), panel_news_back_end_news_bulletins_path(:filter => @filter, :new_filter => {:type => 'status', :id => 'is_checked'}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn js_history#{is_filter_active?('status', 'is_checked')}" %>
<%= link_to t(:rejected), panel_news_back_end_news_bulletins_path(:filter => @filter, :new_filter => {:type => 'status', :id => 'is_rejected'}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn js_history#{is_filter_active?('status', 'is_rejected')}" %>
</div>
<%= render :partial => 'clear_filters', :locals => {:type => 'status'} %>

View File

@ -0,0 +1,6 @@
<div class="accordion-inner" data-toggle="buttons-checkbox">
<% @tags.each do |tag| -%>
<%= link_to tag[I18n.locale], panel_news_back_end_news_bulletins_path(:filter => @filter, :new_filter => {:type => 'tags', :id => tag.id}, :sort => params[:sort], :direction => params[:direction], :sort_options => params[:sort_options]), :class => "btn js_history#{is_filter_active?('tags', tag.id)}" %>
<% end -%>
</div>
<%= render :partial => 'clear_filters', :locals => {:type => 'tags'} %>

View File

@ -0,0 +1,310 @@
<% # encoding: utf-8 %>
<!--Widget start-->
<%= f.error_messages %>
<div id="sub-wiget">
<div id="widget-picture" class="widget-box">
<div class="widget-action clear">
<a class="action"><i title="Upload pictures" class="icon-exclamation-sign icon-white tip"></i></a>
</div>
<h3 class="widget-title"><i class="icons-picture icons-white"></i>Picture</h3>
<div class="widget-content clear">
<div class="control-group">
<!-- <img class="pull-left upload-picture" src="/assets/default-img.png" /> -->
<div class="upload-picture">
<!--請程式務必將圖片尺寸加入到行內裡-->
<% if @news_bulletin.image %>
<%= image_tag @news_bulletin.image, :width=> "456", :height=>'700' rescue ''%>
<% else %>
<img class="pull-left upload-picture" src="/assets/default-img.png" />
<% end %>
</div>
<div class="controls file-upload input-prepend">
<label class="control-label add-on btn" for="input-upload">
<%= t(:browse) %>
<%= f.file_field :image, :id => "input-upload", :class => '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-medium" type="text">
<br>
<% if @news_bulletin.image.file %>
<%= f.check_box :remove_image %>
<%= t('news.刪除已上傳檔案') %>
<% end %>
</div>
</div>
</div>
</div>
<div id="widget-date" class="widget-box widget-size-300">
<div class="widget-action clear">
<a href="#" class="action"><i title="Set the news to start and end dates" class="icon-exclamation-sign icon-white tip"></i></a>
</div>
<h3 class="widget-title"><i class="icons-calendar icons-white"></i> Date</h3>
<div class="widget-content clear">
<div class="control-group">
<label class="control-label">Start</label>
<div class="controls">
<%= f.date_select :postdate, {:use_month_numbers => true, :order => [:day, :month, :year] }, {:class => 'input-small'} %>
</div>
</div>
<div class="control-group">
<label class="control-label">End</label>
<div class="controls">
<%= f.date_select :deadline, {:use_month_numbers => true, :prompt => { :month => 'Month', :day => 'Day', :year => 'Year'}, :order => [:day, :month, :year] }, {:class => 'input-small'} %>
</div>
</div>
</div>
</div>
<div id="widget-status" class="widget-box widget-size-300">
<div class="widget-action clear">
<a class="action"><i title="Setting the news state" class="icon-exclamation-sign icon-white tip"></i></a>
</div>
<h3 class="widget-title"><i class="icons-star-thin icons-white"></i>Status</h3>
<div class="widget-content clear">
<div class="controls">
<%= content_tag :label,:class => "checkbox inline" do -%>
<%= f.check_box :is_top %>
<%= t('top') %>
<% end -%>
<%= content_tag :label,:class => "checkbox inline" do -%>
<%= f.check_box :is_hot %>
<%= t('hot') %>
<% end -%>
<%= content_tag :label,:class => "checkbox inline" do -%>
<%= f.check_box :is_hidden %>
<%= t('hide') %>
<% end -%>
</div>
</div>
</div>
<div id="widget-tags" class="widget-box widget-size-300">
<div class="widget-action clear">
<a class="action"><i title="Setting" class="icon-cog icon-white tip"></i></a>
</div>
<h3 class="widget-title"><i class="icons-tag icons-white"></i>Tags</h3>
<div class="widget-content clear form-horizontal">
<% @tags.each do |tag| %>
<%= content_tag :label,:class => "checkbox inline" do -%>
<%= check_box_tag 'news_bulletin[tag_ids][]', tag.id, @news_bulletin.tag_ids.include?(tag.id)%>
<%= tag[I18n.locale] %>
<% end %>
<% end %>
</div>
</div>
<% if params[:action] != 'new' %>
<div id="widget-audit" class="widget-box">
<div class="widget-action clear">
<a class="action"><i title="A" class="icon-exclamation-sign icon-white tip"></i></a>
</div>
<h3 class="widget-title"><i class="icons-link icons-white"></i>Audit</h3>
<div class="widget-content">
<% if is_manager? || @news_bulletin.news_bulletin_category.authed_users('fact_check').include?(current_user) || current_user.admin? %>
<div class="controls">
<%= f.label :approval_stat, t('news.news_bulletin.approval_stat') %>
<%= content_tag :label,:class => "radio inline" do -%>
<%= f.radio_button :is_checked, true , {:class => 'privacy'} %>
<%= t('news.news_bulletin.approval_pass') %>
<% end -%>
<%= content_tag :label,:class => "radio inline" do -%>
<%= f.radio_button :is_checked, false, (!@news_bulletin.is_checked ? {:checked => true, :class => 'privacy'} : {})%>
<%= t('news.news_bulletin.approval_not_pass') %>
<% end -%>
<div class="select-role">
<%= label :is_checked_false, t('news.news_bulletin.approval_not_pass_reason') %>
<%= f.text_field :not_checked_reason %>
</div>
</div>
<% end %>
</div>
</div>
<% elsif current_user.admin? %>
<%= f.hidden_field :is_checked,:value => true%>
<% end %>
</div>
<!--Wiget End-->
<!--Post Start-->
<div id="post-body">
<div id="post-body-content" class="clear">
<%= f.label :category %>
<%= f.select :news_bulletin_category_id, @news_bulletin_categorys.collect{|t| [ t.i18n_variable[I18n.locale], t.id ]}, {}, :class => "input-medium" %>
<ul class="nav nav-tabs">
<%# @site_valid_locales.each_with_index do |locale, i| %>
<% site_valid_locales_default_head.each_with_index do |locale, i| %>
<li <%= ( i == 0 ) ? " class='active'" : '' %>><a data-toggle="tab" href=".<%= locale %>"><%= I18nVariable.from_locale(locale) %></a></li>
<% end %>
</ul>
<div class="tab-content">
<%# @site_valid_locales.each_with_index do |locale, i| %>
<% site_valid_locales_default_head.each_with_index do |locale, i| %>
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
<div class="title">
<%= f.label :title %>
<%= f.fields_for :title, (@news_bulletin.new_record? ? @news_bulletin.build_title : @news_bulletin.title ) do |f| %>
<%= I18nVariable.from_locale(locale) %>
<%= f.text_field locale, :class=>'post-title' %>
<% end %>
</div>
<div class="editor">
<%= f.label :subtitle %>
<%= f.fields_for :subtitle, (@news_bulletin.new_record? ? @news_bulletin.build_subtitle : @news_bulletin.subtitle ) do |f| %>
<%= I18nVariable.from_locale(locale) %>
<%= f.text_area locale, :style=>"width:100%", :class => 'tinymce_textarea' %>
<% end %>
</div>
<div class="editor">
<%= f.label :text %>
<%= f.fields_for :text, (@news_bulletin.new_record? ? @news_bulletin.build_text : @news_bulletin.text ) do |f| %>
<%= I18nVariable.from_locale(locale) %>
<%= f.text_area locale, :style=>"width:100%", :class => 'tinymce_textarea' %>
<% end %>
</div>
</div>
<% end %>
</div>
<div class="main-wiget">
<div id="widget-link" class="widget-box">
<div class="widget-action clear">
<a class="action"><i title="Add a reference link" class="icon-exclamation-sign icon-white tip"></i></a>
</div>
<h3 class="widget-title"><i class="icons-link icons-white"></i>Link</h3>
<div class="widget-content">
<div id='news_bulletin_links' class="news_bulletin_links_block">
<table class="table table-condensed">
<thead>
<tr>
<th>URL</th>
<th>Name</th>
<th class="span1"></th>
</tr>
</thead>
<tfoot>
<tr>
<td style="text-align:center" colspan="4">
<div id='add_news_bulletin_link' class="info_input news_bulletin_links_block">
<%= hidden_field_tag 'news_bulletin_link_field_count', @news_bulletin.news_bulletin_links.count %>
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i><%= t(:add) %></span></a>
</div>
</td>
</tr>
</tfoot>
<tbody>
<% @news_bulletin.news_bulletin_links.each_with_index do |news_bulletin_link, i| %>
<%#= fields_for "news_bulletin[news_bulletin_links][]", news_bulletin_link do |f| %>
<%= f.fields_for :news_bulletin_links, news_bulletin_link do |f| %>
<%= render :partial => 'form_news_bulletin_link', :object => news_bulletin_link, :locals => {:f => f, :i => i} %>
<% end %>
<% end %>
</tbody>
</table>
</div>
</div>
</div>
<div id="widget-file" class="widget-box">
<div class="widget-action clear">
<a class="action"><i title="Added to the file" class="icon-exclamation-sign icon-white tip"></i></a>
</div>
<h3 class="widget-title"><i class="icons-paperclip icons-white"></i>File</h3>
<div class="widget-content">
<div id='news_bulletin_files' class="news_bulletin_files_block">
<table class="table table-condensed">
<thead>
<tr>
<th>File</th>
<th>Name</th>
<th><%= t('description') %></th>
<th class="span1"></th>
</tr>
</thead>
<tfoot>
<tr>
<td style="text-align:center" colspan="4">
<div id='add_news_bulletin_file' class="info_input news_bulletin_files_block">
<%= hidden_field_tag 'news_bulletin_file_field_count', @news_bulletin.news_bulletin_files.count %>
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i><%= t(:add) %></span></a>
</div>
</td>
</tr>
</tfoot>
<tbody>
<% @news_bulletin.news_bulletin_files.each_with_index do |news_bulletin_file, i| %>
<%#= fields_for "news_bulletin[news_bulletin_files][]", news_bulletin_file do |f| %>
<%= f.fields_for :news_bulletin_files, news_bulletin_file do |f| %>
<%= render :partial => 'form_news_bulletin_file', :object => news_bulletin_file, :locals => {:f => f, :i => i} %>
<% end %>
<% end %>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!--Post End-->
</div>
<div class="form-actions">
<%= f.submit t('submit'), :class=>'btn btn-primary' %>
<%= link_to t('cancel'), get_go_back, :class=>"btn" %>
</div>
</div>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "inc/jquery.imagesloaded.js" %>
<script>
$('#add_news_bulletin_link a.add').live('click', function(){
var new_id = $(this).prev().attr('value');
var old_id = new RegExp("new_news_bulletin_links", "g");
$(this).prev().attr('value', parseInt(new_id) + 1);
$(this).parents('table').append(("<%= escape_javascript(add_attribute 'form_news_bulletin_link', f, :news_bulletin_links) %>").replace(old_id, new_id));
});
$('#add_news_bulletin_file a.add').live('click', function(){
var new_id = $(this).prev().attr('value');
var old_id = new RegExp("new_news_bulletin_files", "g");
$(this).prev().attr('value', parseInt(new_id) + 1);
$(this).parents('table').append(("<%= escape_javascript(add_attribute 'form_news_bulletin_file', f, :news_bulletin_files) %>").replace(old_id, new_id));
});
</script>
<% end %>

View File

@ -0,0 +1,72 @@
<tr id="<%= "news_bulletin_file_#{form_news_bulletin_file.id}" if !form_news_bulletin_file.new_record? %>" class='list_item'>
<td>
<div class="control-group">
<div class="controls">
<%= f.file_field :file %>
<%= form_news_bulletin_file.file.file ? ( link_to t(:view), form_news_bulletin_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
</div>
</div>
</td>
<td>
<div class="tab-content">
<% @site_valid_locales.each_with_index do |locale, i| %>
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
<%= f.fields_for :filetitle, (form_news_bulletin_file.new_record? ? form_news_bulletin_file.build_filetitle : form_news_bulletin_file.filetitle ) do |f| %>
<div class="control-group">
<label for="link-<%= locale %>" class="control-label"><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></label>
<div class="controls">
<%= f.text_field locale, :id => "link-#{locale}" %>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
</td>
<td>
<div class="tab-content">
<% @site_valid_locales.each_with_index do |locale, i| %>
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
<%= f.fields_for :description, (form_news_bulletin_file.new_record? ? form_news_bulletin_file.build_description : form_news_bulletin_file.description ) do |f| %>
<div class="control-group">
<label for="link-<%= locale %>" class="control-label"><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></label>
<div class="controls">
<%= f.text_field locale, :id => "link-#{locale}" %>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
</td>
<td>
<span class="action">
<% if form_news_bulletin_file.new_record? %>
<a class="delete"><i class="icon-remove"></i></a>
<% else %>
<%= f.hidden_field :id %>
<a class="remove_existing_record"><i class="icon-remove"></i></a>
<%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %>
<% end %>
</span>
</td>
</tr>

View File

@ -0,0 +1,47 @@
<tr id="<%= "news_bulletin_link_#{form_news_bulletin_link.id}" if !form_news_bulletin_link.new_record? %>" class='list_item'>
<td>
<div class="control-group">
<div class="controls">
<%= f.text_field :url %>
</div>
</div>
</td>
<td>
<div class="tab-content">
<% @site_valid_locales.each_with_index do |locale, i| %>
<div class="<%= locale %> fade tab-pane <%= ( i == 0 ) ? "in active" : '' %>">
<%= f.fields_for :i18n_variable, (form_news_bulletin_link.new_record? ? form_news_bulletin_link.build_i18n_variable : form_news_bulletin_link.i18n_variable) do |f| %>
<div class="control-group">
<label for="link-<%= locale %>" class="control-label"><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></label>
<div class="controls">
<%= f.text_field locale, :id => "link-#{locale}", :class => "input-xlarge" %>
</div>
</div>
<% end %>
</div>
<% end %>
</div>
</td>
<td>
<span class="action">
<% if form_news_bulletin_link.new_record? %>
<a class="delete"><i class="icon-remove"></i></a>
<% else %>
<%= f.hidden_field :id %>
<a class="remove_existing_record"><i class="icon-remove"></i></a>
<%= f.hidden_field :should_destroy, :value => nil, :class => 'should_destroy' %>
<% end %>
</span>
</td>
</tr>

View File

@ -0,0 +1,22 @@
<tr id="<%= dom_id list_news_bulletin_file %>">
<td><%= list_news_bulletin_file.file.file ? ( link_to list_news_bulletin_file.filetitle.zh_tw, list_news_bulletin_file.file.url, {:target => '_blank', :title => list_news_bulletin_file.description.zh_tw} ) : list_news_bulletin_file.filetitle.zh_tw %></td>
<td><%= list_news_bulletin_file.file.file ? ( link_to list_news_bulletin_file.filetitle.en, list_news_bulletin_file.file.url, {:target => '_blank', :title => list_news_bulletin_file.description.en} ) : list_news_bulletin_file.filetitle.en %></td>
<td>
<a href="<%= panel_news_back_end_news_bulletin_file_quick_edit_path(list_news_bulletin_file) %>#modal-file" data-toggle="modal" data-remote="true" class="action"><i class="icon-pencil"></i></a>
<span class="action">
<%= fields_for "news_bulletin[news_bulletin_files_attributes][]", list_news_bulletin_file, :index => list_news_bulletin_file_counter do |f| %>
<%= f.hidden_field :id %>
<%= hidden_field_tag :tr, (dom_id list_news_bulletin_file) %>
<a class="remove_existing_record"><i class="icon-remove"></i></a>
<%= f.hidden_field :_destroy, :value => nil , :class => 'should_destroy' %>
<% end %>
</span>
</td>
</tr>

View File

@ -0,0 +1,15 @@
<tr id="<%= dom_id list_news_bulletin_link %>">
<td><%= link_to list_news_bulletin_link.i18n_variable.zh_tw, list_news_bulletin_link.url, :target => '_blank' %></td>
<td><%= link_to list_news_bulletin_link.i18n_variable.en, list_news_bulletin_link.url, :target => '_blank' %></td>
<td>
<a href="<%= panel_news_back_end_news_bulletin_link_quick_edit_path(list_news_bulletin_link) %>#modal-link" data-toggle="modal" data-remote="true" class="action"><i class="icon-pencil"></i></a>
<span class="action">
<%= fields_for "news_bulletin[news_bulletin_links_attributes][]", list_news_bulletin_link, :index => list_news_bulletin_link_counter do |f| %>
<%= f.hidden_field :id %>
<%= hidden_field_tag :tr, (dom_id list_news_bulletin_link) %>
<a class="remove_existing_record"><i class="icon-remove"></i></a>
<%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %>
<% end %>
</span>
</td>
</tr>

View File

@ -0,0 +1,67 @@
<tr id="<%= dom_id news_bulletin %>" class="with_action">
<td><%= check_box_tag 'to_delete[]', news_bulletin.id, false, :class => "checkbox_in_list" %></td>
<td>
<div class="label-group">
<div class="label-td">
<% if news_bulletin.is_top? %>
<span class="label label-success"><%= t(:top) %></span>
<% end %>
<% if news_bulletin.is_hot? %>
<span class="label label-important"><%= t(:hot) %></span>
<% end %>
<% if news_bulletin.is_hidden? %>
<span class="label"><%= t(:hidden) %></span>
<% end %>
<% if news_bulletin.is_pending? %>
<span class="label"><%= t(:pending) %></span>
<% end %>
<% if news_bulletin.is_checked? %>
<span class="label"><%= t(:passed) %></span>
<% end %>
<% if news_bulletin.is_rejected? %>
<span class="label"><%= t(:rejected) %></span>
<% end %>
</div>
</div>
</td>
<td><%= news_bulletin.news_bulletin_category.i18n_variable[I18n.locale] %></td>
<td>
<%= link_to news_bulletin.title[I18n.locale], panel_news_front_end_news_bulletin_path(news_bulletin, :category_id => news_bulletin.news_bulletin_category.id) rescue ''%>
<div class="quick-edit">
<ul class="nav nav-pills hide">
<% if current_user.admin? || (!news_bulletin.is_rejected? && !news_bulletin.is_checked?) %>
<li><%= link_to t('news_bulletin.edit'), edit_panel_news_back_end_news_bulletin_path(news_bulletin) %></li>
<li class="dropdown">
<a href="#" data-toggle="dropdown" class="dropdown-toggle"><%= t(:quick_edit) %><b class="caret"></b></a>
<ul class="dropdown-menu" id="menu1">
<li><%= link_to t(:basic), load_quick_edit_panel_news_back_end_news_bulletin_path(news_bulletin, :type => 'basic'), :remote => true %></li>
<li><%= link_to t(:picture), load_quick_edit_panel_news_back_end_news_bulletin_path(news_bulletin, :type => 'picture'), :remote => true %></li>
<li><%= link_to t(:tags), load_quick_edit_panel_news_back_end_news_bulletin_path(news_bulletin, :type => 'tags'), :remote => true %></li>
<li><%= link_to t(:link), load_quick_edit_panel_news_back_end_news_bulletin_path(news_bulletin, :type => 'links'), :remote => true %></li>
<li><%= link_to t(:file), load_quick_edit_panel_news_back_end_news_bulletin_path(news_bulletin, :type => 'files'), :remote => true %></li>
</ul>
</li>
<%#= debugger %>
<%#= a=1 %>
<% if (news_bulletin.news_bulletin_category.authed_users('fact_check').include?(current_user) or is_manager?) and !news_bulletin.is_expired? %>
<li><%= link_to t('news.news_bulletin.approval'), edit_panel_news_back_end_news_bulletin_path(news_bulletin) %></li><%#= #TODO add ancher so user can quick access into that part %>
<% end %>
<% end %>
<li class="dropdown"><%= link_to t('news_bulletin.delete'), panel_news_back_end_news_bulletin_path(news_bulletin), :confirm => t('news.sure?'), :method => :delete, :remote => true %></li>
</ul>
</div>
</td>
<td><%= news_bulletin.postdate %></td>
<td><%= (news_bulletin.deadline) ? news_bulletin.deadline : t('news_bulletin.no_deadline') %></td>
<td>
<div class="label-group">
<div class="label-td">
<% news_bulletin.sorted_tags.each do |tag| %>
<span class="label label-tags"><%= tag[I18n.locale] %></span>
<% end %>
</div>
</div>
</td>
<td><%= User.from_id(news_bulletin.update_user_id).name rescue ''%></td>
</tr>
<tr id="<%= dom_id news_bulletin, :edit %>" class="qe-block hide" />

View File

@ -0,0 +1,51 @@
<% # encoding: utf-8 %>
<%= form_for @news_bulletin_file, :url => @file_url, :html => {:id => 'ajaxForm', :multipart => true} do |f| %>
<div class="modal-header">
<a class="close" data-dismiss="modal">×</a>
<h3><%= (@news_bulletin_file.new_record? ? 'Add File' : 'Edit File') %></h3>
</div>
<div class="modal-body form-horizontal">
<div class="control-group">
<div class="controls">
<%= f.file_field :file %>
</div>
</div>
<%= f.fields_for :filetitle, (@news_bulletin_file.new_record? ? @news_bulletin_file.build_filetitle : @news_bulletin_file.filetitle ) do |f| %>
<% @site_valid_locales.each do |locale| %>
<div class="control-group">
<label for="file-<%= locale %>" class="control-label">Name <%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></label>
<div class="controls">
<%= f.text_field locale, :id => "file-#{locale}", :class => "input-xlarge" %>
</div>
</div>
<% end %>
<% end %>
<%= f.fields_for :description, (@news_bulletin_file.new_record? ? @news_bulletin_file.build_description : @news_bulletin_file.description ) do |f| %>
<% @site_valid_locales.each do |locale| %>
<div class="control-group">
<label for="file-<%= locale %>" class="control-label">Description <%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></label>
<div class="controls">
<%= f.text_field locale, :id => "file-#{locale}", :class => "input-xlarge" %>
</div>
</div>
<% end %>
<% end %>
</div>
<div class="modal-footer">
<%= hidden_field_tag 'news_bulletin_file[news_bulletin_id]', @news_bulletin_file.news_bulletin_id %>
<a class="btn btn-primary" id='ajax_form_submit'><%= t('submit')%></a>
<a class="btn" data-dismiss="modal"><%= t('cancel')%></a>
</div>
<% end %>

View File

@ -0,0 +1,36 @@
<% # encoding: utf-8 %>
<%= form_for(@news_bulletin_link, :remote => true, :url => @link_url) do |f| %>
<div class="modal-header">
<a class="close" data-dismiss="modal">×</a>
<h3><%= (@news_bulletin_link.new_record? ? 'Add Link' : 'Edit Link') %></h3>
</div>
<div class="modal-body form-horizontal">
<div class="control-group">
<label for="http" class="control-label">URL</label>
<div class="controls">
<%= f.text_field :url %>
</div>
</div>
<%= f.fields_for :i18n_variable, (@news_bulletin_link.new_record? ? @news_bulletin_link.build_i18n_variable : @news_bulletin_link.i18n_variable) do |f| %>
<% @site_valid_locales.each do |locale| %>
<div class="control-group">
<%= label_tag "link-#{locale}", "Name-#{I18nVariable.from_locale(locale)}", :class => 'control-label' %>
<div class="controls">
<%#= f.text_field locale, :class => 'input-xxlarge' %>
<%= f.text_field locale %>
</div>
</div>
<% end %>
<% end %>
</div>
<div class="modal-footer">
<%= hidden_field_tag 'news_bulletin_link[news_bulletin_id]', @news_bulletin_link.news_bulletin_id %>
<%= f.submit t('submit'), :class=>'btn btn-primary' %>
<a class="btn" data-dismiss="modal"><%= t('cancel')%></a>
<% end %>

View File

@ -0,0 +1,15 @@
<thead>
<tr>
<th class="span1"></th>
<th class="span1-2"></th>
<th class="span1-2"></th>
<th class="span7"></th>
<th class="span1-2"></th>
<th class="span1-2"></th>
<th class="span1-2"></th>
<th class="span1-3"></th>
</tr>
</thead>
<tbody id="tbody_news_bulletins" class="sort-holder">
<%= render :partial => 'news_bulletin', :collection => @news_bulletins %>
</tbody>

View File

@ -0,0 +1,10 @@
<td colspan="8">
<legend><%= t(:quick_edit) %> - <span class='qe_title'></span><%= t(type) %></legend>
<%= form_for @news_bulletin, :url => panel_news_back_end_news_bulletin_path(@news_bulletin), :html => {:class => 'form-horizontal'} do |f| %>
<%= render :partial => "panel/news/back_end/news_bulletins/quick_edit_#{@type}", :locals => { :f => f, :news_bulletin => @news_bulletin } %>
<div class="form-actions">
<%= f.submit t(:submit), :class => 'btn btn-primary' %>
<%= f.submit t(:cancel), :class => 'btn quick_edit_cancel', :type => 'reset', :rel => dom_id(@news_bulletin, :edit) %>
</div>
<% end %>
</td>

View File

@ -0,0 +1,62 @@
<div id="qe-basic" class="qe-edit-div">
<div id="widget-category">
<div class="control-group">
<label class="control-label"><%= t(:category) %></label>
<div class="controls">
<%= f.select :news_bulletin_category_id, @news_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, news_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:<%= news_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>

View File

@ -0,0 +1,26 @@
<div id="qe-file" class="qe-edit-div">
<div id="widget-file">
<div class="control-group">
<table id="news_bulletin_files" 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="<%= panel_news_back_end_news_bulletin_file_quick_add_path(news_bulletin) %>#modal-file" data-toggle="modal" data-remote="true"><i class="icon-plus icon-white"></i> <%= t('add')%></a>
</td>
</tr>
</tfoot>
<tbody>
<%= render :partial => 'list_news_bulletin_file', :collection => news_bulletin.news_bulletin_files %>
</tbody>
</table>
</div>
</div>
</div>

View File

@ -0,0 +1,27 @@
<div id="qe-link" class="qe-edit-div">
<div id="widget-link">
<div class="control-group">
<table id="news_bulletin_links" 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="<%= panel_news_back_end_news_bulletin_link_quick_add_path(news_bulletin) %>#modal-link" data-toggle="modal" data-remote="true"><i class="icon-plus icon-white"></i> <%= t('add')%></a>
</td>
</tr>
</tfoot>
<tbody>
<%= render :partial => 'list_news_bulletin_link', :collection => news_bulletin.news_bulletin_links %>
</tbody>
</table>
</div>
</div>
</div>

View File

@ -0,0 +1,25 @@
<div id="qe-picture" class="qe-edit-div">
<div id="widget-picture clear">
<div class="control-group">
<!--<label class="control-label">Picture</label>-->
<div class="control-group">
<div class="controls upload-picture">
<img class="pull-left upload-picture" src="" />
</div>
<div class="controls file-upload input-prepend">
<label class="control-label add-on btn" for="input-upload">
<%= t(:browse) %>
<%= f.file_field :image, :id => "input-upload", :class => 'upload', :onchange => "document.getElementById('fu').innerHTML = this.form.fu.value = this.value;" %>
</label>
<span id='fu' class="file-name"></span>
<input name='fu' class="input-medium qe-picture-rename" type="text">
<br>
<% if news_bulletin.image.file %>
<%= f.check_box :remove_image %>
<%= t('news.刪除已上傳檔案') %>
<% end %>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,14 @@
<div id="qe-tags" class="qe-edit-div">
<div id="widget-tags">
<div class="controls">
<div class="form-horizontal">
<% @tags.each do |tag| %>
<label class="checkbox inline">
<%= check_box_tag 'news_bulletin[tag_ids][]', tag.id, news_bulletin.tag_ids.include?(tag.id)%>
<%= tag[I18n.locale] %>
</label>
<% end %>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,7 @@
<%= render_sort_bar(true, ['status', ['is_top', 'is_hot', 'is_hidden', 'is_pending', 'is_checked', 'is_rejected'], 'span1-2', 'news_bulletin.status'],
['category', 'news_bulletin_category', 'span1-2', 'news_bulletin.category'],
['title', 'title','span7', 'news_bulletin.title'],
['start_date', 'postdate', 'span1-2', 'news_bulletin.start_date'],
['end_date', 'deadline', 'span1-2', 'news_bulletin.end_date'],
['tags', 'tags', 'span1-2', 'news_bulletin.tags'],
['last_modified', 'update_user_id','span1-3', 'news_bulletin.last_modified']).html_safe %>

View File

@ -0,0 +1,2 @@
$("#modal-file").modal('hide');
$('<%= j render :partial => 'list_news_bulletin_file', :collection => [@news_bulletin_file] %>').appendTo('#news_bulletin_files').hide().fadeIn();

View File

@ -0,0 +1,2 @@
$("#modal-link").modal('hide');
$('<%= j render :partial => 'list_news_bulletin_link', :collection => [@news_bulletin_link] %>').appendTo('#news_bulletin_links').hide().fadeIn();

View File

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

View File

@ -0,0 +1,10 @@
<ul class="breadcrumb">
<li><span>Home</span><span class="divider">/</span></li>
<li><span>Library</span><span class="divider">/</span></li>
<li class="text-blue"><%= t('news.editing_news') %></li>
</ul>
<div id="poststuff">
<%= form_for @news_bulletin, :url => panel_news_back_end_news_bulletin_path(@news_bulletin), :html => {:class => 'clear'} do |f| %>
<%= render :partial => 'form', :locals => {:f => f} %>
<% end %>
</div>

View File

@ -0,0 +1 @@
$("#modal-file").html("<%= j render "news_bulletin_file_qe" %>");

View File

@ -0,0 +1 @@
$("#modal-file").html("<%= j render "news_bulletin_file_qe" %>");

View File

@ -0,0 +1,31 @@
<%= form_for :news_bulletins, :url => delete_panel_news_back_end_news_bulletins_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]), :html => {:id => 'delete_all'}, :remote => true do %>
<%= render 'filter' %>
<table id="bulettin_sort_list" class="table main-list">
<%= render 'news_bulletins' %>
</table>
<% end %>
<div id="news_bulletin_pagination">
<%= paginate @news_bulletins, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]} %>
</div>
<div id="news_bulletin_link_qe">
<div id="modal-link" class="modal fade">
<%= render :partial => "news_bulletin_link_qe" %>
</div>
</div>
<div id="news_bulletin_file_qe">
<div id="modal-file" class="modal fade">
<%= render :partial => "news_bulletin_file_qe" %>
</div>
</div>
<div class="form-actions">
<%= link_to content_tag(:i, nil, :class => 'icon-plus icon-white') + t('admin.add'), new_panel_news_back_end_news_bulletin_path, :class => 'btn btn-primary' %>
</div>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "news_bulletin_form" %>
<% end %>

View File

@ -0,0 +1,7 @@
$("#collapse-status").html("<%= j render 'filter_status' %>");
$("#collapse-category").html("<%= j render 'filter_categories' %>");
$("#collapse-tags").html("<%= j render 'filter_tags' %>");
$("#delete_all").attr("action", "<%= delete_panel_news_back_end_news_bulletins_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]) %>");
$("#sort_headers").html("<%= j render 'sort_headers' %>");
$("#tbody_news_bulletins").html("<%= j render :partial => 'news_bulletin', :collection => @news_bulletins %>");
$("#news_bulletin_pagination").html("<%= j paginate @news_bulletins, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");

View File

@ -0,0 +1 @@
$("#modal-link").html("<%= j render "news_bulletin_link_qe" %>");

View File

@ -0,0 +1 @@
$("#modal-link").html("<%= j render "news_bulletin_link_qe" %>");

View File

@ -0,0 +1,2 @@
$("#<%= dom_id @news_bulletin, :edit %>").show()
$("#<%= dom_id @news_bulletin, :edit %>").html("<%= j render :partial => 'quick_edit', :locals => {:type => @type} %>")

View File

@ -0,0 +1,5 @@
<div id="poststuff">
<%= form_for @news_bulletin, :url => panel_news_back_end_news_bulletins_path do |f| %>
<%= render :partial => 'form', :locals => {:f => f} %>
<% end %>
</div>

View File

@ -0,0 +1,49 @@
<ul>
<li>
<b><%= t('news.category') %></b>
<%= @news_bulletin.news_bulletin_category.i18n_variable[I18n.locale] %>
</li>
<li>
<b><%= t('news.postdate') %></b>
<%= @news_bulletin.postdate %>
</li>
<li>
<b><%= t('news.title') %></b>
<%= @news_bulletin.title[I18n.locale] %>
</li>
<li>
<%#= image_tag(@news_bulletin.image.url, :size => "320x240") if @news_bulletin.image.file %>
<%= link_to image_tag(@news_bulletin.image.url, :size => "320x240"), @news_bulletin.image.url, {:target => '_blank', :title => @news_bulletin.image_identifier} if @news_bulletin.image.file %>
</li>
<li>
<b><%= t('news.subtitle') %></b>
<%= @news_bulletin.subtitle[I18n.locale].html_safe %>
</li>
<li>
<b><%= t('news.text') %></b>
<%= @news_bulletin.text[I18n.locale].html_safe %>
</li>
<li>
<li>
<b><%= t('news.link') %></b>
<% @news_bulletin.news_bulletin_links.each do | blink | %>
<%= link_to blink.i18n_variable[I18n.locale], blink.url, :target => '_blank' %>
<% end %>
</li>
<li>
<b><%= t('news.file') %></b>
<% @news_bulletin.news_bulletin_files.each do | bfile | %>
<%= link_to bfile.filetitle[I18n.locale], bfile.file.url, {:target => '_blank', :title => bfile.description[I18n.locale]} if bfile.file.file %>
<% end %>
</li>
<li>
<b><%= t('news.張貼者') %></b>
<%= User.find(@news_bulletin.create_user_id).name %>
</li>
<li>
<b><%= t('news.最後修改時間') %></b>
<%= @news_bulletin.updated_at %>
</li>
<%= link_back %>

View File

@ -0,0 +1,3 @@
$("#enable_<%= @news_bulletin.id %>").toggle();
$("#disable_<%= @news_bulletin.id %>").toggle();
$("#news_bulletin_<%= @news_bulletin.id %>").toggleClass('disable');

View File

@ -0,0 +1,2 @@
$("#modal-file").modal('hide');
$("#<%= dom_id @news_bulletin_file %>").replaceWith("<%= j render :partial => 'list_news_bulletin_file', :collection => [@news_bulletin_file] %>");

View File

@ -0,0 +1,2 @@
$("#modal-link").modal('hide');
$("#<%= dom_id @news_bulletin_link %>").replaceWith("<%= j render :partial => 'list_news_bulletin_link', :collection => [@news_bulletin_link] %>");

View File

@ -0,0 +1,33 @@
<% # encoding: utf-8 %>
<%= flash_messages %>
<% if @current_category %>
<h1 class="h1"><%= @current_category.i18n_variable[I18n.locale] + t('news.news_bulletin.list_lower') %></h1>
<% else %>
<h1 class="h1"><%= t('news.list_news') %></h1>
<% end %>
<table class="table table-bordered">
<tr>
<th><%= t('news.news_bulletin.category') %></th>
<th><%= t('news.news_bulletin.title') %></th>
<th><%= t('news.news_bulletin.postdate') %></th>
</tr>
<% @news_bulletins.each do |post| %>
<tr>
<td><%= post.news_bulletin_category.i18n_variable[I18n.locale] %></td>
<td><%= link_to post.title[I18n.locale], panel_news_front_end_news_bulletin_path(post) %>
<%#= link_to post.title, panel_news_back_end_news_bulletin_path(post) %>
</td>
<td><%= post.postdate %></td>
</tr>
<% end %>
</table>
<%= paginate @news_bulletins, :params => {:inner => 'false'} %>

View File

@ -0,0 +1,71 @@
<% # encoding: utf-8 %>
<h1 class="h1"><%= @news_bulletin.title[I18n.locale] %></h1>
<div class="info">
<div class="info1">
<span class="date"><%= @news_bulletin.postdate %></span>
&nbsp;|&nbsp;
<a href="" class="unit"><%= User.find(@news_bulletin.create_user_id).name %></a>
</div>
</div>
<div class="news_image">
<%#= image_tag(@news_bulletin.image.url, :size => "320x240") if @news_bulletin.image.file %>
<%= link_to image_tag(@news_bulletin.image.url, :size => "320x240"), @news_bulletin.image.url, {:target => '_blank', :title => @news_bulletin.image_identifier} if @news_bulletin.image.file %>
</div>
<div class="news_paragraph">
<%= @news_bulletin.text[I18n.locale].html_safe %>
</div>
<div class="fb">
<iframe src="//www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.nccu.edu.tw&amp;send=false&amp;layout=standard&amp;width=450&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font&amp;height=35&amp;appId=263319013700607" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:35px;" allowTransparency="true"></iframe>
</div>
<!--
<p id="notice"><%= flash_messages %></p>
<ul>
<li>
<b><%= t('news.category') %></b>
<%= @news_bulletin.news_bulletin_category.i18n_variable[I18n.locale] %>
</li>
<li>
<b><%= t('news.postdate') %></b>
<%= @news_bulletin.postdate %>
</li>
<li>
<b><%= t('news.title') %></b>
<%= @news_bulletin.title[I18n.locale] %>
</li>
<li>
<%#= image_tag(@news_bulletin.image.url, :size => "320x240") if @news_bulletin.image.file %>
<%= link_to image_tag(@news_bulletin.image.url, :size => "320x240"), @news_bulletin.image.url, {:target => '_blank', :title => @news_bulletin.image_identifier} if @news_bulletin.image.file %>
</li>
<li>
<b><%= t('news.subtitle') %></b>
<%= @news_bulletin.subtitle[I18n.locale].html_safe %>
</li>
<li>
<b><%= t('news.text') %></b>
<%= @news_bulletin.text[I18n.locale].html_safe %>
</li>
<li>
<li>
<b><%= t('news.link') %></b>
<% @news_bulletin.news_bulletin_links.each do | blink | %>
<%= link_to blink.name, blink.url, :target => '_blank' %>
<% end %>
</li>
<li>
<b><%= t('news.file') %></b>
<% @news_bulletin.news_bulletin_files.each do | bfile | %>
<%= link_to bfile.filetitle, bfile.file.url, {:target => '_blank', :title => bfile.description} if bfile.file.file %>
<% end %>
</li>
<li>
<b><%= t('news.張貼者') %></b>
<%= User.find(@news_bulletin.create_user_id).name %>
</li>
<li>
<b><%= t('news.最後修改時間') %></b>
<%= @news_bulletin.updated_at.strftime("%Y-%m-%d %H:%I:%S") %>
</li>
-->
<%#= link_back %>

View File

@ -0,0 +1,10 @@
<% @news_bulletins.each do |news_bulletin| %>
<li>
<%= link_to news_bulletin.title[I18n.locale], panel_news_front_end_news_bulletin_path(news_bulletin, :category_id => news_bulletin.news_bulletin_category_id) %>
</li>
<% end %>
<div class='pagination'>
<%= link_to_previous_page @news_bulletins, 'Previous Page', :params => {:controller => 'widget/news_bulletins', :action => 'reload_news_bulletins', :tag_id => @selected_tag.id}, :remote => true, :class => 'previous' %>
<%= link_to_next_page @news_bulletins, 'Next Page', :params => {:controller => 'widget/news_bulletins', :action => 'reload_news_bulletins', :tag_id => @selected_tag.id}, :remote => true, :class => 'next' %>
</div>

Some files were not shown because too many files have changed in this diff Show More