bhf 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/README.md +0 -0
  2. data/app/controllers/bhf/application_controller.rb +77 -0
  3. data/app/controllers/bhf/entries_controller.rb +123 -0
  4. data/app/controllers/bhf/pages_controller.rb +49 -0
  5. data/app/helpers/bhf/application_helper.rb +22 -0
  6. data/app/helpers/bhf/entries_helper.rb +16 -0
  7. data/app/helpers/bhf/pages_helper.rb +30 -0
  8. data/app/views/bhf/_footer.haml +11 -0
  9. data/app/views/bhf/application/index.haml +3 -0
  10. data/app/views/bhf/entries/_form.haml +14 -0
  11. data/app/views/bhf/entries/_validation_errors.haml +5 -0
  12. data/app/views/bhf/entries/edit.haml +2 -0
  13. data/app/views/bhf/entries/form/belongs_to/_radio.haml +7 -0
  14. data/app/views/bhf/entries/form/belongs_to/_select.haml +6 -0
  15. data/app/views/bhf/entries/form/belongs_to/_static.haml +9 -0
  16. data/app/views/bhf/entries/form/column/_boolean.haml +2 -0
  17. data/app/views/bhf/entries/form/column/_date.haml +2 -0
  18. data/app/views/bhf/entries/form/column/_file.haml +2 -0
  19. data/app/views/bhf/entries/form/column/_markdown.haml +3 -0
  20. data/app/views/bhf/entries/form/column/_number.haml +2 -0
  21. data/app/views/bhf/entries/form/column/_static.haml +8 -0
  22. data/app/views/bhf/entries/form/column/_string.haml +2 -0
  23. data/app/views/bhf/entries/form/column/_text.haml +2 -0
  24. data/app/views/bhf/entries/form/column/_wysiwyg.haml +3 -0
  25. data/app/views/bhf/entries/form/has_and_belongs_to_many/_check_box.haml +4 -0
  26. data/app/views/bhf/entries/form/has_and_belongs_to_many/_static.haml +12 -0
  27. data/app/views/bhf/entries/form/has_many/_static.haml +12 -0
  28. data/app/views/bhf/entries/form/has_one/_static.haml +9 -0
  29. data/app/views/bhf/entries/new.haml +2 -0
  30. data/app/views/bhf/helper/_field_errors.haml +4 -0
  31. data/app/views/bhf/helper/_flash.haml +4 -0
  32. data/app/views/bhf/helper/_info.haml +2 -0
  33. data/app/views/bhf/helper/_node.haml +6 -0
  34. data/app/views/bhf/helper/_reflection_node.haml +7 -0
  35. data/app/views/bhf/pages/_platform.haml +41 -0
  36. data/app/views/bhf/pages/macro/belongs_to/_default.haml +2 -0
  37. data/app/views/bhf/pages/macro/column/_boolean.haml +1 -0
  38. data/app/views/bhf/pages/macro/column/_date.haml +1 -0
  39. data/app/views/bhf/pages/macro/column/_number.haml +1 -0
  40. data/app/views/bhf/pages/macro/column/_primary_key.haml +1 -0
  41. data/app/views/bhf/pages/macro/column/_string.haml +1 -0
  42. data/app/views/bhf/pages/macro/column/_text.haml +1 -0
  43. data/app/views/bhf/pages/macro/has_and_belongs_to_many/_default.haml +2 -0
  44. data/app/views/bhf/pages/macro/has_many/_default.haml +2 -0
  45. data/app/views/bhf/pages/macro/has_one/_default.haml +2 -0
  46. data/app/views/bhf/pages/show.haml +3 -0
  47. data/app/views/layouts/bhf/default.haml +27 -0
  48. data/app/views/layouts/bhf/quick_edit.haml +5 -0
  49. data/config/locales/en.yml +56 -0
  50. data/config/routes.rb +14 -0
  51. data/lib/bhf/active_record.rb +18 -0
  52. data/lib/bhf/data.rb +127 -0
  53. data/lib/bhf/form.rb +35 -0
  54. data/lib/bhf/pagination.rb +111 -0
  55. data/lib/bhf/platform.rb +202 -0
  56. data/lib/bhf/settings.rb +40 -0
  57. data/lib/bhf.rb +13 -0
  58. data/lib/engine.rb +19 -0
  59. data/lib/rails/generators/bhf/templates/initializer.rb +9 -0
  60. data/public/javascripts/bhf.js +0 -0
  61. data/public/stylesheets/bhf.css +1 -0
  62. data/test/test_helper.rb +55 -0
  63. metadata +169 -0
data/README.md ADDED
File without changes
@@ -0,0 +1,77 @@
1
+ class Bhf::ApplicationController < ActionController::Base
2
+
3
+ protect_from_forgery
4
+
5
+ before_filter :init_time, :check_admin_account, :load_config, :set_title
6
+
7
+ helper_method :entry_path, :new_entry_path, :entries_path, :edit_entry_path
8
+ layout 'bhf/default'
9
+
10
+ def index
11
+
12
+ end
13
+
14
+
15
+ private
16
+
17
+ def check_admin_account
18
+ auth_logic = Bhf::Engine.config.auth_logic_from.constantize.new
19
+
20
+ if auth_logic.respond_to?(:current_admin_account) && auth_logic.current_admin_account
21
+ return true
22
+ else
23
+ redirect_to(root_url, :error => I18t.t('bhf.helpers.login.error')) and return false
24
+ end
25
+ end
26
+
27
+ def load_config
28
+ @config = Bhf::Settings.new(
29
+ YAML::load(IO.read('config/bhf.yml'))
30
+ # Bhf::Engine.config.bhf_logic
31
+ )
32
+ end
33
+
34
+
35
+ def new_entry_path(platform, extra_params = {})
36
+ new_bhf_entry_path platform, extra_params
37
+ end
38
+
39
+ def entries_path(platform, extra_params = {})
40
+ bhf_entries_path platform, extra_params
41
+ end
42
+
43
+ def entry_path(platform, object, extra_params = {})
44
+ bhf_entry_path platform, object, extra_params
45
+ end
46
+
47
+ def edit_entry_path(platform, object, extra_params = {})
48
+ edit_bhf_entry_path platform, object, extra_params
49
+ end
50
+
51
+
52
+ def set_title
53
+ @title = Bhf::Engine.config.page_title ||
54
+ Rails.application.class.to_s.split('::').first+' — Admin'
55
+ end
56
+
57
+ def set_message(type, model = nil)
58
+ key = model && ActiveModel::Naming.singular(model)
59
+
60
+ I18n.t("bhf.activerecord.notices.models.#{key}.#{type}", :model => model.model_name.human, :default => I18n.t("activerecord.notices.messages.#{type}"))
61
+ end
62
+
63
+ def init_time
64
+ @start_time = Time.now
65
+ end
66
+
67
+
68
+ def store_location
69
+ session[:return_to] = request.fullpath
70
+ end
71
+
72
+ def redirect_back_or_default(default, msg)
73
+ redirect_to(session[:return_to] || default, msg)
74
+ session[:return_to] = nil
75
+ end
76
+
77
+ end
@@ -0,0 +1,123 @@
1
+ class Bhf::EntriesController < Bhf::ApplicationController
2
+ before_filter :load_platform, :load_model, :set_page, :set_quick_edit
3
+ before_filter :load_object, :except => [:create, :new]
4
+
5
+ def new
6
+ @object = @model.new
7
+ after_load
8
+
9
+ @form_url = entries_path(@platform.name, @model)
10
+ end
11
+
12
+ def edit
13
+ @form_url = entry_path(@platform.name, @object)
14
+
15
+ if @quick_edit
16
+ render :layout => 'bhf/quick_edit'
17
+ end
18
+ end
19
+
20
+ def create
21
+ @object = @model.new(params[@model_sym])
22
+ after_load
23
+
24
+ before_save
25
+ if @object.save
26
+ manage_many_to_many
27
+ after_save
28
+
29
+ redirect_back_or_default(entry_path(@platform.name, @object), :notice => set_message('create.success', @model))
30
+ else
31
+ @form_url = entries_path(@platform.name, @model)
32
+ render :new
33
+ end
34
+ end
35
+
36
+ def update
37
+ before_save
38
+
39
+ if @object.update_attributes(params[@model_sym])
40
+ manage_many_to_many
41
+ after_save
42
+
43
+ if @quick_edit
44
+ render :json => object_to_bhf_display_hash, :status => :ok
45
+ else
46
+ redirect_back_or_default(entry_path(@platform.name, @object), :notice => set_message('update.success', @model))
47
+ end
48
+ else
49
+ @form_url = entry_path(@platform.name, @object)
50
+
51
+ if @quick_edit
52
+ render :edit, :status => :unprocessable_entity, :layout => 'bhf/quick_edit'
53
+ end
54
+ end
55
+ end
56
+
57
+ def destroy
58
+ @object.destroy
59
+ redirect_back_or_default(bhf_root_url, :notice => set_message('destory.success', @model))
60
+ end
61
+
62
+ private
63
+
64
+ def object_to_bhf_display_hash
65
+ @platform.columns.each_with_object({:to_bhf_s => @object.to_bhf_s}) do |column, hash|
66
+ unless column.field.macro == :column && @object.send(column.name).blank?
67
+ p = "bhf/pages/macro/#{column.field.macro}/#{column.field.display_type}"
68
+ hash[column.name] = render_to_string :partial => p, :locals => {:column => column, :object => @object}
69
+ end
70
+ end
71
+ end
72
+
73
+ def load_platform
74
+ @platform = @config.find_platform(params[:platform])
75
+ end
76
+
77
+ def load_model
78
+ @model = @platform.model
79
+ @model_sym = ActiveModel::Naming.singular(@model).to_sym
80
+ end
81
+
82
+ def load_object
83
+ @object = @model.find(params[:id])
84
+ after_load
85
+ end
86
+
87
+ def manage_many_to_many
88
+ return unless params[:has_and_belongs_to_many]
89
+ params[:has_and_belongs_to_many].each_pair do |relation, ids|
90
+ reflection = @model.reflections[relation.to_sym]
91
+
92
+ @object.send(reflection.name).delete_all
93
+
94
+ ids = ids.values.reject(&:blank?)
95
+
96
+ return if ids.blank?
97
+
98
+ reflection.klass.find(ids).each do |relation_obj|
99
+ @object.send(relation) << relation_obj
100
+ end
101
+ end
102
+ end
103
+
104
+ def after_load
105
+ @object.send(@platform.hooks(:after_load)) if @platform.hooks(:after_load)
106
+ end
107
+
108
+ def before_save
109
+ @object.send(@platform.hooks(:before_save), params) if @platform.hooks(:before_save)
110
+ end
111
+
112
+ def after_save
113
+ @object.send(@platform.hooks(:after_save), params) if @platform.hooks(:after_save)
114
+ end
115
+
116
+ def set_page
117
+ @page = @platform.page_name
118
+ end
119
+
120
+ def set_quick_edit
121
+ @quick_edit = request.xhr?
122
+ end
123
+ end
@@ -0,0 +1,49 @@
1
+ class Bhf::PagesController < Bhf::ApplicationController
2
+ before_filter :set_page, :store_location
3
+
4
+ def show
5
+ platform_options = @config.content_for_page(@page)
6
+
7
+ @pagination = Bhf::Pagination.new(2, 3)
8
+
9
+ if request.xhr?
10
+ params.each do |key, value|
11
+ return render_platform(key) if value.is_a?(Hash)
12
+ end
13
+ end
14
+
15
+ @platforms = platform_options.each_with_object([]) do |opts, obj|
16
+ platform = Bhf::Platform.new(opts, @page)
17
+ platform.paginated_objects = paginate_platform_objects(platform)
18
+ obj << platform
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def render_platform(platform_name)
25
+ @platform = @config.find_platform(platform_name)
26
+
27
+ @platform.paginated_objects = paginate_platform_objects(@platform)
28
+
29
+ render '_platform', :layout => false
30
+ end
31
+
32
+ def set_page
33
+ @page = params[:page]
34
+ end
35
+
36
+ def check_params(platform)
37
+ page = 1
38
+ page = params[platform][:page].to_i if params[platform] && !params[platform][:page].blank?
39
+ per_page = @pagination.offset_per_page
40
+ per_page = params[platform][:per_page].to_i if params[platform] && !params[platform][:per_page].blank?
41
+
42
+ return :page => page, :per_page => per_page
43
+ end
44
+
45
+ def paginate_platform_objects(platform)
46
+ platform.prepare_objects(params[platform.name] || {}).paginate(check_params(platform.name))
47
+ end
48
+
49
+ end
@@ -0,0 +1,22 @@
1
+ module Bhf
2
+ module ApplicationHelper
3
+
4
+
5
+ def new_t(platform)
6
+ t("bhf.helpers.entry.models.#{platform.model_name}.new", :platform_name => platform.title.singularize, :default => t('bhf.helpers.entry.new'))
7
+ end
8
+
9
+ def edit_t(platform)
10
+ t("bhf.helpers.entry.models.#{platform.model_name}.edit", :platform_name => platform.title.singularize, :default => t('bhf.helpers.entry.edit'))
11
+ end
12
+
13
+ def delete_t(platform)
14
+ t("bhf.helpers.entry.models.#{platform.model_name}.delete", :platform_name => platform.title.singularize, :default => t('bhf.helpers.entry.delete'))
15
+ end
16
+
17
+ def current_path(overwrite = {})
18
+ url_for params.merge(overwrite.merge(:only_path => true))
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,16 @@
1
+ module Bhf
2
+ module EntriesHelper
3
+
4
+ def node(f, field, &block)
5
+ render :partial => 'bhf/helper/node', :locals => {:f => f, :field => field, :input => with_output_buffer(&block)}
6
+ end
7
+
8
+ def reflection_node(f, field, &block)
9
+ return if field.form_type === :static && f.object.new_record? && f.object.send(field.reflection.name).blank?
10
+ render :partial => 'bhf/helper/reflection_node', :locals => {
11
+ :f => f, :field => field, :input => with_output_buffer(&block)
12
+ }
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,30 @@
1
+ module Bhf
2
+ module PagesHelper
3
+
4
+ def get_value(key, platform_name)
5
+ params[platform_name][key] if params[platform_name] && params[platform_name][key]
6
+ end
7
+
8
+ def current_order_path(order_by, platform_name)
9
+ params_platfrom = params[platform_name] ? params[platform_name].clone : {}
10
+
11
+ if params_platfrom['order'] === order_by && params_platfrom['direction'] != 'desc'
12
+ params_platfrom['direction'] = 'desc'
13
+ else
14
+ params_platfrom['direction'] = 'asc'
15
+ end
16
+
17
+ params_platfrom['order'] = order_by
18
+
19
+ url_for platform_name => params_platfrom
20
+ end
21
+
22
+ def order_class(order_by, platform_name)
23
+ params_platfrom = params[platform_name] ? params[platform_name] : {}
24
+ return unless params_platfrom['order'] === order_by
25
+
26
+ params_platfrom['direction'] === 'desc' ? 'sorted desc' : 'sorted asc'
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,11 @@
1
+ %p.stats= "Page rendered in ~#{(Time.now-@start_time).round(2)} seconds"
2
+ %p.copy
3
+ Made by
4
+ = link_to '@antpaw', 'http://twitter.com/antpaw'
5
+ with
6
+ = link_to 'Rails 3', 'http://twitter.com/antpaw'
7
+ and
8
+ = link_to 'MooTools', 'http://mootools.net/'
9
+ %p.info
10
+ More information on
11
+ = link_to 'GitHub', 'http://github.com/antpaw/bahnhof/'
@@ -0,0 +1,3 @@
1
+ %ul
2
+ - @config.pages.each do |page|
3
+ %li= link_to page, bhf_page_path(page)
@@ -0,0 +1,14 @@
1
+ - html = { :id => (:main_form unless @quick_edit), :multipart => @platform.has_file_upload? }
2
+ = form_for @object, :url => @form_url, :builder => Bhf::Form::Builder, :html => html do |f|
3
+
4
+ - if f.object.errors.any?
5
+ = render :partial => 'validation_errors', :locals => {:f => f}
6
+
7
+ - @platform.fields.each do |field|
8
+ - unless field.form_type === :hidden
9
+ = render :partial => "bhf/entries/form/#{field.macro}/#{field.form_type}", :locals => {:f => f, :field => field}
10
+
11
+ - unless @quick_edit
12
+ .node
13
+ .label
14
+ .input= f.submit f.object.new_record? ? new_t(@platform) : edit_t(@platform)
@@ -0,0 +1,5 @@
1
+ .error_explanation
2
+ %h5= t 'bhf.helpers.validation.header', :error => pluralize(f.object.errors.count, t('bhf.helpers.validation.error')), :name => f.object.class.model_name.human
3
+ %ul
4
+ - f.object.errors.each_pair do |name, message|
5
+ %li= f.error_label name, message
@@ -0,0 +1,2 @@
1
+ %h3= edit_t @platform
2
+ = render 'form'
@@ -0,0 +1,7 @@
1
+ = reflection_node f, field do
2
+ - fk = field.reflection.association_foreign_key
3
+ %ul
4
+ - field.reflection.klass.all.each do |obj|
5
+ %li
6
+ = f.radio_button fk, obj.id, :id => "belongs_to_#{fk}_#{obj.id}"
7
+ = label_tag "belongs_to_#{fk}_#{obj.id}", obj.to_bhf_s
@@ -0,0 +1,6 @@
1
+ - fk = field.reflection.association_foreign_key
2
+ .node
3
+ .label= f.label fk
4
+ .input
5
+ = f.select fk, options_from_collection_for_select(field.reflection.klass.all, :id, :to_bhf_s, f.object.send(fk))
6
+ = render :partial => 'bhf/helper/field_errors', :locals => {:f => f, :field => fk}
@@ -0,0 +1,9 @@
1
+ = reflection_node f, field do
2
+ - ref_object = f.object.send(field.reflection.name)
3
+ - if ref_object.blank?
4
+ = t 'bhf.helpers.entry.empty'
5
+ - else
6
+ - if field.link
7
+ = link_to ref_object.to_bhf_s, edit_entry_path(field.link, ref_object), :class => 'quick_edit'
8
+ - else
9
+ = ref_object.to_bhf_s
@@ -0,0 +1,2 @@
1
+ = node f, field do
2
+ = f.check_box field.name
@@ -0,0 +1,2 @@
1
+ = node f, field do
2
+ = f.text_field field.name, :type => 'date'
@@ -0,0 +1,2 @@
1
+ = node f, field do
2
+ = f.file_field field.name
@@ -0,0 +1,3 @@
1
+ -# TODO: markdown editor
2
+ = node f, field do
3
+ = f.text_area field.name, :class => 'markdown'
@@ -0,0 +1,2 @@
1
+ = node f, field do
2
+ = f.text_field field.name, :type => 'number'
@@ -0,0 +1,8 @@
1
+ - if value = f.object.send(field.name)
2
+ = node f, field do
3
+ - if field.display_type === :primary_key
4
+ %strong= value
5
+ - elsif field.display_type === :date
6
+ = l value, :format => :long
7
+ - else
8
+ = value
@@ -0,0 +1,2 @@
1
+ = node f, field do
2
+ = f.text_field field.name
@@ -0,0 +1,2 @@
1
+ = node f, field do
2
+ = f.text_area field.name
@@ -0,0 +1,3 @@
1
+ -# TODO: wysiwyg editor
2
+ = node f, field do
3
+ = f.text_area field.name, :class => 'wysiwyg'
@@ -0,0 +1,4 @@
1
+ = reflection_node f, field do
2
+ %ul
3
+ - field.reflection.klass.all.each do |obj|
4
+ %li= f.many_to_many_check_box obj, field.reflection.name, params
@@ -0,0 +1,12 @@
1
+ = reflection_node f, field do
2
+ - ref_objects = f.object.send(field.reflection.name)
3
+ - if ref_objects.blank?
4
+ = t 'bhf.helpers.entries.empty'
5
+ - else
6
+ %ul
7
+ - ref_objects.each do |ref_object|
8
+ %li
9
+ - if field.link
10
+ = link_to ref_object.to_bhf_s, edit_entry_path(field.link, ref_object), :class => 'quick_edit'
11
+ - else
12
+ = ref_object.to_bhf_s
@@ -0,0 +1,12 @@
1
+ = reflection_node f, field do
2
+ - ref_objects = f.object.send(field.reflection.name)
3
+ - if ref_objects.blank?
4
+ = t 'bhf.helpers.entries.empty'
5
+ - else
6
+ %ul
7
+ - ref_objects.each do |ref_object|
8
+ %li
9
+ - if field.link
10
+ = link_to ref_object.to_bhf_s, edit_entry_path(field.link, ref_object), :class => 'quick_edit'
11
+ - else
12
+ = ref_object.to_bhf_s
@@ -0,0 +1,9 @@
1
+ = reflection_node f, field do
2
+ - ref_object = f.object.send(field.reflection.name)
3
+ - if ref_object.blank?
4
+ = t 'bhf.helpers.entry.empty'
5
+ - else
6
+ - if field.link
7
+ = link_to ref_object.to_bhf_s, edit_entry_path(field.link, ref_object), :class => 'quick_edit'
8
+ - else
9
+ = ref_object.to_bhf_s
@@ -0,0 +1,2 @@
1
+ %h3= new_t @platform
2
+ = render 'form'
@@ -0,0 +1,4 @@
1
+ - if f.field_has_errors?(field)
2
+ %ul.errors
3
+ - f.field_errors(field).each do |error|
4
+ %li= error
@@ -0,0 +1,4 @@
1
+ - unless flash.blank?
2
+ %ul#flash_massages
3
+ - flash.each_pair do |key, value|
4
+ %li{:class => key}= value
@@ -0,0 +1,2 @@
1
+ - if info
2
+ %p.info= info
@@ -0,0 +1,6 @@
1
+ .node{:class => field.display_type}
2
+ .label= f.label field.name
3
+ .input
4
+ = input
5
+ = render :partial => 'bhf/helper/field_errors', :locals => {:f => f, :field => field.name}
6
+ = render :partial => 'bhf/helper/info', :locals => {:info => field.info}
@@ -0,0 +1,7 @@
1
+ .node
2
+ .label
3
+ %p= f.object.class.human_attribute_name(field.reflection.name)
4
+ .input
5
+ = input
6
+ = render :partial => 'bhf/helper/field_errors', :locals => {:f => f, :field => field.reflection.name}
7
+ = render :partial => 'bhf/helper/info', :locals => {:info => field.info}
@@ -0,0 +1,41 @@
1
+ - @pagination.template = self
2
+ %table{:class => (@platform.custom_columns? ? 'custom_columns' : 'default_columns')}
3
+ %caption
4
+ %h4= @platform.title
5
+ %p.info= @pagination.info @platform, :entry_name => 'entry'
6
+
7
+ - if @platform.search?
8
+ = form_for @platform.name, :html => {:method => 'get', :class => 'search'} do |f|
9
+ = f.text_field :search, :value => get_value(:search, @platform.name), :placeholder => t('bhf.helpers.searchform.placeholder')
10
+ = f.hidden_field :per_page, :value => get_value(:per_page, @platform.name)
11
+ = f.hidden_field :order, :value => get_value(:order, @platform.name)
12
+ = f.hidden_field :direction, :value => get_value(:direction, @platform.name)
13
+
14
+ %p.create= link_to new_t(@platform), new_entry_path(@platform.name), :class => 'alt_button'
15
+
16
+ %thead
17
+ %tr
18
+ - @platform.columns.each do |column|
19
+ %th{:class => "#{column.field.macro} #{column.field.display_type} #{order_class(column.name, @platform.name)}"}
20
+ - column_name = @platform.model.human_attribute_name(column.name)
21
+ - link = link_to column_name, current_order_path(column.name, @platform.name)
22
+ = column.field.macro == :column ? link : column_name
23
+
24
+ %th.action
25
+ %tfoot
26
+ %tr
27
+ %td{:colspan => @platform.columns.count+1}
28
+ = @pagination.paginate @platform
29
+ %tbody
30
+ - @platform.paginated_objects.each do |object|
31
+ - edit_link = edit_entry_path(@platform.name, object)
32
+ %tr
33
+ - @platform.columns.each do |column|
34
+ %td{:class => "#{column.field.macro} #{column.field.display_type}", :'data-column-name' => column.name}
35
+ - unless column.field.macro == :column && object.send(column.name).blank?
36
+ = link_to edit_link, :class => 'quick_edit' do
37
+ - p = "bhf/pages/macro/#{column.field.macro}/#{column.field.display_type}"
38
+ = render :partial => p, :locals => {:column => column, :object => object}
39
+ %td.action
40
+ = link_to edit_t(@platform), edit_link, :class => 'edit'
41
+ = link_to delete_t(@platform), entry_path(@platform.name, object), :method => :delete, :confirm => t('bhf.helpers.promts.confirm'), :remote => true, :class => 'delete'
@@ -0,0 +1,2 @@
1
+ - ref_object = object.send(column.name)
2
+ = ref_object.blank? ? t('bhf.helpers.entry.empty') : ref_object.to_bhf_s
@@ -0,0 +1 @@
1
+ = object.send(column.name)
@@ -0,0 +1 @@
1
+ = l(object.send(column.name), :format => :short)
@@ -0,0 +1 @@
1
+ = object.send(column.name)
@@ -0,0 +1 @@
1
+ %strong= object.send(column.name)
@@ -0,0 +1 @@
1
+ = object.send(column.name)
@@ -0,0 +1 @@
1
+ = object.send(column.name)
@@ -0,0 +1,2 @@
1
+ - ref_objects = object.send(column.name)
2
+ = ref_objects.blank? ? t('bhf.helpers.entries.empty') : ref_objects.collect(&:to_bhf_s).join(', ')
@@ -0,0 +1,2 @@
1
+ - ref_objects = object.send(column.name)
2
+ = ref_objects.blank? ? t('bhf.helpers.entries.empty') : ref_objects.collect(&:to_bhf_s).join(', ')
@@ -0,0 +1,2 @@
1
+ - ref_object = object.send(column.name)
2
+ = ref_object.blank? ? t('bhf.helpers.entry.empty') : ref_object.to_bhf_s
@@ -0,0 +1,3 @@
1
+ %h2= t('bhf.pages.headline')
2
+ - @platforms.each do |@platform|
3
+ .platform= render 'platform'
@@ -0,0 +1,27 @@
1
+ !!!
2
+ %html{:lang => I18n.locale}
3
+ %head
4
+ %meta{:charset => 'utf-8'}
5
+ %title= @title
6
+ = csrf_meta_tag
7
+ %link{:href => '/favicon.ico', :rel => 'icon', :type => 'image/x-icon'}
8
+ = stylesheet_link_tag 'bhf'
9
+ =# javascript_include_tag 'bhf'
10
+ = javascript_include_tag 'mootools-core-1.3-full-nocompat-yc.js', 'mootools-more', 'mootools_rails_driver-0.4.1.js', 'class/BrowserUpdate', 'class/Ajaxify', 'class/AjaxEdit', 'bhf_application'
11
+
12
+ %body
13
+ %header
14
+ %h1= @title
15
+ %nav
16
+ %ul
17
+ - @config.pages.each do |page|
18
+ %li{:class => ('active' if @page == page)}
19
+ = link_to page, bhf_page_path(page)
20
+
21
+ #content
22
+ #main
23
+ = render :partial => 'bhf/helper/flash', :locals => {:flash => flash}
24
+ = yield
25
+
26
+ %footer= render 'bhf/footer'
27
+
@@ -0,0 +1,5 @@
1
+ %a.alt_button.cancel= t('bhf.quick_edit.buttons.cancel')
2
+ %a.alt_button.open= t('bhf.quick_edit.buttons.open')
3
+ = yield
4
+ %a.button.save= t('bhf.quick_edit.buttons.save')
5
+ %a.button.save_and_next= t('bhf.quick_edit.buttons.save_and_next')