caboose-cms 0.2.68 → 0.2.70
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/app/controllers/caboose/application_controller.rb +0 -1
- data/app/controllers/caboose/pages_controller.rb +31 -10
- data/app/helpers/caboose/pages_helper.rb +0 -1
- data/app/models/caboose/page.rb +16 -38
- data/app/models/caboose/page_block.rb +8 -0
- data/app/views/caboose/pages/admin_delete_form.html.erb +1 -1
- data/app/views/caboose/pages/admin_edit_general.html.erb +13 -4
- data/config/routes.rb +1 -0
- data/lib/caboose/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MWE2N2IxNDliN2ZmNjM3MDk5NzNkYjgxMWY0NGQ0NzhjZTFjMjkwMA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YjI3MDM4NmU3MWI5YmEyMjM3N2MzZjdhMzFiOGEwNzBiNzNmM2I3Mg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NGJkMmY5NWQxZjFjNDdmMDUwNDYwZGU3MTU3MmQ4Y2FkNDZmOGE1Y2VkYWQ3
|
10
|
+
NjViZWE0NmRkZjEyMGNlZDJhODQzYWQ2NzdjNjY0YWY0YWNmZmUwMTEwODQ5
|
11
|
+
ODZjYTc3MTMyODQ2YzUzNTk5Mjk0NWQ0MWZkOThmMTFmYjUzMzk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OTkwYjM4NmU4ZTMyNDEzODkzNmU2YTEyOGZiMTczOGYyOTYxZDk5MmEzNjYy
|
14
|
+
OTk3YTY5NmNlNmJhNTM1MWU2NDMzODFmYWQ4MTVhNDE4YzRiZDhkMTAxODRl
|
15
|
+
NThlNzYwZmI1MzI3ZjhmMmIxNDQ5MjYwMmE0NmY4NzQ1NmQzYjI=
|
@@ -2,6 +2,8 @@
|
|
2
2
|
module Caboose
|
3
3
|
class PagesController < ApplicationController
|
4
4
|
|
5
|
+
helper :application
|
6
|
+
|
5
7
|
def before_action
|
6
8
|
@page = Page.page_with_uri('/admin')
|
7
9
|
end
|
@@ -209,30 +211,32 @@ module Caboose
|
|
209
211
|
user = logged_in_user
|
210
212
|
params.each do |name, value|
|
211
213
|
case name
|
212
|
-
when 'parent_id'
|
213
|
-
|
214
|
+
when 'parent_id'
|
215
|
+
value = value.to_i
|
216
|
+
if page.id == value
|
214
217
|
resp.error = "The page's parent cannot be itself."
|
215
|
-
elsif
|
218
|
+
elsif Page.is_child(page.id, value)
|
216
219
|
resp.error = "You can't set the current page's parent to be one of its child pages."
|
217
|
-
elsif
|
220
|
+
elsif value != page.parent_id
|
218
221
|
p = Page.find(value)
|
219
|
-
if
|
222
|
+
if !user.is_allowed(p, 'edit')
|
220
223
|
resp.error = "You don't have access to put the current page there."
|
221
224
|
end
|
222
225
|
end
|
223
|
-
if
|
226
|
+
if resp.error
|
224
227
|
save = false
|
225
228
|
else
|
226
|
-
parent = Page.find(value)
|
227
|
-
|
228
|
-
|
229
|
+
page.parent = Page.find(value)
|
230
|
+
page.save
|
231
|
+
Page.update_uri(page)
|
232
|
+
resp.attributes['parent_id'] = { 'text' => page.parent.title }
|
229
233
|
end
|
230
234
|
|
231
235
|
when 'custom_css', 'custom_js'
|
232
236
|
value.strip!
|
233
237
|
page[name.to_sym] = value
|
234
238
|
|
235
|
-
when 'title', 'menu_title', '
|
239
|
+
when 'title', 'menu_title', 'hide', 'layout', 'redirect_url',
|
236
240
|
'seo_title', 'meta_description', 'fb_description', 'gp_description', 'canonical_url'
|
237
241
|
page[name.to_sym] = value
|
238
242
|
|
@@ -273,7 +277,17 @@ module Caboose
|
|
273
277
|
|
274
278
|
when 'slug'
|
275
279
|
page.slug = Page.slug(value.strip.length > 0 ? value : page.title)
|
280
|
+
page.save
|
281
|
+
Page.update_uri(page)
|
282
|
+
resp.attributes['slug'] = { 'value' => page.slug }
|
283
|
+
resp.attributes['uri'] = { 'value' => page.uri }
|
284
|
+
|
285
|
+
when 'alias'
|
286
|
+
page.alias = Page.slug(value.strip)
|
287
|
+
page.save
|
288
|
+
Page.update_uri(page)
|
276
289
|
resp.attributes['slug'] = { 'value' => page.slug }
|
290
|
+
resp.attributes['uri'] = { 'value' => page.uri }
|
277
291
|
|
278
292
|
when 'custom_sort_children'
|
279
293
|
if (value == 0)
|
@@ -364,6 +378,13 @@ module Caboose
|
|
364
378
|
]
|
365
379
|
render json: options
|
366
380
|
end
|
381
|
+
|
382
|
+
# GET /admin/pages/:id/uri
|
383
|
+
def admin_page_uri
|
384
|
+
return unless user_is_allowed('pages', 'view')
|
385
|
+
p = Page.find(params[:id])
|
386
|
+
render :json => { 'uri' => p.uri }
|
387
|
+
end
|
367
388
|
|
368
389
|
end
|
369
390
|
end
|
data/app/models/caboose/page.rb
CHANGED
@@ -8,7 +8,8 @@ class Caboose::Page < ActiveRecord::Base
|
|
8
8
|
attr_accessible :parent_id,
|
9
9
|
:title,
|
10
10
|
:menu_title,
|
11
|
-
:content,
|
11
|
+
:content,
|
12
|
+
:blocks,
|
12
13
|
:slug,
|
13
14
|
:alias,
|
14
15
|
:uri,
|
@@ -86,46 +87,23 @@ class Caboose::Page < ActiveRecord::Base
|
|
86
87
|
return self.page_with_uri_helper(parts, level+1, page_ids[0])
|
87
88
|
end
|
88
89
|
|
89
|
-
def self.
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
slug = page.slug
|
100
|
-
if (slug.trim.length == 0)
|
101
|
-
slug = self.get_slug(page.title)
|
102
|
-
self.update_detail_field(page.id, 'slug', slug)
|
103
|
-
end
|
104
|
-
|
105
|
-
slug = page.slug.trim.length > 0 ? page.slug : self.get_slug(page.title)
|
106
|
-
|
107
|
-
uri= "#{parent_uri}/#{slug}"
|
108
|
-
if (page.alias.length > 0)
|
109
|
-
uri = "/#{page.alias}"
|
110
|
-
elsif (self.is_top_level(page.parent_id))
|
111
|
-
uri = "/#{page.slug}"
|
112
|
-
end
|
113
|
-
self.update_detail_field(page.id, 'uri', uri)
|
114
|
-
|
115
|
-
page.children.each do |kid|
|
116
|
-
self.update_child_uris_helper(kid, uri)
|
117
|
-
end
|
90
|
+
def self.update_uri(page)
|
91
|
+
#return if page.redirect_url && page.redirect_url.length > 0
|
92
|
+
|
93
|
+
page.slug = self.slug(page.title) if page.slug.nil? || page.slug.strip.length == 0
|
94
|
+
page.uri = page.alias && page.alias.strip.length > 0 ? page.alias : (page.parent ? "#{page.parent.uri}/#{page.slug}" : "#{page.slug}")
|
95
|
+
page.uri[0] = '' if page.uri.starts_with?('/')
|
96
|
+
page.save
|
97
|
+
|
98
|
+
page.children.each { |p2| self.update_uri(p2) }
|
118
99
|
end
|
119
100
|
|
120
101
|
def self.update_child_perms(page_id)
|
121
102
|
page = self.find(page_id)
|
122
103
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
viewer_ids = viewers.collect {|r| r.id }
|
127
|
-
editor_ids = editors.collect {|r| r.id }
|
128
|
-
approver_id = approvers.collect {|r| r.id }
|
104
|
+
viewers_ids = Role.roles_with_page_permission(page_id, 'view').collect {|r| r.id }
|
105
|
+
editors_ids = Role.roles_with_page_permission(page_id, 'edit').collect {|r| r.id }
|
106
|
+
approvers_ids = Role.roles_with_page_permission(page_id, 'approve').collect {|r| r.id }
|
129
107
|
|
130
108
|
self.update_child_perms_helper(page, viewer_ids, editor_ids, approver_ids)
|
131
109
|
end
|
@@ -321,8 +299,8 @@ class Caboose::Page < ActiveRecord::Base
|
|
321
299
|
end
|
322
300
|
|
323
301
|
def self.is_child(parent_id, child_id)
|
324
|
-
pid = self.where(:
|
325
|
-
return false if pid <= 0
|
302
|
+
pid = self.where(:id => child_id).limit(1).pluck(:parent_id)[0]
|
303
|
+
return false if pid.nil? || pid <= 0
|
326
304
|
return true if pid == parent_id
|
327
305
|
return self.is_child(parent_id, pid)
|
328
306
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<%= render :partial => 'caboose/pages/admin_header' %>
|
3
3
|
|
4
4
|
<div id='message'>
|
5
|
-
<p class='note error'>Are you sure you want to
|
5
|
+
<p class='note error'>Are you sure you want to delete the page? This can't be undone.<br /><br />
|
6
6
|
<input type='button' value='Yes' onclick='delete_page(<%= @page.id %>, true);' />
|
7
7
|
<input type='button' value='No' onclick="window.location='/admin/pages/<%= @page.id %>/edit';" />
|
8
8
|
</p>
|
@@ -1,6 +1,7 @@
|
|
1
1
|
|
2
2
|
<%= render :partial => 'caboose/pages/admin_header' %>
|
3
3
|
|
4
|
+
<p>URI: /<span id='uri'><%= @page.uri %></span></p>
|
4
5
|
<p><div id='page_<%= @page.id %>_title' ></div></p>
|
5
6
|
<p><div id='page_<%= @page.id %>_menu_title' ></div></p>
|
6
7
|
<p><div id='page_<%= @page.id %>_parent_id' ></div></p>
|
@@ -29,10 +30,10 @@ $(document).ready(function() {
|
|
29
30
|
authenticity_token: '<%= form_authenticity_token %>',
|
30
31
|
attributes: [
|
31
32
|
{ name: 'title' , nice_name: 'Title' , type: 'text' , value: <%= raw Caboose.json(@page.title ) %> , width: 400 },
|
32
|
-
{ name: '
|
33
|
-
{ name: '
|
34
|
-
{ name: 'slug' , nice_name: 'Slug' , type: 'text' , value: <%= raw Caboose.json(@page.slug ) %> , width: 400 },
|
35
|
-
{ name: 'alias' , nice_name: 'Alias' , type: 'text' , value: <%= raw Caboose.json(@page.alias ) %> , width: 400 },
|
33
|
+
{ name: 'menu_title' , nice_name: 'Menu title' , type: 'text' , value: <%= raw Caboose.json(@page.menu_title ) %> , width: 400 },
|
34
|
+
{ name: 'parent_id' , nice_name: 'Parent' , type: 'select' , value: <%= @page.parent_id %> , width: 400, after_update: function() { update_uri(<%= @page.id %>); }, text: <%= raw (@page.parent_id == -1 ? "[No Parent]" : @page.parent.title).to_json %>, options_url: '/admin/pages/sitemap-options' },
|
35
|
+
{ name: 'slug' , nice_name: 'Slug' , type: 'text' , value: <%= raw Caboose.json(@page.slug ) %> , width: 400, after_update: function() { update_uri(<%= @page.id %>); } },
|
36
|
+
{ name: 'alias' , nice_name: 'Alias' , type: 'text' , value: <%= raw Caboose.json(@page.alias ) %> , width: 400, after_update: function() { update_uri(<%= @page.id %>); } },
|
36
37
|
{ name: 'redirect_url' , nice_name: 'Redirect URL' , type: 'text' , value: <%= raw Caboose.json(@page.redirect_url ) %> , width: 400 },
|
37
38
|
{ name: 'hide' , nice_name: 'Hide' , type: 'checkbox' , value: <%= raw @page.hide %> , width: 400 },
|
38
39
|
{ name: 'layout' , nice_name: 'Layout' , type: 'text' , value: <%= raw Caboose.json(@page.layout ) %> , width: 400 },
|
@@ -42,5 +43,13 @@ $(document).ready(function() {
|
|
42
43
|
});
|
43
44
|
});
|
44
45
|
|
46
|
+
function update_uri(page_id)
|
47
|
+
{
|
48
|
+
$.ajax({
|
49
|
+
url: '/admin/pages/' + page_id + '/uri',
|
50
|
+
success: function(resp) { $('#uri').html(resp.uri); }
|
51
|
+
});
|
52
|
+
}
|
53
|
+
|
45
54
|
</script>
|
46
55
|
<% end %>
|
data/config/routes.rb
CHANGED
@@ -51,6 +51,7 @@ Caboose::Engine.routes.draw do
|
|
51
51
|
get "admin/pages/robots-options" => "pages#admin_robots_options"
|
52
52
|
get "admin/pages/format-options" => "pages#admin_content_format_options"
|
53
53
|
get "admin/pages/new" => "pages#admin_new"
|
54
|
+
get "admin/pages/:id/uri" => "pages#admin_page_uri"
|
54
55
|
get "admin/pages/:id/delete" => "pages#admin_delete_form"
|
55
56
|
get "admin/pages/:id/sitemap" => "pages#admin_sitemap"
|
56
57
|
get "admin/pages/:id/edit" => "pages#admin_edit_general"
|
data/lib/caboose/version.rb
CHANGED
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.2.
|
4
|
+
version: 0.2.70
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Barry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -197,6 +197,7 @@ files:
|
|
197
197
|
- app/models/caboose/menu_block.rb
|
198
198
|
- app/models/caboose/page.rb
|
199
199
|
- app/models/caboose/page_bar_generator.rb
|
200
|
+
- app/models/caboose/page_block.rb
|
200
201
|
- app/models/caboose/page_permission.rb
|
201
202
|
- app/models/caboose/pager.rb
|
202
203
|
- app/models/caboose/permission.rb
|