interview 0.1.0 → 0.3.0
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.
- 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
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
module Interview
|
|
2
|
-
class NavigationItem < Link
|
|
3
|
-
|
|
4
|
-
include HasControls
|
|
5
|
-
|
|
6
|
-
attr_accessor :active
|
|
7
|
-
|
|
8
|
-
def render
|
|
9
|
-
css_class = "level#{ancestors.count-1}"
|
|
10
|
-
css_class += " active" if @active
|
|
11
|
-
show_siblings = @active || siblings.any? { |sib| sib.active }
|
|
12
|
-
|
|
13
|
-
html = ::Builder::XmlMarkup.new
|
|
14
|
-
html.li class: css_class do
|
|
15
|
-
html << super
|
|
16
|
-
end
|
|
17
|
-
if show_siblings
|
|
18
|
-
add_parent(build_children).each do |c|
|
|
19
|
-
html << c.render
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
return html.target!
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
module Interview
|
|
2
|
-
class NestedForm < Control
|
|
3
|
-
include HasControls
|
|
4
|
-
|
|
5
|
-
attr_accessor :polymorphic, :align, :image_based # todo: align einbauen
|
|
6
|
-
attr_reader :form_builder, :object
|
|
7
|
-
|
|
8
|
-
def render
|
|
9
|
-
assoc_form_builder = find_attribute! :form_builder
|
|
10
|
-
assoc_method = find_attribute! :assoc_method
|
|
11
|
-
|
|
12
|
-
html = ::Builder::XmlMarkup.new
|
|
13
|
-
html.div class: 'nested_form_container' do
|
|
14
|
-
if @image_based
|
|
15
|
-
html << Interview::NestedFormAddImages.new.render
|
|
16
|
-
end
|
|
17
|
-
html << assoc_form_builder.fields_for(assoc_method.to_sym) do |form_builder|
|
|
18
|
-
if @polymorphic
|
|
19
|
-
render_polymorphic_nested_form(form_builder)
|
|
20
|
-
else
|
|
21
|
-
render_nested_form(form_builder)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
html.script class: 'nested_form_script', type: 'text/x-tmpl' do
|
|
25
|
-
new_object = assoc_form_builder.object.association(assoc_method.to_sym).build # todo: polymorphic add link
|
|
26
|
-
html << assoc_form_builder.fields_for(assoc_method.to_sym, new_object, :child_index => "${index}") do |form_builder|
|
|
27
|
-
if @polymorphic
|
|
28
|
-
render_polymorphic_nested_form(form_builder)
|
|
29
|
-
else
|
|
30
|
-
render_nested_form(form_builder)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
return html.target!
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def render_nested_form(form_builder)
|
|
39
|
-
@form_builder = form_builder
|
|
40
|
-
@object = form_builder.object
|
|
41
|
-
html = ::Builder::XmlMarkup.new
|
|
42
|
-
html.div class: 'nested_form collapse in' do
|
|
43
|
-
add_parent(build_children).each do |control|
|
|
44
|
-
html << control.render
|
|
45
|
-
end
|
|
46
|
-
html << form_builder.hidden_field(:id)
|
|
47
|
-
html << form_builder.hidden_field(:_destroy, class: 'nested_form_destroy')
|
|
48
|
-
if @image_based
|
|
49
|
-
html << form_builder.hidden_field(:upload_buffer_id, class: 'upload_buffer_id')
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
html.target!.html_safe
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def render_polymorphic_nested_form(form_builder)
|
|
56
|
-
object = form_builder.object
|
|
57
|
-
if klass = "#{object.class.name}NestedForm".safe_constantize
|
|
58
|
-
nested_form = klass.new(parent: self)
|
|
59
|
-
return nested_form.render_nested_form(form_builder)
|
|
60
|
-
else
|
|
61
|
-
return self.render_nested_form(form_builder)
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
end
|
|
66
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
module Interview
|
|
2
|
-
class NestedFormAddImages < Control
|
|
3
|
-
|
|
4
|
-
attr_accessor :style
|
|
5
|
-
|
|
6
|
-
def render
|
|
7
|
-
if @style and @style.to_sym == :horizontal_form
|
|
8
|
-
html = ::Builder::XmlMarkup.new # todo: in eigenes Objekt auslagern?
|
|
9
|
-
html.div class: 'row' do
|
|
10
|
-
html.div class: 'col-xs-9 col-xs-offset-3' do
|
|
11
|
-
html << render_link
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
return html.target!
|
|
15
|
-
else
|
|
16
|
-
return render_link
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def render_link
|
|
21
|
-
html = ::Builder::XmlMarkup.new
|
|
22
|
-
html.div class: "clearfix" do
|
|
23
|
-
html.span class: "btn btn-default fileinput-button" do
|
|
24
|
-
html.span "Bilder hinzufügen" # todo
|
|
25
|
-
html << h.file_field_tag("upload_buffer[attachment]", class: 'nested_form_add_images',
|
|
26
|
-
multiple: true, data: {url: "/upload_buffers.json", type: 'POST'})
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
return html.target!
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
module Interview
|
|
2
|
-
class NestedFormRemoveLink < Control
|
|
3
|
-
|
|
4
|
-
attr_accessor :style
|
|
5
|
-
|
|
6
|
-
def render
|
|
7
|
-
if @style and @style.to_sym == :horizontal_form
|
|
8
|
-
html = ::Builder::XmlMarkup.new
|
|
9
|
-
html.div class: 'row' do
|
|
10
|
-
html.div class: 'col-xs-9 col-xs-offset-3' do
|
|
11
|
-
html << render_link
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
return html.target!
|
|
15
|
-
else
|
|
16
|
-
return render_link
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def render_link
|
|
21
|
-
assoc_object = find_attribute! :assoc_object
|
|
22
|
-
assoc_method = find_attribute!(:assoc_method).to_s
|
|
23
|
-
text = h.t('views.nested_form_remove', association: assoc_object.class.human_attribute_name(assoc_method.singularize)) # todo: in view auslagern
|
|
24
|
-
return h.content_tag :a, text, href: '#', class: 'nested_form_remove_link'
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
end
|
|
28
|
-
end
|
data/lib/interview/panel.rb
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
module Interview
|
|
2
|
-
class Panel < Control
|
|
3
|
-
include HasControls
|
|
4
|
-
|
|
5
|
-
def render
|
|
6
|
-
html = ::Builder::XmlMarkup.new
|
|
7
|
-
html.div class: 'panel panel-default' do
|
|
8
|
-
html.div class: 'panel-body' do
|
|
9
|
-
add_parent(build_children).each do |control|
|
|
10
|
-
html << control.render
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
return html.target!
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
module Interview
|
|
2
|
-
class ProgressBar < Control
|
|
3
|
-
|
|
4
|
-
attr_accessor :hidden, :html_class
|
|
5
|
-
|
|
6
|
-
def initialize(params={})
|
|
7
|
-
super
|
|
8
|
-
@html_class = []
|
|
9
|
-
@html_class << params[:html_class] if params[:html_class]
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def render
|
|
13
|
-
html_class = @html_class
|
|
14
|
-
html = ::Builder::XmlMarkup.new
|
|
15
|
-
opts = { class: "progress" }
|
|
16
|
-
opts[:class] += " collapse" if @hidden
|
|
17
|
-
opts[:class] += ' ' + @html_class.join(' ') unless @html_class.empty?
|
|
18
|
-
html.div opts do
|
|
19
|
-
html.div '', class: 'progress-bar bar', style: 'width: 0%'
|
|
20
|
-
end
|
|
21
|
-
return html.target!
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
module Interview
|
|
2
|
-
class SearchForm < Control
|
|
3
|
-
|
|
4
|
-
def render
|
|
5
|
-
object = find_attribute! :object
|
|
6
|
-
return h.form_tag(h.polymorphic_path(object.class.model_name.plural, action: 'search'), method: :get, class: 'form-inline', role: 'form') do
|
|
7
|
-
html = ::Builder::XmlMarkup.new(indent: 2)
|
|
8
|
-
html.div do
|
|
9
|
-
html.div class: 'form-group' do
|
|
10
|
-
html << h.text_field_tag(:search, h.params[:search], class: 'form-control')
|
|
11
|
-
end
|
|
12
|
-
html.div class: 'form-group' do
|
|
13
|
-
html << h.submit_tag('Suchen', :name => nil, class: 'form-control btn btn-primary') # todo: 'Suchen' ändern
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
html.target!.html_safe
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
end
|
|
21
|
-
end
|
data/lib/interview/tab.rb
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
module Interview
|
|
2
|
-
class Tab < Control
|
|
3
|
-
|
|
4
|
-
include HasControls
|
|
5
|
-
|
|
6
|
-
attr_accessor :caption, :active
|
|
7
|
-
|
|
8
|
-
def render
|
|
9
|
-
html = ::Builder::XmlMarkup.new
|
|
10
|
-
html_class = 'tab-pane'
|
|
11
|
-
html_class += ' active' if @active
|
|
12
|
-
html.div class: html_class, id: @caption do
|
|
13
|
-
add_parent(build_children).each do |control|
|
|
14
|
-
html << control.render
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
return html.target!
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
end
|
|
21
|
-
end
|
data/lib/interview/tab_box.rb
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
module Interview
|
|
2
|
-
class TabBox < Control
|
|
3
|
-
|
|
4
|
-
include HasControls
|
|
5
|
-
|
|
6
|
-
def render
|
|
7
|
-
controls = add_parent(build_children)
|
|
8
|
-
if controls.none? { |c| c.active }
|
|
9
|
-
controls.first.active = true
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
html = ::Builder::XmlMarkup.new
|
|
13
|
-
html.ul class: 'nav nav-tabs tab_box' do
|
|
14
|
-
controls.each do |control|
|
|
15
|
-
html_class = control.active ? 'active' : ''
|
|
16
|
-
html.li class: html_class do
|
|
17
|
-
html.a control.caption, href: "##{control.caption}", :'data-toogle' => 'tab'
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
html.div class: 'tab-content' do
|
|
22
|
-
controls.each do |control|
|
|
23
|
-
html << control.render
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
return html.target!
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
end
|
|
30
|
-
end
|
data/lib/interview/text.rb
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
module Interview
|
|
2
|
-
class Text < Control
|
|
3
|
-
include HasControls
|
|
4
|
-
|
|
5
|
-
attr_accessor :text, :style, :bold, :html_class
|
|
6
|
-
|
|
7
|
-
def initialize(params={})
|
|
8
|
-
@html_class = []
|
|
9
|
-
super
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def render
|
|
13
|
-
html = ::Builder::XmlMarkup.new
|
|
14
|
-
if @style
|
|
15
|
-
opts = {}
|
|
16
|
-
opts[:class] = @html_class.join(' ') unless @html_class.empty?
|
|
17
|
-
html.tag! @style.to_sym, opts do
|
|
18
|
-
render_text(html)
|
|
19
|
-
end
|
|
20
|
-
else
|
|
21
|
-
render_text(html)
|
|
22
|
-
end
|
|
23
|
-
return html.target!
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
protected
|
|
27
|
-
|
|
28
|
-
def render_text(html)
|
|
29
|
-
if @bold
|
|
30
|
-
html.b do
|
|
31
|
-
html << @text # todo: besser .text! statt << ?
|
|
32
|
-
add_parent(build_children).each do |control|
|
|
33
|
-
html << control.render
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
else
|
|
37
|
-
html << @text if @text # todo: besser .text! statt << ?
|
|
38
|
-
add_parent(build_children).each do |control|
|
|
39
|
-
html << control.render
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
end
|
|
45
|
-
end
|
data/lib/interview/tooltip.rb
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
module Interview
|
|
2
|
-
class Tooltip < Control
|
|
3
|
-
|
|
4
|
-
attr_accessor :tooltip, :style
|
|
5
|
-
|
|
6
|
-
def tooltip
|
|
7
|
-
@tooltip || find_attribute(:tooltip)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def render
|
|
11
|
-
if @style and respond_to?("render_#{@style}_style", true)
|
|
12
|
-
return send "render_#{@style}_style"
|
|
13
|
-
else
|
|
14
|
-
return render_default_style
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
protected
|
|
19
|
-
|
|
20
|
-
def render_default_style
|
|
21
|
-
return "<p class='text-muted'>#{tooltip}</p>".html_safe
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def render_box_style
|
|
25
|
-
return "<div class='alert alert-info'>#{tooltip}</div>".html_safe
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def render_popover_style
|
|
29
|
-
html = ::Builder::XmlMarkup.new
|
|
30
|
-
html.text! ' '
|
|
31
|
-
html.a href: '#', class: 'tip', :'data-toggle' => 'popover', :'data-content' => tooltip do
|
|
32
|
-
html.span '', class: 'glyphicon glyphicon-question-sign'
|
|
33
|
-
end
|
|
34
|
-
return html.target!
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
end
|