bhf 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/bhf/entries_controller.rb +12 -1
- data/app/controllers/bhf/pages_controller.rb +2 -2
- data/app/views/bhf/_footer.haml +1 -1
- data/app/views/bhf/entries/form/column/_date.haml +1 -1
- data/app/views/bhf/entries/form/column/_timedate.haml +0 -0
- data/app/views/bhf/pages/_platform.haml +16 -12
- data/app/views/layouts/bhf/application.haml +1 -1
- data/config/routes.rb +5 -1
- data/lib/bhf/pagination.rb +8 -4
- data/lib/bhf/platform.rb +32 -22
- data/public/images/bhf/Untitled-1.png +0 -0
- data/public/images/bhf/icon_drag.png +0 -0
- data/public/javascripts/bhf.js +427 -998
- data/public/stylesheets/bhf.css +1 -1
- metadata +7 -4
@@ -1,6 +1,6 @@
|
|
1
1
|
class Bhf::EntriesController < Bhf::ApplicationController
|
2
2
|
before_filter :load_platform, :load_model, :set_page, :set_quick_edit
|
3
|
-
before_filter :load_object, :except => [:create, :new]
|
3
|
+
before_filter :load_object, :except => [:create, :new, :sort]
|
4
4
|
|
5
5
|
def new
|
6
6
|
@object = @model.new
|
@@ -54,6 +54,17 @@ class Bhf::EntriesController < Bhf::ApplicationController
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
+
def sort
|
58
|
+
return unless @platform.sortable
|
59
|
+
|
60
|
+
sortable = @platform.sortable.to_sym
|
61
|
+
|
62
|
+
params[:order].each_with_index do |id, index|
|
63
|
+
object = @model.find(id[1].gsub("_#{@platform.name}", ''))
|
64
|
+
object.update_attribute(sortable, index)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
57
68
|
def destroy
|
58
69
|
@object.destroy
|
59
70
|
redirect_back_or_default(bhf_root_url, :notice => set_message('destory.success', @model))
|
@@ -15,7 +15,7 @@ class Bhf::PagesController < Bhf::ApplicationController
|
|
15
15
|
@platforms = platform_options.each_with_object([]) do |opts, obj|
|
16
16
|
platform = Bhf::Platform.new(opts, @page, current_account)
|
17
17
|
platform.pagination = Bhf::Pagination.new(platform.entries_per_page)
|
18
|
-
|
18
|
+
paginate_platform_objects(platform)
|
19
19
|
obj << platform
|
20
20
|
end
|
21
21
|
end
|
@@ -30,7 +30,7 @@ class Bhf::PagesController < Bhf::ApplicationController
|
|
30
30
|
@platform = @config.find_platform(platform_name, current_account)
|
31
31
|
|
32
32
|
@platform.pagination = Bhf::Pagination.new(@platform.entries_per_page)
|
33
|
-
|
33
|
+
paginate_platform_objects(@platform)
|
34
34
|
|
35
35
|
render '_platform', :layout => false
|
36
36
|
end
|
data/app/views/bhf/_footer.haml
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
= node f, field do
|
2
|
-
= f.text_field field.name, :class =>
|
2
|
+
= f.text_field field.name, :class => "datepicker #{field.type}", :value => f.object.send(field.name).to_i
|
File without changes
|
@@ -1,5 +1,5 @@
|
|
1
1
|
- @platform.pagination.template = self
|
2
|
-
%table{:class => (@platform.custom_columns? ? 'custom_columns' : 'default_columns')}
|
2
|
+
%table{:id => "#{@platform.name}_platform", :class => (@platform.custom_columns? ? 'custom_columns' : 'default_columns')}
|
3
3
|
%caption
|
4
4
|
%h4= @platform.title
|
5
5
|
%p.info= @platform.pagination.info @platform, :entry_name => 'entry'
|
@@ -15,6 +15,8 @@
|
|
15
15
|
|
16
16
|
%thead
|
17
17
|
%tr
|
18
|
+
- if @platform.sortable
|
19
|
+
%th
|
18
20
|
- @platform.columns.each do |column|
|
19
21
|
%th{:class => "#{column.field.macro} #{column.field.display_type} #{order_class(column.name, @platform.name)}"}
|
20
22
|
- column_name = @platform.model.human_attribute_name(column.name)
|
@@ -24,23 +26,25 @@
|
|
24
26
|
%th.action
|
25
27
|
%tfoot
|
26
28
|
%tr
|
27
|
-
%td{:colspan => @platform.
|
28
|
-
= @platform.pagination.
|
29
|
-
%tbody
|
30
|
-
- if @platform.
|
31
|
-
- @platform.
|
29
|
+
%td{:colspan => @platform.columns_count}
|
30
|
+
= @platform.pagination.create(@platform) unless @platform.sortable
|
31
|
+
%tbody{:class => ('sortable' if @platform.sortable), :'data-sort-url' => sort_bhf_entries_path(@platform.name)}
|
32
|
+
- if @platform.objects.any?
|
33
|
+
- @platform.objects.each do |object|
|
32
34
|
- edit_link = edit_bhf_entry_path(@platform.name, object)
|
33
|
-
%tr
|
35
|
+
%tr{:id => "#{object.id}_#{@platform.name}"}
|
36
|
+
- if @platform.sortable
|
37
|
+
%td
|
38
|
+
%span.handle
|
34
39
|
- @platform.columns.each do |column|
|
35
40
|
%td{:class => "#{column.field.macro} #{column.field.display_type}", :'data-column-name' => column.name}
|
36
|
-
-
|
37
|
-
|
38
|
-
|
39
|
-
= column.field.overwrite_display_type ? a : link_to(a.html_safe, edit_link, :class => 'quick_edit')
|
41
|
+
- p = "bhf/pages/macro/#{column.field.macro}/#{column.field.display_type}"
|
42
|
+
- a = object.send(column.name).blank? ? ' ' : render(:partial => p, :locals => {:column => column, :object => object})
|
43
|
+
= column.field.overwrite_display_type ? a.html_safe : link_to(a.html_safe, edit_link, :class => 'quick_edit')
|
40
44
|
%td.action
|
41
45
|
= link_to edit_t(@platform), edit_link, :class => 'edit'
|
42
46
|
= link_to delete_t(@platform), bhf_entry_path(@platform.name, object), :method => :delete, :confirm => t('bhf.helpers.promts.confirm'), :class => 'delete'
|
43
47
|
- else
|
44
|
-
%td.no_entries{:colspan => @platform.
|
48
|
+
%td.no_entries{:colspan => @platform.columns_count}
|
45
49
|
= t 'bhf.pagination.info.nothing_found', :name => t('bhf.pagination.entry').pluralize
|
46
50
|
= link_to new_t(@platform), new_bhf_entry_path(@platform.name)
|
@@ -7,7 +7,7 @@
|
|
7
7
|
%link{:href => '/favicon.ico', :rel => 'icon', :type => 'image/x-icon'}
|
8
8
|
= stylesheet_link_tag(['bhf'] + Bhf::Engine.config.css.to_a)
|
9
9
|
= javascript_include_tag 'bhf'
|
10
|
-
=# javascript_include_tag 'mootools-core-1.3-full-
|
10
|
+
=# javascript_include_tag 'mootools-core-1.3.1-full-compat-yc.js', 'mootools-more-1.3.1.1.js', 'mootools_rails_driver-0.4.1.js', 'class/BrowserUpdate', 'class/Ajaxify', 'class/AjaxEdit', 'class/MooEditable', 'class/Datepicker', 'bhf_application'
|
11
11
|
%body
|
12
12
|
%header
|
13
13
|
-# TODO: logo as css bg for better cache and no jumping?
|
data/config/routes.rb
CHANGED
@@ -6,7 +6,11 @@ Rails.application.routes.draw do
|
|
6
6
|
get 'page/:page', :to => 'pages#show', :as => :page
|
7
7
|
|
8
8
|
scope ':platform' do
|
9
|
-
resources :entries, :except => [:index, :show]
|
9
|
+
resources :entries, :except => [:index, :show] do
|
10
|
+
collection do
|
11
|
+
get :sort
|
12
|
+
end
|
13
|
+
end
|
10
14
|
end
|
11
15
|
|
12
16
|
end
|
data/lib/bhf/pagination.rb
CHANGED
@@ -10,17 +10,17 @@ module Bhf
|
|
10
10
|
@offset_to_add = offset_to_add
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
13
|
+
def create(platform)
|
14
14
|
platform_params = template.params[platform.name] || {}
|
15
15
|
|
16
|
-
if page_links = template.will_paginate(platform.
|
16
|
+
if page_links = template.will_paginate(platform.objects, {
|
17
17
|
:previous_label => I18n.t('bhf.pagination.previous_label'),
|
18
18
|
:next_label => I18n.t('bhf.pagination.next_label'),
|
19
19
|
:renderer => LinkRenderer.new(self, platform),
|
20
20
|
:container => false
|
21
21
|
})
|
22
22
|
links = "#{load_more(platform)} #{page_links}"
|
23
|
-
elsif platform.
|
23
|
+
elsif platform.objects.total_pages == 1 && platform.objects.size > @offset_to_add
|
24
24
|
links = load_less(platform)
|
25
25
|
end
|
26
26
|
|
@@ -30,7 +30,11 @@ module Bhf
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def info(platform, options = {})
|
33
|
-
collection = platform.
|
33
|
+
collection = platform.objects
|
34
|
+
|
35
|
+
unless collection.respond_to?(:total_pages)
|
36
|
+
collection = collection.paginate({:page => 1, :per_page => collection.count+1})
|
37
|
+
end
|
34
38
|
|
35
39
|
entry_name = options[:entry_name] ||
|
36
40
|
(collection.empty?? I18n.t('bhf.pagination.entry') : collection.first.class.model_name.human)
|
data/lib/bhf/platform.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
module Bhf
|
2
2
|
class Platform
|
3
3
|
|
4
|
-
attr_accessor :
|
5
|
-
attr_reader :name, :title, :page_name
|
4
|
+
attr_accessor :pagination
|
5
|
+
attr_reader :name, :objects, :title, :page_name
|
6
6
|
|
7
7
|
def initialize(options, page_name, user = nil)
|
8
|
-
@
|
8
|
+
@objects = []
|
9
9
|
|
10
10
|
if options.is_a?(String)
|
11
11
|
options = {options => nil}
|
@@ -46,22 +46,25 @@ module Bhf
|
|
46
46
|
chain = @user.send(table_options(:user_scope).to_sym)
|
47
47
|
else
|
48
48
|
chain = model
|
49
|
-
chain = chain.
|
50
|
-
chain = chain.send(data_source) if data_source
|
49
|
+
chain = chain.send data_source if data_source
|
51
50
|
end
|
52
51
|
|
53
52
|
if options[:order]
|
54
|
-
chain = chain.order("#{options[:order]} #{options[:direction]}")
|
53
|
+
chain = chain.except(:order).order("#{options[:order]} #{options[:direction]}")
|
55
54
|
end
|
56
55
|
|
57
56
|
if search? && options[:search].present?
|
58
57
|
chain = do_search(chain, options[:search])
|
59
58
|
end
|
60
59
|
|
61
|
-
if paginate_options
|
60
|
+
if paginate_options && !sortable
|
62
61
|
chain = chain.paginate(paginate_options)
|
63
62
|
end
|
64
|
-
|
63
|
+
|
64
|
+
if chain == model
|
65
|
+
chain = chain.all
|
66
|
+
end
|
67
|
+
|
65
68
|
@objects = chain
|
66
69
|
end
|
67
70
|
|
@@ -110,6 +113,14 @@ module Bhf
|
|
110
113
|
end
|
111
114
|
end
|
112
115
|
|
116
|
+
def columns_count
|
117
|
+
columns.count + (sortable ? 2 : 1)
|
118
|
+
end
|
119
|
+
|
120
|
+
def sortable
|
121
|
+
table_options 'sortable'
|
122
|
+
end
|
123
|
+
|
113
124
|
private
|
114
125
|
|
115
126
|
def do_search(chain, search_term)
|
@@ -135,7 +146,7 @@ module Bhf
|
|
135
146
|
@collection.select{ |field| attr_name == field.name }[0] ||
|
136
147
|
Bhf::Data::AbstractField.new({
|
137
148
|
:name => attr_name,
|
138
|
-
:type =>
|
149
|
+
:type => table_options(:types, attr_name) || attr_name,
|
139
150
|
:info => I18n.t("bhf.platforms.#{@name}.infos.#{attr_name}", :default => '')
|
140
151
|
})
|
141
152
|
)
|
@@ -146,6 +157,7 @@ module Bhf
|
|
146
157
|
all = {}
|
147
158
|
|
148
159
|
model.columns_hash.each_pair do |name, props|
|
160
|
+
next if name == sortable
|
149
161
|
all[name] = Bhf::Data::Field.new(props, {
|
150
162
|
:overwrite_type => form_options(:types, name),
|
151
163
|
:overwrite_display_type => table_options(:types, name),
|
@@ -174,7 +186,7 @@ module Bhf
|
|
174
186
|
id = []
|
175
187
|
static_dates = []
|
176
188
|
output = []
|
177
|
-
|
189
|
+
|
178
190
|
attrs.each_pair do |key, value|
|
179
191
|
if key == model.primary_key
|
180
192
|
id << value
|
@@ -196,25 +208,23 @@ module Bhf
|
|
196
208
|
return false
|
197
209
|
end
|
198
210
|
end
|
199
|
-
true
|
211
|
+
true
|
200
212
|
end
|
201
213
|
|
202
214
|
def form_options(key, attribute = nil)
|
203
|
-
|
204
|
-
if attribute == nil
|
205
|
-
form[key.to_s]
|
206
|
-
elsif form[key.to_s]
|
207
|
-
form[key.to_s][attribute.to_s]
|
208
|
-
end
|
209
|
-
end
|
215
|
+
lookup_options form, key, attribute
|
210
216
|
end
|
211
217
|
|
212
218
|
def table_options(key, attribute = nil)
|
213
|
-
|
219
|
+
lookup_options table, key, attribute
|
220
|
+
end
|
221
|
+
|
222
|
+
def lookup_options(main_key, key, attribute = nil)
|
223
|
+
if main_key
|
214
224
|
if attribute == nil
|
215
|
-
|
216
|
-
elsif
|
217
|
-
|
225
|
+
main_key[key.to_s]
|
226
|
+
elsif main_key[key.to_s]
|
227
|
+
main_key[key.to_s][attribute.to_s]
|
218
228
|
end
|
219
229
|
end
|
220
230
|
end
|
Binary file
|
Binary file
|