Add asset model and controller
This commit is contained in:
parent
d5c5200b71
commit
a19e0dba6c
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,3 @@
|
||||||
|
class AssetImage < Asset
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
class AssetJavascript < Asset
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,2 @@
|
||||||
|
class AssetPdf < Asset
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
class AssetStylesheet < Asset
|
||||||
|
|
||||||
|
end
|
|
@ -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>
|
|
@ -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 %>
|
|
@ -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' %>
|
|
@ -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 %>
|
|
@ -22,6 +22,7 @@
|
||||||
<li><%= link_to t(:home, :scope => :admin), root_path %></li>
|
<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(:item, :scope => :admin), admin_items_path %></li>
|
||||||
<li><%= link_to t(:layout, :scope => :admin), admin_layouts_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>
|
<li><%= link_to t(:announcement, :scope => :admin), panel_announcements_path( :entry_name => 'news' ) %></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -22,7 +22,8 @@ Rails::Initializer.run do |config|
|
||||||
|
|
||||||
config.gem "liquid"
|
config.gem "liquid"
|
||||||
config.gem "mongo_mapper"
|
config.gem "mongo_mapper"
|
||||||
|
config.gem 'grip'
|
||||||
|
|
||||||
# Only load the plugins named here, in the order given (default is alphabetical).
|
# 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
|
# :all can be used as a placeholder for all plugins not explicitly named
|
||||||
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
|
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
|
||||||
|
|
|
@ -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: "必須是偶數"
|
||||||
|
|
||||||
|
|
|
@ -13,4 +13,6 @@ zh_tw:
|
||||||
new_link: 新增連結
|
new_link: 新增連結
|
||||||
new_snippet: 新增片段
|
new_snippet: 新增片段
|
||||||
new_layout: 新增樣板
|
new_layout: 新增樣板
|
||||||
announcement: 公告管理
|
announcement: 公告管理
|
||||||
|
asset: 資產管理
|
||||||
|
new_asset: 新增資產
|
|
@ -9,6 +9,7 @@ ActionController::Routing::Routes.draw do |map|
|
||||||
admin.resources :components
|
admin.resources :components
|
||||||
admin.resources :layouts
|
admin.resources :layouts
|
||||||
admin.resources :snippets
|
admin.resources :snippets
|
||||||
|
admin.resources :assets
|
||||||
end
|
end
|
||||||
|
|
||||||
map.namespace :panel do |panel|
|
map.namespace :panel do |panel|
|
||||||
|
|
Reference in New Issue