Compare commits
No commits in common. "master" and "new" have entirely different histories.
|
|
@ -1,25 +1,5 @@
|
|||
require 'rubyXL'
|
||||
|
||||
class Admin::EPaperSubscribersController < OrbitAdminController
|
||||
|
||||
RackTempMiddleExist = defined?(Rack::TempfileReaper)
|
||||
RACK_TEMPFILES = defined?(Rack::RACK_TEMPFILES) ? Rack::RACK_TEMPFILES : 'rack.tempfiles'
|
||||
Is_Rails5 = (Rails.version.to_f >= 5)
|
||||
|
||||
if RackTempMiddleExist
|
||||
if Is_Rails5
|
||||
def fix_tempfile_reaper
|
||||
request.set_header(RACK_TEMPFILES, [])
|
||||
end
|
||||
else
|
||||
def fix_tempfile_reaper
|
||||
env[RACK_TEMPFILES] = nil
|
||||
end
|
||||
end
|
||||
else
|
||||
def fix_tempfile_reaper; end
|
||||
end
|
||||
|
||||
def initialize
|
||||
super
|
||||
@app_title = "e_paper"
|
||||
|
|
@ -28,136 +8,115 @@ class Admin::EPaperSubscribersController < OrbitAdminController
|
|||
def index
|
||||
@table_fields = [t('email'), t('status'), t('language')]
|
||||
|
||||
@filter_fields = filter_fields([], [])
|
||||
@filter_fields.delete(:status)
|
||||
@filter_fields.delete(:category)
|
||||
@filter_fields.delete(:tags)
|
||||
|
||||
@subscribers = EPaperSubscriber.order_by(sort)
|
||||
@subscribers = search_data(@subscribers, [:email]).page(params[:page]).per(10)
|
||||
|
||||
@filter_fields = filter_fields([], [])
|
||||
@filter_fields.delete(:status)
|
||||
@filter_fields.delete(:category)
|
||||
@filter_fields.delete(:tags)
|
||||
@subscribers = EPaperSubscriber.order_by(sort)
|
||||
|
||||
@subscribers = search_data(@subscribers,[:email]).page(params[:page]).per(10)
|
||||
@thread = (params[:thread_id] ? Multithread.find(params[:thread_id]) : nil rescue nil)
|
||||
if @thread && @thread.status[:status] == 'finish'
|
||||
if @thread && @thread.status[:status] == 'finish'
|
||||
@thread = nil
|
||||
end
|
||||
|
||||
render :partial => "index" if request.xhr?
|
||||
end
|
||||
|
||||
def destroy
|
||||
subscriber = EPaperSubscriber.find(params[:id]) rescue nil
|
||||
subscriber.destroy if subscriber
|
||||
if !subscriber.nil?
|
||||
subscriber.destroy
|
||||
end
|
||||
redirect_to admin_e_paper_subscribers_path
|
||||
end
|
||||
|
||||
def export_excel
|
||||
@epaper_subscribers = EPaperSubscriber.where(:email.nin=>[nil,""]).desc(:created_at)
|
||||
@subscribers = @epaper_subscribers.where(:subscribed.ne=>false)
|
||||
@subscribers = @epaper_subscribers.where(:subscribed.ne=>false)
|
||||
@unsubscribers = @epaper_subscribers.where(:subscribed=>false)
|
||||
|
||||
respond_to do |format|
|
||||
format.xlsx {
|
||||
response.headers['Content-Disposition'] =
|
||||
'attachment; filename="' +
|
||||
Site.first.title + '-' +
|
||||
I18n.t('e_paper.e_paper') + '-' +
|
||||
I18n.t('e_paper.subscriber') + '.xlsx"'
|
||||
response.headers['Content-Disposition'] = 'attachment; filename="'+Site.first.title+'-'+I18n.t('e_paper.e_paper')+'-'+I18n.t('e_paper.subscriber')+'.xlsx"'
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
def get_subscribers_modal
|
||||
@epaper_subscribers = EPaperSubscriber.where(:email.nin=>[nil,""]).desc(:created_at)
|
||||
@subscribers = @epaper_subscribers.where(:subscribed.ne=>false)
|
||||
@subscribers = @epaper_subscribers.where(:subscribed.ne=>false)
|
||||
@unsubscribers = @epaper_subscribers.where(:subscribed=>false)
|
||||
render :partial => 'modal_select', :layout => false
|
||||
end
|
||||
|
||||
def import_from_excel
|
||||
thread = Multithread.where(:key=>'import_epaper_subscribers').first
|
||||
if thread.nil?
|
||||
thread = Multithread.create(:key=>'import_epaper_subscribers', :status=>{:status=>'Processing'})
|
||||
thread = Multithread.create(:key=>'import_epaper_subscribers',:status=>{:status=>'Processing'})
|
||||
else
|
||||
thread.update(:status=>{:status=>'Processing'})
|
||||
end
|
||||
|
||||
file = params["import_file"]
|
||||
tempfile = file.tempfile
|
||||
|
||||
ObjectSpace.undefine_finalizer(tempfile)
|
||||
fix_tempfile_reaper
|
||||
|
||||
Thread.new do
|
||||
workbook = RubyXL::Parser.parse(tempfile)
|
||||
|
||||
subscribe_sheet = workbook['Subscribe']
|
||||
workbook = RubyXL::Parser.parse(params["import_file"].tempfile)
|
||||
subscribe_sheet = workbook['Subscribe']
|
||||
unsubscribe_sheet = workbook['Unsubscribe']
|
||||
|
||||
all_count =
|
||||
(subscribe_sheet ? (subscribe_sheet.count - 1) : 0) +
|
||||
(unsubscribe_sheet ? (unsubscribe_sheet.count - 1) : 0)
|
||||
|
||||
all_count = (subscribe_sheet ? (subscribe_sheet.count - 1) : 0) + (unsubscribe_sheet ? (unsubscribe_sheet.count - 1) : 0)
|
||||
puts_every_count = [all_count * 3 / 100, 1].max
|
||||
current_count = 0
|
||||
finish_percent = 0
|
||||
|
||||
thread.update(
|
||||
:status=>{
|
||||
:status=>'Importing',
|
||||
'all_count'=>all_count,
|
||||
'current_count'=>current_count,
|
||||
'finish_percent'=>finish_percent
|
||||
}
|
||||
)
|
||||
|
||||
if subscribe_sheet
|
||||
subscribe_sheet.each_with_index do |row, i|
|
||||
next if i < 1
|
||||
email = row.cells[0]&.value
|
||||
next if email.blank?
|
||||
|
||||
subscriber = EPaperSubscriber.where(:email=>email).first || EPaperSubscriber.new(:email=>email)
|
||||
subscriber.subscribed = true
|
||||
subscriber.language = row.cells[1]&.value.presence || I18n.locale.to_s
|
||||
subscriber.save
|
||||
|
||||
current_count += 1
|
||||
if current_count % puts_every_count == 0
|
||||
finish_percent = (current_count * 100.0 / all_count).round(1)
|
||||
thread.update(:status=>{:status=>'Importing','all_count'=>all_count,'current_count'=>current_count,'finish_percent'=>finish_percent})
|
||||
thread.update(:status=>{:status=>'Importing','all_count'=>all_count,'current_count'=>current_count,'finish_percent'=>finish_percent})
|
||||
subscribe_sheet.each_with_index do |row, i|
|
||||
next if i < 1
|
||||
c0 = row.cells[0]
|
||||
c1 = row.cells[1]
|
||||
if c0
|
||||
email = c0.value
|
||||
if email.present?
|
||||
subscriber = EPaperSubscriber.where(:email=>email).first
|
||||
if subscriber.nil?
|
||||
subscriber = EPaperSubscriber.new(:email=>email)
|
||||
end
|
||||
language = c1.value
|
||||
if language.blank?
|
||||
language = I18n.locale.to_s
|
||||
end
|
||||
subscriber.subscribed = true
|
||||
subscriber.language = language
|
||||
subscriber.save
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if unsubscribe_sheet
|
||||
unsubscribe_sheet.each_with_index do |row, i|
|
||||
next if i < 1
|
||||
email = row.cells[0]&.value
|
||||
next if email.blank?
|
||||
|
||||
subscriber = EPaperSubscriber.where(:email=>email).first || EPaperSubscriber.new(:email=>email)
|
||||
subscriber.subscribed = false
|
||||
subscriber.language = row.cells[1]&.value.presence || I18n.locale.to_s
|
||||
subscriber.save
|
||||
|
||||
current_count += 1
|
||||
if current_count % puts_every_count == 0
|
||||
finish_percent = (current_count * 100.0 / all_count).round(1)
|
||||
thread.update(:status=>{:status=>'Importing','all_count'=>all_count,'current_count'=>current_count,'finish_percent'=>finish_percent})
|
||||
end
|
||||
current_count += 1
|
||||
if current_count % puts_every_count == 0
|
||||
finish_percent = (current_count * 100.0 / all_count).round(1)
|
||||
thread.update(:status=>{:status=>'Importing','all_count'=>all_count,'current_count'=>current_count,'finish_percent'=>finish_percent})
|
||||
end
|
||||
end
|
||||
|
||||
thread.update(
|
||||
:status=>{
|
||||
:status=>'finish',
|
||||
'all_count'=>all_count,
|
||||
'current_count'=>current_count,
|
||||
'finish_percent'=>100
|
||||
}
|
||||
)
|
||||
unsubscribe_sheet.each_with_index do |row, i|
|
||||
next if i < 1
|
||||
c0 = row.cells[0]
|
||||
c1 = row.cells[1]
|
||||
if c0
|
||||
email = c0.value
|
||||
if email.present?
|
||||
subscriber = EPaperSubscriber.where(:email=>email).first
|
||||
if subscriber.nil?
|
||||
subscriber = EPaperSubscriber.new(:email=>email)
|
||||
end
|
||||
language = c1.value
|
||||
if language.blank?
|
||||
language = I18n.locale.to_s
|
||||
end
|
||||
subscriber.subscribed = false
|
||||
subscriber.language = language
|
||||
subscriber.save
|
||||
end
|
||||
end
|
||||
current_count += 1
|
||||
if current_count % puts_every_count == 0
|
||||
finish_percent = (current_count * 100.0 / all_count).round(1)
|
||||
thread.update(:status=>{:status=>'Importing','all_count'=>all_count,'current_count'=>current_count,'finish_percent'=>finish_percent})
|
||||
end
|
||||
end
|
||||
finish_percent = 100
|
||||
thread.update(:status=>{:status=>'finish','all_count'=>all_count,'current_count'=>current_count,'finish_percent'=>finish_percent})
|
||||
end
|
||||
|
||||
redirect_to admin_e_paper_subscribers_path(thread_id: thread.id)
|
||||
end
|
||||
|
||||
|
|
@ -166,82 +125,45 @@ class Admin::EPaperSubscribersController < OrbitAdminController
|
|||
@unsubscribers = []
|
||||
respond_to do |format|
|
||||
format.xlsx {
|
||||
response.headers['Content-Disposition'] =
|
||||
'attachment; filename="' +
|
||||
Site.first.title + '-' +
|
||||
I18n.t('e_paper.e_paper') + '-' +
|
||||
I18n.t('e_paper.subscriber') + 'excel_format.xlsx"'
|
||||
response.headers['Content-Disposition'] = 'attachment; filename="'+Site.first.title+'-'+I18n.t('e_paper.e_paper')+'-'+I18n.t('e_paper.subscriber')+'excel_format.xlsx"'
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
def batch_delete_subscribers
|
||||
@thread = (params[:thread_id] ? Multithread.find(params[:thread_id]) : nil rescue nil)
|
||||
if @thread && @thread.status[:status] == 'finish'
|
||||
@thread = nil
|
||||
end
|
||||
end
|
||||
|
||||
def delete_subscribers
|
||||
subscriber_ids = params['subscriber_ids']
|
||||
|
||||
thread = Multithread.where(:key=>'delete_epaper_subscribers').first
|
||||
if thread.nil?
|
||||
thread = Multithread.create(
|
||||
:key=>'delete_epaper_subscribers',
|
||||
:status=>{:status=>'Processing'}
|
||||
)
|
||||
thread = Multithread.create(:key=>'delete_epaper_subscriber',:status=>{:status=>'Processing'})
|
||||
else
|
||||
thread.update(:status=>{:status=>'Processing'})
|
||||
end
|
||||
|
||||
if subscriber_ids.present?
|
||||
if subscriber_ids
|
||||
all_count = subscriber_ids.count
|
||||
puts_every_count = [all_count * 3 / 100, 1].max
|
||||
current_count = 0
|
||||
finish_percent = 0
|
||||
|
||||
thread.update(
|
||||
:status=>{
|
||||
:status=>'Deleting',
|
||||
'all_count'=>all_count,
|
||||
'current_count'=>current_count,
|
||||
'finish_percent'=>finish_percent
|
||||
}
|
||||
)
|
||||
|
||||
thread.update(:status=>{:status=>'Deleting','all_count'=>all_count,'current_count'=>current_count,'finish_percent'=>finish_percent})
|
||||
Thread.new do
|
||||
EPaperSubscriber.where(:id.in=>subscriber_ids).to_a.each do |s|
|
||||
s.destroy
|
||||
current_count += 1
|
||||
|
||||
if current_count % puts_every_count == 0
|
||||
finish_percent = (current_count * 100.0 / all_count).round(1)
|
||||
thread.update(
|
||||
:status=>{
|
||||
:status=>'Deleting',
|
||||
'all_count'=>all_count,
|
||||
'current_count'=>current_count,
|
||||
'finish_percent'=>finish_percent
|
||||
}
|
||||
)
|
||||
thread.update(:status=>{:status=>'Deleting','all_count'=>all_count,'current_count'=>current_count,'finish_percent'=>finish_percent})
|
||||
end
|
||||
end
|
||||
|
||||
thread.update(
|
||||
:status=>{
|
||||
:status=>'finish',
|
||||
'all_count'=>all_count,
|
||||
'current_count'=>current_count,
|
||||
'finish_percent'=>100
|
||||
}
|
||||
)
|
||||
finish_percent = 100
|
||||
thread.update(:status=>{:status=>'finish','all_count'=>all_count,'current_count'=>current_count,'finish_percent'=>finish_percent})
|
||||
end
|
||||
else
|
||||
thread.update(:status=>{:status=>'finish'})
|
||||
end
|
||||
|
||||
redirect_to admin_e_paper_subscribers_batch_delete_subscribers_path(thread_id: thread.id)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
class EPapersController < ApplicationController
|
||||
FrontendMethods = ["papers", "topics","showpaper"]
|
||||
FrontendMethods = ["papers", "topics"]
|
||||
EmptyImg = "data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA="
|
||||
EmptyImgUrl = "#{EmptyImg}\" style=\"display: none;"
|
||||
def self.custom_widget_data
|
||||
|
|
@ -91,7 +91,7 @@ class EPapersController < ApplicationController
|
|||
{
|
||||
"title" => criteria.title,
|
||||
"description" => criteria.description,
|
||||
"link_to_show" => OrbitHelper.url_to_show(criteria.to_param) + "?method=showpaper"
|
||||
"link_to_show" => OrbitHelper.url_to_show(criteria.to_param) + "?method=topics"
|
||||
}
|
||||
end
|
||||
{
|
||||
|
|
@ -114,7 +114,7 @@ class EPapersController < ApplicationController
|
|||
member_name = member.name
|
||||
end
|
||||
{
|
||||
|
||||
|
||||
"content" => epaper.content,
|
||||
"publish_date" => epaper.period,
|
||||
"description" => epaper.description,
|
||||
|
|
@ -129,23 +129,6 @@ class EPapersController < ApplicationController
|
|||
}
|
||||
end
|
||||
|
||||
def showpaper
|
||||
params = OrbitHelper.params
|
||||
if params[:uid].present?
|
||||
criteria = PaperCriteria.where(:uid => params[:uid]).first
|
||||
return if criteria.nil?
|
||||
end
|
||||
if criteria.banner_image.present?
|
||||
banner_image = EPaperImage.find(criteria.banner_image).image.url
|
||||
end
|
||||
{
|
||||
"title" => criteria.title,
|
||||
"banner_image" => banner_image,
|
||||
"content" => criteria.content,
|
||||
"description" => criteria.description
|
||||
}
|
||||
end
|
||||
|
||||
def topics
|
||||
params = OrbitHelper.params
|
||||
if params[:uid].present?
|
||||
|
|
@ -214,7 +197,7 @@ class EPapersController < ApplicationController
|
|||
{
|
||||
"title" => criteria.title,
|
||||
"description" => criteria.description,
|
||||
"link_to_show" => OrbitHelper.widget_item_url(criteria.to_param) + "?method=showpaper"
|
||||
"link_to_show" => OrbitHelper.widget_item_url(criteria.to_param) + "?method=topics"
|
||||
}
|
||||
end
|
||||
{
|
||||
|
|
@ -280,7 +263,7 @@ class EPapersController < ApplicationController
|
|||
{
|
||||
"categories" => data,
|
||||
"extras" => {
|
||||
"read_more" => OrbitHelper.widget_more_url + "?method=showpaper"
|
||||
"read_more" => OrbitHelper.widget_more_url + "?method=topics"
|
||||
}
|
||||
}
|
||||
end
|
||||
|
|
@ -317,7 +300,7 @@ class EPapersController < ApplicationController
|
|||
{
|
||||
"categories" => data,
|
||||
"extras" => {
|
||||
"read_more" => OrbitHelper.widget_more_url + "?method=showpaper"
|
||||
"read_more" => OrbitHelper.widget_more_url + "?method=topics"
|
||||
}
|
||||
}
|
||||
end
|
||||
|
|
@ -349,8 +332,8 @@ class EPapersController < ApplicationController
|
|||
def unsubscribeuser
|
||||
subscriber = EPaperSubscriber.where(:email => params[:email]).first rescue nil
|
||||
if !subscriber.nil?
|
||||
subscriber.subscribed = false
|
||||
subscriber.save
|
||||
subscriber.subscribed = false
|
||||
subscriber.save
|
||||
data = {"success" => true, "msg" => "Successfully Unsubscribed!!!"}
|
||||
else
|
||||
data = {"success" => false, "msg" => "You are not a subscriber!!!"}
|
||||
|
|
@ -365,4 +348,4 @@ class EPapersController < ApplicationController
|
|||
asc_flag ? tmp : -tmp
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1 +0,0 @@
|
|||
<%= render_view %>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<h1>{{title}}</h1>
|
||||
<img src="{{banner_image}}"/>
|
||||
<div>{{description}}</div>
|
||||
<div>{{content}}</div>
|
||||
Loading…
Reference in New Issue