Add asset model and controller

This commit is contained in:
Wen-Tien Chang 2010-02-01 17:24:28 +08:00
parent d5c5200b71
commit a19e0dba6c
15 changed files with 290 additions and 2 deletions

View File

@ -0,0 +1,51 @@
class Admin::AssetsController < ApplicationController
layout "admin"
def show
@asset = Asset.find(params[:id])
send_data @asset.data.file.read, :filename => @asset.filename,
:type => @asset.data.content_type,
:disposition => 'inline' # or 'attachment'
end
def index
@assets = Asset.find(:all)
end
def edit
@asset = Asset.find(params[:id])
end
def new
@asset = Asset.new
end
def create
@asset = Asset.new(params[:asset])
if @asset.save
redirect_to admin_assets_url
else
render :action => :new
end
end
def update
@asset = Asset.find(params[:id])
if @asset.update_attributes(params[:asset])
redirect_to admin_assets_url
else
render :action => :edit
end
end
def destroy
@asset = Asset.find(params[:id])
@asset.destroy
redirect_to admin_assets_url
end
end

21
app/models/asset.rb Normal file
View File

@ -0,0 +1,21 @@
class Asset
include MongoMapper::Document
include Grip::HasAttachment
key :filename, String, :required => true
key :description, String
has_grid_attachment :data, :required => true
before_validation :setup_filename
protected
def setup_filename
if self.filename.blank? && self.data
self.filename = self.data.file_name
end
end
end

View File

@ -0,0 +1,3 @@
class AssetImage < Asset
end

View File

@ -0,0 +1,3 @@
class AssetJavascript < Asset
end

View File

@ -0,0 +1,2 @@
class AssetPdf < Asset
end

View File

@ -0,0 +1,3 @@
class AssetStylesheet < Asset
end

View File

@ -0,0 +1,16 @@
<%= f.error_messages %>
<p>
<%= f.label :filename, "FileName" %>
<%= f.text_field :filename, :class => 'text' %>
</p>
<p>
<%= f.label :description, "Description" %>
<%= f.text_field :description, :class => 'text' %>
</p>
<p>
<%= f.label :data, "Data" %>
<%= f.file_field :data %>
</p>

View File

@ -0,0 +1,12 @@
<h1>Editing assets</h1>
<% form_for @asset, :url => admin_asset_path(@asset), :html => { :multipart => true } do |f| %>
<%= f.error_messages %>
<%= render :partial => "form", :locals => { :f => f } %>
<p>
<%= f.submit 'Update' %>
</p>
<% end %>
<%= link_to 'Back', admin_assets_path %>

View File

@ -0,0 +1,29 @@
<h1>Listing assets</h1>
<table>
<tr>
<th>檔案</th>
<th>描述</th>
<th>格式</th>
<th>原上傳檔名</th>
<th>檔案大小</th>
<th></th>
<th></th>
</tr>
<% @assets.each do |asset| %>
<tr>
<td><%= link_to asset.filename, admin_asset_path(asset) %></td>
<td><%= asset.description %></td>
<td><%= asset.data.content_type %></td>
<td><%= asset.data.file_name %></td>
<td><%= number_to_human_size(asset.data.file_size) %></td>
<td><%= link_to t(:edit), edit_admin_asset_path(asset) %></td>
<td><%= link_to t(:delete), admin_asset_path(asset), :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to t(:new_asset, :scope => :admin), new_admin_asset_path, :class => 'button positive' %>

View File

@ -0,0 +1,11 @@
<h1>New Asset</h1>
<% form_for :asset, :url => admin_assets_path, :html => { :multipart => true } do |f| %>
<%= f.error_messages %>
<%= render :partial => "form", :locals => { :f => f } %>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>

View File

@ -22,6 +22,7 @@
<li><%= link_to t(:home, :scope => :admin), root_path %></li>
<li><%= link_to t(:item, :scope => :admin), admin_items_path %></li>
<li><%= link_to t(:layout, :scope => :admin), admin_layouts_path %></li>
<li><%= link_to t(:asset, :scope => :admin), admin_assets_path %></li>
<li><%= link_to t(:announcement, :scope => :admin), panel_announcements_path( :entry_name => 'news' ) %></li>
</ul>
</div>

View File

@ -22,6 +22,7 @@ Rails::Initializer.run do |config|
config.gem "liquid"
config.gem "mongo_mapper"
config.gem 'grip'
# Only load the plugins named here, in the order given (default is alphabetical).
# :all can be used as a placeholder for all plugins not explicitly named

132
config/locales/rails.yml Normal file
View File

@ -0,0 +1,132 @@
# Chinese (Taiwan) translations for Ruby on Rails
# by tsechingho (http://github.com/tsechingho)
:zh_tw:
date:
formats:
default: "%Y-%m-%d"
short: "%b%d日"
long: "%Y年%b%d日"
day_names: [星期日, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六]
abbr_day_names: [日, 一, 二, 三, 四, 五, 六]
month_names: [~, 一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月]
abbr_month_names: [~, 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
order: [ :year, :month, :day ]
time:
formats:
default: "%Y年%b%d日 %A %H:%M:%S %Z"
short: "%b%d日 %H:%M"
long: "%Y年%b%d日 %H:%M"
am: "上午"
pm: "下午"
datetime:
distance_in_words:
half_a_minute: "半分鐘"
less_than_x_seconds:
one: "不到一秒"
other: "不到 {{count}} 秒"
x_seconds:
one: "一秒"
other: "{{count}} 秒"
less_than_x_minutes:
one: "不到一分鐘"
other: "不到 {{count}} 分鐘"
x_minutes:
one: "一分鐘"
other: "{{count}} 分鐘"
about_x_hours:
one: "大約一小時"
other: "大約 {{count}} 小時"
x_days:
one: "一天"
other: "{{count}} 天"
about_x_months:
one: "大約一個月"
other: "大約 {{count}} 個月"
x_months:
one: "一個月"
other: "{{count}} 個月"
about_x_years:
one: "大約一年"
other: "大約 {{count}} 年"
over_x_years:
one: "一年多"
other: "{{count}} 年多"
prompts:
year: "年"
month: "月"
day: "日"
hour: "時"
minute: "分"
second: "秒"
number:
format:
separator: "."
delimiter: ","
precision: 3
currency:
format:
format: "%u %n"
unit: "NT$"
separator: "."
delimiter: ","
precision: 2
percentage:
format:
delimiter: ""
precision:
format:
delimiter: ""
human:
format:
delimiter: ""
precision: 1
storage_units:
format: "%n %u"
units:
byte:
one: "Byte"
other: "Bytes"
kb: "KB"
mb: "MB"
gb: "GB"
tb: "TB"
support:
array:
words_connector: ", "
two_words_connector: " 和 "
last_word_connector: ", 和 "
activerecord:
errors:
template:
header:
one: "有 1 個錯誤發生使得「{{model}}」無法被儲存。"
other: "有 {{count}} 個錯誤發生使得「{{model}}」無法被儲存。"
body: "下面欄位有問題:"
messages:
inclusion: "沒有包含在列表中"
exclusion: "是被保留的"
invalid: "是無效的"
confirmation: "不符合確認值"
accepted: "必須是可被接受的"
empty: "不能留空"
blank: "不能是空白字元"
too_long: "過長(最長是 {{count}} 個字)"
too_short: "過短(最短是 {{count}} 個字)"
wrong_length: "字數錯誤(必須是 {{count}} 個字)"
taken: "已經被使用"
not_a_number: "不是數字"
greater_than: "必須大於 {{count}}"
greater_than_or_equal_to: "必須大於或等於 {{count}}"
equal_to: "必須等於 {{count}}"
less_than: "必須小於 {{count}}"
less_than_or_equal_to: "必須小於或等於 {{count}}"
odd: "必須是奇數"
even: "必須是偶數"

View File

@ -14,3 +14,5 @@ zh_tw:
new_snippet: 新增片段
new_layout: 新增樣板
announcement: 公告管理
asset: 資產管理
new_asset: 新增資產

View File

@ -9,6 +9,7 @@ ActionController::Routing::Routes.draw do |map|
admin.resources :components
admin.resources :layouts
admin.resources :snippets
admin.resources :assets
end
map.namespace :panel do |panel|