complete harrys code

This commit is contained in:
Matt K. Fu 2013-04-10 16:53:32 +08:00
parent c94a86c3a4
commit 4cbf2fd8b9
7 changed files with 71 additions and 19 deletions

BIN
lib/desktop_widgets/browser.zip Executable file

Binary file not shown.

BIN
lib/desktop_widgets/clock.zip Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
lib/desktop_widgets/quotes.zip Executable file

Binary file not shown.

BIN
lib/desktop_widgets/weather.zip Executable file

Binary file not shown.

View File

@ -1,24 +1,76 @@
# encoding: utf-8 # encoding: utf-8
namespace :tiles do require 'zip/zip'
task :destroy_build_tiles => :environment do namespace :desktop do
Tile.destroy_all task :upload_all_packages => :environment do
secs = Section.all DesktopWidget.destroy_all
dws = DesktopWidget.all # 1. DesktopWidget.destroy_all
secs.each do |sec,x| # 2. Upload alll the widgets
grp = sec.groups.first # 3. Tun rake task tiles:destroy_build_tiles
t = Tile.new(data_category: "app", data_content: "wikibooks", position: 1, shape: "w1 h1", title: "WikiBooks") package_location = "lib/desktop_widgets/"
grp.tiles+=[t] widget_packages = %w[browser.zip googlescholar.zip quotes.zip clock.zip googlesearch.zip weather.zip]
t = Tile.new(data_category: "app", data_content: "envocab", position: 2, shape: "w1 h1", title: "English Vocabulary")
grp.tiles+=[t] widget_packages.each do |package_file_name|
@i = 3 temp_file = Tempfile.new("temp_file")
dws.each do |dw| original_file = File.open(package_location+package_file_name)
t = Tile.new(data_category: "widget", position: @i,desktop_widget_id: dw.id) #if original_file.content_type == 'application/zip'
@i = @i + 1 temp_file.write(original_file.read.force_encoding('UTF-8'))
grp.tiles+=[t] temp_file.rewind
end filename = File.basename(package_file_name,".zip")
grp.save! 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
task :destroy_build_desktop => :environment do
Desktop.all.destroy_all
u = User.all
u.each do |us|
Thread.new {
us.initialize_desktop.save!
puts "Desktop created for " + us.email.to_s
}.join
end end
puts "Section " + x + " done!"
end end
end end