Import Archive from RSS2 and basic Import UI

This commit is contained in:
manson 2014-06-03 19:27:34 +08:00
parent 0f58f39eb5
commit b1fe5264ce
4 changed files with 116 additions and 19 deletions

View File

@ -4,28 +4,15 @@ require "uri"
require 'json'
class Admin::ImportController < OrbitAdminController
before_action :get_data ,:except=>'index'
def rss2_news
@url = params['url']
uri = URI.parse(@url)
@host = uri.host
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
data = response.body
data = JSON.parse(data)
@categories = data['categories']
@data = data['data']
@xxx = []
@new_category_ids = {}
l = I18n.locale
I18n.locale = :zh_tw
module_id = ModuleApp.where(:key=>"announcement").first.id
@categories.each do |category|
x = Category.where(:title => category["zh_tw"]).first
if x.nil?
@xxx << category
cat = Category.new
titles = {}
@site_valid_locales.each do |locale|
@ -40,8 +27,6 @@ class Admin::ImportController < OrbitAdminController
end
end
@user = User.where(:user_name => "rulingcom").first
@data.each do |row|
bulletin = Bulletin.new
bulletin.update_user = @user
@ -118,8 +103,87 @@ class Admin::ImportController < OrbitAdminController
bulletin.save!
end
I18n.locale = l
I18n.locale = @org_locale
redirect_to('/admin/announcements')
end
def rss2_archive
unless @site_url.nil?
module_app = ModuleApp.where(:key=>"archive").first
@new_categories = {}
@categories.each do |id, category|
old_cate = Category.where(:title => category['title']["zh-tw"]).first
if old_cate.nil?
cate = Category.new
titles = {}
@site_valid_locales.each do |locale|
titles[locale] = category['title'][locale.to_s.gsub('_', '-')]
end
cate.title_translations = titles
cate.save!
module_app.categories << cate
@new_categories[id] = cate.id
else
@new_categories[id] = old_cate.id
end
end
I18n.locale = :en
@data.each do |id, file|
titles = {}
@site_valid_locales.each do |locale|
titles[locale] = file['title'][locale.to_s.gsub('_', '-')]
end
the_file = ArchiveFileMultiple.new({
:file_title_translations=>titles,
:choose_lang => @site_valid_locales,
:remote_file_url => @site_url+file['url'],
:sort_number=>file['sort_number']
})
the_file.save
archive_file = ArchiveFile.new({
:title_translations=>titles,
:sort_number=>file['sort_number']
})
archive_file.category = Category.find(@new_categories[file["category"]])
archive_file.create_user_id = current_user.id
archive_file.update_user_id = current_user.id
archive_file.save
archive_file.archive_file_multiples << the_file
end
end
I18n.locale = @org_locale
redirect_to admin_archive_files_path
end
private
def get_data
@org_locale = I18n.locale
I18n.locale = :zh_tw
@site_url = params['site_url']
@url = params['url']
uri = URI.parse(@url)
@host = uri.host
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
data = response.body
data = JSON.parse(data)
@categories = data['categories']
@data = data['data']
@user = User.where(:user_name => "rulingcom").first
end
end

View File

@ -0,0 +1,31 @@
<style type="text/css">
.import_wrapper{
padding: 10px;
}
.import_wrapper .import-url{
width: 500px;
}
.import_wrapper .btn{
margin-bottom: 10px;
}
.lead{
border-bottom: 1px solid #DDD;
}
</style>
<div class="import_wrapper">
<div class="lead muted"><i class="icons-megaphone"></i><%= t("announcement.announcement") %></div>
<form method="post" action="/admin/import/rss2_news">
<input type="text" class="import-url" name="url" placeholder="RSS2 Export URL ex: http://rss2.rulingcom.com/DEMO24_ALL/export_news/"><br/>
<input type="submit" class="btn btn-primary" value="<%= t(:submit) %>">
</form>
</div>
<div class="import_wrapper">
<div class="lead muted"><i class="icons-archive"></i><%= t("archive.archive") %></div>
<form method="post" action="/admin/import/rss2_archive">
<input type="text" class="import-url" name="site_url" placeholder="RSS2 Site URL ex: http://rss2.rulingcom.com/DEMO24_ALL"><br/>
<input type="text" class="import-url" name="url" placeholder="RSS2 Export URL ex: http://rss2.rulingcom.com/DEMO24_ALL/export_archive/"><br/>
<input type="submit" class="btn btn-primary" value="<%= t(:submit) %>">
</form>
</div>

View File

@ -1,6 +1,6 @@
gem 'announcement', git: 'git@gitlab.tp.rulingcom.com:saurabh/announcement-test.git'
gem 'ad_banner', git: 'git@gitlab.tp.rulingcom.com:saurabh/adbanner-test.git'
gem "archive", git: 'git@gitlab.tp.rulingcom.com:saurabh/archive.git'
gem "archive", path: '/home/manson/dev/workspace/modules/archive'
gem 'gallery', git: 'git@gitlab.tp.rulingcom.com:saurabh/gallery.git'
gem 'links', git: 'git@gitlab.tp.rulingcom.com:saurabh/links.git'
gem 'page_content', git: 'git@gitlab.tp.rulingcom.com:saurabh/pagecontent.git'

View File

@ -196,7 +196,9 @@ Orbit::Application.routes.draw do
get 'design_list' => 'designs#design_list'
get 'module_store' => 'module_store#index'
get "import/rss2_news" => "import#rss2_news"
get "import" => "import#index"
post "import/rss2_news" => "import#rss2_news"
post "import/rss2_archive" => "import#rss2_archive"
end
get 'mobile', to: 'pages#home'