bootybox 0.0.91
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/app/assets/images/alchemy/element_thumbnails/bootybox/defaults/default_image.png +0 -0
- data/app/assets/images/alchemy/element_thumbnails/bootybox/defaults/default_textbox.png +0 -0
- data/app/assets/images/alchemy/element_thumbnails/bootybox/grid/four_columns_25_25_25_25.png +0 -0
- data/app/assets/images/alchemy/element_thumbnails/bootybox/grid/one_column_100.png +0 -0
- data/app/assets/images/alchemy/element_thumbnails/bootybox/grid/three_columns_33_33_33.png +0 -0
- data/app/assets/images/alchemy/element_thumbnails/bootybox/grid/two_columns_25_75.png +0 -0
- data/app/assets/images/alchemy/element_thumbnails/bootybox/grid/two_columns_50_50.png +0 -0
- data/app/assets/images/alchemy/element_thumbnails/bootybox/grid/two_columns_75_25.png +0 -0
- data/app/assets/images/alchemy/element_thumbnails/bootybox/layout/element_container.png +0 -0
- data/app/assets/images/alchemy/element_thumbnails/bootybox/layout/seperator.png +0 -0
- data/app/assets/javascripts/bootybox/defaults.js +6 -0
- data/app/assets/javascripts/bootybox/modal.js.coffee +14 -0
- data/app/assets/javascripts/bootybox/portfolio.js.coffee +96 -0
- data/app/assets/javascripts/bootybox/slideshow.js.coffee +12 -0
- data/app/assets/javascripts/bootybox/templates/modal/buttons/cancel.hbs +1 -0
- data/app/assets/javascripts/bootybox/templates/modal/default.hbs +18 -0
- data/app/assets/javascripts/bootybox/templates/modal/modal_target.hbs +1 -0
- data/app/assets/javascripts/bootybox/templates/portfolio/portfolio_item.hbs +4 -0
- data/app/assets/javascripts/bootybox/vendor/flip.js +298 -0
- data/app/assets/stylesheets/bootybox/_elements.scss +54 -0
- data/app/assets/stylesheets/bootybox/_fixes.scss +22 -0
- data/app/assets/stylesheets/bootybox/_navi.scss +4 -0
- data/app/assets/stylesheets/bootybox/_portfolio.scss +37 -0
- data/app/assets/stylesheets/bootybox/_slides.scss +41 -0
- data/app/assets/stylesheets/bootybox/defaults.scss +7 -0
- data/app/assets/templates/framework.scss +50 -0
- data/app/helpers/bootybox_content_helper.rb +44 -0
- data/app/helpers/bootybox_form_helper.rb +39 -0
- data/app/helpers/bootybox_grid_helper.rb +112 -0
- data/app/services/bootybox/elements_config_service.rb +21 -0
- data/app/services/bootybox/navigational_context_pages_service.rb +15 -0
- data/app/services/bootybox/page_layout_config_service.rb +4 -0
- data/app/views/alchemy/elements/_contactform_editor.html.erb +6 -0
- data/app/views/alchemy/elements/_contactform_view.html.erb +48 -0
- data/app/views/alchemy/elements/bootybox/defaults/_button_editor.html.erb +8 -0
- data/app/views/alchemy/elements/bootybox/defaults/_button_view.html.erb +5 -0
- data/app/views/alchemy/elements/bootybox/defaults/_default_image_editor.html.erb +5 -0
- data/app/views/alchemy/elements/bootybox/defaults/_default_image_view.html.erb +8 -0
- data/app/views/alchemy/elements/bootybox/defaults/_default_textbox_editor.html.erb +5 -0
- data/app/views/alchemy/elements/bootybox/defaults/_default_textbox_view.html.erb +7 -0
- data/app/views/alchemy/elements/bootybox/defaults/_subheader_editor.html.erb +8 -0
- data/app/views/alchemy/elements/bootybox/defaults/_subheader_view.html.erb +10 -0
- data/app/views/alchemy/elements/bootybox/fancy/_flip_content_box_editor.html.erb +17 -0
- data/app/views/alchemy/elements/bootybox/fancy/_flip_content_box_view.html.erb +19 -0
- data/app/views/alchemy/elements/bootybox/grid/_four_columns_25_25_25_25_editor.html.haml +2 -0
- data/app/views/alchemy/elements/bootybox/grid/_four_columns_25_25_25_25_view.html.haml +10 -0
- data/app/views/alchemy/elements/bootybox/grid/_one_column_100_editor.html.haml +2 -0
- data/app/views/alchemy/elements/bootybox/grid/_one_column_100_view.html.haml +5 -0
- data/app/views/alchemy/elements/bootybox/grid/_three_columns_33_33_33_editor.html.haml +2 -0
- data/app/views/alchemy/elements/bootybox/grid/_three_columns_33_33_33_view.html.haml +8 -0
- data/app/views/alchemy/elements/bootybox/grid/_two_columns_25_75_editor.html.haml +2 -0
- data/app/views/alchemy/elements/bootybox/grid/_two_columns_25_75_view.html.haml +6 -0
- data/app/views/alchemy/elements/bootybox/grid/_two_columns_50_50_editor.html.haml +2 -0
- data/app/views/alchemy/elements/bootybox/grid/_two_columns_50_50_view.html.haml +6 -0
- data/app/views/alchemy/elements/bootybox/grid/_two_columns_66_33_editor.html.haml +3 -0
- data/app/views/alchemy/elements/bootybox/grid/_two_columns_66_33_view.html.haml +6 -0
- data/app/views/alchemy/elements/bootybox/grid/_two_columns_75_25_editor.html.haml +3 -0
- data/app/views/alchemy/elements/bootybox/grid/_two_columns_75_25_view.html.haml +6 -0
- data/app/views/alchemy/elements/bootybox/layout/_element_container_editor.html.erb +4 -0
- data/app/views/alchemy/elements/bootybox/layout/_element_container_view.html.erb +8 -0
- data/app/views/alchemy/elements/bootybox/layout/_page_header_editor.html.erb +3 -0
- data/app/views/alchemy/elements/bootybox/layout/_page_header_view.html.erb +6 -0
- data/app/views/alchemy/elements/bootybox/layout/_seperator_editor.html.erb +4 -0
- data/app/views/alchemy/elements/bootybox/layout/_seperator_view.html.erb +4 -0
- data/app/views/alchemy/elements/bootybox/navi/_sub_navi_container_editor.html.erb +3 -0
- data/app/views/alchemy/elements/bootybox/navi/_sub_navi_container_view.html.erb +5 -0
- data/app/views/alchemy/elements/bootybox/navi/_sub_navi_item_editor.html.erb +4 -0
- data/app/views/alchemy/elements/bootybox/navi/_sub_navi_item_view.html.erb +3 -0
- data/app/views/alchemy/elements/bootybox/portfolio/_portfolio_container_editor.html.erb +8 -0
- data/app/views/alchemy/elements/bootybox/portfolio/_portfolio_container_view.html.erb +12 -0
- data/app/views/alchemy/elements/bootybox/portfolio/_portfolio_item_editor.html.erb +7 -0
- data/app/views/alchemy/elements/bootybox/portfolio/_portfolio_item_view.html.erb +13 -0
- data/app/views/alchemy/elements/bootybox/slideshow/_image_slideshow_editor.html.erb +3 -0
- data/app/views/alchemy/elements/bootybox/slideshow/_image_slideshow_slide_editor.html.erb +4 -0
- data/app/views/alchemy/elements/bootybox/slideshow/_image_slideshow_slide_view.html.erb +4 -0
- data/app/views/alchemy/elements/bootybox/slideshow/_image_slideshow_view.html.erb +37 -0
- data/app/views/alchemy/elements/bootybox/slideshow_top/_slideshow_slide_container_editor.html.erb +4 -0
- data/app/views/alchemy/elements/bootybox/slideshow_top/_slideshow_slide_container_view.html.erb +10 -0
- data/app/views/alchemy/elements/bootybox/slideshow_top/_slideshow_slide_top_editor.html.erb +10 -0
- data/app/views/alchemy/elements/bootybox/slideshow_top/_slideshow_slide_top_view.html.erb +26 -0
- data/app/views/alchemy/elements/bootybox/slideshow_top/_slideshow_teaser_top_editor.html.erb +4 -0
- data/app/views/alchemy/elements/bootybox/slideshow_top/_slideshow_teaser_top_view.html.erb +28 -0
- data/app/views/alchemy/page_layouts/_default.html.erb +4 -0
- data/app/views/bootybox/forms/_form_group_container.html.erb +12 -0
- data/app/views/bootybox/forms/_form_group_input.html.erb +14 -0
- data/app/views/bootybox/forms/_form_group_select.html.erb +2 -0
- data/app/views/layouts/_footer.html.erb +5 -0
- data/app/views/layouts/_navigation.html.erb +32 -0
- data/app/views/layouts/_navigational_footer.html.erb +19 -0
- data/app/views/layouts/application.html.erb +42 -0
- data/config/elements.yml +274 -0
- data/config/locales/bootybox.de.yml +54 -0
- data/lib/bootybox.rb +19 -0
- data/lib/bootybox/engine.rb +41 -0
- data/lib/generators/bootybox/views/application_layout_generator.rb +20 -0
- data/lib/tasks/bootybox.rake +88 -0
- metadata +224 -0
@@ -0,0 +1,54 @@
|
|
1
|
+
.text {
|
2
|
+
&.teaser {
|
3
|
+
font-family: serif;
|
4
|
+
text-align: center; font-size: 1.8em;
|
5
|
+
color: #333; font-style: italic;
|
6
|
+
}
|
7
|
+
&.metainfo { color: #666;}
|
8
|
+
}
|
9
|
+
|
10
|
+
.image {
|
11
|
+
img { width: 100%;}
|
12
|
+
&.no-margin {
|
13
|
+
margin-bottom: 0 !important; margin-top: 0 !important;
|
14
|
+
img { margin-bottom: 0 !important; margin-top: 0 !important; }
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
.seperator-line {
|
19
|
+
height: 1px; width: 100%; border-top: solid 1px #666;
|
20
|
+
|
21
|
+
&.sep-invisible {border-top: none;}
|
22
|
+
&.sep-small {margin: 1em 0;}
|
23
|
+
&.sep-medium {margin: 2em 0;}
|
24
|
+
&.sep-large {margin: 3em 0;}
|
25
|
+
|
26
|
+
}
|
27
|
+
|
28
|
+
.image_slideshow .carousel {
|
29
|
+
border-bottom: solid 1px #ddd;
|
30
|
+
margin-bottom: 10px;
|
31
|
+
}
|
32
|
+
|
33
|
+
|
34
|
+
@mixin clearfix {
|
35
|
+
&:after {
|
36
|
+
content: ".";
|
37
|
+
clear: both;
|
38
|
+
display: block;
|
39
|
+
visibility: hidden;
|
40
|
+
height: 0px;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
.equal {
|
46
|
+
display: flex;
|
47
|
+
flex-wrap: wrap;
|
48
|
+
width: 100%;
|
49
|
+
}
|
50
|
+
|
51
|
+
.equal > div[class*='col-'] {
|
52
|
+
display: flex;
|
53
|
+
flex-direction: column;
|
54
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
@import "bootstrap/variables";
|
2
|
+
|
3
|
+
@media (max-width: $screen-xs-max) {
|
4
|
+
.col-xs-4 { width: 33%; }
|
5
|
+
.col-xs-6 { width: 49.9%; }
|
6
|
+
}
|
7
|
+
|
8
|
+
|
9
|
+
@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
|
10
|
+
.col-sm-4 { width: 33%; }
|
11
|
+
.col-sm-6 { width: 49.9%; }
|
12
|
+
}
|
13
|
+
|
14
|
+
@media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
|
15
|
+
.col-md-4 { width: 33%; }
|
16
|
+
.col-md-6 { width: 49.9%; }
|
17
|
+
}
|
18
|
+
|
19
|
+
@media (min-width: $screen-lg-min) {
|
20
|
+
.col-lg-4 { width: 33%; }
|
21
|
+
.col-lg-6 { width: 49.9%; }
|
22
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
.bootybox-portfolio {
|
2
|
+
|
3
|
+
margin: 0 auto;
|
4
|
+
|
5
|
+
&.portfolio-vert .portfolio-item img { width: 100%;}
|
6
|
+
&.portfolio-horiz .portfolio-item img { width: auto;}
|
7
|
+
|
8
|
+
ul {vertical-align: top; padding: 0; position: relative ;}
|
9
|
+
|
10
|
+
.portfolio-item {
|
11
|
+
border: solid 1px #aaa; padding: 10px; list-style: none; display: inline-block; cursor: pointer;
|
12
|
+
img { opacity: .6;}
|
13
|
+
|
14
|
+
.name { position: absolute; padding: 3px; background: rgba(255,255,255,0.9); display: none; border-radius: 5px; text-align: center;
|
15
|
+
max-width: 50%;
|
16
|
+
}
|
17
|
+
|
18
|
+
.text { display:none;}
|
19
|
+
}
|
20
|
+
|
21
|
+
.portfolio-item:hover {
|
22
|
+
border: solid 1px #666;
|
23
|
+
img { opacity: 1;}
|
24
|
+
}
|
25
|
+
|
26
|
+
&.portfolio-vert .portfolio-item {
|
27
|
+
position: absolute; opacity: 0;
|
28
|
+
}
|
29
|
+
|
30
|
+
&.portfolio-horiz .portfolio-item {
|
31
|
+
margin-bottom: 5px;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
.portfolio-modal-item {
|
36
|
+
img {width: 100%;}
|
37
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
// Adding default styles for slideshows
|
2
|
+
// Dimensions should be adjustest in the projects styles..
|
3
|
+
#top-slideshow {
|
4
|
+
|
5
|
+
width: 100%;
|
6
|
+
|
7
|
+
.carousel { position: relative; }
|
8
|
+
.carousel-inner { overflow: initial; }
|
9
|
+
|
10
|
+
ul.carousel-inner, li.item { padding: 0px; }
|
11
|
+
li.item {
|
12
|
+
background-size: cover !important;
|
13
|
+
background-position: center !important;
|
14
|
+
a.slideshow-link { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 20;}
|
15
|
+
}
|
16
|
+
|
17
|
+
.slide-textbox {
|
18
|
+
.panel-heading {
|
19
|
+
&>h2 { text-transform: uppercase; }
|
20
|
+
}
|
21
|
+
.panel-body {
|
22
|
+
margin-top: 0px;
|
23
|
+
padding-top: 0px;
|
24
|
+
position: relative;
|
25
|
+
|
26
|
+
h1, h2, h3, h4, h5, h6 { font-size: 16px; font-weight: bold; }
|
27
|
+
}
|
28
|
+
.slide-text-content { overflow: hidden; }
|
29
|
+
|
30
|
+
.panel-footer { background: none; border-top: none; padding-top: 20px; padding-bottom: 0px; }
|
31
|
+
.pricing { font-size: 14px; }
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
.slideshow-preview-pics {
|
37
|
+
li {
|
38
|
+
list-style: none;
|
39
|
+
display: inline-block;
|
40
|
+
}
|
41
|
+
}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
// Core variables and mixins
|
2
|
+
@import "bootstrap/variables";
|
3
|
+
|
4
|
+
// Overwrite the gutter for custom width if required
|
5
|
+
// $grid-gutter-width: 50px;
|
6
|
+
|
7
|
+
|
8
|
+
@import "bootstrap/mixins";
|
9
|
+
// Reset and dependencies
|
10
|
+
@import "bootstrap/normalize";
|
11
|
+
@import "bootstrap/print";
|
12
|
+
@import "bootstrap/glyphicons";
|
13
|
+
// Core CSS
|
14
|
+
@import "bootstrap/scaffolding";
|
15
|
+
@import "bootstrap/type";
|
16
|
+
@import "bootstrap/code";
|
17
|
+
@import "bootstrap/grid";
|
18
|
+
@import "bootstrap/tables";
|
19
|
+
@import "bootstrap/forms";
|
20
|
+
@import "bootstrap/buttons";
|
21
|
+
// Components
|
22
|
+
@import "bootstrap/component-animations";
|
23
|
+
@import "bootstrap/dropdowns";
|
24
|
+
@import "bootstrap/button-groups";
|
25
|
+
@import "bootstrap/input-groups";
|
26
|
+
@import "bootstrap/navs";
|
27
|
+
@import "bootstrap/navbar";
|
28
|
+
@import "bootstrap/breadcrumbs";
|
29
|
+
@import "bootstrap/pagination";
|
30
|
+
@import "bootstrap/pager";
|
31
|
+
@import "bootstrap/labels";
|
32
|
+
@import "bootstrap/badges";
|
33
|
+
@import "bootstrap/jumbotron";
|
34
|
+
@import "bootstrap/thumbnails";
|
35
|
+
@import "bootstrap/alerts";
|
36
|
+
@import "bootstrap/progress-bars";
|
37
|
+
@import "bootstrap/media";
|
38
|
+
@import "bootstrap/list-group";
|
39
|
+
@import "bootstrap/panels";
|
40
|
+
@import "bootstrap/responsive-embed";
|
41
|
+
@import "bootstrap/wells";
|
42
|
+
@import "bootstrap/close";
|
43
|
+
// Components w/ JavaScript
|
44
|
+
@import "bootstrap/modals";
|
45
|
+
@import "bootstrap/tooltip";
|
46
|
+
@import "bootstrap/popovers";
|
47
|
+
@import "bootstrap/carousel";
|
48
|
+
// Utility classes
|
49
|
+
@import "bootstrap/utilities";
|
50
|
+
@import "bootstrap/responsive-utilities";
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module BootyboxContentHelper
|
2
|
+
|
3
|
+
|
4
|
+
def icon(css)
|
5
|
+
content_tag :span, " ".html_safe, :class => "bb-icon #{css}"
|
6
|
+
end
|
7
|
+
|
8
|
+
def glyphicon(name)
|
9
|
+
content_tag :span, " ".html_safe, :class => "glyphicon glyphicon-#{name}"
|
10
|
+
end
|
11
|
+
|
12
|
+
def slideshow_top_slide_wrapper(sub_el, options = {tag: :li})
|
13
|
+
sub_el.sub_element_index == 0 ? item_active_class = "active" : item_active_class = ""
|
14
|
+
|
15
|
+
element_view_for(sub_el, :tag => nil) do |el|
|
16
|
+
content_tag options[:tag], :class => "item #{item_active_class}",
|
17
|
+
:style => "background: url('#{asset_path(sub_el.content_by_name(:image, :preview => session[:page_preview_mode]).essence.picture_url(:size => el.render(:image_format).strip, :crop => true))}') left top no-repeat; background-size: 100%",
|
18
|
+
:title => "#{sub_el.content_by_name(:image, :preview => session[:page_preview_mode]).essence.alt_content}" do
|
19
|
+
|
20
|
+
yield
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def content_wrapper_row
|
27
|
+
content_tag :div, id:'page-wrapper', class: 'content-wrapper-row' do
|
28
|
+
yield
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def row(options={})
|
33
|
+
content_tag :div, class: ['row', options[:class]].join(' ') do
|
34
|
+
yield
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def seperator
|
39
|
+
"<hr></hr>".html_safe
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module BootyboxFormHelper
|
2
|
+
|
3
|
+
|
4
|
+
# TODO: Convert this into a form helper that works with form_for etc...
|
5
|
+
|
6
|
+
def form_input_field(form, method, options = {})
|
7
|
+
|
8
|
+
if options[:validation].blank?
|
9
|
+
options[:validation] = []
|
10
|
+
end
|
11
|
+
|
12
|
+
options[:type] ||= :text_field
|
13
|
+
|
14
|
+
render :partial => "/bootybox/forms/form_group_input", :locals => {
|
15
|
+
:form => form, :method => method,
|
16
|
+
:label_text => options[:label] || I18n.t(method.to_s, :scope => :form_labels),
|
17
|
+
:value => (options[:value] || (form.object.send(method) rescue nil) ),
|
18
|
+
:validation => options[:validation], :title => options[:title], :type => options[:type],
|
19
|
+
:tooltip => options[:tooltip]
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
def form_group_container(form, method, options = {}, &block)
|
24
|
+
render "/bootybox/forms/form_group_container", :form => form, :method => method,
|
25
|
+
:id => options[:id].to_s, :css_class => options[:class], :label_text => options[:label] || I18n.t(method.to_s, :scope => :form_labels),
|
26
|
+
:content => capture(&block)
|
27
|
+
end
|
28
|
+
|
29
|
+
def form_select_field(form, method, options = {})
|
30
|
+
|
31
|
+
options[:collection] ||= []
|
32
|
+
|
33
|
+
render :partial => "/bootybox/forms/form_group_select", :locals => {
|
34
|
+
:form => form, :method => method, :label_text => options[:label] || I18n.t(method.to_s, :scope => :form_labels),
|
35
|
+
:value => options[:value], :title => options[:title], :collection => options[:collection]
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
module BootyboxGridHelper
|
2
|
+
|
3
|
+
def col(w={:lg => 4}, title ="col", options = {}, &block)
|
4
|
+
# fallback for old syntax
|
5
|
+
if title.is_a?(Hash)
|
6
|
+
options = title
|
7
|
+
title = options[:title]
|
8
|
+
end
|
9
|
+
|
10
|
+
col_css = [column_classes(w, options[:mode], options[:framework]).strip, options[:class].try(:strip), 'is-bootybox-col'].compact.join(" ")
|
11
|
+
|
12
|
+
if options[:header] != true
|
13
|
+
content_tag(:div, :class => col_css) do
|
14
|
+
capture(&block)
|
15
|
+
end
|
16
|
+
else
|
17
|
+
options[:color] ||= "dark-blue"
|
18
|
+
|
19
|
+
content = options[:inner_content] == true ? content_tag(:div, raw(capture(&block)), :class => "inner-content-body") : capture(&block)
|
20
|
+
|
21
|
+
html_content = content_tag(:header, content_tag(:h3, title), :class => options[:color])
|
22
|
+
html_content += content_tag(:div, raw(content), :class => "content-body")
|
23
|
+
|
24
|
+
content_tag(:div, :class => col_css) do
|
25
|
+
content_tag(:section, :class => "content-box") do
|
26
|
+
raw(html_content)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def column_classes(w ={:lg => 4}, mode = nil, framework = nil )
|
33
|
+
|
34
|
+
default = case (framework || Bootybox.configuration.css_framework.to_sym)
|
35
|
+
when :bootstrap
|
36
|
+
:lg
|
37
|
+
when :foundation
|
38
|
+
:large
|
39
|
+
end
|
40
|
+
|
41
|
+
# auto-determine settings if no framework given
|
42
|
+
if framework.nil?
|
43
|
+
settings = convert_col_settings!(w, framework)
|
44
|
+
else
|
45
|
+
settings = w
|
46
|
+
end
|
47
|
+
|
48
|
+
column_key_values.each do |v|
|
49
|
+
if !settings[v.to_sym]
|
50
|
+
settings[v.to_sym] = settings[default]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
col_css = case (framework || Bootybox.configuration.css_framework.to_sym)
|
55
|
+
when :bootstrap
|
56
|
+
[""]
|
57
|
+
when :foundation
|
58
|
+
["columns"]
|
59
|
+
end
|
60
|
+
|
61
|
+
settings.each do |c,s|
|
62
|
+
c = "col-#{c}" if (framework == :bootstrap || Bootybox.configuration.css_framework.to_sym == :bootstrap)
|
63
|
+
col_css << [c, mode, s].compact.join("-")
|
64
|
+
end
|
65
|
+
|
66
|
+
return col_css.join(" ")
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
|
71
|
+
def convert_col_settings!(settings = {}, framework = nil)
|
72
|
+
setting_keys = settings.keys.map(&:to_s)
|
73
|
+
|
74
|
+
current_given_framework = if framework.present?
|
75
|
+
framework
|
76
|
+
elsif (setting_keys - column_key_values(:bootstrap)).empty?
|
77
|
+
:bootstrap
|
78
|
+
elsif (setting_keys - column_key_values(:foundation)).empty?
|
79
|
+
:foundation
|
80
|
+
end
|
81
|
+
|
82
|
+
if current_given_framework != Bootybox.configuration.css_framework
|
83
|
+
case current_given_framework
|
84
|
+
when :foundation
|
85
|
+
return {
|
86
|
+
large: settings[:lg],
|
87
|
+
medium: settings[:md],
|
88
|
+
small: (settings[:sm] || settings[:xs]),
|
89
|
+
}
|
90
|
+
when :bootstrap
|
91
|
+
return {
|
92
|
+
lg: settings[:large],
|
93
|
+
md: settings[:medium],
|
94
|
+
sm: settings[:small],
|
95
|
+
xs: settings[:small],
|
96
|
+
}
|
97
|
+
end
|
98
|
+
else
|
99
|
+
settings
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def column_key_values(framework = nil)
|
104
|
+
case framework || Bootybox.configuration.css_framework.to_sym
|
105
|
+
when :bootstrap
|
106
|
+
%w(lg md sm xs)
|
107
|
+
when :foundation
|
108
|
+
%w(small medium large)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# This class does all things related to elements and the config file
|
2
|
+
class Bootybox::ElementsConfigService
|
3
|
+
|
4
|
+
def target_element_file
|
5
|
+
File.join(Rails.root, "config/alchemy/elements.yml")
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
def source_elements_file
|
10
|
+
File.expand_path("../../../../config/elements.yml", __FILE__)
|
11
|
+
end
|
12
|
+
|
13
|
+
def source_elements_data
|
14
|
+
YAML::load(File.open(source_elements_file).read)
|
15
|
+
end
|
16
|
+
|
17
|
+
def source_elements_name
|
18
|
+
source_elements_data.map {|s| s['name'] }
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class Bootybox::NavigationalContextPagesService
|
2
|
+
|
3
|
+
ALLOWED_NAVIGATION_LINKS = [:parent, :previous, :next]
|
4
|
+
|
5
|
+
def self.get(page, nav_type = :parent)
|
6
|
+
raise "Wrong navigational type '#{nav_type.inspect}' use #{ALLOWED_NAVIGATION_LINKS.inspect}" if ALLOWED_NAVIGATION_LINKS.index(nav_type).nil?
|
7
|
+
nav_page = page.send(nav_type)
|
8
|
+
if nav_page && !nav_page.link_container && nav_page.public && nav_page.urlname.present?
|
9
|
+
return nav_page
|
10
|
+
else
|
11
|
+
return nil
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|