adding upload package for design. bugs in
This commit is contained in:
		
							parent
							
								
									34d0b8fac1
								
							
						
					
					
						commit
						e0811c14db
					
				
							
								
								
									
										2
									
								
								Gemfile
								
								
								
								
							
							
						
						
									
										2
									
								
								Gemfile
								
								
								
								
							|  | @ -8,7 +8,7 @@ gem 'carrierwave' | |||
| gem 'ckeditor' | ||||
| gem 'devise' | ||||
| gem 'mini_magick' | ||||
| 
 | ||||
| gem 'rubyzip' | ||||
| 
 | ||||
| gem 'mongoid' | ||||
| 
 | ||||
|  |  | |||
|  | @ -129,6 +129,7 @@ GEM | |||
|       ruby-debug-base19 (>= 0.11.19) | ||||
|     ruby_core_source (0.1.5) | ||||
|       archive-tar-minitar (>= 0.5.2) | ||||
|     rubyzip (0.9.4) | ||||
|     shoulda-matchers (1.0.0.beta2) | ||||
|     sprockets (2.0.0.beta.10) | ||||
|       hike (~> 1.0) | ||||
|  | @ -165,6 +166,7 @@ DEPENDENCIES | |||
|   rspec (~> 2.0) | ||||
|   rspec-rails (~> 2.0) | ||||
|   ruby-debug19 | ||||
|   rubyzip | ||||
|   shoulda-matchers | ||||
|   watchr | ||||
|   yajl-ruby | ||||
|  |  | |||
|  | @ -1,8 +1,63 @@ | |||
| class Admin::DesignsController < ApplicationController | ||||
|   require "net/http" | ||||
|   require "uri" | ||||
|   require 'zip/zip' | ||||
| 
 | ||||
|   layout "admin" | ||||
|   before_filter :authenticate_user! | ||||
|   before_filter :is_admin? | ||||
| 
 | ||||
|   def upload_package | ||||
|     if !params[:design].nil? | ||||
|     temp_file = Tempfile.new("temp_file") | ||||
|     temp_file.binmode | ||||
|     original_file = params[:design][:package_file] | ||||
|       if original_file.content_type == 'application/zip' | ||||
|         temp_file.write(original_file.read) | ||||
|         filename = original_file.original_filename | ||||
|         unzip_design(temp_file, filename) | ||||
|       else | ||||
|         flash[:error] = "Upload file should be in zip format" | ||||
|       end | ||||
|       temp_file.close | ||||
|     end | ||||
|   end | ||||
|   def unzip_design(file, zip_name) | ||||
|     Zip::ZipFile.open(file) { |zip_file| | ||||
|       design = Design.new.from_json(zip_file.read("#{zip_name}/#{zip_name}.json")) | ||||
|        | ||||
|       Dir.mktmpdir('f_path') { |dir| | ||||
|         title = design.layout_filename | ||||
|         temp_file = File.new(dir + '/' + title, 'w+') | ||||
|         temp_file.write zip_file.read(zip_name + '/' + title) | ||||
|         design.layout = temp_file | ||||
|         ['stylesheets', 'javascripts', 'images'].each do |type| | ||||
|           eval("design.#{type}").each do |object| | ||||
|             title = object.file_filename | ||||
|             temp_file = File.new(dir + '/' + title, 'w+') | ||||
|             temp_file.write zip_file.read(zip_name + '/' + type + '/' + title) | ||||
|             object.file = temp_file | ||||
|             object.to_save = true | ||||
|           end | ||||
|         end | ||||
|       } | ||||
| 
 | ||||
|       design.save | ||||
|     } | ||||
|   end | ||||
|   def proc_package | ||||
|     #uri = URI.parse("http://localhost:3001/design/fraisier") | ||||
|     #http = Net::HTTP.new(uri.host, uri.port) | ||||
|     #request = Net::HTTP::Get.new(uri.request_uri) | ||||
|     #response = http.request(request) | ||||
|     temp_file = Tempfile.new("temp_file") | ||||
|     temp_file.binmode | ||||
|     temp_file.write response.body | ||||
|     zip_name = response['content-disposition'].split('filename=')[1].gsub(/[\\\"]|.zip/, '') rescue '' | ||||
|     unzip_design(temp_file, zip_name) | ||||
|     temp_file.close | ||||
|   end | ||||
| 
 | ||||
| 
 | ||||
|   def index | ||||
|     @designs = Design.all.entries | ||||
|  |  | |||
|  | @ -12,7 +12,7 @@ class Design | |||
|   validates_presence_of :author | ||||
| 
 | ||||
|   embeds_one :layout | ||||
|   mount_uploader :structure_css, DesignFileUploader | ||||
|   mount_uploader :structure_css, AssetUploader | ||||
| 
 | ||||
|   embeds_many :themes | ||||
|   embeds_many :javascripts | ||||
|  |  | |||
|  | @ -5,7 +5,5 @@ class DesignFile | |||
|    | ||||
|   field :to_save, :type => Boolean | ||||
|   field :to_destroy, :type => Boolean | ||||
|    | ||||
|    | ||||
| 
 | ||||
| end | ||||
|  |  | |||
|  | @ -0,0 +1,47 @@ | |||
| # encoding: utf-8 | ||||
| 
 | ||||
| class DesignFileUploader < CarrierWave::Uploader::Base | ||||
| 
 | ||||
|   # Include RMagick or ImageScience support: | ||||
|   # include CarrierWave::RMagick | ||||
|   # include CarrierWave::ImageScience | ||||
| 
 | ||||
|   # Choose what kind of storage to use for this uploader: | ||||
|   # storage :file | ||||
|   # storage :s3 | ||||
| 
 | ||||
|   # Override the directory where uploaded files will be stored. | ||||
|   # This is a sensible default for uploaders that are meant to be mounted: | ||||
|   def store_dir | ||||
|    "assets/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" | ||||
|   end | ||||
| 
 | ||||
|   # Provide a default URL as a default if there hasn't been a file uploaded: | ||||
|   # def default_url | ||||
|   #   "/images/fallback/" + [version_name, "default.png"].compact.join('_') | ||||
|   # end | ||||
| 
 | ||||
|   # Process files as they are uploaded: | ||||
|   # process :scale => [200, 300] | ||||
|   # | ||||
|   # def scale(width, height) | ||||
|   #   # do something | ||||
|   # end | ||||
| 
 | ||||
|   # Create different versions of your uploaded files: | ||||
|   # version :thumb do | ||||
|   #   process :scale => [50, 50] | ||||
|   # end | ||||
| 
 | ||||
|   # Add a white list of extensions which are allowed to be uploaded. | ||||
|   # For images you might use something like this: | ||||
|   # def extension_white_list | ||||
|   #   %w(jpg jpeg gif png) | ||||
|   # end | ||||
| 
 | ||||
|   # Override the filename of the uploaded files: | ||||
|   # def filename | ||||
|   #   "something.jpg" if original_filename | ||||
|   # end | ||||
| 
 | ||||
| end | ||||
										
											Binary file not shown.
										
									
								
							|  | @ -1,3 +0,0 @@ | |||
| <div class="style_uploader"> | ||||
|   <% fields_for_ | ||||
| %> | ||||
|  | @ -0,0 +1,9 @@ | |||
| 
 | ||||
| <%= form_tag '',:multipart => true,:action=>"post" do |f| %> | ||||
| 
 | ||||
| <p> | ||||
| <%= file_field :design,:package_file %> | ||||
| </p> | ||||
| <%= submit_tag  %> | ||||
| 
 | ||||
| <% end %> | ||||
|  | @ -45,9 +45,10 @@ PrototypeR4::Application.routes.draw do | |||
|      end | ||||
|     resources :layouts | ||||
|     resources :designs do | ||||
|       get 'upload_package' ,:on => :collection | ||||
|       post 'upload_package' ,:on => :collection | ||||
|       member do | ||||
|         post 'edit_file'  => 'designs#edit_file' | ||||
|         get 'apply' | ||||
|         get 'delete' | ||||
|       end | ||||
|     end | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue