get_album_json function can get readable json

This commit is contained in:
Rueshyna 2012-11-09 16:25:11 +08:00
parent e4de229b22
commit 275c6f4c8a
2 changed files with 47 additions and 8 deletions

View File

@ -1,7 +1,7 @@
class Panel::Gallery::BackEnd::AlbumsController < OrbitBackendController class Panel::Gallery::BackEnd::AlbumsController < OrbitBackendController
include AdminHelper include AdminHelper
before_filter :force_order_for_user, :except => [:index,:imgs] before_filter :force_order_for_user, :except => [:index,:get_album_json]
def index def index
if is_manager? || is_admin? || is_sub_manager? if is_manager? || is_admin? || is_sub_manager?
@ -113,6 +113,47 @@ class Panel::Gallery::BackEnd::AlbumsController < OrbitBackendController
render :json =>{"success"=>true}.to_json render :json =>{"success"=>true}.to_json
end end
def get_album_json
albums = GalleryAlbum.all
output = Array.new
albums.each do |album|
tag_names = Array.new
all_image = Array.new
images = album.gallery_images.all
images.each do |image|
tags = Array.new
image.tag_ids.each do |tag|
tags << GalleryTag.find(tag)[I18n.locale]
end
all_image << {
image_title: image.title,
image_description: image.description,
image_file: { url: "http://#{request.host_with_port+image.file.url}",
thumb: "http://#{request.host_with_port+image.file.thumb.to_s}"},
image_tag_names: tags}
end
album.tag_ids.each do |tag|
tag_names << GalleryTag.find(tag)[I18n.locale]
end
output << {
album_cover_file: "http://#{request.host_with_port+album.cover_path}",
album_name: album.name,
album_tag_names: tag_names,
images: all_image
}
end
#render :json=>{:images => @output,
# :tag_names => @tag_names}.to_json
render :json=>JSON.pretty_generate(output)
end
def imgs def imgs
@album = GalleryAlbum.find(params[:album_id]) @album = GalleryAlbum.find(params[:album_id])
@tag_names = Array.new @tag_names = Array.new
@ -146,10 +187,12 @@ class Panel::Gallery::BackEnd::AlbumsController < OrbitBackendController
render :json=>{"images" => @output, "tags" => @album.tag_ids, "tag_names" => @tag_names}.to_json render :json=>{"images" => @output, "tags" => @album.tag_ids, "tag_names" => @tag_names}.to_json
end end
end end
def upload_panel def upload_panel
@album = GalleryAlbum.find(params[:album_id]) @album = GalleryAlbum.find(params[:album_id])
render :layout => false render :layout => false
end end
def upload_image def upload_image
@album = GalleryAlbum.find(params[:album_id]) @album = GalleryAlbum.find(params[:album_id])
@files = params['files'] @files = params['files']
@ -186,11 +229,4 @@ class Panel::Gallery::BackEnd::AlbumsController < OrbitBackendController
@tags = GalleryTag.all @tags = GalleryTag.all
render :action => :show render :action => :show
end end
end end

View File

@ -11,6 +11,9 @@ Rails.application.routes.draw do
match "imgs" => "albums#imgs" match "imgs" => "albums#imgs"
match "upload_panel" => "albums#upload_panel" match "upload_panel" => "albums#upload_panel"
match "images_tags" => "albums#images_tags" match "images_tags" => "albums#images_tags"
collection do
get "get_album_json"
end
end end
match "album_images/#!/:id" => "album_images#show" match "album_images/#!/:id" => "album_images#show"