117 lines
4.0 KiB
Ruby
117 lines
4.0 KiB
Ruby
|
# encoding: utf-8
|
||
|
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
|
||
|
|
||
|
Dir.glob("#{Rails.root}/lib/desktop_themes/*.zip").each do |theme_zip|
|
||
|
upload_desktop_theme(theme_zip,File.basename(theme_zip, ".zip"))
|
||
|
end
|
||
|
end
|
||
|
Rake::Task["tiles:destroy_build_tiles"].execute
|
||
|
end
|
||
|
|
||
|
def upload_desktop_theme(file, zip_name)
|
||
|
Zip::ZipFile.open(file) { |zip_file|
|
||
|
dt = DesktopTheme.new.from_json(zip_file.read("#{zip_name}/settings.json"))
|
||
|
Dir.mktmpdir('f_path') { |dir|
|
||
|
images_entries = []
|
||
|
|
||
|
zip_file.entries.each do |entry|
|
||
|
case (path = entry.to_s)
|
||
|
when /\A(#{zip_name})\/(theme\.css)\z/ #for default css
|
||
|
dt.build_css_default(:file => get_temp_file(zip_file, dir, entry))
|
||
|
when /\A(#{zip_name})\/(background)\/.*((\.jpg)|(\.png)|(\.gif))\z/ #for img
|
||
|
images_entries << entry
|
||
|
end
|
||
|
end
|
||
|
|
||
|
images_entries.each do |image|
|
||
|
dt.images.build(:file => get_temp_file(zip_file,dir,image))
|
||
|
end
|
||
|
}
|
||
|
dt.save
|
||
|
}
|
||
|
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
|
||
|
|
||
|
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
|
||
|
end
|
||
|
|
||
|
end
|