bhf 0.3.10 → 0.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|