tb_cms 1.2.2 → 1.2.3
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/app/assets/images/{spud/admin → admin}/menus_thumb.png +0 -0
- data/app/assets/images/{spud/admin → admin}/pages_thumb.png +0 -0
- data/app/assets/images/{spud/admin → admin}/snippets_thumb.png +0 -0
- data/app/assets/javascripts/admin/cms/menu_items.js +33 -23
- data/app/controllers/admin/menu_items_controller.rb +14 -9
- data/app/controllers/admin/menus_controller.rb +2 -1
- data/app/controllers/admin/pages_controller.rb +1 -1
- data/app/controllers/admin/snippets_controller.rb +1 -1
- data/app/controllers/pages_controller.rb +0 -6
- data/app/models/spud_page.rb +28 -68
- data/app/views/admin/menu_items/_menu_item_row.html.erb +1 -0
- data/app/views/admin/menu_items/index.html.erb +4 -3
- data/app/views/pages/show.html.erb +1 -1
- data/config/routes.rb +3 -1
- data/lib/spud_cms/engine.rb +7 -6
- data/lib/spud_cms/version.rb +1 -1
- data/spec/controllers/admin/menu_items_controller_spec.rb +14 -1
- data/spec/controllers/pages_controller_spec.rb +2 -4
- data/spec/dummy/db/migrate/20160215180157_create_tb_redirects.tb_redirects.rb +15 -0
- data/spec/dummy/db/schema.rb +18 -5
- data/spec/models/spud_page_spec.rb +22 -64
- metadata +14 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf65740efa862344b081383199dda50eaa2bc61f
|
4
|
+
data.tar.gz: 71e232020d75218667de0f13b3e93b44649871f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7582f9009303390f4a44f57441a2df2a68e8ecc16ce78d0752d6d4886d2c218817a587decc8b46924fc7acc2e33d9d2e46b10df8f60bfafc02af30473116c87
|
7
|
+
data.tar.gz: 4ab3e64d0df2deca7acefa2683753c6d3bd239dc97cbcb605b83c7f80c5addc3668a8549eba31d8be6e83ea6b3960171a3c3073b87d5ac9690fdeb6251d1ebfc
|
File without changes
|
File without changes
|
File without changes
|
@@ -4,32 +4,42 @@ spud.admin.cms.menu_items = {};
|
|
4
4
|
var menu_items = spud.admin.cms.menu_items;
|
5
5
|
|
6
6
|
menu_items.init = function() {
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
start: function(event,ui) {
|
11
|
-
$('#root_menu_list').addClass('menu_edit');
|
12
|
-
},
|
13
|
-
axis:"y",
|
14
|
-
tolerance:'pointer',
|
15
|
-
cursor: "move",
|
16
|
-
items:'li',
|
17
|
-
stop: function(event,ui) {
|
18
|
-
$('#root_menu_list').removeClass('menu_edit');
|
19
|
-
},
|
20
|
-
over: function(event,ui) {
|
21
|
-
|
22
|
-
var source = ui.item[0];
|
7
|
+
$("#sort tbody").sortable({helper:fixHelper}).disableSelection();
|
8
|
+
sortableIcons();
|
9
|
+
};
|
23
10
|
|
24
|
-
|
25
|
-
|
11
|
+
var sortableIcons = function(){
|
12
|
+
$("#sort tbody").sortable({
|
13
|
+
update : function(e, ui) {
|
14
|
+
var sortArr = [];
|
15
|
+
$("#sort tbody > tr > input").each(function() {
|
16
|
+
sortArr.push($(this).attr('value'));
|
17
|
+
});
|
18
|
+
//update order of menuItems
|
19
|
+
$.ajax(setUrl(), {
|
20
|
+
method: 'PUT',
|
21
|
+
data: {order:sortArr},
|
22
|
+
dataType: "json",
|
23
|
+
success: function(data, status, jqXHR) {
|
26
24
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
},
|
26
|
+
error: function(XMLHttpRequest, textStatus, errorThrown) {
|
27
|
+
alert("Status: " + textStatus); alert("Error: " + errorThrown);
|
28
|
+
}
|
29
|
+
});
|
31
30
|
}
|
32
|
-
})
|
31
|
+
});
|
32
|
+
};
|
33
|
+
|
34
|
+
var fixHelper = function(e, ui) {
|
35
|
+
ui.children().each(function() {
|
36
|
+
$(this).width($(this).width());
|
37
|
+
});
|
38
|
+
return ui;
|
39
|
+
};
|
40
|
+
|
41
|
+
var setUrl = function(){
|
42
|
+
return '/admin/menus/'+$("#menu-id").val()+'/menu_items/update_sort';
|
33
43
|
};
|
34
44
|
|
35
45
|
})();
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class Admin::MenuItemsController < Admin::ApplicationController
|
2
2
|
add_breadcrumb "Menus", :admin_menus_path
|
3
|
-
|
3
|
+
belongs_to_app :menus, :page_title => "Menu Items"
|
4
4
|
before_filter :load_menu
|
5
5
|
before_filter :load_menu_item, :only => [:edit,:update,:show,:destroy,:reorder]
|
6
6
|
|
@@ -75,15 +75,20 @@ class Admin::MenuItemsController < Admin::ApplicationController
|
|
75
75
|
respond_with @menu_item,:location => admin_menu_menu_items_url
|
76
76
|
end
|
77
77
|
|
78
|
-
def
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
78
|
+
def update_sort
|
79
|
+
if params[:order]
|
80
|
+
params[:order].each_with_index do |item, index|
|
81
|
+
val = item.to_i
|
82
|
+
menu_item = @menu.spud_menu_items.find_by_id(val)
|
83
|
+
menu_item.menu_order = index
|
84
|
+
menu_item.save
|
85
|
+
end
|
86
|
+
end
|
87
|
+
respond_to do |format|
|
88
|
+
format.json { head :no_content }
|
89
|
+
end
|
86
90
|
end
|
91
|
+
|
87
92
|
private
|
88
93
|
def load_menu
|
89
94
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class Admin::MenusController < Admin::ApplicationController
|
2
|
-
|
2
|
+
belongs_to_app :menus
|
3
3
|
add_breadcrumb "Menus", :admin_menus_path
|
4
4
|
before_filter :load_menu,:only => [:edit,:update,:show,:destroy]
|
5
5
|
|
@@ -38,6 +38,7 @@ class Admin::MenusController < Admin::ApplicationController
|
|
38
38
|
respond_with @menu,:location => admin_menus_url
|
39
39
|
end
|
40
40
|
|
41
|
+
|
41
42
|
private
|
42
43
|
|
43
44
|
def load_menu
|
@@ -15,12 +15,6 @@ class PagesController < ApplicationController
|
|
15
15
|
@page = SpudPage.published_pages.find_by(:url_name => url_name)
|
16
16
|
|
17
17
|
if @page.blank?
|
18
|
-
@permalink = SpudPermalink.find_by(:url_name => url_name)
|
19
|
-
|
20
|
-
if !@permalink.blank? && @permalink.attachment_type == 'SpudPage'
|
21
|
-
redirect_to @permalink.attachment.url_name == Spud::Cms.root_page_name ? root_url() : page_url(:id => @permalink.attachment.url_name) , :status => :moved_permanently and return
|
22
|
-
end
|
23
|
-
|
24
18
|
render_404
|
25
19
|
return
|
26
20
|
end
|
data/app/models/spud_page.rb
CHANGED
@@ -1,20 +1,19 @@
|
|
1
1
|
class SpudPage < ActiveRecord::Base
|
2
2
|
include CmsDeprecatedMultisite
|
3
|
+
include TbRedirects::HasRedirects
|
3
4
|
|
4
5
|
spud_searchable
|
5
6
|
belongs_to :spud_page
|
6
7
|
has_many :spud_page_partial_revisions
|
7
8
|
has_many :spud_pages, :dependent => :nullify
|
8
9
|
has_many :spud_page_partials,:dependent => :destroy
|
9
|
-
has_many :spud_permalinks,:as => :attachment, :dependent => :destroy
|
10
10
|
belongs_to :created_by_user,:class_name => "SpudUser",:foreign_key => :created_by
|
11
11
|
belongs_to :updated_by_user,:class_name => "SpudUser",:foreign_key => :updated_by
|
12
12
|
|
13
13
|
before_validation :generate_url_name
|
14
|
-
validates :name
|
15
|
-
|
16
|
-
|
17
|
-
validates_uniqueness_of :url_name
|
14
|
+
validates :name, :presence => true, :uniqueness => {:scope => :spud_page_id}
|
15
|
+
validates :url_name, :presence => true, :uniqueness => true
|
16
|
+
after_update :create_redirect_if_necessary
|
18
17
|
|
19
18
|
accepts_nested_attributes_for :spud_page_partials, :allow_destroy => true
|
20
19
|
|
@@ -51,71 +50,32 @@ class SpudPage < ActiveRecord::Base
|
|
51
50
|
return list
|
52
51
|
end
|
53
52
|
|
53
|
+
def is_private?
|
54
|
+
return self.visibility == 1
|
55
|
+
end
|
54
56
|
|
55
|
-
|
56
|
-
return true if self.name.blank?
|
57
|
-
if !self.use_custom_url_name || self.url_name.blank?
|
58
|
-
url_name = ""
|
59
|
-
if !self.spud_page.blank?
|
60
|
-
url_name += self.spud_page.url_name + "/"
|
61
|
-
end
|
62
|
-
url_name += self.name.parameterize.downcase
|
63
|
-
if !self.use_custom_url_name
|
64
|
-
pages = SpudPage.all
|
65
|
-
|
66
|
-
if !self.id.blank?
|
67
|
-
pages = pages.where("id != #{self.id}")
|
68
|
-
end
|
69
|
-
url_names = pages.to_a.collect{|p| p.url_name}
|
70
|
-
|
71
|
-
counter = 1
|
72
|
-
url_name_new = url_name
|
73
|
-
while url_names.include?(url_name_new) do
|
74
|
-
url_name_new = url_name + "-#{counter}"
|
75
|
-
counter += 1
|
76
|
-
end
|
77
|
-
# url_name = url_name_new
|
78
|
-
# Check Permalinks List
|
57
|
+
private
|
79
58
|
|
80
|
-
|
81
|
-
|
82
|
-
|
59
|
+
def generate_url_name
|
60
|
+
if url_name.blank?
|
61
|
+
parts = []
|
62
|
+
parts << spud_page.url_name if spud_page.present?
|
63
|
+
parts << name.try(:parameterize)
|
64
|
+
self.url_name = parts.join('/')
|
65
|
+
end
|
66
|
+
return true
|
67
|
+
end
|
83
68
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
if self.url_name.blank? == false && url_name != self.url_name
|
96
|
-
self.spud_permalinks.create(:url_name => self.url_name)
|
97
|
-
end
|
98
|
-
self.url_name = url_name
|
99
|
-
self.use_custom_url_name = false
|
100
|
-
elsif self.id.to_i > 0
|
101
|
-
page = SpudPage.where(:id => self.id).first
|
102
|
-
if page.url_name.blank? == false && page.url_name != self.url_name
|
103
|
-
permalink = SpudPermalink.where(:url_name => self.url_name).first
|
104
|
-
if permalink.blank? == false
|
105
|
-
if permalink.attachment == self
|
106
|
-
permalink.destroy
|
107
|
-
else
|
108
|
-
self.errors.add :url_name, "This permalink has already been used by another page."
|
109
|
-
return false
|
110
|
-
end
|
111
|
-
end
|
112
|
-
self.spud_permalinks.create(:url_name => page.url_name)
|
113
|
-
end
|
114
|
-
end
|
115
|
-
return true
|
116
|
-
end
|
69
|
+
def create_redirect_if_necessary
|
70
|
+
if url_name_changed?
|
71
|
+
TbRedirect.create_smart({
|
72
|
+
:source => "/#{url_name_was}",
|
73
|
+
:destination => "/#{url_name}",
|
74
|
+
:created_by => 'cms',
|
75
|
+
:owner => self
|
76
|
+
})
|
77
|
+
end
|
78
|
+
return true
|
79
|
+
end
|
117
80
|
|
118
|
-
def is_private?
|
119
|
-
return self.visibility == 1
|
120
|
-
end
|
121
81
|
end
|
@@ -8,6 +8,7 @@
|
|
8
8
|
<%=link_to 'Edit', edit_admin_menu_menu_item_path(:id => menu_item.id), :title => "Edit Menu Item", :class => 'btn btn-default btn-sm' %>
|
9
9
|
<%=link_to 'Delete', admin_menu_menu_item_path(:id => menu_item.id), :method => :delete, :class => 'btn btn-danger btn-sm', :data => {:confirm => "Are you sure you want to remove this menu item?"} %>
|
10
10
|
</td>
|
11
|
+
<input type="hidden" value=<%= menu_item.id %>>
|
11
12
|
</tr>
|
12
13
|
<% menu_item.spud_menu_items.each do |item| %>
|
13
14
|
<%= render :partial => 'menu_item_row', :locals => {:menu_item => item, :depth => depth+1} %>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<% end %>
|
4
4
|
|
5
5
|
<% content_for :detail do %>
|
6
|
-
<div class="table-responsive">
|
6
|
+
<div id="sort" class="table-responsive">
|
7
7
|
<table class="table table-striped table-hover">
|
8
8
|
<thead>
|
9
9
|
<tr>
|
@@ -18,10 +18,11 @@
|
|
18
18
|
<% end %>
|
19
19
|
</tbody>
|
20
20
|
</table>
|
21
|
+
<input type="hidden" value=<%= @menu.id %> id="menu-id">
|
21
22
|
</div>
|
22
|
-
|
23
23
|
<script type="text/javascript">
|
24
|
-
$(document).ready(function() {
|
24
|
+
$(document).ready(function() {spud.admin.cms.menu_items.init();})
|
25
25
|
</script>
|
26
26
|
|
27
27
|
<% end %>
|
28
|
+
|
data/config/routes.rb
CHANGED
data/lib/spud_cms/engine.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'tb_core'
|
2
|
-
require '
|
2
|
+
require 'tb_redirects'
|
3
3
|
require 'tb_liquid'
|
4
4
|
|
5
5
|
module Spud
|
@@ -13,13 +13,13 @@ module Spud
|
|
13
13
|
|
14
14
|
initializer :admin do
|
15
15
|
Spud::Core.configure do |config|
|
16
|
-
config.admin_applications += [{:name => "Pages",:thumbnail => "
|
16
|
+
config.admin_applications += [{:name => "Pages",:thumbnail => "admin/pages_thumb.png",:url => "/admin/pages",:order => 0}]
|
17
17
|
if Spud::Cms.menus_enabled
|
18
|
-
config.admin_applications += [{:name => "Menus",:thumbnail => "
|
18
|
+
config.admin_applications += [{:name => "Menus",:thumbnail => "admin/menus_thumb.png",:url => "/admin/menus",:order => 2}]
|
19
19
|
end
|
20
20
|
|
21
21
|
if Spud::Cms.snippets_enabled
|
22
|
-
config.admin_applications += [{:name => "Snippets",:thumbnail => "
|
22
|
+
config.admin_applications += [{:name => "Snippets",:thumbnail => "admin/snippets_thumb.png",:url => "/admin/snippets",:order => 3}]
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -34,10 +34,11 @@ module Spud
|
|
34
34
|
config.routes_reloader.paths << File.expand_path('../page_route.rb', __FILE__)
|
35
35
|
end
|
36
36
|
|
37
|
-
|
37
|
+
initializer 'tb_cms.assets' do |config|
|
38
38
|
Spud::Core.append_admin_javascripts('admin/cms/application')
|
39
39
|
Spud::Core.append_admin_stylesheets('admin/cms/application')
|
40
|
-
|
40
|
+
Rails.application.config.assets.precompile += ['admin/pages_thumb.png', 'admin/snippets_thumb.png', 'admin/menus_thumb.png']
|
41
|
+
end
|
41
42
|
|
42
43
|
initializer :liquid do |config|
|
43
44
|
Liquid::Template.register_tag('snippet', Spud::Cms::LiquidSnippet)
|
data/lib/spud_cms/version.rb
CHANGED
@@ -102,7 +102,6 @@ describe Admin::MenuItemsController, :type => :controller do
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
-
|
106
105
|
describe 'destroy' do
|
107
106
|
it "should destroy the menu item" do
|
108
107
|
menu_item = FactoryGirl.create(:spud_menu_item,:parent_id => @menu.id)
|
@@ -112,4 +111,18 @@ describe Admin::MenuItemsController, :type => :controller do
|
|
112
111
|
end
|
113
112
|
end
|
114
113
|
|
114
|
+
describe 'update_sort' do
|
115
|
+
it "should update all menu items menu_order fields" do
|
116
|
+
ordered_arr = Array.new(5)
|
117
|
+
ordered_arr.each_with_index do |item, index|
|
118
|
+
item = FactoryGirl.create(:spud_menu_item,:parent_id => @menu.id, :menu_order => index)
|
119
|
+
ordered_arr[index] = item.id.to_s
|
120
|
+
end
|
121
|
+
new_order_arr = ordered_arr.shuffle
|
122
|
+
put :update_sort, :menu_id => @menu.id,:id => ordered_arr[0], :order => new_order_arr
|
123
|
+
new_order_arr.each_with_index do |item, index|
|
124
|
+
expect(@menu.spud_menu_items.find_by_id(item.to_i).menu_order).to be(index)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
115
128
|
end
|
@@ -18,14 +18,12 @@ describe PagesController, :type => :controller do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should redirect to new page url from old page url if it was changed" do
|
21
|
-
page = FactoryGirl.create(:spud_page
|
22
|
-
page.
|
21
|
+
page = FactoryGirl.create(:spud_page, :name => "about", :url_name => "about")
|
22
|
+
page.update(:url_name => "about-us")
|
23
23
|
page.save
|
24
|
-
|
25
24
|
get :show, :id => "about"
|
26
25
|
|
27
26
|
expect(response).to redirect_to page_url(:id => "about-us")
|
28
|
-
|
29
27
|
end
|
30
28
|
|
31
29
|
it "should not allow access to private pages when logged out" do
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# This migration comes from tb_redirects (originally 20160211162513)
|
2
|
+
class CreateTbRedirects < ActiveRecord::Migration
|
3
|
+
def change
|
4
|
+
create_table :tb_redirects do |t|
|
5
|
+
t.string :owner_type
|
6
|
+
t.integer :owner_id
|
7
|
+
t.string :source, :null => false
|
8
|
+
t.string :destination, :null => false
|
9
|
+
t.string :created_by
|
10
|
+
t.timestamps null: false
|
11
|
+
end
|
12
|
+
add_index :tb_redirects, [:owner_type, :owner_id]
|
13
|
+
add_index :tb_redirects, :source, :unique => true
|
14
|
+
end
|
15
|
+
end
|
data/spec/dummy/db/schema.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended that you check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(version:
|
14
|
+
ActiveRecord::Schema.define(version: 20160215180157) do
|
15
15
|
|
16
16
|
create_table "spud_liquid_tags", force: :cascade do |t|
|
17
17
|
t.integer "attachment_id", limit: 4
|
@@ -87,8 +87,8 @@ ActiveRecord::Schema.define(version: 20150911185844) do
|
|
87
87
|
t.datetime "created_at"
|
88
88
|
t.datetime "updated_at"
|
89
89
|
t.integer "visibility", limit: 4, default: 0
|
90
|
-
t.boolean "published",
|
91
|
-
t.boolean "use_custom_url_name",
|
90
|
+
t.boolean "published", default: true
|
91
|
+
t.boolean "use_custom_url_name", default: false
|
92
92
|
t.text "notes", limit: 65535
|
93
93
|
t.string "layout", limit: 255
|
94
94
|
t.string "page_title", limit: 255
|
@@ -153,7 +153,7 @@ ActiveRecord::Schema.define(version: 20150911185844) do
|
|
153
153
|
create_table "spud_users", force: :cascade do |t|
|
154
154
|
t.string "first_name", limit: 255
|
155
155
|
t.string "last_name", limit: 255
|
156
|
-
t.boolean "super_admin"
|
156
|
+
t.boolean "super_admin"
|
157
157
|
t.string "login", limit: 255, null: false
|
158
158
|
t.string "email", limit: 255, null: false
|
159
159
|
t.string "crypted_password", limit: 255, null: false
|
@@ -172,11 +172,24 @@ ActiveRecord::Schema.define(version: 20150911185844) do
|
|
172
172
|
t.datetime "updated_at"
|
173
173
|
t.string "time_zone", limit: 255
|
174
174
|
t.integer "spud_role_id", limit: 4
|
175
|
-
t.boolean "requires_password_change",
|
175
|
+
t.boolean "requires_password_change", default: false
|
176
176
|
end
|
177
177
|
|
178
178
|
add_index "spud_users", ["email"], name: "index_spud_users_on_email", using: :btree
|
179
179
|
add_index "spud_users", ["login"], name: "index_spud_users_on_login", using: :btree
|
180
180
|
add_index "spud_users", ["spud_role_id"], name: "index_spud_users_on_spud_role_id", using: :btree
|
181
181
|
|
182
|
+
create_table "tb_redirects", force: :cascade do |t|
|
183
|
+
t.string "owner_type", limit: 255
|
184
|
+
t.integer "owner_id", limit: 4
|
185
|
+
t.string "source", limit: 255, null: false
|
186
|
+
t.string "destination", limit: 255, null: false
|
187
|
+
t.string "created_by", limit: 255
|
188
|
+
t.datetime "created_at", null: false
|
189
|
+
t.datetime "updated_at", null: false
|
190
|
+
end
|
191
|
+
|
192
|
+
add_index "tb_redirects", ["owner_type", "owner_id"], name: "index_tb_redirects_on_owner_type_and_owner_id", using: :btree
|
193
|
+
add_index "tb_redirects", ["source"], name: "index_tb_redirects_on_source", unique: true, using: :btree
|
194
|
+
|
182
195
|
end
|
@@ -63,76 +63,34 @@ describe SpudPage, :type => :model do
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
describe "generate_url_name" do
|
67
|
-
it
|
68
|
-
|
69
|
-
|
70
|
-
t = FactoryGirl.build(:spud_page, :name => "test")
|
71
|
-
t.spud_page = parent_page
|
72
|
-
t.valid?
|
73
|
-
|
74
|
-
expect(t.url_name).to eq('about/test')
|
75
|
-
|
76
|
-
end
|
77
|
-
|
78
|
-
it "should add a counter to url_name if the url_name is already in use" do
|
79
|
-
page = FactoryGirl.build(:spud_page,:name => "testimonials")
|
80
|
-
page.save
|
81
|
-
|
82
|
-
page2 = FactoryGirl.build(:spud_page,:name => "testimonials")
|
83
|
-
page2.valid?
|
84
|
-
|
85
|
-
expect(page2.url_name).to eq('testimonials-1')
|
86
|
-
end
|
87
|
-
|
88
|
-
it "should add a counter to url_name if the url_name was once in use by another page that was renamed" do
|
89
|
-
page = FactoryGirl.build(:spud_page,:name => "another")
|
90
|
-
page.save
|
91
|
-
page.name = "again"
|
92
|
-
page.save
|
93
|
-
|
94
|
-
page2 = FactoryGirl.build(:spud_page,:name => "another")
|
95
|
-
page2.valid?
|
96
|
-
|
97
|
-
expect(page2.url_name).to eq('another-1')
|
66
|
+
describe "#generate_url_name" do
|
67
|
+
it 'should use the provided url' do
|
68
|
+
@page = FactoryGirl.create(:spud_page, :url_name => 'test')
|
69
|
+
expect(@page.url_name).to eq('test')
|
98
70
|
end
|
99
71
|
|
100
|
-
it
|
101
|
-
page = FactoryGirl.
|
102
|
-
page.
|
103
|
-
|
104
|
-
page.name = 'permapage new'
|
105
|
-
page.save
|
106
|
-
|
107
|
-
page.name = 'permapage'
|
108
|
-
|
109
|
-
basecount = SpudPermalink.count
|
110
|
-
|
111
|
-
expect {
|
112
|
-
page.valid?
|
113
|
-
}.to change(page.spud_permalinks.where(:url_name => 'permapage'), :count).from(1).to(0)
|
72
|
+
it 'should generate a url based on the page name' do
|
73
|
+
@page = FactoryGirl.create(:spud_page, :name => 'Hello World')
|
74
|
+
expect(@page.url_name).to eq('hello-world')
|
114
75
|
end
|
115
76
|
|
116
|
-
it
|
117
|
-
|
118
|
-
page.
|
119
|
-
|
120
|
-
page = FactoryGirl.build(:spud_page,:name => "new",:use_custom_url_name => true,:url_name => "original")
|
121
|
-
|
122
|
-
expect(page.valid?).to eq(false)
|
77
|
+
it 'should generate a url based on the page name and parent page' do
|
78
|
+
@parent = FactoryGirl.create(:spud_page, :name => 'About Us')
|
79
|
+
@page = FactoryGirl.create(:spud_page, :name => 'Hello World', :spud_page => @parent)
|
80
|
+
expect(@page.url_name).to eq('about-us/hello-world')
|
123
81
|
end
|
82
|
+
end
|
124
83
|
|
125
|
-
|
126
|
-
|
127
|
-
page.
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
page
|
133
|
-
|
134
|
-
page.url_name = 'original'
|
135
|
-
expect(page.valid?).to eq(false)
|
84
|
+
describe '#create_redirect_if_necessary' do
|
85
|
+
it 'should create a redirect' do
|
86
|
+
page = FactoryGirl.create(:spud_page, :url_name => 'page-a')
|
87
|
+
expect{
|
88
|
+
page.update(:url_name => 'page-b')
|
89
|
+
}.to change(page.tb_redirects, :count).by(1)
|
90
|
+
redirect = page.tb_redirects.last
|
91
|
+
expect(redirect.source).to eq('/page-a')
|
92
|
+
expect(redirect.destination).to eq('/page-b')
|
136
93
|
end
|
137
94
|
end
|
95
|
+
|
138
96
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tb_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Westlake Design
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tb_core
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.3.
|
19
|
+
version: 1.3.7
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.3.
|
26
|
+
version: 1.3.7
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: tb_redirects
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.0.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.0.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: tb_liquid
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 3.
|
75
|
+
version: 3.4.2
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 3.
|
82
|
+
version: 3.4.2
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: factory_girl_rails
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,9 +146,9 @@ files:
|
|
146
146
|
- MIT-LICENSE
|
147
147
|
- README.md
|
148
148
|
- Rakefile
|
149
|
-
- app/assets/images/
|
150
|
-
- app/assets/images/
|
151
|
-
- app/assets/images/
|
149
|
+
- app/assets/images/admin/menus_thumb.png
|
150
|
+
- app/assets/images/admin/pages_thumb.png
|
151
|
+
- app/assets/images/admin/snippets_thumb.png
|
152
152
|
- app/assets/javascripts/admin/cms/application.js
|
153
153
|
- app/assets/javascripts/admin/cms/menu_items.js
|
154
154
|
- app/assets/javascripts/admin/cms/pages.js
|
@@ -299,6 +299,7 @@ files:
|
|
299
299
|
- spec/dummy/db/migrate/20150108164814_remove_site_id_from_cms_tables.tb_cms.rb
|
300
300
|
- spec/dummy/db/migrate/20150911185843_add_requires_password_change_to_spud_users.tb_core.rb
|
301
301
|
- spec/dummy/db/migrate/20150911185844_add_title_tag_to_spud_page.tb_cms.rb
|
302
|
+
- spec/dummy/db/migrate/20160215180157_create_tb_redirects.tb_redirects.rb
|
302
303
|
- spec/dummy/db/schema.rb
|
303
304
|
- spec/dummy/public/404.html
|
304
305
|
- spec/dummy/public/422.html
|
@@ -404,6 +405,7 @@ test_files:
|
|
404
405
|
- spec/dummy/db/migrate/20150108164814_remove_site_id_from_cms_tables.tb_cms.rb
|
405
406
|
- spec/dummy/db/migrate/20150911185843_add_requires_password_change_to_spud_users.tb_core.rb
|
406
407
|
- spec/dummy/db/migrate/20150911185844_add_title_tag_to_spud_page.tb_cms.rb
|
408
|
+
- spec/dummy/db/migrate/20160215180157_create_tb_redirects.tb_redirects.rb
|
407
409
|
- spec/dummy/db/schema.rb
|
408
410
|
- spec/dummy/public/404.html
|
409
411
|
- spec/dummy/public/422.html
|