interview 0.1.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/interview.gemspec +1 -0
- data/lib/{generators/interview/install/templates → assets/javascripts}/interview.js.coffee +17 -25
- data/lib/{generators/interview/install/templates/bootstrap_interview.css.scss → assets/stylesheets/interview.css.scss} +3 -2
- data/lib/generators/interview/install/install_generator.rb +0 -2
- data/lib/generators/interview/install/templates/interview.rb +1 -1
- data/lib/interview.rb +65 -51
- data/lib/interview/association_methods.rb +2 -0
- data/lib/interview/builder.rb +32 -24
- data/lib/interview/control.rb +25 -7
- data/lib/interview/controls/actionbar.rb +41 -0
- data/lib/interview/controls/alert.rb +15 -0
- data/lib/interview/{association_attribute.rb → controls/association_attribute.rb} +8 -8
- data/lib/interview/{association_list_attribute.rb → controls/association_list_attribute.rb} +10 -9
- data/lib/interview/controls/attribute.rb +80 -0
- data/lib/interview/controls/auto_attribute.rb +16 -0
- data/lib/interview/controls/boolean_attribute.rb +20 -0
- data/lib/interview/controls/breadcrumbs.rb +15 -0
- data/lib/interview/controls/button.rb +25 -0
- data/lib/interview/controls/caret.rb +9 -0
- data/lib/interview/controls/collapse_container.rb +16 -0
- data/lib/interview/controls/container.rb +5 -0
- data/lib/interview/controls/container_attribute.rb +28 -0
- data/lib/interview/controls/date_attribute.rb +23 -0
- data/lib/interview/controls/datetime_attribute.rb +22 -0
- data/lib/interview/controls/decimal_attribute.rb +12 -0
- data/lib/interview/controls/dropdown.rb +35 -0
- data/lib/interview/controls/form.rb +35 -0
- data/lib/interview/controls/form_errors.rb +20 -0
- data/lib/interview/controls/glyphicon.rb +19 -0
- data/lib/interview/controls/grid.rb +62 -0
- data/lib/interview/controls/hidden_attribute.rb +11 -0
- data/lib/interview/controls/horizontal_form_container.rb +13 -0
- data/lib/interview/controls/html_control.rb +13 -0
- data/lib/interview/controls/html_doctype.rb +9 -0
- data/lib/interview/controls/html_headers.rb +12 -0
- data/lib/interview/{html_text_attribute.rb → controls/html_text_attribute.rb} +9 -5
- data/lib/interview/controls/image_attribute.rb +61 -0
- data/lib/interview/controls/image_gallery_attribute.rb +72 -0
- data/lib/interview/controls/image_light_box.rb +17 -0
- data/lib/interview/{integer_attribute.rb → controls/integer_attribute.rb} +0 -0
- data/lib/interview/controls/link.rb +90 -0
- data/lib/interview/controls/list.rb +20 -0
- data/lib/interview/controls/media_object.rb +37 -0
- data/lib/interview/controls/navigation.rb +11 -0
- data/lib/interview/controls/navigation_item.rb +33 -0
- data/lib/interview/controls/nested_form.rb +45 -0
- data/lib/interview/controls/nested_form_add_images.rb +15 -0
- data/lib/interview/controls/nested_form_add_link.rb +29 -0
- data/lib/interview/controls/nested_form_remove_link.rb +12 -0
- data/lib/interview/{option_attribute.rb → controls/option_attribute.rb} +19 -19
- data/lib/interview/controls/pagination.rb +12 -0
- data/lib/interview/controls/panel.rb +13 -0
- data/lib/interview/{polymorphic_add_link.rb → controls/polymorphic_add_link.rb} +1 -1
- data/lib/interview/controls/polymorphic_nested_form.rb +17 -0
- data/lib/interview/{nested_form_add_link.rb → controls/polymorphic_nested_form_add_link.rb} +12 -28
- data/lib/interview/controls/progress_bar.rb +18 -0
- data/lib/interview/controls/scaffold_card.rb +27 -0
- data/lib/interview/controls/scaffold_form.rb +108 -0
- data/lib/interview/controls/search_form.rb +25 -0
- data/lib/interview/controls/section.rb +16 -0
- data/lib/interview/{space.rb → controls/space.rb} +5 -6
- data/lib/interview/{string_attribute.rb → controls/string_attribute.rb} +0 -0
- data/lib/interview/controls/submit.rb +14 -0
- data/lib/interview/controls/tab.rb +27 -0
- data/lib/interview/controls/tab_box.rb +21 -0
- data/lib/interview/controls/text.rb +33 -0
- data/lib/interview/{text_attribute.rb → controls/text_attribute.rb} +7 -5
- data/lib/interview/controls/tooltip.rb +21 -0
- data/lib/interview/{tree.rb → controls/tree.rb} +2 -3
- data/lib/interview/{view.rb → controls/view.rb} +4 -6
- data/lib/interview/engine.rb +4 -0
- data/lib/interview/handler.rb +15 -0
- data/lib/interview/has_html_options.rb +29 -0
- data/lib/interview/meta_control.rb +18 -0
- data/lib/interview/nested_buildable.rb +17 -0
- data/lib/interview/version.rb +1 -1
- metadata +84 -54
- data/lib/interview/actionbar.rb +0 -39
- data/lib/interview/attribute.rb +0 -166
- data/lib/interview/boolean_attribute.rb +0 -59
- data/lib/interview/breadcrumbs.rb +0 -21
- data/lib/interview/button.rb +0 -29
- data/lib/interview/collapse_container.rb +0 -31
- data/lib/interview/condition_container.rb +0 -19
- data/lib/interview/container.rb +0 -13
- data/lib/interview/container_attribute.rb +0 -30
- data/lib/interview/date_attribute.rb +0 -20
- data/lib/interview/datetime_attribute.rb +0 -20
- data/lib/interview/decimal_attribute.rb +0 -10
- data/lib/interview/dropdown.rb +0 -39
- data/lib/interview/form.rb +0 -64
- data/lib/interview/form_errors.rb +0 -22
- data/lib/interview/grid.rb +0 -54
- data/lib/interview/has_controls.rb +0 -40
- data/lib/interview/hidden_attribute.rb +0 -15
- data/lib/interview/html_control.rb +0 -21
- data/lib/interview/image_attribute.rb +0 -59
- data/lib/interview/image_gallery_attribute.rb +0 -79
- data/lib/interview/image_light_box.rb +0 -19
- data/lib/interview/link.rb +0 -134
- data/lib/interview/list.rb +0 -26
- data/lib/interview/media_object.rb +0 -27
- data/lib/interview/navigation.rb +0 -55
- data/lib/interview/navigation_item.rb +0 -41
- data/lib/interview/navigation_item_old.rb +0 -26
- data/lib/interview/nested_form.rb +0 -66
- data/lib/interview/nested_form_add_images.rb +0 -33
- data/lib/interview/nested_form_remove_link.rb +0 -28
- data/lib/interview/panel.rb +0 -18
- data/lib/interview/progress_bar.rb +0 -25
- data/lib/interview/search_form.rb +0 -21
- data/lib/interview/tab.rb +0 -21
- data/lib/interview/tab_box.rb +0 -30
- data/lib/interview/text.rb +0 -45
- data/lib/interview/tooltip.rb +0 -38
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d507579cd98098a01a96c41b05d2438c6901c516
|
4
|
+
data.tar.gz: 1552d050ca6ce66b9776bf88fc51a874dc491856
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec3a5e48eaa89103f27a7a7fafa8140a8f08cfc721af7c621d22575882ec80f1245906f115eb11f35b8655197e20dc552afe76b9ae1fc36f8d24c900417c5443
|
7
|
+
data.tar.gz: 8b3c16d387a7e887f890c258d86d78cc015f7eba5e627ae35adf3b48af02a814132e1d5f5df4da01d466984bad57cd02d1bd144c9b642856847228a74f65edd7
|
data/interview.gemspec
CHANGED
@@ -1,33 +1,27 @@
|
|
1
1
|
jQuery ->
|
2
2
|
|
3
|
-
$(".tip").popover(placement: 'top auto')
|
3
|
+
# $(".tip").popover(placement: 'top auto')
|
4
4
|
|
5
|
-
$(
|
5
|
+
$(document).on 'click', '.tip', (e) ->
|
6
6
|
event.preventDefault()
|
7
7
|
|
8
|
-
$(
|
9
|
-
|
10
|
-
$('.tab_box a').click (e) ->
|
8
|
+
$(document).on 'click', '.tab_box a', (e) ->
|
11
9
|
e.preventDefault()
|
12
10
|
$(this).tab('show')
|
13
11
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
$(this).closest(".nested_form").collapse('hide')
|
19
|
-
|
20
|
-
bind_remove_links()
|
12
|
+
$(document).on 'click', '.nested_form_remove_link', (e) ->
|
13
|
+
e.preventDefault()
|
14
|
+
$(this).closest(".nested_form").find(".nested_form_destroy").val("1")
|
15
|
+
$(this).closest(".nested_form").collapse('hide')
|
21
16
|
|
22
|
-
$('.nested_form_add_link'
|
17
|
+
$(document).on 'click', '.nested_form_add_link', (e) ->
|
23
18
|
e.preventDefault()
|
24
19
|
new_id = new Date().getTime()
|
25
20
|
regexp = new RegExp("new_association", "g")
|
26
21
|
html = $(this).data('content').replace(regexp, new_id)
|
27
22
|
$(".nested_forms").append(html)
|
28
|
-
bind_remove_links()
|
29
23
|
|
30
|
-
$('.nested_form_polymorphic_add_link'
|
24
|
+
$(document).on 'click', '.nested_form_polymorphic_add_link', (e) ->
|
31
25
|
e.preventDefault()
|
32
26
|
object_class = $('#add_link_class').children('option:selected').val()
|
33
27
|
if object_class != ''
|
@@ -36,9 +30,8 @@ jQuery ->
|
|
36
30
|
regexp = new RegExp("new_association", "g")
|
37
31
|
html = data[object_class].replace(regexp, new_id)
|
38
32
|
$(".nested_forms").append(html)
|
39
|
-
bind_remove_links()
|
40
33
|
|
41
|
-
$('.polymorphic_add_link'
|
34
|
+
$(document).on 'click', '.polymorphic_add_link', (e) ->
|
42
35
|
e.preventDefault()
|
43
36
|
object_class = $('#add_link_class').children('option:selected').val()
|
44
37
|
if object_class != ''
|
@@ -70,19 +63,19 @@ jQuery ->
|
|
70
63
|
error: (data) ->
|
71
64
|
tree.jstree('refresh')
|
72
65
|
$(tree).before("<div class=\"alert alert-danger\">#{data.responseText}</div>")
|
73
|
-
|
74
|
-
$('.collapse_link'
|
66
|
+
|
67
|
+
$(document).on 'click', '.collapse_link', (e) ->
|
75
68
|
e.preventDefault()
|
76
69
|
$($(this).data('target')).collapse('toggle')
|
77
70
|
|
78
|
-
$('.img-link'
|
71
|
+
$(document).on 'click', '.img-link', (e) ->
|
79
72
|
e.preventDefault()
|
80
73
|
links = $(this).closest('.image-gallery').find('.img-link')
|
81
|
-
target =
|
74
|
+
target = e.target || e.srcElement
|
82
75
|
link = if target.src then target.parentNode else target
|
83
76
|
options = { index: link, event: e }
|
84
77
|
blueimp.Gallery(links, options)
|
85
|
-
|
78
|
+
|
86
79
|
$('.upload_image').fileupload
|
87
80
|
add: (e, data) ->
|
88
81
|
types = /(\.|\/)(gif|jpe?g|png|mov|mpeg|mpeg4|avi)$/i
|
@@ -100,7 +93,7 @@ jQuery ->
|
|
100
93
|
done: (e, data) ->
|
101
94
|
$(this).closest('.image_attribute_container').find('.upload_buffer_id').attr('value', data.result.id)
|
102
95
|
$(this).closest('.image_attribute_container').find('.image').attr('src', data.result.thumb_url)
|
103
|
-
|
96
|
+
|
104
97
|
$('.nested_form_add_images').fileupload
|
105
98
|
add: (e, data) ->
|
106
99
|
types = /(\.|\/)(gif|jpe?g|png|mov|mpeg|mpeg4|avi)$/i
|
@@ -110,7 +103,6 @@ jQuery ->
|
|
110
103
|
data.context = $(this).closest('.nested_form_container').find('.nested_form_script').tmpl(tmpl_data)
|
111
104
|
$(this).closest('.nested_form_container').append(data.context)
|
112
105
|
data.context.find('.progress').collapse('show')
|
113
|
-
bind_remove_links()
|
114
106
|
$("input[name='_method']").attr('name', '__method')
|
115
107
|
data.submit()
|
116
108
|
$("input[name='__method']").attr('name', '_method')
|
@@ -123,7 +115,7 @@ jQuery ->
|
|
123
115
|
done: (e, data) ->
|
124
116
|
data.context.find('.upload_buffer_id').attr('value', data.result.id)
|
125
117
|
data.context.find('.image').attr('src', data.result.thumb_url)
|
126
|
-
|
118
|
+
|
127
119
|
$('.nested_form').each ->
|
128
120
|
nested_form = $(this)
|
129
121
|
upload_buffer_id = $(this).find('.upload_buffer_id').attr('value')
|
@@ -1,4 +1,4 @@
|
|
1
|
-
@import 'font-awesome';
|
1
|
+
/* @import 'font-awesome'; */
|
2
2
|
|
3
3
|
@import 'colors';
|
4
4
|
|
@@ -10,6 +10,7 @@ $navbar-inverse-color: #ffffff;
|
|
10
10
|
$navbar-inverse-link-color: $brand-primary-lighten;
|
11
11
|
$navbar-inverse-link-hover-color: #ffffff;
|
12
12
|
|
13
|
+
@import 'bootstrap-sprockets';
|
13
14
|
@import 'bootstrap';
|
14
15
|
|
15
16
|
$actionbar-padding: 5px !default;
|
@@ -74,7 +75,7 @@ $nav-stacked-link-padding-level2: 5px 15px 5px 45px !default;
|
|
74
75
|
padding: $nav-stacked-link-padding-level1;
|
75
76
|
}
|
76
77
|
> li.level2 > a {
|
77
|
-
padding: $nav-stacked-link-padding-
|
78
|
+
padding: $nav-stacked-link-padding-level2;
|
78
79
|
}
|
79
80
|
}
|
80
81
|
|
@@ -13,10 +13,8 @@ module Interview
|
|
13
13
|
|
14
14
|
def add_assets
|
15
15
|
copy_file "application.css", "app/assets/stylesheets/application.css" # todo: überdenken
|
16
|
-
copy_file "bootstrap_interview.css.scss", "app/assets/stylesheets/bootstrap_interview.css.scss"
|
17
16
|
copy_file "colors.css.scss", "app/assets/stylesheets/colors.css.scss"
|
18
17
|
copy_file "application.js", "app/assets/javascripts/application.js" # todo: überdenken
|
19
|
-
copy_file "interview.js.coffee", "app/assets/javascripts/interview.js.coffee"
|
20
18
|
copy_file "missing_thumb.png", "app/assets/images/missing_thumb.png"
|
21
19
|
copy_file "missing_medium.png", "app/assets/images/missing_medium.png"
|
22
20
|
copy_file "missing_large.png", "app/assets/images/missing_large.png"
|
@@ -1,4 +1,4 @@
|
|
1
1
|
Rails.application.config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
|
2
2
|
Rails.application.config.i18n.default_locale = :de
|
3
3
|
|
4
|
-
|
4
|
+
ActionView::Template.register_template_handler(:iview, ::Interview::Handler)
|
data/lib/interview.rb
CHANGED
@@ -1,66 +1,80 @@
|
|
1
1
|
require "active_support/inflector"
|
2
2
|
require "draper"
|
3
3
|
require "builder"
|
4
|
+
require "bootstrap-sass"
|
4
5
|
|
5
6
|
require "interview/version"
|
6
7
|
|
7
8
|
require "interview/control"
|
8
|
-
require "interview/
|
9
|
-
require "interview/
|
9
|
+
require "interview/meta_control"
|
10
|
+
require "interview/has_html_options"
|
10
11
|
require "interview/builder"
|
12
|
+
require "interview/nested_buildable"
|
13
|
+
require "interview/handler"
|
14
|
+
require "interview/engine"
|
11
15
|
require "interview/object_context"
|
16
|
+
require "interview/association_methods"
|
12
17
|
|
13
|
-
require "interview/
|
14
|
-
require "interview/
|
15
|
-
require "interview/
|
16
|
-
require "interview/
|
17
|
-
require "interview/
|
18
|
-
require "interview/
|
19
|
-
require "interview/
|
20
|
-
require "interview/
|
21
|
-
require "interview/
|
22
|
-
require "interview/
|
23
|
-
require "interview/
|
24
|
-
require "interview/
|
25
|
-
require "interview/
|
26
|
-
require "interview/
|
27
|
-
require "interview/
|
28
|
-
require "interview/
|
29
|
-
require "interview/
|
30
|
-
require "interview/
|
31
|
-
require "interview/
|
32
|
-
|
33
|
-
require "interview/
|
34
|
-
require "interview/
|
35
|
-
require "interview/
|
36
|
-
require "interview/
|
37
|
-
require "interview/
|
38
|
-
require "interview/boolean_attribute"
|
39
|
-
require "interview/date_attribute"
|
40
|
-
require "interview/datetime_attribute"
|
41
|
-
require "interview/option_attribute"
|
42
|
-
require "interview/html_text_attribute"
|
43
|
-
require "interview/image_attribute"
|
44
|
-
require "interview/image_gallery_attribute"
|
45
|
-
require "interview/image_light_box"
|
46
|
-
require "interview/association_attribute"
|
47
|
-
require "interview/association_list_attribute"
|
48
|
-
require "interview/hidden_attribute"
|
49
|
-
require "interview/container_attribute"
|
18
|
+
require "interview/controls/section"
|
19
|
+
require "interview/controls/text"
|
20
|
+
require "interview/controls/html_headers"
|
21
|
+
require "interview/controls/container"
|
22
|
+
require "interview/controls/link"
|
23
|
+
require "interview/controls/dropdown"
|
24
|
+
require "interview/controls/space"
|
25
|
+
require "interview/controls/glyphicon"
|
26
|
+
require "interview/controls/tooltip"
|
27
|
+
require "interview/controls/html_control"
|
28
|
+
require "interview/controls/actionbar"
|
29
|
+
require "interview/controls/grid"
|
30
|
+
require "interview/controls/list"
|
31
|
+
require "interview/controls/tree"
|
32
|
+
require "interview/controls/navigation"
|
33
|
+
require "interview/controls/navigation_item"
|
34
|
+
require "interview/controls/tab_box"
|
35
|
+
require "interview/controls/tab"
|
36
|
+
require "interview/controls/breadcrumbs"
|
37
|
+
require "interview/controls/media_object"
|
38
|
+
require "interview/controls/panel"
|
39
|
+
require "interview/controls/collapse_container"
|
40
|
+
require "interview/controls/pagination"
|
41
|
+
require "interview/controls/html_doctype"
|
42
|
+
require "interview/controls/alert"
|
50
43
|
|
51
|
-
require "interview/
|
52
|
-
require "interview/
|
53
|
-
require "interview/
|
54
|
-
require "interview/
|
55
|
-
require "interview/
|
56
|
-
require "interview/
|
57
|
-
require "interview/
|
58
|
-
require "interview/
|
59
|
-
require "interview/
|
60
|
-
require "interview/
|
61
|
-
require "interview/
|
44
|
+
require "interview/controls/attribute"
|
45
|
+
require "interview/controls/string_attribute"
|
46
|
+
require "interview/controls/text_attribute"
|
47
|
+
require "interview/controls/integer_attribute"
|
48
|
+
require "interview/controls/decimal_attribute"
|
49
|
+
require "interview/controls/boolean_attribute"
|
50
|
+
require "interview/controls/date_attribute"
|
51
|
+
require "interview/controls/datetime_attribute"
|
52
|
+
require "interview/controls/option_attribute"
|
53
|
+
require "interview/controls/html_text_attribute"
|
54
|
+
require "interview/controls/image_attribute"
|
55
|
+
require "interview/controls/image_gallery_attribute"
|
56
|
+
require "interview/controls/image_light_box"
|
57
|
+
require "interview/controls/association_attribute"
|
58
|
+
require "interview/controls/association_list_attribute"
|
59
|
+
require "interview/controls/hidden_attribute"
|
60
|
+
require "interview/controls/container_attribute"
|
62
61
|
|
63
|
-
require "interview/
|
62
|
+
require "interview/controls/view"
|
63
|
+
require "interview/controls/form"
|
64
|
+
require "interview/controls/nested_form"
|
65
|
+
require "interview/controls/nested_form_remove_link"
|
66
|
+
require "interview/controls/nested_form_add_link"
|
67
|
+
require "interview/controls/nested_form_add_images"
|
68
|
+
require "interview/controls/form_errors"
|
69
|
+
require "interview/controls/polymorphic_nested_form"
|
70
|
+
require "interview/controls/polymorphic_add_link"
|
71
|
+
require "interview/controls/search_form"
|
72
|
+
require "interview/controls/submit"
|
73
|
+
require "interview/controls/button"
|
74
|
+
require "interview/controls/progress_bar"
|
75
|
+
require "interview/controls/horizontal_form_container"
|
76
|
+
require "interview/controls/scaffold_card"
|
77
|
+
require "interview/controls/scaffold_form"
|
64
78
|
|
65
79
|
module Interview
|
66
80
|
# Your code goes here...
|
data/lib/interview/builder.rb
CHANGED
@@ -1,49 +1,57 @@
|
|
1
1
|
module Interview
|
2
2
|
class Builder
|
3
3
|
|
4
|
+
attr_accessor :html, :curr_parent
|
5
|
+
|
4
6
|
def initialize(options={})
|
5
|
-
@
|
7
|
+
@html = ::Builder::XmlMarkup.new
|
6
8
|
end
|
7
9
|
|
8
|
-
def
|
9
|
-
@target
|
10
|
+
def render!
|
11
|
+
@html.target!
|
10
12
|
end
|
11
13
|
|
12
|
-
def
|
13
|
-
@
|
14
|
+
def add!(control, &block)
|
15
|
+
if @curr_parent.is_a? MetaControl and not @curr_parent.skip
|
16
|
+
@curr_parent.build_child self, control, &block
|
17
|
+
else
|
18
|
+
control.parent = @curr_parent
|
19
|
+
@curr_parent = control
|
20
|
+
control.build self, &block
|
21
|
+
@curr_parent = control.parent
|
22
|
+
end
|
14
23
|
end
|
15
24
|
|
16
|
-
def
|
25
|
+
def add_abstract!(sym, *args, &block)
|
17
26
|
if Object.const_defined?(sym.to_s.camelcase) and
|
18
27
|
Object.const_get(sym.to_s.camelcase) <= Interview::Control
|
19
28
|
control = Object.const_get(sym.to_s.camelcase).new(*args)
|
20
29
|
else
|
30
|
+
# todo: prüfen, ob Control vorhanden
|
21
31
|
control = Object.const_get("Interview::#{sym.to_s.camelcase}").new(*args)
|
22
32
|
end
|
23
|
-
|
24
|
-
if block and control.respond_to? :add_block
|
25
|
-
control.add_block(&block)
|
26
|
-
elsif block
|
27
|
-
temp_target = @target
|
28
|
-
@target = control
|
29
|
-
yield
|
30
|
-
@target = temp_target
|
31
|
-
end
|
33
|
+
add! control, &block
|
32
34
|
end
|
33
35
|
|
34
|
-
def
|
35
|
-
|
36
|
-
@target.add_controls control_or_array
|
37
|
-
else
|
38
|
-
@target.add_control control_or_array
|
39
|
-
end
|
36
|
+
def tag!(sym, *args, &block)
|
37
|
+
@html.tag!(sym, *args, &block)
|
40
38
|
end
|
41
39
|
|
42
|
-
def
|
43
|
-
|
40
|
+
def text!(text)
|
41
|
+
@html.text!(text)
|
42
|
+
end
|
43
|
+
|
44
|
+
def <<(text)
|
45
|
+
@html << text
|
44
46
|
end
|
45
47
|
|
46
|
-
|
48
|
+
def lookup!(attr_name)
|
49
|
+
@curr_parent.find_attribute!(attr_name)
|
50
|
+
end
|
51
|
+
|
52
|
+
def method_missing(sym, *args, &block)
|
53
|
+
add_abstract!(sym, *args, &block)
|
54
|
+
end
|
47
55
|
|
48
56
|
end
|
49
57
|
end
|
data/lib/interview/control.rb
CHANGED
@@ -18,7 +18,7 @@ module Interview
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
def set_defaults
|
21
|
+
def set_defaults # todo: löschen?
|
22
22
|
if self.class.const_defined? 'DEFAULTS'
|
23
23
|
self.class::DEFAULTS.each do |key, value|
|
24
24
|
self.send("#{key}=".to_sym, value)
|
@@ -35,12 +35,21 @@ module Interview
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def find_attribute(attribute)
|
38
|
-
|
39
|
-
|
40
|
-
return
|
38
|
+
if respond_to? attribute
|
39
|
+
value = send attribute
|
40
|
+
return value if value
|
41
|
+
end
|
42
|
+
if @parent
|
43
|
+
return @parent.find_attribute(attribute)
|
41
44
|
else
|
42
|
-
return
|
45
|
+
return nil
|
43
46
|
end
|
47
|
+
# return nil if @parent.nil?
|
48
|
+
# if @parent.respond_to? attribute
|
49
|
+
# return @parent.send attribute
|
50
|
+
# else
|
51
|
+
# return @parent.find_attribute attribute
|
52
|
+
# end
|
44
53
|
end
|
45
54
|
|
46
55
|
def find_attribute!(attr_name)
|
@@ -49,8 +58,17 @@ module Interview
|
|
49
58
|
return attribute
|
50
59
|
end
|
51
60
|
|
52
|
-
def
|
53
|
-
|
61
|
+
def build(b)
|
62
|
+
yield if block_given?
|
63
|
+
end
|
64
|
+
|
65
|
+
def build_with_params(b, params={})
|
66
|
+
set_attributes(params)
|
67
|
+
build(b)
|
68
|
+
end
|
69
|
+
|
70
|
+
def build_child(b, control, &block)
|
71
|
+
b.add! control, &block
|
54
72
|
end
|
55
73
|
|
56
74
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Interview
|
2
|
+
class Actionbar < Control
|
3
|
+
|
4
|
+
attr_accessor :title, :icon
|
5
|
+
|
6
|
+
def build(b)
|
7
|
+
title = @title || find_attribute(:title)
|
8
|
+
icon = @icon
|
9
|
+
if icon == :polymorphic
|
10
|
+
object = find_attribute! :object
|
11
|
+
icon = object.icon
|
12
|
+
end
|
13
|
+
|
14
|
+
b.section html_class: 'clearfix' do
|
15
|
+
if block_given?
|
16
|
+
b.section style: 'ul', html_class: 'list-inline pull-right' do
|
17
|
+
b.meta_class pointer: self do
|
18
|
+
yield
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
if title
|
23
|
+
b.section style: 'p', html_class: 'h3' do
|
24
|
+
if icon
|
25
|
+
b.section style: 'span', html_class: icon
|
26
|
+
b.space
|
27
|
+
end
|
28
|
+
b.text text: title
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def build_child(b, control, &block)
|
35
|
+
b.section style: 'li' do
|
36
|
+
super
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|