Changes for default index:
- remove approvable and filterable - add display_option - change params Update web link and gallery index
This commit is contained in:
parent
af0ab9f0d3
commit
1dc7884ec0
|
@ -1,6 +1,5 @@
|
|||
$(function () {
|
||||
var $fileList = $('.file-list'),
|
||||
$fileType = $('.file-type'),
|
||||
var $fileType = $('.file-type'),
|
||||
$type = ['pdf', 'psd', 'ai', 'fla', 'swf', 'in', 'acc', 'do', 'xl', 'pp', 'zip', 'rar', '7z', 'txt', 'jp', 'gif', 'png', 'mp3', 'wav'];
|
||||
|
||||
$fileType.each(function (i) {
|
||||
|
|
|
@ -53,27 +53,14 @@
|
|||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
.main-list td .file-list {
|
||||
display: inline-block;
|
||||
margin: 0 0 -6px;
|
||||
}
|
||||
.main-list td .file-list:after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: block;
|
||||
height: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
.main-list td .file-type {
|
||||
position: relative;
|
||||
list-style: none;
|
||||
float: left;
|
||||
display: inline-block;
|
||||
}
|
||||
.main-list td .file-type a {
|
||||
background-color: #A6A6A6;
|
||||
color: #FFFFFF;
|
||||
margin-right: 10px;
|
||||
padding: 2px 5px 2px 3px;
|
||||
border-radius: 3px;
|
||||
text-decoration: none;
|
||||
|
|
|
@ -82,11 +82,40 @@ module OrbitBackendHelper
|
|||
res = ''
|
||||
case field[:type]
|
||||
when 'associated'
|
||||
res << object.send(field[:db_field]).send(field[:associated_value]) rescue ''
|
||||
when 'date'
|
||||
res << (object.send(field[:db_field]) ? display_date_time(object.send(field[:db_field])) : t(:no_date))
|
||||
when 'field'
|
||||
res << with_link?(field, object, object.send(field[:db_field]))
|
||||
sorted_objects = get_sorted_objects(object.send(field[:db_field]), field[:model_field]) rescue ''
|
||||
when 'id'
|
||||
sorted_objects = get_sorted_objects(field[:model].find(object.send(field[:db_field])), field[:model_field]) rescue ''
|
||||
when 'status'
|
||||
status = []
|
||||
if object.is_top?
|
||||
status << content_tag(:span, t(:top), class: "label label-success")
|
||||
end
|
||||
if object.is_hot?
|
||||
status << content_tag(:span, t(:hot), class: "label label-important")
|
||||
end
|
||||
if object.is_hidden?
|
||||
status << content_tag(:span, t(:hidden), class: "label")
|
||||
end
|
||||
if @approvable
|
||||
if object.is_pending?
|
||||
status << content_tag(:span, t(:pending), class: "label")
|
||||
end
|
||||
if object.is_checked?
|
||||
status << content_tag(:span, t(:passed), class: "label")
|
||||
end
|
||||
if object.is_rejected?
|
||||
status << content_tag(:span, t(:rejected), class: "label")
|
||||
end
|
||||
end
|
||||
res << status.join(' ')
|
||||
when 'tags'
|
||||
sorted_objects = get_sorted_objects(object.tags, 'name') rescue ''
|
||||
else
|
||||
sorted_values = object.send(field[:db_field])
|
||||
sorted_values = sorted_values.sort if sorted_values.is_a?(Array)
|
||||
end
|
||||
res << display_value_from_object(object, sorted_values, field[:display_option]) if sorted_values
|
||||
res << display_value_from_objects(sorted_objects, field[:model_field], field[:display_option]) if sorted_objects
|
||||
if field[:quick_edit]
|
||||
res << (content_tag :div, class: "quick-edit" do
|
||||
content_tag :ul, class: "nav nav-pills" do
|
||||
|
@ -96,35 +125,6 @@ module OrbitBackendHelper
|
|||
end
|
||||
end)
|
||||
end
|
||||
when 'status'
|
||||
if object.is_top?
|
||||
res << content_tag(:span, t(:top), class: "label label-success") + ' '
|
||||
end
|
||||
if object.is_hot?
|
||||
res << content_tag(:span, t(:hot), class: "label label-important") + ' '
|
||||
end
|
||||
if object.is_hidden?
|
||||
res << content_tag(:span, t(:hidden), class: "label") + ' '
|
||||
end
|
||||
if @approvable
|
||||
if object.is_pending?
|
||||
res << content_tag(:span, t(:pending), class: "label") + ' '
|
||||
end
|
||||
if object.is_checked?
|
||||
res << content_tag(:span, t(:passed), class: "label") + ' '
|
||||
end
|
||||
if object.is_rejected?
|
||||
res << content_tag(:span, t(:rejected), class: "label") + ' '
|
||||
end
|
||||
end
|
||||
when 'tags'
|
||||
object.sorted_tags.each do |tag|
|
||||
res << content_tag(:span, tag.name, class: "label label-warning")
|
||||
end if object.tags
|
||||
res.html_safe
|
||||
when 'id'
|
||||
res << field[:id_model].constantize.find(object.send(field[:db_field])).name rescue ''
|
||||
end
|
||||
res.html_safe
|
||||
end
|
||||
|
||||
|
@ -134,7 +134,7 @@ module OrbitBackendHelper
|
|||
(content_tag :tr, class: "sort-header" do
|
||||
@fields.each do |field|
|
||||
concat (content_tag :th, "data-hide" => field[:hide], class: "#{field[:header_class]} #{'active' if params[:sort].eql?(field[:sort])}" do
|
||||
if @sortable && field[:sort]
|
||||
if field[:sort]
|
||||
link_to is_sort_active?(field), url_for({:filter => @filter}.merge(sortable_options(field[:sort]).merge(:sort_options => field[:db_field])))
|
||||
else
|
||||
t(field[:translation])
|
||||
|
@ -163,12 +163,48 @@ module OrbitBackendHelper
|
|||
@filterable = false
|
||||
@index_footer = nil
|
||||
@quick_edit = []
|
||||
@sortable = false
|
||||
block.call
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def display_value(value)
|
||||
case value.class.name
|
||||
when 'DateTime'
|
||||
display_date_time(value)
|
||||
when 'Date'
|
||||
display_date(value)
|
||||
when 'Time'
|
||||
display_time(value)
|
||||
when /Uploader/
|
||||
image_tag(value.url)
|
||||
else
|
||||
value
|
||||
end
|
||||
end
|
||||
|
||||
def display_value_from_object(object, value, display_option)
|
||||
if display_option
|
||||
eval(display_option)
|
||||
else
|
||||
display_value(value)
|
||||
end
|
||||
end
|
||||
|
||||
def display_value_from_objects(objects, field, display_option)
|
||||
if display_option
|
||||
objects = Array(objects).map do |object|
|
||||
eval(display_option)
|
||||
end
|
||||
objects.join(' ')
|
||||
else
|
||||
objects = Array(objects).map do |object|
|
||||
display_value(object.send(field))
|
||||
end
|
||||
objects.join(', ')
|
||||
end
|
||||
end
|
||||
|
||||
# ===============================================================
|
||||
# type:
|
||||
# check "get_value"
|
||||
|
@ -189,15 +225,22 @@ module OrbitBackendHelper
|
|||
# (only available for type 'field' for now)
|
||||
# ===============================================================
|
||||
def field(args={})
|
||||
if !args.blank? && args[:type] && args[:translation] && args[:db_field]
|
||||
if !args.blank? && args[:translation] && args[:db_field]
|
||||
case args[:type]
|
||||
when 'status', 'field', 'date', 'tags'
|
||||
@fields << args
|
||||
when 'associated'
|
||||
@fields << args if args[:associated_value]
|
||||
@fields << args if args[:model_field] || args[:display_option]
|
||||
when 'id'
|
||||
@fields << args if args[:id_model]
|
||||
@fields << args if args[:model] && (args[:model_field] || args[:display_option])
|
||||
when 'image'
|
||||
args[:header_class] ||= 'span2'
|
||||
@fields << args
|
||||
else
|
||||
@fields << args
|
||||
end
|
||||
elsif !args.blank? && args[:type].eql?('tags')
|
||||
args[:translation] ||= 'tags'
|
||||
args[:display_option] ||= "content_tag(:span, object.name, class: 'label label-warning')"
|
||||
@fields << args
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -209,13 +252,10 @@ module OrbitBackendHelper
|
|||
when 'objects'
|
||||
@filter_fields << args if args[:object_field]
|
||||
end
|
||||
@filterable ||= true
|
||||
end
|
||||
end
|
||||
|
||||
def filterable
|
||||
@filterable = true
|
||||
end
|
||||
|
||||
# ===============================================================
|
||||
# args:
|
||||
# - paginate: default true, there'es no need to specify it
|
||||
|
@ -258,6 +298,17 @@ module OrbitBackendHelper
|
|||
end
|
||||
end
|
||||
|
||||
def get_sorted_objects(objects, field)
|
||||
if field
|
||||
objects_array = Array(objects).inject([]){ |result, value|
|
||||
result << [value.send(field), value]
|
||||
}
|
||||
objects_array.sort.map{|d| d[1]}
|
||||
else
|
||||
objects
|
||||
end
|
||||
end
|
||||
|
||||
def is_approvable(object)
|
||||
current_or_guest_user.admin? || (!object.is_rejected? && !object.is_checked?)
|
||||
end
|
||||
|
@ -274,10 +325,6 @@ module OrbitBackendHelper
|
|||
@objects = objects
|
||||
end
|
||||
|
||||
def sortable
|
||||
@sortable = true
|
||||
end
|
||||
|
||||
def with_link?(field, object, value)
|
||||
if field[:link] && @approvable
|
||||
if object.class.instance_methods.include?(:is_checked?) && object.is_checked?
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
<% set_default_index do
|
||||
objects @bulletins
|
||||
filterable
|
||||
sortable
|
||||
quick_edit_link type: 'edit',
|
||||
link: 'edit_panel_announcement_back_end_bulletin_path'
|
||||
quick_edit_link type: 'detail'
|
||||
|
@ -10,42 +8,42 @@
|
|||
quick_edit_link type: 'approval',
|
||||
link: 'panel_announcement_back_end_bulletin_approval_preview_path'
|
||||
quick_edit_link type: 'reject_reason'
|
||||
field type: 'image',
|
||||
db_field: 'image',
|
||||
translation: 'preview',
|
||||
hide: 'phone'
|
||||
field type: 'status',
|
||||
db_field: @statuses,
|
||||
translation: 'status',
|
||||
hide: 'phone',
|
||||
sort: 'status'
|
||||
field type: 'associated',
|
||||
associated_value: 'title',
|
||||
db_field: 'category',
|
||||
model_field: 'title',
|
||||
translation: 'category',
|
||||
hide: 'phone',
|
||||
sort: 'category'
|
||||
field type: 'field',
|
||||
db_field: 'title',
|
||||
field db_field: 'title',
|
||||
translation: 'title',
|
||||
sort: 'title',
|
||||
link: 'panel_announcement_front_end_bulletin_path',
|
||||
display_option: 'link_to value, panel_announcement_front_end_bulletin_path(object)',
|
||||
quick_edit: true,
|
||||
header_class: 'span5'
|
||||
field type: 'date',
|
||||
db_field: 'postdate',
|
||||
field db_field: 'postdate',
|
||||
translation: 'start_date',
|
||||
hide: 'phone',
|
||||
sort: 'start_date'
|
||||
field type: 'date',
|
||||
db_field: 'deadline',
|
||||
field db_field: 'deadline',
|
||||
translation: 'end_date',
|
||||
hide: 'phone',
|
||||
sort: 'end_date'
|
||||
field type: 'tags',
|
||||
db_field: 'tags',
|
||||
translation: 'tags',
|
||||
hide: 'all',
|
||||
sort: 'tags'
|
||||
field type: 'id',
|
||||
id_model: 'User',
|
||||
db_field: 'update_user_id',
|
||||
model: User,
|
||||
model_field: 'name',
|
||||
translation: 'last_modified',
|
||||
hide: 'phone',
|
||||
sort: 'last_modified'
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
<% set_default_index do
|
||||
objects @archive_files
|
||||
filterable
|
||||
sortable
|
||||
quick_edit_link type: 'edit',
|
||||
link: 'edit_panel_archive_back_end_archive_file_path'
|
||||
quick_edit_link type: 'detail'
|
||||
|
@ -14,23 +12,27 @@
|
|||
sort: 'status',
|
||||
header_class: 'span2'
|
||||
field type: 'associated',
|
||||
associated_value: 'title',
|
||||
db_field: 'category',
|
||||
model_field: 'title',
|
||||
translation: 'category',
|
||||
hide: 'phone',
|
||||
sort: 'category',
|
||||
header_class: 'span2'
|
||||
field type: 'field',
|
||||
db_field: 'title',
|
||||
field db_field: 'title',
|
||||
translation: 'title',
|
||||
sort: 'title',
|
||||
link: 'panel_archive_front_end_archive_file_path',
|
||||
quick_edit: true
|
||||
display_option: 'link_to value, panel_archive_front_end_archive_file_path(object)',
|
||||
quick_edit: true,
|
||||
header_class: 'span5'
|
||||
field type: 'tags',
|
||||
db_field: 'tags',
|
||||
translation: 'tags',
|
||||
hide: 'all',
|
||||
sort: 'tags'
|
||||
field type: 'associated',
|
||||
db_field: 'archive_file_multiples',
|
||||
translation: 'file_',
|
||||
display_option: "content_tag(:span, link_to(content_tag(:i) + object.file_identifier, object.file.url, target: '_blank'), class: 'file-type') unless object.file.blank?",
|
||||
hide: 'all',
|
||||
header_class: 'span2'
|
||||
filter_field type: 'array',
|
||||
values: @statuses,
|
||||
translation: 'status'
|
||||
|
@ -46,3 +48,7 @@
|
|||
end %>
|
||||
|
||||
<%= render 'admin/default_index/index' %>
|
||||
|
||||
<% content_for :page_specific_javascript do %>
|
||||
<%= javascript_include_tag "lib/file-type" %>
|
||||
<% end %>
|
||||
|
|
|
@ -1,29 +1,24 @@
|
|||
<% set_default_index do
|
||||
objects @albums
|
||||
filterable
|
||||
filter_field type: 'objects',
|
||||
values: @tags,
|
||||
translation: 'tags',
|
||||
object_field: 'name'
|
||||
footer link: 'new_panel_gallery_back_end_album_path',
|
||||
paginate: false
|
||||
end %>
|
||||
<%= render 'admin/default_index/index' %>
|
||||
|
||||
<%= stylesheet_link_tag "gallery" %>
|
||||
<%#= stylesheet_link_tag "filter" %>
|
||||
|
||||
<!-- Bottom Nav -->
|
||||
<div class="bottomnav clearfix">
|
||||
<div class="action pull-right">
|
||||
<a href="<%= new_panel_gallery_back_end_album_path %>" class="btn btn-primary"><i class="icons-plus"></i> Add New</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul id="orbit_gallery" class="gallery" data-gallery-id="gallery">
|
||||
<ul id="orbit_gallery" class="gallery" data-gallery-id="gallery">
|
||||
<% @albums.each do |album| %>
|
||||
<%= render :partial => "album", :object => album %>
|
||||
<% end %>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<% content_for :page_specific_css do %>
|
||||
<%= stylesheet_link_tag "gallery" %>
|
||||
<% end %>
|
||||
|
||||
<% content_for :page_specific_javascript do %>
|
||||
<%= javascript_include_tag "jquery.masonry.min.js" %>
|
||||
<%= javascript_include_tag "jquery.mu.image.resize.js" %>
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
<% set_default_index do
|
||||
objects @web_links
|
||||
filterable
|
||||
sortable
|
||||
quick_edit_link type: 'edit',
|
||||
link: 'edit_panel_web_resource_back_end_web_link_path'
|
||||
quick_edit_link type: 'detail'
|
||||
|
@ -14,22 +12,19 @@
|
|||
sort: 'status',
|
||||
header_class: 'span2'
|
||||
field type: 'associated',
|
||||
associated_value: 'title',
|
||||
db_field: 'category',
|
||||
model_field: 'title',
|
||||
translation: 'category',
|
||||
hide: 'phone',
|
||||
sort: 'category',
|
||||
header_class: 'span2'
|
||||
field type: 'field',
|
||||
db_field: 'title',
|
||||
field db_field: 'title',
|
||||
translation: 'title',
|
||||
sort: 'title',
|
||||
link: 'panel_web_resource_front_end_web_link_path',
|
||||
display_option: 'link_to value, panel_web_resource_front_end_web_link_path(object)',
|
||||
quick_edit: true,
|
||||
header_class: 'span5'
|
||||
field type: 'tags',
|
||||
db_field: 'tags',
|
||||
translation: 'tags',
|
||||
hide: 'all',
|
||||
sort: 'tags'
|
||||
filter_field type: 'array',
|
||||
|
|
Reference in New Issue