added approve method to announcements
This commit is contained in:
parent
e1a67a2d6f
commit
7552fdd6d0
|
@ -3,6 +3,7 @@ class Admin::AnnouncementsController < OrbitAdminController
|
||||||
include Admin::AnnouncementsHelper
|
include Admin::AnnouncementsHelper
|
||||||
before_action ->(module_app = @app_title) { set_variables module_app }
|
before_action ->(module_app = @app_title) { set_variables module_app }
|
||||||
before_action :set_bulletin, only: [:edit, :destroy]
|
before_action :set_bulletin, only: [:edit, :destroy]
|
||||||
|
before_action :load_access_level
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
super
|
super
|
||||||
|
@ -41,15 +42,26 @@ class Admin::AnnouncementsController < OrbitAdminController
|
||||||
bulletin_params['bulletin_links_attributes'].delete(idx.to_s) if link['url'].blank?
|
bulletin_params['bulletin_links_attributes'].delete(idx.to_s) if link['url'].blank?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
bulletin = Bulletin.new(bulletin_params)
|
bulletin = Bulletin.new(bulletin_params)
|
||||||
bulletin.create_user_id = current_user.id
|
bulletin.create_user_id = current_user.id
|
||||||
bulletin.update_user_id = current_user.id
|
bulletin.update_user_id = current_user.id
|
||||||
|
if user_can_approve?
|
||||||
|
bulletin.approved = true
|
||||||
|
end
|
||||||
bulletin.save
|
bulletin.save
|
||||||
build_email(bulletin)
|
build_email(bulletin)
|
||||||
redirect_to params['referer_url']
|
redirect_to params['referer_url']
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def approve_bulletin
|
||||||
|
id = params[:id]
|
||||||
|
bulletin = Bulletin.find(id)
|
||||||
|
bulletin.approved = true
|
||||||
|
bulletin.save
|
||||||
|
redirect_to admin_announcements_path
|
||||||
|
end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
if can_edit_or_delete?(@bulletin)
|
if can_edit_or_delete?(@bulletin)
|
||||||
@tags = @module_app.tags
|
@tags = @module_app.tags
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
class AnnouncementsController < ApplicationController
|
class AnnouncementsController < ApplicationController
|
||||||
|
|
||||||
def index
|
def index
|
||||||
announcements = Bulletin.where(:is_preview.in=>[false,nil]).can_display.order_by(:created_at=>'desc').filter_by_categories.filter_by_tags(OrbitHelper.params['tags'])
|
announcements = Bulletin.where(:is_preview.in=>[false,nil]).can_display.is_approved.order_by(:created_at=>'desc').filter_by_categories.filter_by_tags(OrbitHelper.params['tags'])
|
||||||
|
|
||||||
anns = announcements.collect do |a|
|
anns = announcements.collect do |a|
|
||||||
statuses = a.statuses_with_classname.collect do |status|
|
statuses = a.statuses_with_classname.collect do |status|
|
||||||
|
@ -49,7 +49,7 @@ class AnnouncementsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def widget
|
def widget
|
||||||
announcements = Bulletin.where(:is_preview.in=>[false,nil]).can_display.order_by(:created_at=>'desc').filter_by_widget_categories.filter_by_tags(OrbitHelper.widget_tags)
|
announcements = Bulletin.where(:is_preview.in=>[false,nil]).can_display.is_approved.order_by(:created_at=>'desc').filter_by_widget_categories.filter_by_tags(OrbitHelper.widget_tags)
|
||||||
|
|
||||||
anns = announcements.collect do |a|
|
anns = announcements.collect do |a|
|
||||||
statuses = a.statuses_with_classname.collect do |status|
|
statuses = a.statuses_with_classname.collect do |status|
|
||||||
|
@ -94,7 +94,7 @@ class AnnouncementsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def widget1
|
def widget1
|
||||||
announcements = Bulletin.where(:is_preview.in=>[false,nil]).can_display.order_by(:created_at=>'desc').filter_by_widget_categories.filter_by_tags(OrbitHelper.widget_tags)
|
announcements = Bulletin.where(:is_preview.in=>[false,nil]).can_display.is_approved.order_by(:created_at=>'desc').filter_by_widget_categories.filter_by_tags(OrbitHelper.widget_tags)
|
||||||
|
|
||||||
anns = announcements.collect do |a|
|
anns = announcements.collect do |a|
|
||||||
statuses = a.statuses_with_classname.collect do |status|
|
statuses = a.statuses_with_classname.collect do |status|
|
||||||
|
@ -144,6 +144,12 @@ class AnnouncementsController < ApplicationController
|
||||||
|
|
||||||
url_to_edit = OrbitHelper.user_can_edit?(announcement) ? "/admin/announcements/#{announcement.id.to_s}/edit" : ""
|
url_to_edit = OrbitHelper.user_can_edit?(announcement) ? "/admin/announcements/#{announcement.id.to_s}/edit" : ""
|
||||||
|
|
||||||
|
access_level = OrbitHelper.user_access_level?
|
||||||
|
|
||||||
|
if !announcement.approved && (access_level != "manager" && access_level != "admin")
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
tags = announcement.tags.map{|tag| {
|
tags = announcement.tags.map{|tag| {
|
||||||
"tag" => tag.name ,
|
"tag" => tag.name ,
|
||||||
"url" => OrbitHelper.page_for_tag(tag)
|
"url" => OrbitHelper.page_for_tag(tag)
|
||||||
|
|
|
@ -24,4 +24,24 @@ module Admin::AnnouncementsHelper
|
||||||
ann_page = pages.first if ann_page.nil?
|
ann_page = pages.first if ann_page.nil?
|
||||||
request.protocol+(request.host_with_port+ann_page.url+'/'+bulletin.to_param).gsub('//','/') rescue "/"
|
request.protocol+(request.host_with_port+ann_page.url+'/'+bulletin.to_param).gsub('//','/') rescue "/"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def load_access_level
|
||||||
|
if current_user.is_admin?
|
||||||
|
@access_level = "admin"
|
||||||
|
elsif current_user.is_manager?(@module_app)
|
||||||
|
@access_level = "manager"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def user_can_approve?
|
||||||
|
case @access_level
|
||||||
|
when "admin"
|
||||||
|
return true
|
||||||
|
when "manager"
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,6 +18,7 @@ class Bulletin
|
||||||
field :postdate , :type => DateTime, :default => Time.now
|
field :postdate , :type => DateTime, :default => Time.now
|
||||||
field :deadline , :type => DateTime
|
field :deadline , :type => DateTime
|
||||||
field :rss2_sn
|
field :rss2_sn
|
||||||
|
field :approved, :type => Boolean, :default => false
|
||||||
field :is_preview, :type => Boolean, :default => false
|
field :is_preview, :type => Boolean, :default => false
|
||||||
|
|
||||||
field :email_id
|
field :email_id
|
||||||
|
@ -37,6 +38,7 @@ class Bulletin
|
||||||
before_destroy :destroy_email
|
before_destroy :destroy_email
|
||||||
|
|
||||||
scope :can_display, ->{where(:is_hidden=>false).any_of({:postdate.lt=>Time.now, :deadline.gt=>Time.now},{:postdate.lt=>Time.now, :deadline=>nil}).order_by([:is_top, :desc])}
|
scope :can_display, ->{where(:is_hidden=>false).any_of({:postdate.lt=>Time.now, :deadline.gt=>Time.now},{:postdate.lt=>Time.now, :deadline=>nil}).order_by([:is_top, :desc])}
|
||||||
|
scope :is_approved, ->{where(:approved => true)}
|
||||||
|
|
||||||
def update_user
|
def update_user
|
||||||
User.find(update_user_id) rescue nil
|
User.find(update_user_id) rescue nil
|
||||||
|
|
|
@ -20,6 +20,8 @@
|
||||||
<td>
|
<td>
|
||||||
<% if b.expired? %>
|
<% if b.expired? %>
|
||||||
<%= b.title %> <span class='label'><%= t(:expired) %></span>
|
<%= b.title %> <span class='label'><%= t(:expired) %></span>
|
||||||
|
<% elsif !b.approved? %>
|
||||||
|
<a href="<%=page_for_bulletin(b)%>" target="_blank"><%= b.title %></a> <span class='label'><%= t(:pending) %></span>
|
||||||
<% else %>
|
<% else %>
|
||||||
<a href="<%=page_for_bulletin(b)%>" target="_blank"><%= b.title %></a>
|
<a href="<%=page_for_bulletin(b)%>" target="_blank"><%= b.title %></a>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -29,6 +31,9 @@
|
||||||
<% if can_edit_or_delete?(b) %>
|
<% if can_edit_or_delete?(b) %>
|
||||||
<li><a href="/admin/announcements/<%=b.id.to_s%>/edit"><%= t(:edit) %></a></li>
|
<li><a href="/admin/announcements/<%=b.id.to_s%>/edit"><%= t(:edit) %></a></li>
|
||||||
<li><a href="#" class="delete text-error" rel="/admin/announcements/<%=b.id.to_s%>"><%= t(:delete_) %></a></li>
|
<li><a href="#" class="delete text-error" rel="/admin/announcements/<%=b.id.to_s%>"><%= t(:delete_) %></a></li>
|
||||||
|
<% if !b.approved && user_can_approve? %>
|
||||||
|
<li><a href="<%= admin_announcement_approve_bulletin_path(:id => b.id.to_s) %>"><%= t("announcement.approve") %></a></li>
|
||||||
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -8,6 +8,7 @@ en:
|
||||||
sub_title: Sub Title
|
sub_title: Sub Title
|
||||||
category: Category
|
category: Category
|
||||||
add_new: Add New
|
add_new: Add New
|
||||||
|
approve: Approve
|
||||||
all_articles: All Articles
|
all_articles: All Articles
|
||||||
announcement: Announcement
|
announcement: Announcement
|
||||||
approval_setting: Approval Setting
|
approval_setting: Approval Setting
|
||||||
|
|
|
@ -8,6 +8,7 @@ zh_tw:
|
||||||
sub_title: 副標題
|
sub_title: 副標題
|
||||||
category: 類別
|
category: 類別
|
||||||
add_new: 新建
|
add_new: 新建
|
||||||
|
approve: 通過
|
||||||
all_articles: 文章列表
|
all_articles: 文章列表
|
||||||
announcement: 公告
|
announcement: 公告
|
||||||
approval_setting: 審核設定
|
approval_setting: 審核設定
|
||||||
|
|
|
@ -6,6 +6,7 @@ Rails.application.routes.draw do
|
||||||
namespace :admin do
|
namespace :admin do
|
||||||
post 'announcement/preview', to: 'announcements#preview'
|
post 'announcement/preview', to: 'announcements#preview'
|
||||||
get 'announcement/destroy_preview/:slug_title-:uid', to: 'announcements#destroy_preview'
|
get 'announcement/destroy_preview/:slug_title-:uid', to: 'announcements#destroy_preview'
|
||||||
|
get 'announcement/approve_bulletin', to: 'announcements#approve_bulletin'
|
||||||
resources :announcements
|
resources :announcements
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue