| 
									
										
										
										
											2012-11-06 04:17:09 +00:00
										 |  |  | # encoding: utf-8  | 
					
						
							| 
									
										
										
										
											2013-04-10 08:53:32 +00:00
										 |  |  | require 'zip/zip' | 
					
						
							|  |  |  | namespace :desktop do | 
					
						
							|  |  |  |   task :upload_all_packages => :environment do | 
					
						
							|  |  |  |     DesktopWidget.destroy_all | 
					
						
							|  |  |  |     # 1. DesktopWidget.destroy_all | 
					
						
							|  |  |  |     # 2. Upload alll the widgets | 
					
						
							|  |  |  |     # 3. Tun rake task tiles:destroy_build_tiles | 
					
						
							|  |  |  |     package_location = "lib/desktop_widgets/" | 
					
						
							|  |  |  |     widget_packages = %w[browser.zip googlescholar.zip quotes.zip clock.zip googlesearch.zip weather.zip] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     widget_packages.each do |package_file_name| | 
					
						
							|  |  |  |       temp_file = Tempfile.new("temp_file") | 
					
						
							|  |  |  |       original_file = File.open(package_location+package_file_name) | 
					
						
							|  |  |  |       #if original_file.content_type == 'application/zip' | 
					
						
							|  |  |  |       temp_file.write(original_file.read.force_encoding('UTF-8')) | 
					
						
							|  |  |  |       temp_file.rewind | 
					
						
							|  |  |  |       filename = File.basename(package_file_name,".zip") | 
					
						
							|  |  |  |       unzip_widget(temp_file, filename) | 
					
						
							|  |  |  |       #else | 
					
						
							|  |  |  |       #  flash[:error] = "Upload file should be in zip format" | 
					
						
							|  |  |  |       #end | 
					
						
							|  |  |  |       temp_file.close | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |     Rake::Task["tiles:destroy_build_tiles"].execute | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def unzip_widget(file, zip_name) | 
					
						
							|  |  |  |       Zip::ZipFile.open(file) { |zip_file| | 
					
						
							|  |  |  |         dw = DesktopWidget.new.from_json(zip_file.read("#{zip_name}/settings.json")) | 
					
						
							|  |  |  |         Dir.mktmpdir('f_path') { |dir| | 
					
						
							|  |  |  |           javascripts_entries = [] | 
					
						
							|  |  |  |           images_entries = [] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           zip_file.entries.each do |entry| | 
					
						
							|  |  |  |             case (path = entry.to_s) | 
					
						
							|  |  |  |               when /\A(#{zip_name})\/(default\.css)\z/ | 
					
						
							|  |  |  |                   #for default css | 
					
						
							|  |  |  |                 dw.build_css_default(:file => get_temp_file(zip_file, dir, entry)) | 
					
						
							|  |  |  |               when /\A(#{zip_name})\/(widget\.html)\z/    #for layout html | 
					
						
							|  |  |  |                 dw.build_widget_layout(:file => get_temp_file(zip_file, dir, entry)) | 
					
						
							|  |  |  |               when /\A(#{zip_name})\/(javascripts)\/.*(\.js)\z/   #for js | 
					
						
							|  |  |  |                 javascripts_entries << entry | 
					
						
							|  |  |  |               when /\A(#{zip_name})\/(images)\/.*((\.jpg)|(\.png)|(\.gif))\z/   #for img | 
					
						
							|  |  |  |                 images_entries << entry | 
					
						
							|  |  |  |             end | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           ['javascripts', 'images'].each do |type| | 
					
						
							|  |  |  |             eval("#{type}_entries").each do |entry| | 
					
						
							|  |  |  |               eval("dw.#{type}").build(:file => get_temp_file(zip_file, dir, entry)) | 
					
						
							|  |  |  |             end | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         dw.save | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  |   def get_temp_file(zip_file, dir, entry) | 
					
						
							|  |  |  |     filename = File.basename(entry.to_s) | 
					
						
							|  |  |  |     temp_file = File.new(dir + '/' + filename, 'w+')  | 
					
						
							|  |  |  |     temp_file.write (zip_file.read entry ).force_encoding('UTF-8') | 
					
						
							|  |  |  |     temp_file | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-10 09:58:31 +00:00
										 |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace :tiles do | 
					
						
							|  |  |  |   task :destroy_build_tiles => :environment do | 
					
						
							|  |  |  |     Tile.destroy_all | 
					
						
							|  |  |  |     secs = Section.all | 
					
						
							|  |  |  |     dws = DesktopWidget.all | 
					
						
							|  |  |  |     secs.each do |sec,x| | 
					
						
							|  |  |  |       grp = sec.groups.first | 
					
						
							|  |  |  |       t = Tile.new(data_category: "app", data_content: "wikibooks", position: 1, shape: "w1 h1", title: "WikiBooks") | 
					
						
							|  |  |  |       grp.tiles+=[t] | 
					
						
							|  |  |  |       t = Tile.new(data_category: "app", data_content: "envocab", position: 2, shape: "w1 h1", title: "English Vocabulary") | 
					
						
							|  |  |  |       grp.tiles+=[t] | 
					
						
							|  |  |  |       @i = 3
 | 
					
						
							|  |  |  |       dws.each do |dw| | 
					
						
							|  |  |  |         t = Tile.new(data_category: "widget", position: @i,desktop_widget_id: dw.id) | 
					
						
							|  |  |  |         @i = @i + 1
 | 
					
						
							|  |  |  |         grp.tiles+=[t] | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |       grp.save! | 
					
						
							|  |  |  |       puts "Section " + (x || "NilString") + " done!" | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2012-11-06 04:17:09 +00:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-10 09:58:31 +00:00
										 |  |  | end |