diff --git a/app/controllers/admin/image_files_controller.rb b/app/controllers/admin/image_files_controller.rb index 8f0936d..7813e4e 100644 --- a/app/controllers/admin/image_files_controller.rb +++ b/app/controllers/admin/image_files_controller.rb @@ -55,5 +55,12 @@ @image_file = ImageFile.find(params[:id]) end + + def rotate + deg = params[:direction] == "right" ? -90 : 90 + + @image_file = ImageFile.find(params[:id]) + @image_file.rotate(deg) + end end diff --git a/app/models/manager/image_file.rb b/app/models/manager/image_file.rb index f7fa496..99dd293 100644 --- a/app/models/manager/image_file.rb +++ b/app/models/manager/image_file.rb @@ -26,4 +26,18 @@ class ImageFile < ActiveRecord::Base Tag.find_or_create_by_name(t.to_s.strip) if name.size > 0 end end + + + + def rotate(degrees=90) + versions = [self.file.path, self.file.large.path, self.file.large.medium.path, self.file.large.medium.small.path, self.file.large.medium.small.thumb.path, self.file.square.path] + + versions.each do |v| + image = Magick::ImageList.new(v) + image = image.rotate(degrees) + image.write(v) + end + self.updated_at = Time.now + self.save + end end diff --git a/app/views/admin/image_files/_image_file.html.haml b/app/views/admin/image_files/_image_file.html.haml index 23e3859..631a2ea 100644 --- a/app/views/admin/image_files/_image_file.html.haml +++ b/app/views/admin/image_files/_image_file.html.haml @@ -1,7 +1,7 @@ - if image_file.file? #image_file.image_file{:id => image_file.id, :data_thumb => image_file.file.large.medium.small.thumb.url, :data_id => image_file.id, :data_name => image_file.name, :data_description => image_file.description, :data_tags => image_file.tags, :data_show_url => admin_image_file_path(:id => image_file.id, :manager => params[:manager], :multiple => params[:multiple]), :data_edit_url => edit_admin_image_file_path(:id => image_file.id, :manager => params[:manager], :multiple => params[:multiple]) , :class => ("new" if @image_file_create)} %a{:name => "image_file_#{image_file.id}_anchor"} - .img.QI_background_resize{:style => ("background-image:url('"+(image_file.file.large.medium.small.thumb.url).to_s+"');")} + .img.QI_background_resize{:style => ("background-image:url('"+(image_file.file.large.medium.small.thumb.url).to_s+"?u="+image_file.updated_at.to_s+"');")} =#s =#image_tag image_file.file.medium.thumb.url if image_file.file? .name diff --git a/app/views/admin/image_files/_show.html.haml b/app/views/admin/image_files/_show.html.haml index 9c7f891..46db077 100644 --- a/app/views/admin/image_files/_show.html.haml +++ b/app/views/admin/image_files/_show.html.haml @@ -1,4 +1,4 @@ -.img{:style => ("background-image:url('"+(@image_file.file.url).to_s+"');")} +.img{:style => ("background-image:url('"+(@image_file.file.url).to_s+"?u="+ @image_file.updated_at.to_s+"');")} .form @@ -7,7 +7,8 @@ #right_bar_clone_buttons_left = link_to i(:trash_stroke, :gray_light), admin_image_file_path(:id => @image_file.id, :manager => params[:manager], :multiple => params[:multiple]), :confirm => 'Voulez-vous vraiment supprimer cette image ?', :method => :delete, :remote => true - + = link_to i(:rotate, :gray_light, "12x14"), rotate_admin_image_file_path(:id => @image_file.id, :manager => params[:manager], :multiple => params[:multiple]), :remote => true, :onclick => "set_busy();" + = link_to i(:rotate_right, :gray_light, "12x14"), rotate_admin_image_file_path(:id => @image_file.id, :manager => params[:manager], :multiple => params[:multiple], :direction => :right), :remote => true, :onclick => "set_busy();" = link_to i(:check_alt, :gray_light), "#",:onclick => "manager_send_image_file("+@image_file.id.to_s+");return false;" if params[:manager] and !params[:multiple] diff --git a/app/views/admin/image_files/rotate.js.erb b/app/views/admin/image_files/rotate.js.erb new file mode 100644 index 0000000..58db01e --- /dev/null +++ b/app/views/admin/image_files/rotate.js.erb @@ -0,0 +1,9 @@ + +$('#image_file_<%= @image_file.id %>').replaceWith("<%= escape_javascript(render(@image_file))%>"); + + +$('#image_file_container_content').html("<%= escape_javascript(render(:partial => "show")) %>"); + +set_image_files_img_size($("#image_files_big_container #right_bar #grid_slider").slider("value")); +image_files_load(); +unset_busy(); \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 5a62119..d23b60e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -66,7 +66,11 @@ Pharma::Application.routes.draw do resources :admins resources :menus resources :menu_items - resources :image_files + resources :image_files do + member do + get :rotate + end + end resources :file_folders resources :data_files resources :pages