Log In to Orbit
-- - <% end %>
diff --git a/Gemfile b/Gemfile
index 7dda595..f431bb5 100644
--- a/Gemfile
+++ b/Gemfile
@@ -21,6 +21,8 @@ gem 'youtube_it'
gem 'gotcha'
gem "geocoder"
gem 'httparty'
+gem 'whenever', :require => false
+
#database
gem 'mini_magick'
gem 'mongoid', '> 2.1', '< 3.0.0'
diff --git a/app/controllers/admin/import_data_controller.rb b/app/controllers/admin/import_data_controller.rb
new file mode 100644
index 0000000..d9c75d1
--- /dev/null
+++ b/app/controllers/admin/import_data_controller.rb
@@ -0,0 +1,734 @@
+# encoding: utf-8
+
+require 'net/http'
+require 'open-uri'
+require 'timeout'
+
+class Admin::ImportDataController < OrbitBackendController
+ # helper Admin::PagePartsHelper
+ # include Admin::FrontendWidgetInterface
+
+ def get_teacher_data
+ uri = URI("https://localhost:8000/teachers.xml")
+
+ #params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
+ #uri.query = URI.encode_www_form(params)
+ res = Net::HTTP.get_response(uri)
+
+ @teacher_data = Hash.from_xml(res.body)
+ @teachers = @teacher_data["objects"]
+ @i = 5000
+ @teachers.each do |hash|
+ # @roles = Role.skip(1).first
+ @roles = Role.all
+ @teacher = User.new
+ I18n.locale = :zh_tw
+ if !hash['teacher_zh_tw'].blank?
+ @teacher.first_name = hash['teacher_zh_tw']
+ elsif hash['teacher_zh_tw'].blank? && !hash['teacher_en'].blank?
+ @teacher.first_name = hash['teacher_en']
+ elsif hash['teacher_zh_tw'].blank? && hash['teacher_en'].blank?
+ @teacher.first_name = "Please Fill the Name"
+ end
+
+ I18n.locale = :en
+ if !hash['teacher_en'].blank?
+ @teacher.first_name = hash['teacher_en']
+ elsif hash['teacher_en'].blank? && !hash['teacher_zh_tw'].blank?
+ @teacher.first_name = hash['teacher_zh_tw']
+ elsif hash['teacher_en'].blank? && hash['teacher_zh_tw'].blank?
+ @teacher.first_name = "Please Fill the Name"
+ end
+
+ #@teacher.first_name = hash['teacher_en']
+ @teacher.ntu_seq = hash['ntu_seq']
+ @teacher.sid = hash['ntu_seq']
+ @teacher.role_ids = ["#{@roles.skip(1).first.id}"]
+ @teacher.password = "testpass"
+ @i += 10
+ if !hash['email'].blank?
+ @user = User.where(email: "#{hash['email']}")
+ if @user.length == 0
+ @teacher.email = hash['email']
+ elsif @user.length > 0
+ @teacher.email = "#{@i}duplicate@ntu.edu.tw"
+ end
+ else
+ @teacher.email = "#{@i}@ntu.edu.tw"
+ end
+
+ if hash['teacher_zh_tw'].blank? && hash['teacher_en'].blank?
+ @teacher.user_id = "defaultuser"
+ elsif hash['teacher_en'].blank?
+ @teacher.user_id = hash['teacher_zh_tw']
+ elsif hash['teacher_zh_tw']
+ @teacher.user_id = hash['teacher_en']
+ end
+ @teacher.save!
+ end
+ end
+
+ def get_book_data
+ uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp")
+ params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
+ uri.query = URI.encode_www_form(params)
+ res = Net::HTTP.get_response(uri)
+
+ teachers = User.all
+
+ teachers.each do |hash|
+ # if hash.ntu_seq.present?
+ if hash.user_id.present?
+ # ntu_seq = hash.ntu_seq
+ u_account = hash.user_id
+ books_xml = Nokogiri::XML( \
+ # open("http://ann.cc.ntu.edu.tw/Achv/xmlBook.asp?Seq=#{ntu_seq}"))
+ open("http://ann.cc.ntu.edu.tw/Achv/xmlData_useMail.asp?item=Book&account=#{u_account}"))
+ @books = books_xml.xpath("//Book").map do |book_node|
+ {
+ author: (book_node>"Authors").text,
+ year: (book_node>"PublishYear").text,
+ title: (book_node>"DocTitle").text,
+ remarks: (book_node>"Remarks").text,
+ publisher: (book_node>"Publisher").text,
+ book_title: (book_node>"BookTitle").text
+ }
+ end
+ if @books.present?
+ @books.each do |b|
+ @book = WritingBook.new
+ I18n.locale = :zh_tw
+ @book.authors = b[:author]
+ @book.paper_title = b[:title]
+ @book.book_title = b[:book_title]
+ @book.note = b[:remarks]
+ @book.publisher = b[:publisher]
+ I18n.locale = :en
+ @book.authors = b[:author]
+ @book.paper_title = b[:title]
+ @book.book_title = b[:book_title]
+ @book.note = b[:remarks]
+ @book.publisher = b[:publisher]
+ @book.year = b[:year]
+ @book.create_user_id = hash.id
+ @book.save
+ end
+ else
+ puts "No books by Teacher"
+ end
+ end
+ end
+ end
+
+ def get_conference_data
+ uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp")
+ params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
+ uri.query = URI.encode_www_form(params)
+ res = Net::HTTP.get_response(uri)
+
+ teachers = User.all
+
+ teachers.each do |hash|
+ # if hash.ntu_seq.present?
+ if hash.user_id.present?
+ # ntu_seq = hash.ntu_seq
+ u_account = hash.user_id
+ conference_xml = Nokogiri::XML( \
+ # open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=C"))
+ open("http://ann.cc.ntu.edu.tw/Achv/xmlData_useMail.asp?item=paper&account=#{u_account}&type=C"))
+ #open("http://versatile.management.ntu.edu.tw/publication1/conference/#{ntuseq}.xml"))
+ @conference_papers = conference_xml.xpath("//Paper").map do |cp_node|
+ {
+ author: (cp_node>"Authors").text,
+ year: (cp_node>"PublishYear").text,
+ title: (cp_node>"PaperTitle").text,
+ conference: (cp_node>"PublishOn").text,
+ date: Date::MONTHNAMES[(cp_node>"PublishMonth").text.to_i],
+ location: "#{(cp_node>"Country").text} #{(cp_node>"location").text}",
+ conference_title: (cp_node>"PublishOn").text,
+ remarks: (cp_node>"Remarks").text
+ }
+ end
+ if @conference_papers.present?
+ @conference_papers.each do |b|
+ @conference_paper = WritingConference.new
+ I18n.locale = :zh_tw
+ @conference_paper.authors = b[:author]
+ if b[:title].blank?
+ @conference_paper.paper_title = "No Title Present"
+ else
+ @conference_paper.paper_title = b[:title]
+ end
+ if b[:conference_title].blank?
+ @conference_paper.conference_title = "No Title Present"
+ else
+ @conference_paper.conference_title = b[:conference_title]
+ end
+
+ @conference_paper.note = b[:remarks]
+ I18n.locale = :en
+ @conference_paper.authors = b[:author]
+ if b[:title].blank?
+ @conference_paper.paper_title = "No Title Present"
+ else
+ @conference_paper.paper_title = b[:title]
+ end
+ if b[:conference_title].blank?
+ @conference_paper.conference_title = "No Title Present"
+ else
+ @conference_paper.conference_title = b[:conference_title]
+ end
+ @conference_paper.note = b[:remarks]
+
+ @conference_paper.location = b[:location]
+ @conference_paper.year = b[:year]
+ @conference_paper.create_user_id = hash.id
+
+ @conference_paper.save!
+ end
+ else
+ puts "No conference by Teacher"
+ end
+ end
+ end
+ end
+
+
+ def get_journal_paper_data
+ uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp")
+ params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
+ uri.query = URI.encode_www_form(params)
+ res = Net::HTTP.get_response(uri)
+
+ teachers = User.all
+
+ teachers.each do |hash|
+ # if hash.ntu_seq.present?
+ if hash.user_id.present?
+ # ntu_seq = hash.ntu_seq
+ u_account = hash.user_id
+ paper_xml = Nokogiri::XML( \
+ #open("http://versatile.management.ntu.edu.tw/publication1/journal/#{ntuseq}.xml"))
+ # open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=J"))
+ open("http://ann.cc.ntu.edu.tw/Achv/xmlData_useMail.asp?item=paper&account=#{u_account}&type=J"))
+ @journal_papers = paper_xml.xpath("//Paper").map do |paper_node|
+ {
+ author: (paper_node>"Authors").text,
+ year: (paper_node>"PublishYear").text,
+ title: (paper_node>"PaperTitle").text,
+ journal: (paper_node>"PublishOn").text,
+ volume:(paper_node>"Volume").text,
+ volumeno:(paper_node>"VolumeNo").text,
+ beginpage:(paper_node>"BeginPage").text,
+ endpage:(paper_node>"EndPage").text,
+ subgroup:(paper_node>"subgroup").text,
+ remarks: (paper_node>"Remarks").text,
+ cate: ((paper_node>"subgroup")>"Group").text
+ }
+ end
+ if @journal_papers.present?
+ @journal_papers.each do |b|
+ @journal_paper = WritingJournal.new
+ I18n.locale = :zh_tw
+ @journal_paper.authors = b[:author]
+ if b[:title].blank?
+ @journal_paper.paper_title = "No Title Present"
+ else
+ @journal_paper.paper_title = b[:title]
+ end
+ @journal_paper.journal_title = b[:journal]
+ @journal_paper.note = b[:remarks]
+ I18n.locale = :en
+ @journal_paper.authors = b[:author]
+ if b[:title].blank?
+ @journal_paper.paper_title = "No Title Present"
+ else
+ @journal_paper.paper_title = b[:title]
+ end
+ @journal_paper.journal_title = b[:journal]
+ @journal_paper.note = b[:remarks]
+ @journal_paper.year = b[:year]
+ @journal_paper.vol_no = b[:volumeno]
+ @journal_paper.form_to_start = b[:beginpage]
+ @journal_paper.form_to_end = b[:endpage]
+ if !b[:cate].blank?
+ @level_type = JournalLevelType.where(:key => b[:cate])
+ if @level_type.present?
+ @journal_paper.journal_level_type_ids = ["#{@level_type.first.id}"]
+ end
+ end
+
+ @journal_paper.create_user_id = hash.id
+ @journal_paper.save!
+
+ end
+ else
+ puts "No journal paper by Teacher"
+ end
+ end
+ end
+ end
+
+def sync_conference_data
+ @conference_data = WritingConference.where(create_user_id: "#{params[:user_id]}")
+ @conference_data.delete_all
+ @user = User.find("#{params[:user_id]}")
+
+ # teachers.each do |hash|
+ # if @user.sid.present?
+ if @user.user_id.present?
+ # ntu_seq = @user.sid
+ u_account = @user.user_id
+ conference_xml = Nokogiri::XML( \
+ # open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=C"))
+ open("http://ann.cc.ntu.edu.tw/Achv/xmlData_useMail.asp?item=paper&account=#{u_account}&type=C"))
+ #open("http://versatile.management.ntu.edu.tw/publication1/conference/#{ntuseq}.xml"))
+ @conference_papers = conference_xml.xpath("//Paper").map do |cp_node|
+ {
+ author: (cp_node>"Authors").text,
+ year: (cp_node>"PublishYear").text,
+ title: (cp_node>"PaperTitle").text,
+ conference: (cp_node>"PublishOn").text,
+ date: Date::MONTHNAMES[(cp_node>"PublishMonth").text.to_i],
+ location: "#{(cp_node>"Country").text} #{(cp_node>"location").text}",
+ conference_title: (cp_node>"PublishOn").text,
+ remarks: (cp_node>"Remarks").text
+ }
+ end
+ if @conference_papers.present?
+ @conference_papers.each do |b|
+ @conference_paper = WritingConference.new
+ I18n.locale = :zh_tw
+ @conference_paper.authors = b[:author]
+ if b[:title].blank?
+ @conference_paper.paper_title = "No Title Present"
+ else
+ @conference_paper.paper_title = b[:title]
+ end
+ if b[:conference_title].blank?
+ @conference_paper.conference_title = "No Title Present"
+ else
+ @conference_paper.conference_title = b[:conference_title]
+ end
+
+ @conference_paper.note = b[:remarks]
+ I18n.locale = :en
+ @conference_paper.authors = b[:author]
+ if b[:title].blank?
+ @conference_paper.paper_title = "No Title Present"
+ else
+ @conference_paper.paper_title = b[:title]
+ end
+ if b[:conference_title].blank?
+ @conference_paper.conference_title = "No Title Present"
+ else
+ @conference_paper.conference_title = b[:conference_title]
+ end
+ @conference_paper.note = b[:remarks]
+
+ @conference_paper.location = b[:location]
+ @conference_paper.year = b[:year]
+ @conference_paper.create_user_id = @user.id
+
+ @conference_paper.save!
+ end
+ else
+ puts "No conference by Teacher"
+ end
+ end
+ respond_to do |format|
+
+ format.html { redirect_to request.referer }
+ format.json { render json: {"success"=>true}.to_json}
+
+ end
+ end
+
+
+ def sync_journal_paper_data
+
+ @journal_data = WritingJournal.where(create_user_id: "#{params[:user_id]}")
+ @journal_data.delete_all
+ @user = User.find("#{params[:user_id]}")
+
+ # teachers.each do |hash|
+ # if @user.sid.present?
+ if @user.user_id.present?
+ # ntu_seq = @user.sid
+ u_account = @user.user_id
+ paper_xml = Nokogiri::XML( \
+ #open("http://versatile.management.ntu.edu.tw/publication1/journal/#{ntuseq}.xml"))
+ # open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=J"))
+ open("http://ann.cc.ntu.edu.tw/Achv/xmlData_useMail.asp?item=paper&account=#{u_account}&type=J"))
+ @journal_papers = paper_xml.xpath("//Paper").map do |paper_node|
+ {
+ author: (paper_node>"Authors").text,
+ year: (paper_node>"PublishYear").text,
+ title: (paper_node>"PaperTitle").text,
+ journal: (paper_node>"PublishOn").text,
+ volume:(paper_node>"Volume").text,
+ volumeno:(paper_node>"VolumeNo").text,
+ beginpage:(paper_node>"BeginPage").text,
+ endpage:(paper_node>"EndPage").text,
+ subgroup:(paper_node>"subgroup").text,
+ remarks: (paper_node>"Remarks").text,
+ cate: ((paper_node>"subgroup")>"Group").text
+ }
+ end
+ if @journal_papers.present?
+ @journal_papers.each do |b|
+ @journal_paper = WritingJournal.new
+ I18n.locale = :zh_tw
+ @journal_paper.authors = b[:author]
+
+ if b[:title].blank?
+ @journal_paper.paper_title = "No Title Present"
+ else
+ @journal_paper.paper_title = b[:title]
+ end
+
+ @journal_paper.journal_title = b[:journal]
+ @journal_paper.note = b[:remarks]
+ I18n.locale = :en
+ @journal_paper.authors = b[:author]
+
+ if b[:title].blank?
+ @journal_paper.paper_title = "No Title Present"
+ else
+ @journal_paper.paper_title = b[:title]
+ end
+
+ @journal_paper.journal_title = b[:journal]
+ @journal_paper.note = b[:remarks]
+ @journal_paper.year = b[:year]
+ @journal_paper.vol_no = b[:volumeno]
+ @journal_paper.form_to_start = b[:beginpage]
+ @journal_paper.form_to_end = b[:endpage]
+
+ if !b[:cate].blank?
+ @level_type = JournalLevelType.where(:key => b[:cate])
+ if @level_type.present?
+ @journal_paper.journal_level_type_ids = ["#{@level_type.first.id}"]
+ end
+ end
+
+ @journal_paper.create_user_id = @user.id
+ @journal_paper.save!
+ end
+ end
+
+ end
+
+ respond_to do |format|
+
+ format.html { redirect_to request.referer }
+ format.json { render json: {"success"=>true}.to_json}
+
+ end
+ end
+
+def sync_book_data
+ @books_data = WritingBook.where(create_user_id: "#{params[:user_id]}")
+ @books_data.delete_all
+ @user = User.find("#{params[:user_id]}")
+
+ # teachers.each do |hash|
+ # if @user.sid.present?
+ if @user.user_id.present?
+ # ntu_seq = @user.sid
+ u_account = @user.user_id
+ books_xml = Nokogiri::XML( \
+ # open("http://ann.cc.ntu.edu.tw/Achv/xmlBook.asp?Seq=#{ntu_seq}"))
+ open("http://ann.cc.ntu.edu.tw/Achv/xmlData_useMail.asp?item=Book&account=#{u_account}"))
+ @books = books_xml.xpath("//Book").map do |book_node|
+ {
+ author: (book_node>"Authors").text,
+ year: (book_node>"PublishYear").text,
+ title: (book_node>"DocTitle").text,
+ remarks: (book_node>"Remarks").text,
+ publisher: (book_node>"Publisher").text,
+ book_title: (book_node>"BookTitle").text
+ }
+ end
+ if @books.present?
+ @books.each do |b|
+ @book = WritingBook.new
+ I18n.locale = :zh_tw
+ @book.authors = b[:author]
+ @book.paper_title = b[:title]
+ @book.book_title = b[:book_title]
+ @book.note = b[:remarks]
+ @book.publisher = b[:publisher]
+ I18n.locale = :en
+ @book.authors = b[:author]
+ @book.paper_title = b[:title]
+ @book.book_title = b[:book_title]
+ @book.note = b[:remarks]
+ @book.publisher = b[:publisher]
+ @book.year = b[:year]
+ @book.create_user_id = @user.id
+ @book.save
+ end
+ end
+ end
+
+ respond_to do |format|
+
+ format.html { redirect_to request.referer }
+ format.json { render json: {"success"=>true}.to_json}
+
+ end
+end
+
+
+ def sync_conference_data_auto
+ @user = User.all
+ @user.each do |user|
+ if user.user_id.present?
+ next if !user.email.include? "ntu.edu.tw"
+ u_account = user.user_id
+ @conference_xml = nil
+ begin
+ timeout(60) do
+ @conference_xml = Nokogiri::XML( \
+ open("http://ann.cc.ntu.edu.tw/Achv/xmlData_useMail.asp?item=paper&account=#{u_account}&type=C"))
+ end
+ rescue Timeout::Error
+ next
+ end
+ @conference_papers = @conference_xml.xpath("//Paper").map do |cp_node|
+ {
+ author: (cp_node>"Authors").text,
+ year: (cp_node>"PublishYear").text,
+ title: (cp_node>"PaperTitle").text,
+ conference: (cp_node>"PublishOn").text,
+ date: Date::MONTHNAMES[(cp_node>"PublishMonth").text.to_i],
+ location: "#{(cp_node>"Country").text} #{(cp_node>"location").text}",
+ conference_title: (cp_node>"PublishOn").text,
+ remarks: (cp_node>"Remarks").text
+ }
+ end
+ if @conference_papers.present?
+ WritingConference.delete_all(conditions:{create_user_id: user.id})
+
+ @conference_papers.each do |b|
+ @conference_paper = WritingConference.new
+ I18n.locale = :zh_tw
+ @conference_paper.authors = b[:author]
+ if b[:title].blank?
+ @conference_paper.paper_title = "No Title Present"
+ else
+ @conference_paper.paper_title = b[:title]
+ end
+ if b[:conference_title].blank?
+ @conference_paper.conference_title = "No Title Present"
+ else
+ @conference_paper.conference_title = b[:conference_title]
+ end
+
+ @conference_paper.note = b[:remarks]
+ I18n.locale = :en
+ @conference_paper.authors = b[:author]
+ if b[:title].blank?
+ @conference_paper.paper_title = "No Title Present"
+ else
+ @conference_paper.paper_title = b[:title]
+ end
+ if b[:conference_title].blank?
+ @conference_paper.conference_title = "No Title Present"
+ else
+ @conference_paper.conference_title = b[:conference_title]
+ end
+ @conference_paper.note = b[:remarks]
+
+ @conference_paper.location = b[:location]
+ @conference_paper.year = b[:year]
+ @conference_paper.create_user_id = user.id
+
+ @conference_paper.save!
+ end
+ else
+ end
+ end
+ end
+ end
+
+
+def sync_journal_paper_data_auto
+ @user = User.all
+ @user.each do |user|
+ if user.user_id.present?
+ next if !user.email.include? "ntu.edu.tw"
+ u_account = user.user_id
+ @paper_xml = nil
+ begin
+ timeout(60) do
+ @paper_xml = Nokogiri::XML( \
+ open("http://ann.cc.ntu.edu.tw/Achv/xmlData_useMail.asp?item=paper&account=#{u_account}&type=J"))
+ end
+ rescue Timeout::Error
+ next
+ end
+ @journal_papers = @paper_xml.xpath("//Paper").map do |paper_node|
+ {
+ author: (paper_node>"Authors").text,
+ year: (paper_node>"PublishYear").text,
+ title: (paper_node>"PaperTitle").text,
+ journal: (paper_node>"PublishOn").text,
+ volume:(paper_node>"Volume").text,
+ volumeno:(paper_node>"VolumeNo").text,
+ beginpage:(paper_node>"BeginPage").text,
+ endpage:(paper_node>"EndPage").text,
+ subgroup:(paper_node>"subgroup").text,
+ remarks: (paper_node>"Remarks").text,
+ cate: ((paper_node>"subgroup")>"Group").text
+ }
+ end
+ if @journal_papers.present?
+
+ WritingJournal.delete_all(conditions:{create_user_id: user.id})
+
+ @journal_papers.each do |b|
+ @journal_paper = WritingJournal.new
+ I18n.locale = :zh_tw
+ @journal_paper.authors = b[:author]
+
+ if b[:title].blank?
+ @journal_paper.paper_title = "No Title Present"
+ else
+ @journal_paper.paper_title = b[:title]
+ end
+
+ @journal_paper.journal_title = b[:journal]
+ @journal_paper.note = b[:remarks]
+ I18n.locale = :en
+ @journal_paper.authors = b[:author]
+
+ if b[:title].blank?
+ @journal_paper.paper_title = "No Title Present"
+ else
+ @journal_paper.paper_title = b[:title]
+ end
+
+ @journal_paper.journal_title = b[:journal]
+ @journal_paper.note = b[:remarks]
+ @journal_paper.year = b[:year]
+ @journal_paper.vol_no = b[:volumeno]
+ @journal_paper.form_to_start = b[:beginpage]
+ @journal_paper.form_to_end = b[:endpage]
+
+ if !b[:cate].blank?
+ @level_type = JournalLevelType.where(:key => b[:cate])
+ if @level_type.present?
+ @journal_paper.journal_level_type_ids = ["#{@level_type.first.id}"]
+ end
+ end
+
+ @journal_paper.create_user_id = user.id
+ @journal_paper.save!
+ end
+ end
+ puts "Sync "+u_account+"\r\n"
+ end
+ end
+end
+
+def sync_book_data_auto
+ @user = User.all
+ @user.each do |user|
+ if user.user_id.present?
+ next if !user.email.include? "ntu.edu.tw"
+ u_account = user.user_id
+ @books_xml = nil
+ begin
+ timeout(60) do
+ @books_xml = Nokogiri::XML( \
+ open("http://ann.cc.ntu.edu.tw/Achv/xmlData_useMail.asp?item=Book&account=#{u_account}"))
+ end
+ rescue Timeout::Error
+ next
+ end
+
+ @books = @books_xml.xpath("//Book").map do |book_node|
+ {
+ author: (book_node>"Authors").text,
+ year: (book_node>"PublishYear").text,
+ title: (book_node>"DocTitle").text,
+ remarks: (book_node>"Remarks").text,
+ publisher: (book_node>"Publisher").text,
+ book_title: (book_node>"BookTitle").text
+ }
+ end
+
+ if @books.present?
+
+ WritingBook.delete_all(conditions:{create_user_id: user.id})
+
+ @books.each do |b|
+ @book = WritingBook.new
+ I18n.locale = :zh_tw
+ @book.authors = b[:author]
+ @book.paper_title = b[:title]
+ @book.book_title = b[:book_title]
+ @book.note = b[:remarks]
+ @book.publisher = b[:publisher]
+ I18n.locale = :en
+ @book.authors = b[:author]
+ @book.paper_title = b[:title]
+ @book.book_title = b[:book_title]
+ @book.note = b[:remarks]
+ @book.publisher = b[:publisher]
+ @book.year = b[:year]
+ @book.create_user_id = user.id
+ @book.save
+ end
+ end
+ end
+ end
+end
+
+
+ def get_announcement_data
+ uri = URI("https://localhost:8000/announcements.xml")
+
+ #params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
+ #uri.query = URI.encode_www_form(params)
+ res = Net::HTTP.get_response(uri)
+
+ @announcement_data = Hash.from_xml(res.body)
+ @announcements = @announcement_data["objects"]
+ @announcements.each do |hash|
+ @bulletin = Bulletin.new
+
+ I18n.locale = :zh_tw
+ if hash['announcement_title_zh_tw'].blank?
+ @bulletin.title = hash['announcement_title_en']
+ @bulletin.text = hash['announcement_content_zh_tw']
+ elsif hash['announcement_title_zh_tw'].blank? && hash['announcement_title_en'].blank?
+ @bulletin.title = "Please Fill the Name"
+ @bulletin.text = hash['announcement_content_zh_tw']
+ else
+ @bulletin.title = hash['announcement_title_zh_tw']
+ @bulletin.text = hash['announcement_content_zh_tw']
+ end
+
+ I18n.locale = :en
+ if hash['announcement_title_zh_tw'].blank? && hash['announcement_title_en'].blank?
+ @bulletin.title = "Please Fill the Name"
+ @bulletin.text = hash['announcement_content_en']
+
+ elsif hash['announcement_title_en'].blank?
+ @bulletin.title = hash['announcement_zh_tw']
+ @bulletin.text = hash['announcement_content_en']
+
+ elsif hash['announcement_title_zh_tw'].blank?
+ @bulletin.title = hash['announcement_title_en']
+ @bulletin.text = hash['announcement_content_en']
+ end
+ @bulletin.category_id = "51d2a16438178423c2000001"
+ @bulletin.is_pending = true
+
+ @bulletin.save!
+ end
+ end
+end
diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb
new file mode 100644
index 0000000..f5df51b
--- /dev/null
+++ b/app/controllers/sessions_controller.rb
@@ -0,0 +1,40 @@
+# encoding: utf-8
+
+class SessionsController < Devise::SessionsController
+ prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
+
+
+ def create
+ @site = Site.first
+
+ private_key = OpenSSL::PKey::RSA.new(@site.private_key)
+ wresult = private_key.private_decrypt(request.params['wresult'])
+
+ @ids = wresult.split("@")
+
+ login_uid = @ids[0]
+
+ resource = User.first(conditions:{user_id: login_uid})
+
+ if !resource.blank?
+ resource_name = resource.class.to_s.downcase
+ sign_in(resource_name, resource)
+ session[:user_id_type] = "myntucoph"
+ redirect_to after_sign_in_path_for(resource)
+ else
+ flash[:error] = "很抱歉,您無此權限或帳號登入本站,請洽本站管理員
Sorry, you don't have the account or authority to login. Please contact the website administrator."
+ redirect_to :root
+ end
+ end
+
+ def destroy
+ @user_id_type = session[:user_id_type]
+ sign_out
+ if @user_id_type == "myntucoph"
+ redirect_to "https://adfs.ntu.edu.tw/adfs/ls/?wa=wsignout1.0&wreply=https://cophlogin.ntu.edu.tw"
+ else
+ redirect_to root_path
+ end
+ end
+
+end
\ No newline at end of file
diff --git a/app/views/admin/import_data/get_announcement_data.html.erb b/app/views/admin/import_data/get_announcement_data.html.erb
new file mode 100644
index 0000000..9751735
--- /dev/null
+++ b/app/views/admin/import_data/get_announcement_data.html.erb
@@ -0,0 +1 @@
+
Successfully Imported Announcement Data!
\ No newline at end of file diff --git a/app/views/admin/import_data/get_book_data.html.erb b/app/views/admin/import_data/get_book_data.html.erb new file mode 100644 index 0000000..7fbb643 --- /dev/null +++ b/app/views/admin/import_data/get_book_data.html.erb @@ -0,0 +1 @@ +Successfully Book Data!
diff --git a/app/views/admin/import_data/get_conference_data.html.erb b/app/views/admin/import_data/get_conference_data.html.erb new file mode 100644 index 0000000..bea71d0 --- /dev/null +++ b/app/views/admin/import_data/get_conference_data.html.erb @@ -0,0 +1 @@ +Successfully Conference Data!
diff --git a/app/views/admin/import_data/get_journal_paper_data.html.erb b/app/views/admin/import_data/get_journal_paper_data.html.erb new file mode 100644 index 0000000..cd34dce --- /dev/null +++ b/app/views/admin/import_data/get_journal_paper_data.html.erb @@ -0,0 +1 @@ +Successfully Journal Paper Data!
\ No newline at end of file diff --git a/app/views/admin/import_data/get_page_data.html.erb b/app/views/admin/import_data/get_page_data.html.erb new file mode 100644 index 0000000..e3adf77 --- /dev/null +++ b/app/views/admin/import_data/get_page_data.html.erb @@ -0,0 +1 @@ +Successfully Imported Page Data!
diff --git a/app/views/admin/import_data/get_teacher_data.html.erb b/app/views/admin/import_data/get_teacher_data.html.erb new file mode 100644 index 0000000..980c421 --- /dev/null +++ b/app/views/admin/import_data/get_teacher_data.html.erb @@ -0,0 +1 @@ +Successfully Imported Teacher Data!
\ No newline at end of file diff --git a/app/views/admin/import_data/sync_book_data.html.erb b/app/views/admin/import_data/sync_book_data.html.erb new file mode 100644 index 0000000..1f99d51 --- /dev/null +++ b/app/views/admin/import_data/sync_book_data.html.erb @@ -0,0 +1 @@ +Book Data Synced Successfully!
\ No newline at end of file diff --git a/app/views/admin/import_data/sync_conference_data.html.erb b/app/views/admin/import_data/sync_conference_data.html.erb new file mode 100644 index 0000000..f99d613 --- /dev/null +++ b/app/views/admin/import_data/sync_conference_data.html.erb @@ -0,0 +1 @@ +Conference Paper Data Synced Successfully!
\ No newline at end of file diff --git a/app/views/admin/import_data/sync_journal_paper_data.html.erb b/app/views/admin/import_data/sync_journal_paper_data.html.erb new file mode 100644 index 0000000..3671a45 --- /dev/null +++ b/app/views/admin/import_data/sync_journal_paper_data.html.erb @@ -0,0 +1 @@ +Journal Paper Data Synced Successfully!
\ No newline at end of file diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb index 1b77fce..03150e5 100644 --- a/app/views/devise/sessions/new.html.erb +++ b/app/views/devise/sessions/new.html.erb @@ -1,59 +1,62 @@ -or
+