bhf 0.3.10 → 0.3.11
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/bhf/application_controller.rb +0 -2
- data/app/controllers/bhf/embed_entries_controller.rb +78 -0
- data/app/controllers/bhf/entries_controller.rb +7 -6
- data/app/controllers/bhf/pages_controller.rb +1 -0
- data/app/helpers/bhf/entries_helper.rb +8 -4
- data/app/views/bhf/entries/_form.haml +1 -1
- data/app/views/bhf/entries/edit.haml +1 -1
- data/app/views/bhf/entries/form/belongs_to/_select.haml +1 -1
- data/app/views/bhf/entries/form/belongs_to/_static.haml +2 -5
- data/app/views/bhf/entries/form/column/_array.haml +8 -0
- data/app/views/bhf/entries/form/embeds_many/_static.haml +14 -0
- data/app/views/bhf/entries/form/embeds_one/_static.haml +13 -0
- data/app/views/bhf/entries/form/has_and_belongs_to_many/_static.haml +2 -6
- data/app/views/bhf/entries/form/has_many/_static.haml +2 -6
- data/app/views/bhf/entries/form/has_one/_static.haml +2 -5
- data/app/views/bhf/entries/new.haml +1 -1
- data/app/views/bhf/helper/_reflection_node.haml +2 -2
- data/app/views/bhf/pages/_platform.haml +6 -8
- data/app/views/bhf/pages/macro/belongs_to/_default.haml +1 -1
- data/app/views/bhf/pages/macro/column/_array.haml +1 -0
- data/app/views/bhf/pages/macro/column/_boolean.haml +1 -1
- data/app/views/bhf/pages/macro/embeds_many/_default.haml +1 -0
- data/app/views/bhf/pages/macro/embeds_one/_default.haml +1 -0
- data/app/views/bhf/pages/macro/has_and_belongs_to_many/_default.haml +1 -2
- data/app/views/bhf/pages/macro/has_many/_default.haml +2 -2
- data/app/views/bhf/pages/macro/has_one/_default.haml +2 -2
- data/app/views/bhf/pages/show.haml +1 -1
- data/app/views/kaminari/bhf/_gap.html.haml +1 -0
- data/app/views/kaminari/bhf/_next_page.html.haml +2 -0
- data/app/views/kaminari/bhf/_page.html.haml +2 -0
- data/app/views/kaminari/bhf/_paginator.html.haml +10 -0
- data/app/views/kaminari/bhf/_prev_page.html.haml +2 -0
- data/app/views/layouts/bhf/application.haml +1 -1
- data/app/views/layouts/bhf/quick_edit.haml +4 -2
- data/config/locales/de.yml +3 -4
- data/config/locales/en.yml +9 -6
- data/config/routes.rb +1 -0
- data/lib/bhf.rb +1 -0
- data/lib/bhf/active_record/active_record.rb +11 -2
- data/lib/bhf/active_record/upload.rb +9 -9
- data/lib/bhf/data.rb +2 -2
- data/lib/bhf/mongoid/document.rb +138 -0
- data/lib/bhf/pagination.rb +42 -42
- data/lib/bhf/platform.rb +8 -9
- data/lib/engine.rb +1 -2
- data/public/images/bhf/pictos.png +0 -0
- data/public/javascripts/bhf.js +1 -1
- data/public/stylesheets/bhf.css +1 -1
- metadata +22 -23
- data/public/images/bhf/button_bg.png +0 -0
- data/public/images/bhf/button_bg_2.png +0 -0
- data/public/images/bhf/button_bg_a.png +0 -0
- data/public/images/bhf/icon_delete.png +0 -0
- data/public/images/bhf/icon_delete_a.png +0 -0
- data/public/images/bhf/icon_delete_h.png +0 -0
- data/public/images/bhf/icon_drag.png +0 -0
- data/public/images/bhf/icon_drag_a.png +0 -0
- data/public/images/bhf/icon_drag_h.png +0 -0
- data/public/images/bhf/icon_edit.png +0 -0
- data/public/images/bhf/icon_edit_a.png +0 -0
- data/public/images/bhf/icon_edit_h.png +0 -0
data/config/locales/en.yml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
en:
|
1
|
+
en:
|
2
2
|
bhf:
|
3
3
|
pages:
|
4
4
|
headline: Content
|
@@ -17,8 +17,6 @@ en:
|
|
17
17
|
delete: "Delete %{platform_name}"
|
18
18
|
empty: Empty
|
19
19
|
cancel: Cancel
|
20
|
-
entries:
|
21
|
-
empty: Empty
|
22
20
|
login:
|
23
21
|
success: "Login was successful"
|
24
22
|
error: "Can't login"
|
@@ -37,20 +35,25 @@ en:
|
|
37
35
|
cancel: Cancel
|
38
36
|
open: Open
|
39
37
|
save: Save
|
40
|
-
|
38
|
+
create: Create
|
39
|
+
save_and_next: Save and go to the next entry
|
41
40
|
|
42
41
|
pagination:
|
43
42
|
previous_label: « Previous
|
44
43
|
next_label: Next »
|
44
|
+
truncate: …
|
45
45
|
load_more: Show more entries
|
46
46
|
load_less: Show less entries
|
47
|
-
entry: entry
|
48
47
|
entries: entries
|
49
48
|
info:
|
50
49
|
default: "Displaying <strong>%{offset_start} - %{offset_end}</strong> of <strong>%{count}</strong> %{name} in total"
|
51
|
-
other: "Displaying <strong>all %{
|
50
|
+
other: "Displaying <strong>all %{count}</strong> %{name_plural}"
|
52
51
|
one: "Displaying <strong>1</strong> %{name_singular}"
|
53
52
|
zero: "No %{name_zero} found"
|
53
|
+
|
54
|
+
attributes:
|
55
|
+
_id: 'id'
|
56
|
+
|
54
57
|
activerecord:
|
55
58
|
notices:
|
56
59
|
messages:
|
data/config/routes.rb
CHANGED
data/lib/bhf.rb
CHANGED
@@ -6,6 +6,7 @@ require 'engine' if defined?(Rails) && Rails::VERSION::MAJOR == 3
|
|
6
6
|
require 'bhf/i18n'
|
7
7
|
require 'bhf/active_record/active_record'
|
8
8
|
require 'bhf/active_record/upload'
|
9
|
+
require 'bhf/mongoid/document'
|
9
10
|
require 'bhf/view_helpers'
|
10
11
|
require 'bhf/data'
|
11
12
|
require 'bhf/platform'
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Bhf
|
2
2
|
module ActiveRecord
|
3
3
|
module Object
|
4
|
+
|
4
5
|
extend ActiveSupport::Concern
|
5
6
|
|
6
7
|
def to_bhf_s
|
@@ -16,7 +17,7 @@ module Bhf
|
|
16
17
|
self.to_s.humanize
|
17
18
|
end
|
18
19
|
|
19
|
-
module ClassMethods
|
20
|
+
module ClassMethods
|
20
21
|
def bhf_default_search(search_params)
|
21
22
|
return if (search_term = search_params[:text]).blank?
|
22
23
|
where_statement = []
|
@@ -34,8 +35,16 @@ module Bhf
|
|
34
35
|
|
35
36
|
where_statement.join(' OR ')
|
36
37
|
end
|
38
|
+
|
39
|
+
def bhf_primary_key
|
40
|
+
primary_key
|
41
|
+
end
|
42
|
+
|
43
|
+
def bhf_embedded?
|
44
|
+
false
|
45
|
+
end
|
37
46
|
end
|
38
47
|
|
39
48
|
end
|
40
49
|
end
|
41
|
-
end
|
50
|
+
end
|
@@ -8,14 +8,6 @@ module Bhf
|
|
8
8
|
cattr_accessor :bhf_upload_settings
|
9
9
|
end
|
10
10
|
|
11
|
-
module ClassMethods
|
12
|
-
def setup_upload(settings)
|
13
|
-
self.bhf_upload_settings = settings.each_with_object([]) do |s, obj|
|
14
|
-
obj << {:path => '', :name => :file}.merge(s)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
11
|
def bhf_upload
|
20
12
|
self.class.bhf_upload_settings.each do |settings|
|
21
13
|
name_was = send("#{settings[:name]}_was")
|
@@ -28,7 +20,7 @@ module Bhf
|
|
28
20
|
if file.is_a? ActionDispatch::Http::UploadedFile
|
29
21
|
# File.delete(settings[:path] + name_was.to_s) if File.exist?(settings[:path] + name_was.to_s)
|
30
22
|
|
31
|
-
filename = Time.now.to_i.to_s+'_'+file.original_filename.downcase.sub(/[^\w\.\-]/,'_')
|
23
|
+
filename = Time.now.to_i.to_s+'_'+file.original_filename.downcase.sub(/[^\w\.\-]/, '_')
|
32
24
|
path = File.join(settings[:path], filename)
|
33
25
|
File.open(path, 'w') { |f| f.write(file.read) }
|
34
26
|
filename
|
@@ -40,6 +32,14 @@ module Bhf
|
|
40
32
|
end
|
41
33
|
end
|
42
34
|
|
35
|
+
module ClassMethods
|
36
|
+
def setup_upload(settings)
|
37
|
+
self.bhf_upload_settings = settings.each_with_object([]) do |s, obj|
|
38
|
+
obj << {:path => '', :name => :file}.merge(s)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
data/lib/bhf/data.rb
CHANGED
@@ -66,7 +66,7 @@ module Bhf
|
|
66
66
|
private
|
67
67
|
|
68
68
|
def supported_types(check_type)
|
69
|
-
if [:boolean, :text].include?(check_type)
|
69
|
+
if [:boolean, :text, :array].include?(check_type)
|
70
70
|
check_type
|
71
71
|
elsif type_sym = group_types(check_type)
|
72
72
|
type_sym
|
@@ -91,7 +91,7 @@ module Bhf
|
|
91
91
|
def initialize(reflection, options = {})
|
92
92
|
@reflection = reflection
|
93
93
|
@info = options[:info]
|
94
|
-
@link = options[:link].to_sym
|
94
|
+
@link = options[:link].downcase.to_sym unless options[:link].blank?
|
95
95
|
|
96
96
|
@overwrite_type = options[:overwrite_type].to_sym if options[:overwrite_type]
|
97
97
|
@overwrite_display_type = options[:overwrite_display_type].to_sym if options[:overwrite_display_type]
|
@@ -0,0 +1,138 @@
|
|
1
|
+
module Bhf
|
2
|
+
module Mongoid
|
3
|
+
module Document
|
4
|
+
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
class Field
|
8
|
+
attr_reader :type, :name
|
9
|
+
|
10
|
+
def initialize(mongoid_field)
|
11
|
+
@name = mongoid_field.name
|
12
|
+
@type = mongoid_field.type.to_s.downcase.to_sym
|
13
|
+
@type = :primary_key if @type == :'bson::objectid'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class Reflection
|
18
|
+
attr_reader :name, :macro, :klass, :primary_key_name
|
19
|
+
|
20
|
+
def initialize(mongoid_field)
|
21
|
+
@name = mongoid_field.name
|
22
|
+
@klass = mongoid_field.class_name.constantize
|
23
|
+
@primary_key_name = mongoid_field.key
|
24
|
+
@macro = case mongoid_field.macro
|
25
|
+
when :references_and_referenced_in_many
|
26
|
+
:has_and_belongs_to_many
|
27
|
+
when :references_many
|
28
|
+
:has_many
|
29
|
+
when :references_one
|
30
|
+
:has_one
|
31
|
+
when :referenced_in
|
32
|
+
:belongs_to
|
33
|
+
else
|
34
|
+
mongoid_field.macro
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def to_bhf_s
|
40
|
+
return title if self.respond_to? :title
|
41
|
+
return name if self.respond_to? :name
|
42
|
+
|
43
|
+
if self.respond_to? :attributes
|
44
|
+
return title if attributes['title']
|
45
|
+
return name if attributes['name']
|
46
|
+
return "#{self.class.to_s.humanize} ID: #{send(self.class.primary_key)}" if attributes[self.class.primary_key]
|
47
|
+
end
|
48
|
+
|
49
|
+
self.to_s.humanize
|
50
|
+
end
|
51
|
+
|
52
|
+
module ClassMethods
|
53
|
+
def columns_hash
|
54
|
+
c = {}
|
55
|
+
fields.each_pair do |key, meta|
|
56
|
+
next if meta.options[:metadata]
|
57
|
+
next if key == '_type'
|
58
|
+
c[key] = Field.new(meta)
|
59
|
+
end
|
60
|
+
c
|
61
|
+
end
|
62
|
+
|
63
|
+
def reflections
|
64
|
+
c = {}
|
65
|
+
relations.each do |key, meta|
|
66
|
+
next if meta.macro == :embedded_in
|
67
|
+
c[key.to_sym] = Reflection.new(meta)
|
68
|
+
end
|
69
|
+
c
|
70
|
+
end
|
71
|
+
|
72
|
+
def bhf_primary_key
|
73
|
+
'_id'
|
74
|
+
end
|
75
|
+
|
76
|
+
def except(key)
|
77
|
+
if key == :order || key == :sort
|
78
|
+
#order_by.extras(:sort => []) #TODO: drop default_scope criteria
|
79
|
+
end
|
80
|
+
self
|
81
|
+
end
|
82
|
+
|
83
|
+
def order(a)
|
84
|
+
field, direction = a.split(' ')
|
85
|
+
return self if field.blank? or direction.blank?
|
86
|
+
self.send(direction.downcase, field)
|
87
|
+
end
|
88
|
+
|
89
|
+
def bhf_default_search(search_params)
|
90
|
+
return if (search_term = search_params[:text]).blank?
|
91
|
+
|
92
|
+
# TODO: add mongoid search
|
93
|
+
#return find(:all, :conditions => {:nick => /^antp/i})
|
94
|
+
return where("this.nick == 'antpaw'")
|
95
|
+
end
|
96
|
+
|
97
|
+
def get_embedded_parent(parent_id, &block)
|
98
|
+
relations.each do |key, meta|
|
99
|
+
next unless meta.macro == :embedded_in
|
100
|
+
parent = meta.class_name.constantize
|
101
|
+
parent = parent.find(parent_id) rescue nil
|
102
|
+
|
103
|
+
if parent
|
104
|
+
return parent unless block_given?
|
105
|
+
return block.call(parent, meta)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def bhf_new_embed(parent_id, params = nil)
|
111
|
+
get_embedded_parent parent_id do |parent, meta|
|
112
|
+
if parent.relations[meta.inverse_of.to_s].macro == :embeds_one
|
113
|
+
parent.send("build_#{meta.inverse_of}", params)
|
114
|
+
else
|
115
|
+
parent.send(meta.inverse_of).build(params)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
def bhf_find_embed(parent_id, ref_id)
|
121
|
+
get_embedded_parent parent_id do |parent, meta|
|
122
|
+
relation = parent.send(meta.inverse_of)
|
123
|
+
if parent.relations[meta.inverse_of.to_s].macro == :embeds_one
|
124
|
+
relation
|
125
|
+
else
|
126
|
+
relation.find(ref_id)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def bhf_embedded?
|
132
|
+
embedded?
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
data/lib/bhf/pagination.rb
CHANGED
@@ -1,3 +1,31 @@
|
|
1
|
+
module Kaminari
|
2
|
+
module Helpers
|
3
|
+
class Tag
|
4
|
+
def initialize(template, options = {}) #:nodoc:
|
5
|
+
@template, @options = template, options.dup
|
6
|
+
@param_name = @options.delete(:param_name)
|
7
|
+
@theme = @options[:theme] ? "#{@options.delete(:theme)}/" : ''
|
8
|
+
@params = @options[:params] ? template.params.merge(@options.delete :params) : template.params
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_s(locals = {}) #:nodoc:
|
12
|
+
@template.render :partial => "kaminari/#{@theme}#{self.class.name.demodulize.underscore}", :locals => @options.merge(locals)
|
13
|
+
end
|
14
|
+
|
15
|
+
def page_url_for(page)
|
16
|
+
if @param_name.is_a?(Array)
|
17
|
+
@params[@param_name[0]] = (@params[@param_name[0]] || {}).merge(@param_name[1] => (page <= 1 ? nil : page))
|
18
|
+
return @template.url_for @params
|
19
|
+
end
|
20
|
+
|
21
|
+
@template.url_for @params.merge(@param_name => (page <= 1 ? nil : page))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
# TODO: lets hope they fix nested params and we can remove this
|
27
|
+
|
28
|
+
|
1
29
|
module Bhf
|
2
30
|
|
3
31
|
class Pagination
|
@@ -13,15 +41,14 @@ module Bhf
|
|
13
41
|
def create(platform)
|
14
42
|
platform_params = template.params[platform.name] || {}
|
15
43
|
|
16
|
-
if page_links = template.
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
links = load_less(platform)
|
44
|
+
links = if !(page_links = template.paginate(platform.objects, {
|
45
|
+
:theme => 'bhf',
|
46
|
+
:param_name => [platform.name, 'page'],
|
47
|
+
:params => template.params
|
48
|
+
})).blank?
|
49
|
+
"#{load_more(platform)} #{page_links}"
|
50
|
+
elsif platform.objects.num_pages == 1 && platform.objects.size > @offset_to_add
|
51
|
+
load_less(platform)
|
25
52
|
end
|
26
53
|
|
27
54
|
if links
|
@@ -31,21 +58,17 @@ module Bhf
|
|
31
58
|
|
32
59
|
def info(platform, options = {})
|
33
60
|
collection = platform.objects
|
34
|
-
|
35
|
-
unless collection.respond_to?(:total_pages)
|
36
|
-
collection = collection.paginate({:page => 1, :per_page => collection.count+1})
|
37
|
-
end
|
38
61
|
|
39
|
-
if collection.
|
62
|
+
if collection.respond_to?(:num_pages) and collection.num_pages > 1
|
40
63
|
I18n.t('bhf.pagination.info.default', {
|
41
64
|
:name => platform.title,
|
42
|
-
:count => collection.
|
43
|
-
:offset_start => collection.
|
44
|
-
:offset_end => collection.
|
65
|
+
:count => collection.total_count,
|
66
|
+
:offset_start => collection.offset_value + 1,
|
67
|
+
:offset_end => collection.offset_value + collection.length
|
45
68
|
})
|
46
69
|
else
|
47
70
|
I18n.t('bhf.pagination.info', {
|
48
|
-
:name_zero => platform.
|
71
|
+
:name_zero => platform.title,
|
49
72
|
:name_singular => platform.title_singular,
|
50
73
|
:name_plural => platform.title,
|
51
74
|
:count => collection.size
|
@@ -79,29 +102,6 @@ module Bhf
|
|
79
102
|
def load_less(platform, attributes = {})
|
80
103
|
load_more(platform, attributes, false)
|
81
104
|
end
|
82
|
-
|
83
|
-
|
84
|
-
class LinkRenderer < WillPaginate::ViewHelpers::LinkRenderer
|
85
|
-
|
86
|
-
def initialize(bhf_pagination, platform)
|
87
|
-
@b_p = bhf_pagination
|
88
|
-
@platform = platform
|
89
|
-
end
|
90
|
-
|
91
|
-
def link(text, page, attributes = {})
|
92
|
-
platform_params = @b_p.template.params[@platform.name] || {}
|
93
|
-
platform_params[:page] = page
|
94
|
-
|
95
|
-
@b_p.template.link_to(
|
96
|
-
text,
|
97
|
-
@b_p.template.bhf_page_path(
|
98
|
-
@platform.page_name,
|
99
|
-
@b_p.template.params.merge(@platform.name => platform_params)
|
100
|
-
), {:class => 'page_number'}.merge(attributes)
|
101
|
-
)
|
102
|
-
end
|
103
|
-
|
104
|
-
end
|
105
105
|
|
106
106
|
end
|
107
|
-
end
|
107
|
+
end
|
data/lib/bhf/platform.rb
CHANGED
@@ -66,14 +66,13 @@ module Bhf
|
|
66
66
|
chain = do_search(chain, options[:search])
|
67
67
|
end
|
68
68
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
chain = chain.all
|
69
|
+
|
70
|
+
chain = if paginate_options && !sortable
|
71
|
+
chain.page(paginate_options[:page]).per(paginate_options[:per_page])
|
72
|
+
elsif chain == model
|
73
|
+
chain.all
|
75
74
|
end
|
76
|
-
|
75
|
+
|
77
76
|
@objects = chain
|
78
77
|
end
|
79
78
|
|
@@ -172,7 +171,7 @@ module Bhf
|
|
172
171
|
:overwrite_type => form_options(:types, name),
|
173
172
|
:overwrite_display_type => table_options(:types, name),
|
174
173
|
:info => I18n.t("bhf.platforms.#{@name}.infos.#{name}", :default => '')
|
175
|
-
}, model.
|
174
|
+
}, model.bhf_primary_key)
|
176
175
|
end
|
177
176
|
|
178
177
|
model.reflections.each_pair do |name, props|
|
@@ -184,7 +183,7 @@ module Bhf
|
|
184
183
|
})
|
185
184
|
|
186
185
|
fk = all[name.to_s].reflection.primary_key_name
|
187
|
-
if all.has_key?(fk)
|
186
|
+
if all.has_key?(fk) and fk != name.to_s
|
188
187
|
all.delete(fk)
|
189
188
|
end
|
190
189
|
end
|