cardboard_cms 0.1.6 → 0.1.8
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/Gemfile +0 -6
- data/Gemfile.lock +11 -11
- data/app/assets/images/cardboard/icons/doc.png +0 -0
- data/app/assets/images/cardboard/icons/docx.png +0 -0
- data/app/assets/images/cardboard/icons/pdf.png +0 -0
- data/app/assets/images/cardboard/icons/txt.png +0 -0
- data/app/assets/images/cardboard/icons/xls.png +0 -0
- data/app/assets/images/cardboard/icons/xlsx.png +0 -0
- data/app/assets/images/cardboard/icons/zip.png +0 -0
- data/app/assets/javascripts/cardboard/admin.js +2 -2
- data/app/assets/javascripts/cardboard/main_sidebar.js +7 -1
- data/app/assets/stylesheets/cardboard/_content_sidebar.css.scss +4 -2
- data/app/assets/stylesheets/cardboard/admin.css.scss +8 -6
- data/app/controllers/cardboard/super_user_controller.rb +1 -0
- data/app/helpers/cardboard/public_helper.rb +18 -1
- data/app/models/cardboard/field/boolean.rb +9 -9
- data/app/views/layouts/cardboard/_main_sidebar.html.slim +1 -1
- data/cardboard.gemspec +1 -1
- data/lib/cardboard/helpers/seed.rb +1 -1
- data/lib/cardboard/version.rb +1 -1
- data/lib/cardboard_cms.rb +5 -0
- data/vendor/assets/javascripts/cardboard/jquery.pjax.js +25 -7
- metadata +10 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe8f9938ba535b8fed9271fb66606e70e78e4a5b
|
4
|
+
data.tar.gz: 4eef9fe937568db71e1cd7af25b5f62f89add959
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 680fb7e71e94677f7930ab992999e43484db299760dbc490a754a60290cb095c0b5f5fc206ecb8c3daf65f5bf7507458d52b02b51016a3a82da3ac2ca7db942e
|
7
|
+
data.tar.gz: 15a04806e88a768d83a769af68f8bacdfc8b13757517538013452c333b6b091eb7197ece71e97d97c83659e673825715819eaf7c93789e6c829947992fbc6b5d
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cardboard_cms (0.1.
|
4
|
+
cardboard_cms (0.1.8)
|
5
5
|
bootstrap-datepicker-rails
|
6
6
|
bootstrap-sass (~> 2.2)
|
7
7
|
bootstrap-wysihtml5-rails
|
@@ -65,7 +65,7 @@ GEM
|
|
65
65
|
erubis (>= 2.6.6)
|
66
66
|
binding_of_caller (0.7.2)
|
67
67
|
debug_inspector (>= 0.0.1)
|
68
|
-
bootstrap-datepicker-rails (1.
|
68
|
+
bootstrap-datepicker-rails (1.3.0.1)
|
69
69
|
railties (>= 3.0)
|
70
70
|
bootstrap-sass (2.3.2.2)
|
71
71
|
sass (~> 3.2)
|
@@ -79,7 +79,7 @@ GEM
|
|
79
79
|
rack-test (>= 0.5.4)
|
80
80
|
xpath (~> 2.0)
|
81
81
|
chronic (0.10.2)
|
82
|
-
cocoon (1.2.
|
82
|
+
cocoon (1.2.5)
|
83
83
|
coderay (1.0.9)
|
84
84
|
coffee-rails (4.0.1)
|
85
85
|
coffee-script (>= 2.2.0)
|
@@ -87,7 +87,7 @@ GEM
|
|
87
87
|
coffee-script (2.2.0)
|
88
88
|
coffee-script-source
|
89
89
|
execjs
|
90
|
-
coffee-script-source (1.
|
90
|
+
coffee-script-source (1.7.0)
|
91
91
|
columnize (0.3.6)
|
92
92
|
daemons (1.1.9)
|
93
93
|
database_cleaner (1.0.1)
|
@@ -105,7 +105,7 @@ GEM
|
|
105
105
|
orm_adapter (~> 0.1)
|
106
106
|
railties (>= 3.2.6, < 5)
|
107
107
|
warden (~> 1.2.3)
|
108
|
-
dragonfly (1.0)
|
108
|
+
dragonfly (1.0.3)
|
109
109
|
multi_json (~> 1.0)
|
110
110
|
rack
|
111
111
|
erubis (2.7.0)
|
@@ -124,7 +124,7 @@ GEM
|
|
124
124
|
railties (>= 3.1.1)
|
125
125
|
sass-rails (>= 3.1.1)
|
126
126
|
formatador (0.2.4)
|
127
|
-
gon (
|
127
|
+
gon (5.0.1)
|
128
128
|
actionpack (>= 2.3.0)
|
129
129
|
json
|
130
130
|
guard (1.8.2)
|
@@ -147,10 +147,10 @@ GEM
|
|
147
147
|
jquery-rails (3.0.4)
|
148
148
|
railties (>= 3.0, < 5.0)
|
149
149
|
thor (>= 0.14, < 2.0)
|
150
|
-
jquery-ui-rails (4.1.
|
150
|
+
jquery-ui-rails (4.1.1)
|
151
151
|
railties (>= 3.1.0)
|
152
152
|
json (1.8.0)
|
153
|
-
kaminari (0.
|
153
|
+
kaminari (0.15.1)
|
154
154
|
actionpack (>= 3.0.0)
|
155
155
|
activesupport (>= 3.0.0)
|
156
156
|
kaminari-bootstrap (0.1.3)
|
@@ -241,7 +241,7 @@ GEM
|
|
241
241
|
json (~> 1.4)
|
242
242
|
responders (1.0.0)
|
243
243
|
railties (>= 3.2, < 5)
|
244
|
-
sass (3.2.
|
244
|
+
sass (3.2.14)
|
245
245
|
sass-rails (4.0.1)
|
246
246
|
railties (>= 4.0.0, < 5.0)
|
247
247
|
sass (>= 3.1.10)
|
@@ -251,7 +251,7 @@ GEM
|
|
251
251
|
rdoc (~> 3.10)
|
252
252
|
select2-rails (3.5.2)
|
253
253
|
thor (~> 0.14)
|
254
|
-
simple_form (3.0.
|
254
|
+
simple_form (3.0.1)
|
255
255
|
actionpack (>= 4.0.0, < 4.1)
|
256
256
|
activemodel (>= 4.0.0, < 4.1)
|
257
257
|
simplecov (0.7.1)
|
@@ -272,7 +272,7 @@ GEM
|
|
272
272
|
activesupport (>= 3.0)
|
273
273
|
sprockets (~> 2.8)
|
274
274
|
sqlite3 (1.3.7)
|
275
|
-
stringex (2.
|
275
|
+
stringex (2.2.0)
|
276
276
|
temple (0.6.7)
|
277
277
|
thin (1.5.1)
|
278
278
|
daemons (>= 1.0.9)
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -36,11 +36,11 @@ $(document).on('click', '.nav-tabs a', function(e){
|
|
36
36
|
$(this).tab('show');
|
37
37
|
});
|
38
38
|
|
39
|
-
$(document).on("pjax:
|
39
|
+
$(document).on("pjax:success ready cocoon:after-insert", function(e){
|
40
|
+
|
40
41
|
$('select:not([data-search-select])').selectpicker();
|
41
42
|
$('select[data-search-select]').select2({allowClear: true, width: "resolve"});
|
42
43
|
|
43
|
-
|
44
44
|
$('.nav-tabs a:first').tab('show');
|
45
45
|
});
|
46
46
|
|
@@ -2,6 +2,12 @@ $(function(){
|
|
2
2
|
$("a#nav_dashboard_link").click(function(e){
|
3
3
|
e.preventDefault();
|
4
4
|
$("#content_sidebar").toggleClass('toggle');
|
5
|
+
|
6
|
+
// Expand #main_content down to fit the exposed sidebar
|
7
|
+
$("#main_content").css('height',
|
8
|
+
$('#content_sidebar').height() + $('#main_topbar').height()
|
9
|
+
);
|
10
|
+
|
5
11
|
$('#content').toggleClass('toggle');
|
6
12
|
// $(this).toggleClass('active');
|
7
13
|
});
|
@@ -29,4 +35,4 @@ $(function(){
|
|
29
35
|
results.show();
|
30
36
|
});
|
31
37
|
});
|
32
|
-
});
|
38
|
+
});
|
@@ -15,7 +15,9 @@
|
|
15
15
|
display: none;
|
16
16
|
|
17
17
|
&.toggle {
|
18
|
-
|
18
|
+
position: absolute;
|
19
|
+
left: $main_sidebar_width;
|
20
|
+
display: inline;
|
19
21
|
// left: $main_sidebar_width;
|
20
22
|
// -webkit-transition: left $page_nav_slide_speed ease;
|
21
23
|
// -moz-transition: left $page_nav_slide_speed ease;
|
@@ -93,4 +95,4 @@
|
|
93
95
|
}
|
94
96
|
}
|
95
97
|
|
96
|
-
}
|
98
|
+
}
|
@@ -24,15 +24,17 @@ body{
|
|
24
24
|
overflow-x: hidden;
|
25
25
|
}
|
26
26
|
|
27
|
-
#main_content{
|
28
|
-
min-height:100%;
|
29
|
-
overflow: hidden;
|
27
|
+
#main_content {
|
30
28
|
width: 100%;
|
29
|
+
position: relative;
|
30
|
+
min-height: 100%;
|
31
31
|
}
|
32
|
+
|
32
33
|
#main_sidebar, #content_sidebar{
|
33
|
-
|
34
|
-
|
35
|
-
|
34
|
+
top: 0;
|
35
|
+
left: 0;
|
36
|
+
min-height: 100%;
|
37
|
+
position: absolute;
|
36
38
|
}
|
37
39
|
|
38
40
|
.center{
|
@@ -1,6 +1,23 @@
|
|
1
1
|
module Cardboard
|
2
2
|
module PublicHelper
|
3
3
|
|
4
|
+
def dragonfly_image_tag(image, options = {})
|
5
|
+
return nil unless image
|
6
|
+
size = options.delete(:size) || '125x125'
|
7
|
+
image_tag image.thumb(size).url, options
|
8
|
+
end
|
9
|
+
|
10
|
+
def link_to_file(text, file, options = {})
|
11
|
+
return link_to(text, nil, options) unless file && file.url
|
12
|
+
|
13
|
+
html = ""
|
14
|
+
if [:doc, :docx, :xls, :xlsx, :pdf, :zip, :txt].include?(file.format)
|
15
|
+
html += image_tag("cardboard/icons/#{file.format}.png")
|
16
|
+
end
|
17
|
+
html += link_to(text, file.url, options)
|
18
|
+
html.html_safe
|
19
|
+
end
|
20
|
+
|
4
21
|
# Example:
|
5
22
|
# link_to_page 123, class: "btn" do |page|
|
6
23
|
# "hello #{page.title}"
|
@@ -41,7 +58,7 @@ module Cardboard
|
|
41
58
|
inner_nested_pages(Cardboard::Page.arrange(page), &block).try(:html_safe)
|
42
59
|
end
|
43
60
|
|
44
|
-
|
61
|
+
private
|
45
62
|
|
46
63
|
def inner_nested_pages(pages, &block)
|
47
64
|
return unless pages
|
@@ -1,9 +1,14 @@
|
|
1
1
|
module Cardboard
|
2
2
|
class Field::Boolean < Field
|
3
|
-
before_validation :convert_to_boolean
|
4
|
-
|
5
3
|
validate :is_boolean
|
6
|
-
|
4
|
+
|
5
|
+
def value
|
6
|
+
to_boolean(value_uid)
|
7
|
+
end
|
8
|
+
|
9
|
+
def value=(val)
|
10
|
+
self.value_uid = to_boolean(val) #saved as a consistent string 't'
|
11
|
+
end
|
7
12
|
|
8
13
|
def default
|
9
14
|
[true, false].sample
|
@@ -12,12 +17,7 @@ module Cardboard
|
|
12
17
|
private
|
13
18
|
|
14
19
|
def is_boolean
|
15
|
-
errors.add(:value, "is not a valid boolean") if self.
|
16
|
-
end
|
17
|
-
|
18
|
-
def convert_to_boolean
|
19
|
-
self.value = to_boolean(self.value_uid)
|
20
|
-
true # don't return a validation error on false
|
20
|
+
errors.add(:value, "is not a valid boolean") if self.value_uid.nil?
|
21
21
|
end
|
22
22
|
|
23
23
|
def to_boolean(val)
|
data/cardboard.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.license = "GPLv3"
|
8
8
|
s.version = Cardboard::VERSION
|
9
9
|
s.platform = Gem::Platform::RUBY
|
10
|
-
s.authors = ["Michael Elfassy", "
|
10
|
+
s.authors = ["Michael Elfassy", "SmashingBoxes"]
|
11
11
|
s.email = ["michael@smashingboxes.com"]
|
12
12
|
s.homepage = "http://smashingboxes.com"
|
13
13
|
s.summary = "Rails CMS made simple"
|
@@ -29,7 +29,7 @@ module Cardboard
|
|
29
29
|
page_parts.each do |id, part|
|
30
30
|
db_part = db_page.parts.where(identifier: id.to_s).first_or_initialize
|
31
31
|
db_part.part_position_position = part[:position] || :last
|
32
|
-
db_part.update_attributes!(part
|
32
|
+
db_part.update_attributes!(:repeatable => part[:repeatable])
|
33
33
|
|
34
34
|
db_part.subparts.first_or_create!
|
35
35
|
|
data/lib/cardboard/version.rb
CHANGED
data/lib/cardboard_cms.rb
CHANGED
@@ -16,6 +16,11 @@ module Cardboard
|
|
16
16
|
@user_class ||= application.user_class.to_s.camelize.constantize
|
17
17
|
end
|
18
18
|
|
19
|
+
def used_as_cms?
|
20
|
+
@used_as_cms = Cardboard::Page.count > 0 if @used_as_cms.nil? #handle false
|
21
|
+
@used_as_cms
|
22
|
+
end
|
23
|
+
|
19
24
|
def set_resource_controllers
|
20
25
|
Dir[Rails.root.join('app/controllers/cardboard/*_controller.rb')].map.each do |controller|
|
21
26
|
require_dependency controller
|
@@ -1,6 +1,7 @@
|
|
1
1
|
// jquery.pjax.js
|
2
2
|
// copyright chris wanstrath
|
3
3
|
// https://github.com/defunkt/jquery-pjax
|
4
|
+
// version: 1.8.0
|
4
5
|
|
5
6
|
(function($){
|
6
7
|
|
@@ -85,8 +86,7 @@ function handleClick(event, container, options) {
|
|
85
86
|
var defaults = {
|
86
87
|
url: link.href,
|
87
88
|
container: $(link).attr('data-pjax'),
|
88
|
-
target: link
|
89
|
-
fragment: null
|
89
|
+
target: link
|
90
90
|
}
|
91
91
|
|
92
92
|
var opts = $.extend({}, defaults, options)
|
@@ -96,6 +96,7 @@ function handleClick(event, container, options) {
|
|
96
96
|
if (!clickEvent.isDefaultPrevented()) {
|
97
97
|
pjax(opts)
|
98
98
|
event.preventDefault()
|
99
|
+
$(link).trigger('pjax:clicked', [opts])
|
99
100
|
}
|
100
101
|
}
|
101
102
|
|
@@ -127,8 +128,7 @@ function handleSubmit(event, container, options) {
|
|
127
128
|
url: form.action,
|
128
129
|
data: $(form).serializeArray(),
|
129
130
|
container: $(form).attr('data-pjax'),
|
130
|
-
target: form
|
131
|
-
fragment: null
|
131
|
+
target: form
|
132
132
|
}
|
133
133
|
|
134
134
|
pjax($.extend({}, defaults, options))
|
@@ -263,8 +263,22 @@ function pjax(options) {
|
|
263
263
|
window.history.replaceState(pjax.state, container.title, container.url)
|
264
264
|
}
|
265
265
|
|
266
|
+
// Clear out any focused controls before inserting new page contents.
|
267
|
+
document.activeElement.blur()
|
268
|
+
|
266
269
|
if (container.title) document.title = container.title
|
267
270
|
context.html(container.contents)
|
271
|
+
|
272
|
+
// FF bug: Won't autofocus fields that are inserted via JS.
|
273
|
+
// This behavior is incorrect. So if theres no current focus, autofocus
|
274
|
+
// the last field.
|
275
|
+
//
|
276
|
+
// http://www.w3.org/html/wg/drafts/html/master/forms.html
|
277
|
+
var autofocusEl = context.find('input[autofocus], textarea[autofocus]').last()[0]
|
278
|
+
if (autofocusEl && document.activeElement !== autofocusEl) {
|
279
|
+
autofocusEl.focus();
|
280
|
+
}
|
281
|
+
|
268
282
|
executeScriptTags(container.scripts)
|
269
283
|
|
270
284
|
// Scroll to top by default
|
@@ -384,11 +398,15 @@ function onPjaxPopstate(event) {
|
|
384
398
|
var state = event.state
|
385
399
|
|
386
400
|
if (state && state.container) {
|
387
|
-
// When coming forward from a
|
401
|
+
// When coming forward from a separate history session, will get an
|
388
402
|
// initial pop with a state we are already at. Skip reloading the current
|
389
403
|
// page.
|
390
404
|
if (initialPop && initialURL == state.url) return
|
391
405
|
|
406
|
+
// If popping back to the same state, just skip.
|
407
|
+
// Could be clicking back from hashchange rather than a pushState.
|
408
|
+
if (pjax.state.id === state.id) return
|
409
|
+
|
392
410
|
var container = $(state.container)
|
393
411
|
if (container.length) {
|
394
412
|
var direction, contents = cacheMapping[state.id]
|
@@ -648,7 +666,7 @@ function extractContainer(data, xhr, options) {
|
|
648
666
|
// Remove any parent title elements
|
649
667
|
obj.contents = obj.contents.not(function() { return $(this).is('title') })
|
650
668
|
|
651
|
-
// Then scrub any titles from their
|
669
|
+
// Then scrub any titles from their descendants
|
652
670
|
obj.contents.find('title').remove()
|
653
671
|
|
654
672
|
// Gather all script[src] elements
|
@@ -811,7 +829,7 @@ function disable() {
|
|
811
829
|
if ( $.inArray('state', $.event.props) < 0 )
|
812
830
|
$.event.props.push('state')
|
813
831
|
|
814
|
-
|
832
|
+
// Is pjax supported by this browser?
|
815
833
|
$.support.pjax =
|
816
834
|
window.history && window.history.pushState && window.history.replaceState &&
|
817
835
|
// pushState isn't reliable on iOS until 5.
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cardboard_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Elfassy
|
8
|
-
-
|
8
|
+
- SmashingBoxes
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-02-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -491,6 +491,13 @@ files:
|
|
491
491
|
- app/assets/images/cardboard/.gitkeep
|
492
492
|
- app/assets/images/cardboard/bg.png
|
493
493
|
- app/assets/images/cardboard/calendar.png
|
494
|
+
- app/assets/images/cardboard/icons/doc.png
|
495
|
+
- app/assets/images/cardboard/icons/docx.png
|
496
|
+
- app/assets/images/cardboard/icons/pdf.png
|
497
|
+
- app/assets/images/cardboard/icons/txt.png
|
498
|
+
- app/assets/images/cardboard/icons/xls.png
|
499
|
+
- app/assets/images/cardboard/icons/xlsx.png
|
500
|
+
- app/assets/images/cardboard/icons/zip.png
|
494
501
|
- app/assets/images/cardboard/lorem-ipsum-coffe-mug.jpg
|
495
502
|
- app/assets/javascripts/cardboard.js
|
496
503
|
- app/assets/javascripts/cardboard/admin.js
|