343 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			343 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # encoding: utf-8
 | |
| 
 | |
| require 'net/http'
 | |
| require 'open-uri'
 | |
| 
 | |
| 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? && hash['teacher_en'].blank?
 | |
|             @teacher.first_name = "Please Fill the Name"
 | |
|           elsif hash['teacher_zh_tw'].blank? && !hash['teacher_en'].blank?
 | |
|             @teacher.first_name = hash['teacher_en']
 | |
|           else
 | |
|             @teacher.first_name = hash['teacher_zh_tw']
 | |
|           end
 | |
|           I18n.locale = :en
 | |
|           if hash['teacher_zh_tw'].blank? && hash['teacher_en'].blank?
 | |
|             @teacher.first_name = "Please Fill the Name"
 | |
|           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 = hash['teacher_en']
 | |
|           end
 | |
|             
 | |
|           #@teacher.first_name = hash['teacher_en']      
 | |
|           @teacher.ntu_seq = hash['ntu_seq']
 | |
|           @teacher.role_ids = ["#{@roles.skip(1).first.id}"]
 | |
|           @teacher.password = "testpass"
 | |
|           @i += 10
 | |
|           if hash['email'].blank?
 | |
|             @teacher.email = "#{@i}@ntu.edu.tw"
 | |
|           else 
 | |
|             @teacher.email = hash['email']
 | |
|           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?
 | |
|       ntu_seq = hash.ntu_seq
 | |
| 	  books_xml = Nokogiri::XML( \
 | |
| 	  open("http://ann.cc.ntu.edu.tw/Achv/xmlBook.asp?Seq=#{ntu_seq}"))
 | |
| 	  @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?
 | |
|     ntu_seq = hash.ntu_seq
 | |
|     conference_xml = Nokogiri::XML( \
 | |
|     open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&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>"Location").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
 | |
|        @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
 | |
|        @conference_paper.note = b[:remarks]
 | |
|        @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?
 | |
|     ntu_seq = hash.ntu_seq
 | |
|     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"))
 | |
|     @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].first
 | |
|        end
 | |
|        @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].first
 | |
|        end
 | |
|        @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]
 | |
|        @journal_paper.create_user_id = hash.id
 | |
|        @journal_paper.save!
 | |
|      end
 | |
|       else
 | |
|     puts "No journal paper by Teacher"
 | |
|       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
 | |
|   
 | |
|   def get_page_data        
 | |
|     f = File.open("/home/rwub/orbit-db/ntu_mb/pages/management_pages.xml")
 | |
|     page_xml = Nokogiri::XML(f)
 | |
|         #open("http://versatile.management.ntu.edu.tw/publication1/conference/#{ntuseq}.xml"))
 | |
|     @pages = page_xml.xpath("//management-page").map do |cp_node|
 | |
|                             {
 | |
|                               menu_title: (cp_node>"menu-title").text,
 | |
|                               content: (cp_node>"content").text
 | |
|                             }
 | |
|                           end
 | |
| 
 | |
|      if @pages.present? 
 | |
|        @i=0
 | |
|        @pages.each do |b|
 | |
|         
 | |
|         get_variables_for_new
 | |
|         @page = Page.new
 | |
|         
 | |
|          @page.parent = "4f45f3b9e9d02c5db900005d"
 | |
|          @page.design = "50ac424983e75219d2000021"
 | |
|          @page.theme_id = "50ac424a83e75219d2000025"
 | |
|          @page.menu_enabled_for= ["en", "zh_tw", ""]
 | |
|          @page.enabled_for= ["en", "zh_tw", ""]
 | |
|          @page.is_published = false
 | |
|         if b[:menu_title].blank?
 | |
|          @page.title = 'No Title Present'
 | |
|          @i += 1 
 | |
|          @page.name = "#{@i}Page"
 | |
|         else 
 | |
|          @i += 1 
 | |
|          @page.title = b[:menu_title]
 | |
|          @page.name = "#{@i}Page"
 | |
|         end
 | |
|         if b[:content].blank?
 | |
|          @page.content = "No Content Present"
 | |
|         else 
 | |
|         @page.content = b[:content]
 | |
|         end
 | |
|         @page.save!
 | |
|       end
 | |
|        else
 | |
|      puts "No Page Data"
 | |
|        end
 | |
|   end
 | |
| 
 | |
| 
 | |
|   def get_variables_for_new
 | |
|     @designs = Design.all.entries
 | |
|     @themes = Design.first.themes
 | |
|     @module_apps = ModuleApp.for_frontend_select
 | |
|     @app_frontend_urls = nil
 | |
|     @categories = nil
 | |
|     @tags = nil
 | |
|     @page_frontend_data_counts = nil
 | |
|     @frontend_styles = nil
 | |
|     @selected={
 | |
|       :design => @designs.first,
 | |
|       :theme=> @themes.first,
 | |
|       :module_app=>nil,#@module_apps.first
 | |
|       :app_frontend_url=> nil, #@module_apps.first
 | |
|       :category=>nil,
 | |
|       :tag=>nil,
 | |
|       :page_frontend_data_count=>nil,
 | |
|       :frontend_style => nil
 | |
|     }
 | |
|   end
 | |
| 
 | |
| 
 | |
| end
 |