caboose-cms 0.9.105 → 0.9.106

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c91b1719a19dc633fe8e4487e7f367d37667a76c
4
- data.tar.gz: af5a3af76d2670ea0b1c8b629f8d0ab4ee014883
3
+ metadata.gz: b2582096246cab8ae4b3d29739b2d2235ea7902d
4
+ data.tar.gz: 6dbe124afb37cc6d8946ee06717ba08d295f5e43
5
5
  SHA512:
6
- metadata.gz: c180fba3f360817124a39cece4cf35864314217adaf9699abb0399780bc58cef59f9ebe961c38269b5399ed3cae3aaffd6634c601beb7f8ed326508998ae25de
7
- data.tar.gz: b9085bc03d7cecf21126fc5d3361b7cce059acbc93e8645ae6e7f9ff1522aad52d0c0cdc8a4768ca5914058076d8ea033346be925c424723d05730a3f9574439
6
+ metadata.gz: 16f7e167f36b59ce3667f8ed377d57d58470f0e240aff437f8062a07583b69b20a8ae3fb33cc09798d26d6543fdcb3308e22a63e11e5a39ce6d24cb3a4d385cc
7
+ data.tar.gz: f72a582447399cbd4f8dae7d7ae6208070bffa9792f3ebd1724b7f7d396d32dea964f78c690de28c8ad23f4af0d48202f6554568338b03422e75f217c7c33330
@@ -83,4 +83,6 @@
83
83
  <glyph glyph-name="money" unicode="&#44;" d="M221 409c-8-1-18-4-25-8-9-5-16-11-22-19-7-9-11-20-11-33 0-18 7-32 19-43 9-8 21-14 36-19l22-6 0 131c0 0-8 0-19-3z m3-107c-12 4-24 9-32 16-9 8-13 18-13 31 0 9 3 17 7 23 5 6 10 11 17 15 6 3 14 5 21 7z m124-87c-8 9-18 15-28 18-9 3-18 6-28 9l-20 5 0-145c0 0 12 0 18 1 7 1 11 2 17 4 13 4 23 9 31 15 9 7 16 15 20 24 3 9 5 18 5 27 0 18-5 32-15 42z m-5-62c-3-7-8-13-14-18-7-5-16-10-27-13-4-1-8-2-14-3l0 107c10-3 18-5 26-8 8-3 16-7 23-14 7-7 10-17 10-31 0-7-1-14-4-20z m68 56c-3 9-8 18-14 27-6 8-14 16-24 22-9 7-21 12-33 15-6 2-15 4-26 7-9 2-17 4-26 6l0 106c9-2 15-6 22-10 14-10 23-25 26-46l69 0c-1 18-5 33-12 46-8 15-19 27-33 37-14 10-30 17-48 22-8 3-15 4-24 6l0 33-64 0 0-33c-7-1-15-3-22-4-18-5-33-11-46-20-14-9-25-20-33-34-8-13-12-29-12-48 0-9 1-19 4-28 3-9 7-18 14-26 7-8 15-16 27-23 11-6 24-12 41-16 9-2 19-4 27-6l0-120c-11 3-22 8-31 14-9 6-16 14-21 23-5 10-7 21-7 33l-69 0c1-21 5-39 14-55 8-17 20-30 35-41 15-11 31-18 51-23 9-3 19-4 28-6l0-35 64 0 0 35c10 1 19 2 29 4 18 5 35 11 50 21 15 9 26 21 35 35 9 15 14 32 14 53 0 10-2 19-5 29z m-22-73c-8-13-18-23-31-31-13-8-28-14-45-18-9-2-17-4-26-5l-15-1 0-33-32 0 0 33-14 2c-9 1-18 3-26 5-18 5-33 12-46 21-13 9-23 21-30 35-5 10-9 21-10 32l36 0c2-8 4-17 8-24 6-12 15-22 26-30 11-7 24-12 36-15 12-4 20-4 20-4l0 151-12 3c-5 1-11 3-16 4-4 1-7 2-11 3l0 0 0 0c-15 3-27 8-37 14-10 6-17 12-23 19-5 6-9 13-11 21-2 7-3 15-3 23 0 16 3 29 10 40 7 11 16 21 28 28 12 8 25 14 41 18 6 2 13 3 20 4l14 2 0 31 32 0 0-31 13-2c7-1 14-3 23-5 16-4 31-11 43-20 11-8 21-19 28-32 4-7 6-14 8-22l-38 0c-5 19-15 34-30 43-9 6-18 9-28 12-9 3-19 4-19 4l0-137 13-3c7-2 14-4 21-6l4-1 1 0c11-3 19-5 24-6 11-3 21-8 29-13 8-6 15-12 20-19 6-7 10-14 12-22 3-8 4-16 4-24 0-17-4-32-11-44z"/>
84
84
  <glyph glyph-name="rss" unicode="&#45;" d="M120 176c-31 0-56-25-56-56 0-31 25-56 56-56 31 0 56 25 56 56 0 31-25 56-56 56z m0-96c-22 0-40 18-40 40 0 22 18 40 40 40 22 0 40-18 40-40 0-22-18-40-40-40z m-56 240l0-80c48 0 94-14 128-48 34-34 48-80 48-128l80 0c0 140-116 256-256 256z m240-240l-48 0c-4 50-21 92-53 123-31 32-73 49-123 53l0 47c26-1 52-8 77-18 28-12 54-30 76-52 22-22 40-48 52-76 11-25 17-51 19-77z m-240 368l0-80c171 0 304-133 304-304l80 0c0 212-172 384-384 384z m227-157c-56 57-130 89-211 93l0 48c190-9 344-162 352-352l-48 0c-4 81-37 155-93 211z"/>
85
85
  <glyph glyph-name="stack" unicode="&#46;" d="M71 347l169-81c4-2 10-3 16-3 6 0 12 1 16 3l169 81c9 5 9 12 0 16l-169 82c-4 2-10 3-16 3-6 0-12-1-16-3l-169-82c-9-4-9-11 0-16z m176 83c1 1 5 2 9 2 4 0 8-1 9-2l156-75-156-75c-1-1-5-1-9-1-4 0-7 0-9 1l-156 75z m194-166c0 0-31 15-35 17-4 2-5 2-9 0-4-2-125-61-125-61-4-2-10-3-16-3-6 0-12 1-16 3 0 0-117 57-123 60-6 3-8 3-13 0-6-3-33-16-33-16-9-4-9-11 0-16l169-81c4-3 10-4 16-4 6 0 12 1 16 4l169 81c9 4 9 11 0 16z m-176-83c-1-1-5-2-9-2-4 0-7 1-9 2l-156 75 19 9 123-59c6-3 15-5 23-5 9 0 17 2 23 5l123 59 19-9z m176-17c0 0-31 15-35 17-4 2-5 2-9 0-4-2-125-60-125-60-4-2-10-3-16-3-6 0-12 1-16 3 0 0-117 57-123 59-6 3-8 3-13 1-6-3-33-17-33-17-9-4-9-11 0-15l169-82c4-2 10-3 16-3 6 0 12 1 16 3l169 82c9 4 9 11 0 15z m-176-82c-1-1-5-2-9-2-4 0-7 1-9 2l-156 75 19 9 123-60c6-3 15-4 23-4 9 0 17 1 23 4l123 60 19-9z"/>
86
+ <glyph glyph-name="hidden" unicode="&#47;" d="M316 316c-4 4-11 4-15 0-4-4-4-11 0-15 12-12 19-28 19-45 0-35-29-64-64-64-17 0-33 7-45 19-4 4-11 4-15 0-4-4-4-11 0-15 16-16 37-25 60-25 47 0 85 38 85 85 0 23-9 44-25 60z m-45 24c-5 1-10 1-15 1-47 0-85-38-85-85 0-5 0-10 1-15 1-5 6-9 11-9 0 0 1 0 2 0 5 2 9 7 8 13-1 3-1 7-1 11 0 35 29 64 64 64 4 0 8 0 11-1 6-1 11 3 13 9 1 5-3 11-9 12z m238-77c-2 3-60 70-139 111-5 3-12 1-15-4-2-5 0-12 5-15 61-31 110-81 127-99-25-28-126-128-231-128-36 0-72 9-107 26-6 2-12 0-14-5-3-6-1-12 4-14 39-19 78-28 117-28 131 0 249 136 253 142 4 4 4 10 0 14z m-183 130c-24 8-48 12-70 12-131 0-249-136-253-142-4-4-4-9-1-13 1-2 37-52 98-93 2-1 4-2 6-2 3 0 6 2 9 5 3 5 1 12-3 15-45 30-76 66-88 80 25 27 126 129 232 129 20 0 41-4 63-11 6-2 12 1 14 7 2 5-1 11-7 13z m119 52c-4 4-11 4-15 0l-363-363c-4-4-4-11 0-15 2-2 5-3 8-3 2 0 5 1 7 3l363 363c4 4 4 11 0 15z"/>
87
+ <glyph glyph-name="visible" unicode="&#58;" d="M510 262c-4 6-101 143-254 143-131 0-249-136-253-142-4-4-4-10 0-14 4-6 122-142 253-142 131 0 249 136 253 142 4 4 4 9 1 13z m-254-134c-105 0-206 100-231 128 25 28 125 128 231 128 123 0 210-100 232-127-25-27-126-129-232-129z m0 213c-47 0-85-38-85-85 0-47 38-85 85-85 47 0 85 38 85 85 0 47-38 85-85 85z m0-149c-35 0-64 29-64 64 0 35 29 64 64 64 35 0 64-29 64-64 0-35-29-64-64-64z"/>
86
88
  </font></defs></svg>
@@ -123,7 +123,7 @@ $current-text-color: #ccc;
123
123
  }
124
124
 
125
125
  #page-list {
126
- max-width: 640px;
126
+ max-width: 660px;
127
127
  margin: 0 auto;
128
128
  padding: 0 20px 100px 20px;
129
129
  .top {
@@ -163,7 +163,7 @@ $current-text-color: #ccc;
163
163
  position: relative;
164
164
  a.icon3-settings {
165
165
  position: absolute;
166
- right: 4px;
166
+ right: 30px;
167
167
  top: 8px;
168
168
  font-size: 0;
169
169
  color: transparent;
@@ -182,14 +182,14 @@ $current-text-color: #ccc;
182
182
  }
183
183
  }
184
184
  }
185
- a.content {
185
+ .content {
186
186
  text-decoration: none;
187
187
  color: #2d2d2d;
188
188
  display: block;
189
189
  margin-bottom: 5px;
190
190
  border: 1px solid #c5c5c5;
191
191
  border-radius: 8px;
192
- padding: 8px 8px 8px 30px;
192
+ padding: 8px 60px 8px 30px;
193
193
  font-size: 14px;
194
194
  &:hover {
195
195
  background-color: #e7e7ff;
@@ -204,9 +204,27 @@ $current-text-color: #ccc;
204
204
  top: 7px;
205
205
  }
206
206
  }
207
- span.disabled {
208
- text-decoration: line-through;
209
- color: #888888;
207
+ a.pub {
208
+ position: absolute;
209
+ right: 9px;
210
+ top: 10px;
211
+ font-size: 0;
212
+ color: transparent;
213
+ width: 17px;
214
+ height: 16px;
215
+ display: inline-block;
216
+ text-decoration: none;
217
+ z-index: 2;
218
+ cursor: pointer;
219
+ &::before {
220
+ font-size: 17px;
221
+ color: #2d2d2d;
222
+ }
223
+ &:hover {
224
+ &::before {
225
+ color: #1c1ccc;
226
+ }
227
+ }
210
228
  }
211
229
  &::before {
212
230
  content: " ";
@@ -219,7 +237,7 @@ $current-text-color: #ccc;
219
237
  background-color: #dadada;
220
238
  }
221
239
  &.hidden {
222
- & > a.content, & > a.icon3-settings {
240
+ & > .content, & > a.icon3-settings, & > a.pub {
223
241
  display: none;
224
242
  }
225
243
  &::before {
@@ -227,10 +245,10 @@ $current-text-color: #ccc;
227
245
  }
228
246
  }
229
247
  &.shown {
230
- & > a.content {
248
+ & > .content {
231
249
  display: block;
232
250
  }
233
- & > a.icon3-settings {
251
+ & > a.icon3-settings, & > a.pub {
234
252
  display: inline-block;
235
253
  }
236
254
  }
@@ -238,7 +256,7 @@ $current-text-color: #ccc;
238
256
  &::before {
239
257
  top: 11px;
240
258
  }
241
- & > a.content {
259
+ & > .content {
242
260
  font-size: 11px;
243
261
  padding: 4px 8px 3px 8px;
244
262
  background-color: #eaeaea;
@@ -246,7 +264,22 @@ $current-text-color: #ccc;
246
264
  display: none;
247
265
  }
248
266
  }
249
- & > a.icon3-settings {
267
+ & > a.icon3-settings, & > a.pub {
268
+ display: none;
269
+ }
270
+ }
271
+ &.disabled {
272
+ & > .content {
273
+ background: #d0d0d0;
274
+ text-decoration: line-through;
275
+ color: #5f5f5f;
276
+ font-size: 11px;
277
+ padding: 4px 8px 3px 8px;
278
+ &::before {
279
+ display: none;
280
+ }
281
+ }
282
+ & > a.icon3-settings, & > a.pub {
250
283
  display: none;
251
284
  }
252
285
  }
@@ -495,7 +495,7 @@ Page Bar Generator
495
495
  text-decoration: none;
496
496
  }
497
497
 
498
- #search_form input[type='text'] { height: 20px; padding: 6px 12px; }
498
+ #search_form input[type='text'] { padding: 6px 12px; }
499
499
  #search_form input[type='submit'] { height: 35px; padding: 0 12px; }
500
500
 
501
501
 
@@ -46,15 +46,16 @@
46
46
  // display: none;
47
47
  }
48
48
  a {
49
- display: block;
50
- margin: 0 0 2px 0;
51
- padding: 5px 8px 3px 8px;
52
- font-size: 14px;
53
- line-height: 18px;
54
- background: #efefef;
55
- border: #c7c7c7 1px solid;
56
- color: #292929;
57
- text-decoration: none;
49
+ display: block;
50
+ margin: 0 0 3px 0;
51
+ padding: 4px 8px 4px 8px;
52
+ font-size: 13px;
53
+ line-height: 15px;
54
+ background: #f3f3f3;
55
+ border: #d8d8d8 1px solid;
56
+ color: #292929;
57
+ text-decoration: none;
58
+ border-radius: 4px;
58
59
  &:focus {
59
60
  outline-width: 0;
60
61
  }
@@ -265,4 +265,10 @@
265
265
  }
266
266
  .icon3-stack:before {
267
267
  content: "\2e";
268
- }
268
+ }
269
+ .icon3-hidden:before {
270
+ content: "\2f";
271
+ }
272
+ .icon3-visible:before {
273
+ content: "\3a";
274
+ }
@@ -209,6 +209,36 @@ module Caboose
209
209
  render :layout => 'caboose/admin'
210
210
  end
211
211
  end
212
+
213
+ # @route PUT /admin/pages/:id/show
214
+ def admin_show_page
215
+ return unless user_is_allowed('pages', 'edit')
216
+ resp = StdClass.new({'attributes' => {}})
217
+ @page = Page.find(params[:id])
218
+ if @page.site_id != @logged_in_user.site_id
219
+ redirect_to '/admin/pages'
220
+ else
221
+ @page.hide = false
222
+ @page.save
223
+ resp.success = true
224
+ end
225
+ render :json => resp
226
+ end
227
+
228
+ # @route PUT /admin/pages/:id/hide
229
+ def admin_hide_page
230
+ return unless user_is_allowed('pages', 'edit')
231
+ resp = StdClass.new({'attributes' => {}})
232
+ @page = Page.find(params[:id])
233
+ if @page.site_id != @logged_in_user.site_id
234
+ redirect_to '/admin/pages'
235
+ else
236
+ @page.hide = true
237
+ @page.save
238
+ resp.success = true
239
+ end
240
+ render :json => resp
241
+ end
212
242
 
213
243
  # @route PUT /admin/pages/:id/layout
214
244
  def admin_update_layout
@@ -3,22 +3,24 @@ module Caboose
3
3
  def pages_list(page)
4
4
  is_admin = @logged_in_user && @logged_in_user.is_allowed('all', 'all')
5
5
  str = "<ul>"
6
- str << pages_list_helper(page, is_admin)
6
+ str << pages_list_helper(page, is_admin, true)
7
7
  str << "</ul>"
8
8
  return str
9
9
  end
10
10
 
11
- def pages_list_helper(page, is_admin)
11
+ def pages_list_helper(page, is_admin, is_top)
12
12
  if is_admin || ((@logged_in_user && Page.permissible_actions(@logged_in_user, page.id).include?('edit')) ? true : false)
13
13
  str = "<li><a class='content' href='/admin/pages/#{page.id}/content'>#{page.title}</a><a class='icon3-settings' href='/admin/pages/#{page.id}'>Settings</a>"
14
+ str << "<a title='Hide Page' href='#' data-page='#{page.id}' class='pub icon3-visible'>Hide Page</a>" if !page.hide && !is_top
15
+ str << "<a title='Show Page' href='#' data-page='#{page.id}' class='pub icon3-hidden'>Show Page</a>" if page.hide
14
16
  else
15
- str = "<li><span class='disabled'>#{page.title}</span>"
17
+ str = "<li class='disabled'><span class='content'>#{page.title}</span>"
16
18
  end
17
- pchildren = page.children.select([:id, :title])
19
+ pchildren = page.children.select([:id, :title, :hide])
18
20
  if pchildren && pchildren.count > 0
19
21
  str << "<ul>"
20
22
  pchildren.each do |p|
21
- str << pages_list_helper(p, is_admin)
23
+ str << pages_list_helper(p, is_admin, false)
22
24
  end
23
25
  str << "</ul>"
24
26
  end
@@ -17,11 +17,11 @@ end
17
17
  %>
18
18
 
19
19
  <h1>Categories</h1>
20
- <a href='/admin/categories/new'>New Category</a>
20
+ <a class="caboose-btn" href='/admin/categories/new'>New Category</a>
21
21
  <%= category_list(@top_cat) %>
22
22
 
23
23
  <% content_for :caboose_js do %>
24
24
  <script type='text/javascript'>
25
25
 
26
26
  </script>
27
- <% end %>
27
+ <% end %>
@@ -36,11 +36,11 @@
36
36
  else {
37
37
  $("#page-list li").addClass('hidden').removeClass('small').removeClass('shown');
38
38
  $("#no-results").text('');
39
- $.each($("a.content:Contains(" + q + ")"), function(k,v) {
39
+ $.each($(".content:Contains(" + q + ")"), function(k,v) {
40
40
  $(v).closest('li').addClass('shown').removeClass('hidden');
41
41
  $.each($(v).parents("li"), function(a,b) {
42
- var t1 = $(b).children("a.content").text().toUpperCase();
43
- if ( $(b).children("a.content").text().toUpperCase().indexOf(q) < 0 )
42
+ var t1 = $(b).children(".content").text().toUpperCase();
43
+ if ( $(b).children(".content").text().toUpperCase().indexOf(q) < 0 )
44
44
  $(b).addClass('small');
45
45
  $(b).addClass('shown').removeClass('hidden');
46
46
  });
@@ -54,5 +54,26 @@
54
54
  $("#pages-filter").keyup(function() {
55
55
  filter_pages();
56
56
  });
57
+ $(window).load(function() {
58
+ filter_pages();
59
+ });
60
+ $("a.pub").click(function(e) {
61
+ e.preventDefault();
62
+ var anc = $(this);
63
+ var page_id = anc.data('page');
64
+ var action = anc.hasClass('icon3-hidden') ? 'show' : 'hide';
65
+ $.ajax({
66
+ url: '/admin/pages/' + page_id + '/' + action,
67
+ type: 'put',
68
+ success: function(resp) {
69
+ if (resp && resp.success) {
70
+ if ( action == 'show' )
71
+ anc.removeClass('icon3-hidden').addClass('icon3-visible').attr('title','Hide Page');
72
+ if ( action == 'hide' )
73
+ anc.removeClass('icon3-visible').addClass('icon3-hidden').attr('title','Show Page');
74
+ }
75
+ }
76
+ });
77
+ });
57
78
  </script>
58
79
  <% end %>
@@ -4,13 +4,32 @@
4
4
  <h2>Reset Password for <%= "#{@edituser.first_name} #{@edituser.last_name}" %></h2>
5
5
  <form action='/admin/users/<%= @edituser.id %>' method='put' id='password_form'>
6
6
  <input type='hidden' name='authenticity_token' value='<%= form_authenticity_token %>' />
7
- <p><input type='password' name='password' id='password' value="" placeholder='Password' /></p>
8
- <p><input type='password' name='password2' id='password2' value="" placeholder='Confirm password' /></p>
7
+ <div class="field">
8
+ <label for="password">Password</label>
9
+ <input type='password' name='password' id='password' style="width:250px;" value="" />
10
+ </div>
11
+ <div class="field">
12
+ <label for="password2">Confirm Password</label>
13
+ <input type='password' name='password2' id='password2' style="width:250px;" value="" />
14
+ </div>
9
15
  <div id='message'></div>
10
16
  <p><input type='button' value='Update Password' onclick="update_password();" /></p>
11
17
 
12
18
  <%= render :partial => 'caboose/users/admin_footer' %>
13
19
 
20
+ <% content_for :caboose_css do %>
21
+ <style>
22
+ .field {
23
+ margin-bottom: 15px;
24
+ }
25
+ .field label {
26
+ display: block;
27
+ margin-bottom: 4px;
28
+ font-size: 13px;
29
+ }
30
+ </style>
31
+ <% end %>
32
+
14
33
  <% content_for :caboose_js do %>
15
34
  <script type="text/javascript">
16
35
 
@@ -1,3 +1,3 @@
1
1
  module Caboose
2
- VERSION = '0.9.105'
2
+ VERSION = '0.9.106'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caboose-cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.105
4
+ version: 0.9.106
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-15 00:00:00.000000000 Z
11
+ date: 2018-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg