caboose-cms 0.4.3 → 0.4.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/app/assets/fonts/avenir-medium.eot +0 -0
- data/app/assets/fonts/avenir-medium.ttf +0 -0
- data/app/assets/images/caboose/caboose_logo.png +0 -0
- data/app/assets/images/caboose/login_image.png +0 -0
- data/app/assets/images/caboose/modal_overlay.png +0 -0
- data/app/assets/images/caboose/password_image.png +0 -0
- data/app/assets/stylesheets/caboose/admin.css +13 -0
- data/app/assets/stylesheets/caboose/caboose.css +1 -1
- data/app/assets/stylesheets/caboose/fonts.css +11 -0
- data/app/assets/stylesheets/caboose/fonts/avenir-medium.eot +0 -0
- data/app/assets/stylesheets/caboose/fonts/avenir-medium.ttf +0 -0
- data/app/assets/stylesheets/caboose/login.css +94 -6
- data/app/assets/stylesheets/caboose/modal.css +18 -4
- data/app/controllers/caboose/block_type_categories_controller.rb +12 -0
- data/app/controllers/caboose/block_types_controller.rb +1 -0
- data/app/controllers/caboose/pages_controller.rb +5 -2
- data/app/models/caboose/block.rb +18 -51
- data/app/models/caboose/block_type.rb +3 -1
- data/app/models/caboose/block_type_category.rb +41 -0
- data/app/models/caboose/schema.rb +46 -11
- data/app/views/caboose/block_types/admin_edit.html.erb +4 -3
- data/app/views/caboose/blocks/{_layout_default.html.erb → _layout_basic.html.erb} +5 -7
- data/app/views/caboose/blocks/_layout_basic_content.html.erb +8 -0
- data/app/views/caboose/blocks/_layout_basic_footer.html.erb +3 -0
- data/app/views/caboose/blocks/_layout_basic_header.html.erb +3 -0
- data/app/views/caboose/blocks/_layout_left_sidebar.html.erb +34 -0
- data/app/views/caboose/blocks/_layout_left_sidebar_content.html.erb +8 -0
- data/app/views/caboose/blocks/_layout_left_sidebar_footer.html.erb +3 -0
- data/app/views/caboose/blocks/_layout_left_sidebar_header.html.erb +3 -0
- data/app/views/caboose/blocks/_layout_left_sidebar_sidebar.html.erb +3 -0
- data/app/views/caboose/blocks/_layout_right_sidebar.html.erb +34 -0
- data/app/views/caboose/blocks/_layout_right_sidebar_content.html.erb +8 -0
- data/app/views/caboose/blocks/_layout_right_sidebar_footer.html.erb +3 -0
- data/app/views/caboose/blocks/_layout_right_sidebar_header.html.erb +3 -0
- data/app/views/caboose/blocks/_layout_right_sidebar_sidebar.html.erb +3 -0
- data/app/views/caboose/login/index.html.erb +5 -1
- data/app/views/caboose/pages/admin_new.html.erb +18 -12
- data/app/views/layouts/caboose/application.html.erb +2 -1
- data/config/routes.rb +2 -0
- data/lib/caboose/version.rb +1 -1
- metadata +25 -5
- data/app/views/caboose/blocks/_layout_default_content.html.erb +0 -16
- data/app/views/caboose/blocks/_layout_default_footer.html.erb +0 -20
- data/app/views/caboose/blocks/_layout_default_header.html.erb +0 -32
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ODUzNTBkMWYxM2RiNTYzOTZjNGQ1Y2IwNDk2YjYwNTNhMDIzNzFiOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NDFkOGNiOTIzOGRjMmQ1NGNlMWMxNTYxZTk3Yzg0MjAwZGYwMjMzMA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NTYwMGMyZjI4N2YzNGI3MTNmYWM1M2Y1MjQ3NWRjOGQ5ZTZmNjVkNDFkN2Rm
|
10
|
+
YTYxOTYyNDA2MjZmODI0MjJlZDY3ZjgzZGQ4MTdkYjUyNTQ2OTM2ODQ0Mjdi
|
11
|
+
NWYxNmY5NTY0N2QxNTI3MTIyOGFlN2YyY2QyZTg0M2UwNzgzMDI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MTk3ZjU1MDM5NDQ1ZjE4ZGRhZGZjODczMzc4MWE3MGJiMGM1M2NkYTY0ZTAy
|
14
|
+
Y2YyMTYxNWE5N2MwYWIzY2JkNDdmMzEyY2YxMWQzZDMyNGFjNjY1YWQ4OWQ1
|
15
|
+
YWFjNDZkZTdkNTlhNjM4N2VjZjQyZTNmYjY4MmI1ZTVjZmI0NDc=
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -16,10 +16,23 @@
|
|
16
16
|
*/
|
17
17
|
|
18
18
|
#cboxLoadedContent { margin-bottom: 0; }
|
19
|
+
|
19
20
|
|
20
21
|
body {
|
21
22
|
margin: 0;
|
22
23
|
padding: 0;
|
24
|
+
font-family: "Avenir", serif;
|
25
|
+
}
|
26
|
+
|
27
|
+
#cboxOverlay {
|
28
|
+
opacity: 0.85 !important;
|
29
|
+
background: url('/assets/caboose/modal_overlay.png') !important;
|
30
|
+
}
|
31
|
+
|
32
|
+
#cboxWrapper {
|
33
|
+
-webkit-border-radius: 7px !important;
|
34
|
+
-moz-border-radius: 7px !important;
|
35
|
+
border-radius: 7px !important;
|
23
36
|
}
|
24
37
|
|
25
38
|
#top_nav {
|
@@ -3,3 +3,14 @@
|
|
3
3
|
font-family: 'BigNoodleTitling';
|
4
4
|
src: local('Big Noodle Titling'), url('/assets/caboose/fonts/big_noodle_titling.ttf') format('truetype');
|
5
5
|
}
|
6
|
+
|
7
|
+
@font-face {
|
8
|
+
font-family: 'Avenir';
|
9
|
+
src: url('//d1ygukj37mahb2.cloudfront.net/assets/avenir-medium.eot');
|
10
|
+
src: url('//d1ygukj37mahb2.cloudfront.net/assets/avenir-medium.eot') format('embedded-opentype'),
|
11
|
+
url('//d1ygukj37mahb2.cloudfront.net/assets/avenir-medium.woff') format('woff'),
|
12
|
+
url('//d1ygukj37mahb2.cloudfront.net/assets/avenir-medium.ttf') format('truetype'),
|
13
|
+
url('//d1ygukj37mahb2.cloudfront.net/assets/avenir-medium.svg') format('svg');
|
14
|
+
font-weight: normal;
|
15
|
+
font-style: normal;
|
16
|
+
}
|
Binary file
|
Binary file
|
@@ -11,6 +11,26 @@
|
|
11
11
|
padding: 12px 0;
|
12
12
|
position: relative;
|
13
13
|
width: 100%;
|
14
|
+
padding-bottom: 0;
|
15
|
+
}
|
16
|
+
|
17
|
+
#login-form .header {
|
18
|
+
width: 100%;
|
19
|
+
text-align: center;
|
20
|
+
}
|
21
|
+
|
22
|
+
#login-form .header h1 {
|
23
|
+
position: relative;
|
24
|
+
bottom: 7px;
|
25
|
+
margin-bottom: 0;
|
26
|
+
}
|
27
|
+
#login-form .header p {
|
28
|
+
margin: 0;
|
29
|
+
position: relative;
|
30
|
+
bottom: 8px;
|
31
|
+
font-style: italic;
|
32
|
+
font-size: 14px;
|
33
|
+
margin-bottom: 10px;
|
14
34
|
}
|
15
35
|
|
16
36
|
@media all and (max-width: 400px) {
|
@@ -23,24 +43,92 @@
|
|
23
43
|
#login-form #login-options {
|
24
44
|
margin: 0;
|
25
45
|
padding: 0;
|
26
|
-
|
27
|
-
|
28
|
-
|
46
|
+
float: right;
|
47
|
+
list-style-type: none;
|
48
|
+
position: relative;
|
49
|
+
right: 13px;
|
50
|
+
}
|
51
|
+
#login-options li {
|
52
|
+
text-align: right;
|
29
53
|
}
|
30
54
|
|
55
|
+
#login-options li a {
|
56
|
+
color: #387a8f;
|
57
|
+
font-size: 0.9em;
|
58
|
+
border-bottom: 0;
|
59
|
+
}
|
60
|
+
|
61
|
+
#login-form input#username {
|
62
|
+
background-image: url('/assets/caboose/login_image.png');
|
63
|
+
background-position: 8px center;
|
64
|
+
}
|
65
|
+
#login-form input#password {
|
66
|
+
background-image: url('/assets/caboose/password_image.png');
|
67
|
+
background-position: 12px center;
|
68
|
+
}
|
69
|
+
|
70
|
+
|
31
71
|
#login-form input#username,
|
32
72
|
#login-form input#password {
|
33
73
|
font-size: 18px;
|
34
|
-
margin: 0
|
74
|
+
margin: 0 auto;
|
35
75
|
max-width: 100%;
|
76
|
+
display: block;
|
77
|
+
margin-bottom: 12px;
|
36
78
|
padding: 7px;
|
37
|
-
width:
|
79
|
+
width: 315px;
|
80
|
+
background-repeat: no-repeat;
|
81
|
+
padding-left: 42px;
|
38
82
|
}
|
39
83
|
|
40
84
|
#login-form label {
|
41
85
|
cursor: pointer;
|
42
86
|
display: block;
|
87
|
+
float: left;
|
88
|
+
position: relative;
|
89
|
+
left: 13px;
|
90
|
+
font-size: 0.9em;
|
91
|
+
color: #a58a32;
|
92
|
+
bottom: 18px;
|
93
|
+
}
|
94
|
+
|
95
|
+
p.buttons {
|
96
|
+
clear: both;
|
97
|
+
margin-top: 80px;
|
98
|
+
overflow: auto;
|
99
|
+
padding: 0 16px;
|
100
|
+
margin-bottom: 0;
|
43
101
|
}
|
44
102
|
|
45
103
|
#login-form input[type=checkbox] { top: 8px; }
|
46
|
-
|
104
|
+
|
105
|
+
#login-form .btn {
|
106
|
+
font-size: 18px;
|
107
|
+
display: block;
|
108
|
+
width: 48%;
|
109
|
+
padding: 13px 1%;
|
110
|
+
height: auto;
|
111
|
+
border: 0;
|
112
|
+
border-radius: 4px;
|
113
|
+
cursor: pointer;
|
114
|
+
}
|
115
|
+
|
116
|
+
#login-form input.btn[type=button] {
|
117
|
+
background: #d34f46;
|
118
|
+
float: left;
|
119
|
+
}
|
120
|
+
|
121
|
+
#login-form input.btn[type=button]:hover {
|
122
|
+
background: #b53c34;
|
123
|
+
}
|
124
|
+
|
125
|
+
#login-form input[type=submit] {
|
126
|
+
background: #1c9a7f;
|
127
|
+
float: right;
|
128
|
+
}
|
129
|
+
|
130
|
+
#login-form input[type=submit]:hover {
|
131
|
+
background: #096652;
|
132
|
+
}
|
133
|
+
|
134
|
+
|
@@ -16,13 +16,24 @@
|
|
16
16
|
|
17
17
|
html { width: 100%; }
|
18
18
|
|
19
|
+
@font-face {
|
20
|
+
font-family: 'Avenir';
|
21
|
+
src: url('//d1ygukj37mahb2.cloudfront.net/assets/avenir-medium.eot');
|
22
|
+
src: url('//d1ygukj37mahb2.cloudfront.net/assets/avenir-medium.eot') format('embedded-opentype'),
|
23
|
+
url('//d1ygukj37mahb2.cloudfront.net/assets/avenir-medium.woff') format('woff'),
|
24
|
+
url('//d1ygukj37mahb2.cloudfront.net/assets/avenir-medium.ttf') format('truetype'),
|
25
|
+
url('//d1ygukj37mahb2.cloudfront.net/assets/avenir-medium.svg') format('svg');
|
26
|
+
font-weight: normal;
|
27
|
+
font-style: normal;
|
28
|
+
}
|
29
|
+
|
19
30
|
body {
|
20
31
|
background: #111111;
|
21
32
|
margin: 0;
|
22
33
|
padding: 0;
|
23
34
|
color: #fff;
|
24
35
|
width: 100%;
|
25
|
-
font-family:
|
36
|
+
font-family: "Avenir", Arial;
|
26
37
|
}
|
27
38
|
|
28
39
|
#modal_wrapper {
|
@@ -94,11 +105,14 @@ div.model_attribute_text {
|
|
94
105
|
}
|
95
106
|
|
96
107
|
input, select, textarea {
|
97
|
-
font-family:
|
98
|
-
border:
|
108
|
+
font-family: "Avenir", Arial;
|
109
|
+
border: 2px solid #ccc;
|
110
|
+
background: none;
|
111
|
+
color: #fff;
|
112
|
+
/*
|
99
113
|
-moz-border-radius: 2px;
|
100
114
|
-webkit-border-radius: 2px;
|
101
|
-
border-radius: 2px;
|
115
|
+
border-radius: 2px; */
|
102
116
|
padding: 4px 8px;
|
103
117
|
height: 34px;
|
104
118
|
font-size: 20px;
|
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
module Caboose
|
3
|
+
class BlockTypeCategoriesController < ApplicationController
|
4
|
+
|
5
|
+
# GET /admin/block-type-categories/tree-options
|
6
|
+
def admin_tree_options
|
7
|
+
return unless user_is_allowed('pages', 'edit')
|
8
|
+
render :json => BlockTypeCategory.tree
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
@@ -72,6 +72,7 @@ module Caboose
|
|
72
72
|
when 'parent_id' then bt.parent_id = v
|
73
73
|
when 'name' then bt.name = v
|
74
74
|
when 'description' then bt.description = v
|
75
|
+
when 'block_type_category_id' then bt.block_type_category_id = v
|
75
76
|
when 'render_function' then bt.render_function = v
|
76
77
|
when 'use_render_function' then bt.use_render_function = v
|
77
78
|
when 'use_render_function_for_layout' then bt.use_render_function_for_layout = v
|
@@ -217,7 +217,7 @@ module Caboose
|
|
217
217
|
})
|
218
218
|
|
219
219
|
parent_id = params[:parent_id]
|
220
|
-
title = params[:title]
|
220
|
+
title = params[:title]
|
221
221
|
|
222
222
|
if (title.strip.length == 0)
|
223
223
|
resp.error = "A page title is required."
|
@@ -235,7 +235,7 @@ module Caboose
|
|
235
235
|
|
236
236
|
page = Caboose::Page.new
|
237
237
|
page.title = title
|
238
|
-
page.parent_id = parent_id
|
238
|
+
page.parent_id = parent_id
|
239
239
|
page.hide = true
|
240
240
|
page.content_format = Caboose::Page::CONTENT_FORMAT_HTML
|
241
241
|
|
@@ -248,6 +248,9 @@ module Caboose
|
|
248
248
|
|
249
249
|
page.save
|
250
250
|
|
251
|
+
# Create the top level block for the page
|
252
|
+
Block.create(:page_id => page.id, :block_type_id => params[:block_type_id])
|
253
|
+
|
251
254
|
# Set the new page's permissions
|
252
255
|
viewers = Caboose::PagePermission.where({ :page_id => parent.id, :action => 'view' }).pluck(:role_id)
|
253
256
|
editors = Caboose::PagePermission.where({ :page_id => parent.id, :action => 'edit' }).pluck(:role_id)
|
data/app/models/caboose/block.rb
CHANGED
@@ -51,6 +51,11 @@ class Caboose::Block < ActiveRecord::Base
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
+
def full_name
|
55
|
+
return name if parent_id.nil?
|
56
|
+
return "#{parent.full_name}_#{name}"
|
57
|
+
end
|
58
|
+
|
54
59
|
def child_value(name)
|
55
60
|
b = child(name)
|
56
61
|
return nil if b.nil?
|
@@ -84,7 +89,7 @@ class Caboose::Block < ActiveRecord::Base
|
|
84
89
|
end
|
85
90
|
|
86
91
|
def render(block, options)
|
87
|
-
Caboose.log("block.render\nself.id = #{self.id}\nblock = #{block}\noptions.class = #{options.class}\noptions = #{options}")
|
92
|
+
#Caboose.log("block.render\nself.id = #{self.id}\nblock = #{block}\noptions.class = #{options.class}\noptions = #{options}")
|
88
93
|
|
89
94
|
if block && block.is_a?(String)
|
90
95
|
Caboose.log("Block #{block} is a string, finding block object... self.id = #{self.id}")
|
@@ -101,68 +106,30 @@ class Caboose::Block < ActiveRecord::Base
|
|
101
106
|
end
|
102
107
|
str = ""
|
103
108
|
|
104
|
-
defaults = {
|
105
|
-
:modal => false,
|
106
|
-
:empty_text => "",
|
107
|
-
:editing => false,
|
108
|
-
:css => nil,
|
109
|
-
:js => nil,
|
110
|
-
:block => block
|
111
|
-
}
|
109
|
+
defaults = { :modal => false, :empty_text => '', :editing => false, :css => nil, :js => nil, :block => block }
|
112
110
|
options2 = nil
|
113
|
-
#Caboose.log(options.class)
|
114
111
|
if options.is_a?(Hash)
|
115
|
-
options2 = defaults.merge(options)
|
116
|
-
#elsif options.is_a?(ActionView::Base)
|
117
|
-
# options2 = {
|
118
|
-
# :modal => options.modal,
|
119
|
-
# :empty_text => options.empty_text,
|
120
|
-
# :editing => options.editing,
|
121
|
-
# :css => options.css,
|
122
|
-
# :js => options.js
|
123
|
-
# }
|
112
|
+
options2 = defaults.merge(options)
|
124
113
|
else
|
125
|
-
options2 = {
|
126
|
-
:modal => options.modal,
|
127
|
-
:empty_text => options.empty_text,
|
128
|
-
:editing => options.editing,
|
129
|
-
:css => options.css,
|
130
|
-
:js => options.js
|
131
|
-
}
|
114
|
+
options2 = { :modal => options.modal, :empty_text => options.empty_text, :editing => options.editing, :css => options.css, :js => options.js }
|
132
115
|
end
|
133
116
|
options2[:block] = block
|
134
|
-
|
135
|
-
|
136
|
-
#options2.empty_text = "" if options2.empty_text.nil?
|
137
|
-
#options2.editing = false if options2.editing.nil?
|
138
|
-
#options[:css => nil,
|
139
|
-
#options[:js => nil
|
140
|
-
#}.merge(options)
|
141
|
-
#options2.block = block
|
142
|
-
|
143
|
-
if block.block_type.use_render_function && block.block_type.render_function
|
144
|
-
#Caboose.log("Rendering from function")
|
117
|
+
|
118
|
+
if block.block_type.use_render_function && block.block_type.render_function
|
145
119
|
str = block.render_from_function(options2)
|
146
120
|
else
|
147
121
|
view = ActionView::Base.new(ActionController::Base.view_paths)
|
148
122
|
begin
|
149
|
-
#
|
150
|
-
str = view.render(:partial => "caboose/blocks/#{block.
|
123
|
+
#str = view.render(:partial => "caboose/blocks/#{block.name}", :locals => options2)
|
124
|
+
str = view.render(:partial => "caboose/blocks/#{block.full_name}", :locals => options2)
|
151
125
|
rescue
|
152
|
-
#
|
153
|
-
|
154
|
-
|
155
|
-
str = view.render(:partial => "caboose/blocks/#{block.block_type.name}", :locals => options2)
|
156
|
-
rescue
|
157
|
-
#Caboose.log("Error rendering caboose/blocks/#{block.block_type.name}")
|
158
|
-
#Caboose.log("Rendering caboose/blocks/#{block.block_type.field_type}")
|
126
|
+
#begin
|
127
|
+
# str = view.render(:partial => "caboose/blocks/#{block.block_type.name}", :locals => options2)
|
128
|
+
#rescue
|
159
129
|
str = view.render(:partial => "caboose/blocks/#{block.block_type.field_type}", :locals => options2)
|
160
|
-
end
|
130
|
+
#end
|
161
131
|
end
|
162
|
-
end
|
163
|
-
#return str if block.parent_id.nil?
|
164
|
-
#return str if options[:editing].nil? || options[:editing] == false
|
165
|
-
#return "<div id='block_#{block.id}' class='block'>#{str}</div>"
|
132
|
+
end
|
166
133
|
return str
|
167
134
|
end
|
168
135
|
|
@@ -2,12 +2,14 @@
|
|
2
2
|
class Caboose::BlockType < ActiveRecord::Base
|
3
3
|
self.table_name = "block_types"
|
4
4
|
|
5
|
+
belongs_to :block_type_category
|
5
6
|
belongs_to :parent, :foreign_key => 'parent_id', :class_name => 'Caboose::BlockType'
|
6
7
|
has_many :children, :foreign_key => 'parent_id', :class_name => 'Caboose::BlockType', :dependent => :destroy
|
7
8
|
attr_accessible :id,
|
8
9
|
:parent_id,
|
9
10
|
:name,
|
10
|
-
:description,
|
11
|
+
:description,
|
12
|
+
:block_type_category_id,
|
11
13
|
:use_render_function,
|
12
14
|
:use_render_function_for_layout,
|
13
15
|
:allow_child_blocks,
|
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
class Caboose::BlockTypeCategory < ActiveRecord::Base
|
3
|
+
self.table_name = "block_type_categories"
|
4
|
+
|
5
|
+
belongs_to :parent, :foreign_key => 'parent_id', :class_name => 'Caboose::BlockTypeCategory'
|
6
|
+
has_many :children, :foreign_key => 'parent_id', :class_name => 'Caboose::BlockTypeCategory', :dependent => :destroy, :order => :name
|
7
|
+
has_many :block_types
|
8
|
+
attr_accessible :id,
|
9
|
+
:parent_id,
|
10
|
+
:name
|
11
|
+
|
12
|
+
def self.layouts
|
13
|
+
self.where("name = ? and parent_id is null", 'Layouts').reorder(:name).all
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.content
|
17
|
+
self.where("name = ? and parent_id is null", 'Content').reorder(:name).all
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.rows
|
21
|
+
cat = self.content
|
22
|
+
return false if cat.nil?
|
23
|
+
self.where("name = ? and parent_id = ?", 'Rows', cat.id).reorder(:name).all
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.tree
|
27
|
+
arr = []
|
28
|
+
self.where("parent_id is null").reorder(:name).all.each do |cat|
|
29
|
+
self.tree_helper(arr, cat, '')
|
30
|
+
end
|
31
|
+
return arr
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.tree_helper(arr, cat, prefix)
|
35
|
+
arr << { 'value' => cat.id, 'text' => "#{prefix}#{cat.name}" }
|
36
|
+
cat.children.each do |kid|
|
37
|
+
self.tree_helper(arr, kid, "#{prefix} - ")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -134,6 +134,7 @@ class Caboose::Schema < Caboose::Utilities::Schema
|
|
134
134
|
[ :parent_id , :integer ],
|
135
135
|
[ :name , :string ],
|
136
136
|
[ :description , :string ],
|
137
|
+
[ :block_type_category_id , :integer , { :default => 2 }],
|
137
138
|
[ :render_function , :text ],
|
138
139
|
[ :use_render_function , :boolean , { :default => false }],
|
139
140
|
[ :use_render_function_for_layout , :boolean , { :default => false }],
|
@@ -148,6 +149,10 @@ class Caboose::Schema < Caboose::Utilities::Schema
|
|
148
149
|
[ :options , :text ],
|
149
150
|
[ :options_function , :text ],
|
150
151
|
[ :options_url , :string ]
|
152
|
+
],
|
153
|
+
Caboose::BlockTypeCategory => [
|
154
|
+
[ :parent_id , :integer ],
|
155
|
+
[ :name , :string ]
|
151
156
|
],
|
152
157
|
#Caboose::Field => [
|
153
158
|
# [ :block_id , :integer ],
|
@@ -243,17 +248,6 @@ class Caboose::Schema < Caboose::Utilities::Schema
|
|
243
248
|
# end
|
244
249
|
# c.remove_column(:pages, :content)
|
245
250
|
#end
|
246
|
-
|
247
|
-
if !Caboose::BlockType.where(:name => 'heading').exists?
|
248
|
-
bt = Caboose::BlockType.create(:name => 'heading', :description => 'Heading')
|
249
|
-
Caboose::BlockType.create(:parent_id => bt.id, :name => 'text', :field_type => 'text', :description => 'Text', :default => '', :width => 800, :fixed_placeholder => false)
|
250
|
-
Caboose::BlockType.create(:parent_id => bt.id, :name => 'size', :field_type => 'text', :description => 'Size', :default => 1, :width => 800, :fixed_placeholder => false, :options => "1|2|3|4|5|6")
|
251
|
-
end
|
252
|
-
|
253
|
-
if !Caboose::BlockType.where(:name => 'richtext').exists?
|
254
|
-
bt = Caboose::BlockType.create(:name => 'richtext', :description => 'Rich Text')
|
255
|
-
Caboose::BlockType.create(:parent_id => bt.id, :name => 'text', :field_type => 'richtext', :description => 'Text', :default => '', :width => 800, :height => 400, :fixed_placeholder => false)
|
256
|
-
end
|
257
251
|
|
258
252
|
admin_user = nil
|
259
253
|
if !Caboose::User.exists?(:username => 'admin')
|
@@ -321,5 +315,46 @@ class Caboose::Schema < Caboose::Utilities::Schema
|
|
321
315
|
Caboose::Setting.create(:name => 'site_url' , :value => 'www.mycaboosesite.com' ) if !Caboose::Setting.exists?(:name => 'site_url' , :value => 'www.mycaboosesite.com' )
|
322
316
|
Caboose::Setting.create(:name => 'admin_email' , :value => 'william@nine.is' ) if !Caboose::Setting.exists?(:name => 'admin_email' , :value => 'william@nine.is' )
|
323
317
|
|
318
|
+
# Create default block type categories
|
319
|
+
btc = Caboose::BlockTypeCategory
|
320
|
+
layouts = btc.exists?(:name => 'Layouts') ? btc.where(:name => 'Layouts').first : btc.create(:name => 'Layouts')
|
321
|
+
content = btc.exists?(:name => 'Content') ? btc.where(:name => 'Content').first : btc.create(:name => 'Content')
|
322
|
+
btc.create(:name => 'Rows', :parent_id => content.id) if !btc.where(:name => 'Rows', :parent_id => content.id).exists?
|
323
|
+
|
324
|
+
# Create default block types
|
325
|
+
if !Caboose::BlockType.where(:name => 'layout_basic').exists?
|
326
|
+
bt = Caboose::BlockType.create(:name => 'layout_basic', :description => 'Basic', :block_type_category_id => layouts.id, :use_render_function_for_layout => true, :allow_child_blocks => false, :field_type => 'block')
|
327
|
+
Caboose::BlockType.create(:name => 'header' , :description => 'Header' , :parent_id => bt.id, :field_type => 'block')
|
328
|
+
Caboose::BlockType.create(:name => 'content' , :description => 'Content' , :parent_id => bt.id, :field_type => 'block', :allow_child_blocks => true)
|
329
|
+
Caboose::BlockType.create(:name => 'footer' , :description => 'Footer' , :parent_id => bt.id, :field_type => 'block')
|
330
|
+
end
|
331
|
+
|
332
|
+
if !Caboose::BlockType.where(:name => 'layout_left_sidebar').exists?
|
333
|
+
bt = Caboose::BlockType.create(:name => 'layout_left_sidebar', :description => 'Left Sidebar', :block_type_category_id => layouts.id, :use_render_function_for_layout => true, :allow_child_blocks => false, :field_type => 'block')
|
334
|
+
Caboose::BlockType.create(:name => 'header' , :description => 'Header' , :parent_id => bt.id, :field_type => 'block')
|
335
|
+
Caboose::BlockType.create(:name => 'sidebar' , :description => 'Sidebar' , :parent_id => bt.id, :field_type => 'block', :allow_child_blocks => true)
|
336
|
+
Caboose::BlockType.create(:name => 'content' , :description => 'Content' , :parent_id => bt.id, :field_type => 'block', :allow_child_blocks => true)
|
337
|
+
Caboose::BlockType.create(:name => 'footer' , :description => 'Footer' , :parent_id => bt.id, :field_type => 'block')
|
338
|
+
end
|
339
|
+
|
340
|
+
if !Caboose::BlockType.where(:name => 'layout_right_sidebar').exists?
|
341
|
+
bt = Caboose::BlockType.create(:name => 'layout_right_sidebar', :description => 'Right Sidebar', :block_type_category_id => layouts.id, :use_render_function_for_layout => true, :allow_child_blocks => false, :field_type => 'block')
|
342
|
+
Caboose::BlockType.create(:name => 'header' , :description => 'Header' , :parent_id => bt.id, :field_type => 'block')
|
343
|
+
Caboose::BlockType.create(:name => 'sidebar' , :description => 'Sidebar' , :parent_id => bt.id, :field_type => 'block', :allow_child_blocks => true)
|
344
|
+
Caboose::BlockType.create(:name => 'content' , :description => 'Content' , :parent_id => bt.id, :field_type => 'block', :allow_child_blocks => true)
|
345
|
+
Caboose::BlockType.create(:name => 'footer' , :description => 'Footer' , :parent_id => bt.id, :field_type => 'block')
|
346
|
+
end
|
347
|
+
|
348
|
+
if !Caboose::BlockType.where(:name => 'heading').exists?
|
349
|
+
bt = Caboose::BlockType.create(:name => 'heading', :description => 'Heading')
|
350
|
+
Caboose::BlockType.create(:parent_id => bt.id, :name => 'text', :description => 'Text', :field_type => 'text', :default => '', :width => 800, :fixed_placeholder => false)
|
351
|
+
Caboose::BlockType.create(:parent_id => bt.id, :name => 'size', :description => 'Size', :field_type => 'text', :default => 1, :width => 800, :fixed_placeholder => false, :options => "1|2|3|4|5|6")
|
352
|
+
end
|
353
|
+
|
354
|
+
if !Caboose::BlockType.where(:name => 'richtext').exists?
|
355
|
+
bt = Caboose::BlockType.create(:name => 'richtext', :description => 'Rich Text')
|
356
|
+
Caboose::BlockType.create(:parent_id => bt.id, :name => 'text', :field_type => 'richtext', :description => 'Text', :default => '', :width => 800, :height => 400, :fixed_placeholder => false)
|
357
|
+
end
|
358
|
+
|
324
359
|
end
|
325
360
|
end
|
@@ -3,12 +3,12 @@ bt = @block_type
|
|
3
3
|
%>
|
4
4
|
|
5
5
|
<h1>Edit Block Type</h1>
|
6
|
-
<p><div id='blocktype_<%= bt.id %>_parent_id'></div></p>
|
7
|
-
<p><div id='blocktype_<%= bt.id %>_name'></div></p>
|
8
6
|
<p><div id='blocktype_<%= bt.id %>_description'></div></p>
|
7
|
+
<p><div id='blocktype_<%= bt.id %>_name'></div></p>
|
8
|
+
<p><div id='blocktype_<%= bt.id %>_parent_id'></div></p>
|
9
|
+
<p><div id='blocktype_<%= bt.id %>_block_type_category_id'></div></p>
|
9
10
|
<p><div id='blocktype_<%= bt.id %>_field_type'></div></p>
|
10
11
|
|
11
|
-
|
12
12
|
<p><div id='blocktype_<%= bt.id %>_default'></div></p>
|
13
13
|
<p><div id='blocktype_<%= bt.id %>_width'></div></p>
|
14
14
|
<p><div id='blocktype_<%= bt.id %>_height'></div></p>
|
@@ -91,6 +91,7 @@ $(document).ready(function() {
|
|
91
91
|
{ name: 'parent_id' , nice_name: 'Parent' , type: 'select' , value: <%= raw Caboose.json(bt.parent_id) %>, width: 400, options_url: '/admin/block-types/tree-options' },
|
92
92
|
{ name: 'name' , nice_name: 'Name' , type: 'text' , value: <%= raw Caboose.json(bt.name) %>, width: 400 },
|
93
93
|
{ name: 'description' , nice_name: 'Description' , type: 'text' , value: <%= raw Caboose.json(bt.description) %>, width: 400 },
|
94
|
+
{ name: 'block_type_category_id' , nice_name: 'Category' , type: 'select' , value: <%= raw Caboose.json(bt.block_type_category_id) %>, width: 400, options_url: '/admin/block-type-categories/tree-options' },
|
94
95
|
{ name: 'use_render_function' , nice_name: 'Use Render Function' , type: 'checkbox' , value: <%= bt.use_render_function ? 'true' : 'false' %>, width: 400 },
|
95
96
|
{ name: 'use_render_function_for_layout' , nice_name: 'Use Render Function for Layout' , type: 'checkbox' , value: <%= bt.use_render_function_for_layout ? 'true' : 'false' %>, width: 400 },
|
96
97
|
{ name: 'allow_child_blocks' , nice_name: 'Allow Child Blocks' , type: 'checkbox' , value: <%= bt.allow_child_blocks ? 'true' : 'false' %>, width: 400 },
|
@@ -9,24 +9,22 @@ page = block.page
|
|
9
9
|
<head>
|
10
10
|
<meta charset="utf-8" />
|
11
11
|
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
|
12
|
-
<title><%= !page.title.nil? && page.title.strip.length > 0 ? "#{page.title} | " : ""
|
12
|
+
<title><%= !page.title.nil? && page.title.strip.length > 0 ? "#{page.title} | " : "" %><%= Caboose::website_name %></title>
|
13
13
|
<meta name="description" content="" />
|
14
14
|
<meta name="viewport" content="width=device-width" />
|
15
15
|
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAzhmPHU-MEhWXbpvAdZRjd0-ZmVy-KYA8&sensor=false"></script>
|
16
16
|
<%= raw css %>
|
17
17
|
<%= stylesheet_link_tag 'print', :media => 'print' %>
|
18
|
-
|
19
|
-
#= csrf_meta_tags
|
20
|
-
%>
|
18
|
+
<%= raw csrf_meta_tags %>
|
21
19
|
</head>
|
22
20
|
<body>
|
23
21
|
<div class="container" id='block_<%= block.id %>'>
|
24
22
|
<!--[if lt IE 7]>
|
25
23
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
26
24
|
<![endif]-->
|
27
|
-
<%= raw block.render('
|
28
|
-
<%= raw block.render('
|
29
|
-
<%= raw block.render('
|
25
|
+
<%= raw block.render('layout_basic_header' , local_assigns) %>
|
26
|
+
<%= raw block.render('layout_basic_content', local_assigns) %>
|
27
|
+
<%= raw block.render('layout_basic_footer' , local_assigns) %>
|
30
28
|
</div>
|
31
29
|
<%= raw js %>
|
32
30
|
</body>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<div class="content_wrapper" id='block_<%= block.id %>'>
|
2
|
+
<div class="content_body">
|
3
|
+
<% if block.children.count > 0 %>
|
4
|
+
<% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
|
5
|
+
<% end %>
|
6
|
+
<% if editing %><%= raw block.child_block_link %><% end %>
|
7
|
+
</div>
|
8
|
+
</div>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<%
|
2
|
+
page = block.page
|
3
|
+
%><!DOCTYPE html>
|
4
|
+
<!--[if lt IE 7]><html class="no-js ie lt-ie9 lt-ie8 lt-ie7" lang="en"><![endif]-->
|
5
|
+
<!--[if IE 7]><html class="no-js ie ie7 lt-ie9 lt-ie8" lang="en"><![endif]-->
|
6
|
+
<!--[if IE 8]><html class="no-js ie ie8 lt-ie9" lang="en"><![endif]-->
|
7
|
+
<!--[if IE 9]><html class="no-js ie ie9" lang="en"><![endif]-->
|
8
|
+
<!--[if !IE]><!--> <html class="no-js" lang="en"><!--<![endif]-->
|
9
|
+
<head>
|
10
|
+
<meta charset="utf-8" />
|
11
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
|
12
|
+
<title><%= !page.title.nil? && page.title.strip.length > 0 ? "#{page.title} | " : "" %><%= Caboose::website_name %></title>
|
13
|
+
<meta name="description" content="" />
|
14
|
+
<meta name="viewport" content="width=device-width" />
|
15
|
+
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAzhmPHU-MEhWXbpvAdZRjd0-ZmVy-KYA8&sensor=false"></script>
|
16
|
+
<%= raw css %>
|
17
|
+
<%= stylesheet_link_tag 'print', :media => 'print' %>
|
18
|
+
<%= raw csrf_meta_tags %>
|
19
|
+
</head>
|
20
|
+
<body>
|
21
|
+
<div class="container" id='block_<%= block.id %>'>
|
22
|
+
<!--[if lt IE 7]>
|
23
|
+
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
24
|
+
<![endif]-->
|
25
|
+
<%= raw block.render('layout_left_sidebar_header' , local_assigns) %>
|
26
|
+
<div class='sidebar_content_wrapper'>
|
27
|
+
<%= raw block.render('layout_left_sidebar_sidebar' , local_assigns) %>
|
28
|
+
<%= raw block.render('layout_left_sidebar_content' , local_assigns) %>
|
29
|
+
</div>
|
30
|
+
<%= raw block.render('layout_left_sidebar_footer' , local_assigns) %>
|
31
|
+
</div>
|
32
|
+
<%= raw js %>
|
33
|
+
</body>
|
34
|
+
</html>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<div class="content_wrapper" id='block_<%= block.id %>'>
|
2
|
+
<div class="content_body">
|
3
|
+
<% if block.children.count > 0 %>
|
4
|
+
<% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
|
5
|
+
<% end %>
|
6
|
+
<% if editing %><%= raw block.child_block_link %><% end %>
|
7
|
+
</div>
|
8
|
+
</div>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<%
|
2
|
+
page = block.page
|
3
|
+
%><!DOCTYPE html>
|
4
|
+
<!--[if lt IE 7]><html class="no-js ie lt-ie9 lt-ie8 lt-ie7" lang="en"><![endif]-->
|
5
|
+
<!--[if IE 7]><html class="no-js ie ie7 lt-ie9 lt-ie8" lang="en"><![endif]-->
|
6
|
+
<!--[if IE 8]><html class="no-js ie ie8 lt-ie9" lang="en"><![endif]-->
|
7
|
+
<!--[if IE 9]><html class="no-js ie ie9" lang="en"><![endif]-->
|
8
|
+
<!--[if !IE]><!--> <html class="no-js" lang="en"><!--<![endif]-->
|
9
|
+
<head>
|
10
|
+
<meta charset="utf-8" />
|
11
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
|
12
|
+
<title><%= !page.title.nil? && page.title.strip.length > 0 ? "#{page.title} | " : "" %><%= Caboose::website_name %></title>
|
13
|
+
<meta name="description" content="" />
|
14
|
+
<meta name="viewport" content="width=device-width" />
|
15
|
+
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAzhmPHU-MEhWXbpvAdZRjd0-ZmVy-KYA8&sensor=false"></script>
|
16
|
+
<%= raw css %>
|
17
|
+
<%= stylesheet_link_tag 'print', :media => 'print' %>
|
18
|
+
<%= raw csrf_meta_tags %>
|
19
|
+
</head>
|
20
|
+
<body>
|
21
|
+
<div class="container" id='block_<%= block.id %>'>
|
22
|
+
<!--[if lt IE 7]>
|
23
|
+
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
24
|
+
<![endif]-->
|
25
|
+
<%= raw block.render('layout_right_sidebar_header' , local_assigns) %>
|
26
|
+
<div class='sidebar_content_wrapper'>
|
27
|
+
<%= raw block.render('layout_right_sidebar_sidebar' , local_assigns) %>
|
28
|
+
<%= raw block.render('layout_right_sidebar_content' , local_assigns) %>
|
29
|
+
</div>
|
30
|
+
<%= raw block.render('layout_right_sidebar_footer' , local_assigns) %>
|
31
|
+
</div>
|
32
|
+
<%= raw js %>
|
33
|
+
</body>
|
34
|
+
</html>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<div class="content_wrapper" id='block_<%= block.id %>'>
|
2
|
+
<div class="content_body">
|
3
|
+
<% if block.children.count > 0 %>
|
4
|
+
<% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
|
5
|
+
<% end %>
|
6
|
+
<% if editing %><%= raw block.child_block_link %><% end %>
|
7
|
+
</div>
|
8
|
+
</div>
|
@@ -1,5 +1,9 @@
|
|
1
1
|
<form action="/login" method="post" id="login-form">
|
2
|
-
<
|
2
|
+
<div class="header">
|
3
|
+
<img src="/assets/caboose/caboose_logo.png" alt="Caboose">
|
4
|
+
<h1>caboose</h1>
|
5
|
+
<p>Coo Coo Ca Choo</p>
|
6
|
+
</div>
|
3
7
|
|
4
8
|
<input type="hidden" name="return_url" value="<%= @return_url %>" />
|
5
9
|
<input type="text" name="username" id="username" placeholder="Login or email" />
|
@@ -1,12 +1,23 @@
|
|
1
|
-
|
2
1
|
<h1>New Page</h1>
|
3
2
|
<p>Parent: <%= @parent ? @parent.title : "Home" %></p>
|
4
|
-
|
5
|
-
<
|
3
|
+
|
4
|
+
<form action='/admin/pages' method='post' id='new_page_form' onsubmit="add_page(); return false;">
|
5
|
+
<input type='hidden' name='authenticity_token' value='<%= form_authenticity_token %>' />
|
6
|
+
<input type='hidden' name='parent_id' value='<%= @parent_id %>' />
|
7
|
+
<p><input type='text' name='title' placeholder='Title' style="width: 400px;" /></p>
|
8
|
+
<p><select name='block_type_id'>
|
9
|
+
<option value=''>-- Select a layout --</option>
|
10
|
+
<% cat_ids = Caboose::BlockTypeCategory.layouts.collect{ |cat| cat.id } %>
|
11
|
+
<% Caboose::BlockType.where("block_type_category_id in (?)", cat_ids).reorder(:description).all.each do |bt| %>
|
12
|
+
<option value="<%= bt.id %>"><%= bt.description %></option>
|
13
|
+
<% end %>
|
14
|
+
</select></p>
|
15
|
+
<div id='message'></div>
|
6
16
|
<p>
|
7
17
|
<input type='button' value='< Back' onclick="window.location='/admin/pages';" />
|
8
|
-
<input type='submit' value='Add Page'
|
18
|
+
<input type='submit' value='Add Page' />
|
9
19
|
</p>
|
20
|
+
</form>
|
10
21
|
|
11
22
|
<% content_for :caboose_js do %>
|
12
23
|
<%= javascript_include_tag "caboose/model/all" %>
|
@@ -23,15 +34,10 @@ function add_page()
|
|
23
34
|
$.ajax({
|
24
35
|
url: '/admin/pages',
|
25
36
|
type: 'post',
|
26
|
-
data:
|
27
|
-
parent_id: $('#parent_id').val(),
|
28
|
-
title: $('#title').val()
|
29
|
-
},
|
37
|
+
data: $('#new_page_form').serialize(),
|
30
38
|
success: function(resp) {
|
31
|
-
if (resp.error)
|
32
|
-
|
33
|
-
if (resp.redirect)
|
34
|
-
parent.window.location = resp.redirect
|
39
|
+
if (resp.error) modal.autosize("<p class='note error'>" + resp.error + "</p>");
|
40
|
+
if (resp.redirect) parent.window.location = resp.redirect
|
35
41
|
}
|
36
42
|
});
|
37
43
|
}
|
data/config/routes.rb
CHANGED
@@ -134,6 +134,8 @@ Caboose::Engine.routes.draw do
|
|
134
134
|
put "admin/block-types/:id" => "block_types#admin_update"
|
135
135
|
delete "admin/block-types/:id" => "block_types#admin_delete"
|
136
136
|
|
137
|
+
get "admin/block-type-categories/tree-options" => "block_type_categories#admin_tree_options"
|
138
|
+
|
137
139
|
get "posts" => "posts#index"
|
138
140
|
get "posts/:id" => "posts#detail"
|
139
141
|
get "admin/posts/category-options" => "posts#admin_category_options"
|
data/lib/caboose/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: caboose-cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Barry
|
@@ -172,6 +172,9 @@ executables:
|
|
172
172
|
extensions: []
|
173
173
|
extra_rdoc_files: []
|
174
174
|
files:
|
175
|
+
- app/assets/fonts/avenir-medium.eot
|
176
|
+
- app/assets/fonts/avenir-medium.ttf
|
177
|
+
- app/assets/images/caboose/caboose_logo.png
|
175
178
|
- app/assets/images/caboose/caboose_logo_small.png
|
176
179
|
- app/assets/images/caboose/caboose_nav.png
|
177
180
|
- app/assets/images/caboose/caboose_nav_black.png
|
@@ -181,6 +184,9 @@ files:
|
|
181
184
|
- app/assets/images/caboose/loading_small_black_on_white.gif
|
182
185
|
- app/assets/images/caboose/loading_small_white_on_black.gif
|
183
186
|
- app/assets/images/caboose/loading_white_on_black.gif
|
187
|
+
- app/assets/images/caboose/login_image.png
|
188
|
+
- app/assets/images/caboose/modal_overlay.png
|
189
|
+
- app/assets/images/caboose/password_image.png
|
184
190
|
- app/assets/images/caboose/search.png
|
185
191
|
- app/assets/javascripts/caboose/admin.js
|
186
192
|
- app/assets/javascripts/caboose/admin_block_edit.js
|
@@ -221,6 +227,8 @@ files:
|
|
221
227
|
- app/assets/stylesheets/caboose/application.css
|
222
228
|
- app/assets/stylesheets/caboose/bound_input.css
|
223
229
|
- app/assets/stylesheets/caboose/caboose.css
|
230
|
+
- app/assets/stylesheets/caboose/fonts/avenir-medium.eot
|
231
|
+
- app/assets/stylesheets/caboose/fonts/avenir-medium.ttf
|
224
232
|
- app/assets/stylesheets/caboose/fonts/big_noodle_titling.ttf
|
225
233
|
- app/assets/stylesheets/caboose/fonts/big_noodle_titling_oblique.ttf
|
226
234
|
- app/assets/stylesheets/caboose/fonts.css
|
@@ -237,6 +245,7 @@ files:
|
|
237
245
|
- app/controllers/caboose/ab_variants_controller.rb
|
238
246
|
- app/controllers/caboose/admin_controller.rb
|
239
247
|
- app/controllers/caboose/application_controller.rb
|
248
|
+
- app/controllers/caboose/block_type_categories_controller.rb
|
240
249
|
- app/controllers/caboose/block_types_controller.rb
|
241
250
|
- app/controllers/caboose/blocks_controller.rb
|
242
251
|
- app/controllers/caboose/login_controller.rb
|
@@ -265,6 +274,7 @@ files:
|
|
265
274
|
- app/models/caboose/authenticator.rb
|
266
275
|
- app/models/caboose/block.rb
|
267
276
|
- app/models/caboose/block_type.rb
|
277
|
+
- app/models/caboose/block_type_category.rb
|
268
278
|
- app/models/caboose/caboose_plugin.rb
|
269
279
|
- app/models/caboose/core_plugin.rb
|
270
280
|
- app/models/caboose/database_session.rb
|
@@ -301,10 +311,20 @@ files:
|
|
301
311
|
- app/views/caboose/blocks/_heading.html.erb
|
302
312
|
- app/views/caboose/blocks/_html.html.erb
|
303
313
|
- app/views/caboose/blocks/_image.html.erb
|
304
|
-
- app/views/caboose/blocks/
|
305
|
-
- app/views/caboose/blocks/
|
306
|
-
- app/views/caboose/blocks/
|
307
|
-
- app/views/caboose/blocks/
|
314
|
+
- app/views/caboose/blocks/_layout_basic.html.erb
|
315
|
+
- app/views/caboose/blocks/_layout_basic_content.html.erb
|
316
|
+
- app/views/caboose/blocks/_layout_basic_footer.html.erb
|
317
|
+
- app/views/caboose/blocks/_layout_basic_header.html.erb
|
318
|
+
- app/views/caboose/blocks/_layout_left_sidebar.html.erb
|
319
|
+
- app/views/caboose/blocks/_layout_left_sidebar_content.html.erb
|
320
|
+
- app/views/caboose/blocks/_layout_left_sidebar_footer.html.erb
|
321
|
+
- app/views/caboose/blocks/_layout_left_sidebar_header.html.erb
|
322
|
+
- app/views/caboose/blocks/_layout_left_sidebar_sidebar.html.erb
|
323
|
+
- app/views/caboose/blocks/_layout_right_sidebar.html.erb
|
324
|
+
- app/views/caboose/blocks/_layout_right_sidebar_content.html.erb
|
325
|
+
- app/views/caboose/blocks/_layout_right_sidebar_footer.html.erb
|
326
|
+
- app/views/caboose/blocks/_layout_right_sidebar_header.html.erb
|
327
|
+
- app/views/caboose/blocks/_layout_right_sidebar_sidebar.html.erb
|
308
328
|
- app/views/caboose/blocks/_richtext.html.erb
|
309
329
|
- app/views/caboose/blocks/_text.html.erb
|
310
330
|
- app/views/caboose/blocks/admin_edit.html.erb
|
@@ -1,16 +0,0 @@
|
|
1
|
-
<div class="page_wrap" id='block_<%= block.id %>'>
|
2
|
-
<div class="page_body">
|
3
|
-
<div class="page_content">
|
4
|
-
<div class="icons-social">
|
5
|
-
<ul>
|
6
|
-
<li><a class="icon-twitter" href="https://twitter.com/truesouthprop"></a></li>
|
7
|
-
<li><a class="icon-facebook" href="https://www.facebook.com/pages/TrueSouth-Properties/144790345550944"></a></li>
|
8
|
-
</ul>
|
9
|
-
</div>
|
10
|
-
<% if block.children.count > 0 %>
|
11
|
-
<% block.children.each do |b| %><%= raw block.render(b, local_assigns) %><% end %>
|
12
|
-
<% end %>
|
13
|
-
<% if editing %><%= raw block.child_block_link %><% end %>
|
14
|
-
</div>
|
15
|
-
</div>
|
16
|
-
</div>
|
@@ -1,20 +0,0 @@
|
|
1
|
-
<div class="footer" id='block_<%= block.id %>'>
|
2
|
-
<div class="constrain">
|
3
|
-
<div class="nav">
|
4
|
-
<ul>
|
5
|
-
<li><a href="/">Home</a></li>
|
6
|
-
<li><a href="/about">About</a></li>
|
7
|
-
<li><a href="/services">Services</a></li>
|
8
|
-
<li><a href="/properties/category/land">Land</a></li>
|
9
|
-
<li><a href="/properties/category/commercial">Commercial</a></li>
|
10
|
-
<li><a href="/properties/category/residential">Residential</a></li>
|
11
|
-
<li><a href="/properties/category/rural">Rural</a></li>
|
12
|
-
<li><a href="/contact/montgomery">Contact</a></li>
|
13
|
-
</ul>
|
14
|
-
</div>
|
15
|
-
<div class="nine">
|
16
|
-
<span>site designed, built and loved by:</span>
|
17
|
-
<a href="http://www.nine.is" target="_blank"><div class="logo"></div></a>
|
18
|
-
</div>
|
19
|
-
</div>
|
20
|
-
</div>
|
@@ -1,32 +0,0 @@
|
|
1
|
-
<div class="header" id="block_<%= block.id %>">
|
2
|
-
<div class="constrain">
|
3
|
-
<a href="/"><div class="logo" style="width: <%= block.child('logo_size').value %>;"></div></a>
|
4
|
-
<a href="/"><div class="mobile_logo"></div></a>
|
5
|
-
<div class='register'><a href='/newsletter'>Sign up for our newsletter</a></div>
|
6
|
-
<div class="nav">
|
7
|
-
<ul>
|
8
|
-
<li><a href="/">Home</a></li>
|
9
|
-
<li><a href="/about">About</a></li>
|
10
|
-
<li><a href="/properties/category/land">Land</a></li>
|
11
|
-
<li><a href="/properties/category/commercial">Commercial</a></li>
|
12
|
-
<li><a href="/properties/category/rural">Rural</a></li>
|
13
|
-
<li><a href="/properties/category/residential">Residential</a></li>
|
14
|
-
<li><a href="/services">Services</a></li>
|
15
|
-
<li><a href="/contact/montgomery">Contact Us</a></li>
|
16
|
-
</ul>
|
17
|
-
</div>
|
18
|
-
<a id="show_menu" href="#sidr"><img src="//d323vxen8l6os.cloudfront.net/assets/icons/sidr.png"></a>
|
19
|
-
<div id="sidr" style="display:none;">
|
20
|
-
<ul>
|
21
|
-
<li><a href="/">Home</a></li>
|
22
|
-
<li><a href="/about">About</a></li>
|
23
|
-
<li><a href="/services">Services</a></li>
|
24
|
-
<li><a href="/properties/category/land">Land</a></li>
|
25
|
-
<li><a href="/properties/category/commercial">Commercial</a></li>
|
26
|
-
<li><a href="/properties/category/residential">Residential</a></li>
|
27
|
-
<li><a href="/properties/category/rural">Rural</a></li>
|
28
|
-
<li><a href="/contact/montgomery">Contact</a></li>
|
29
|
-
</ul>
|
30
|
-
</div>
|
31
|
-
</div>
|
32
|
-
</div>
|