radiant-concurrent_draft-extension 1.0.7 → 1.0.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.
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/concurrent_draft_extension.rb +12 -3
- data/lib/concurrent_draft/tags.rb +22 -17
- data/radiant-concurrent_draft-extension.gemspec +8 -17
- data/spec/controllers/admin_controller_extensions_spec.rb +6 -3
- data/spec/controllers/site_controller_extensions_spec.rb +3 -1
- data/spec/models/model_extensions_spec.rb +13 -10
- data/spec/models/page_extensions_spec.rb +2 -1
- data/spec/models/tags_spec.rb +24 -20
- data/spec/spec_helper.rb +1 -0
- metadata +38 -62
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.8
|
@@ -7,23 +7,32 @@ class ConcurrentDraftExtension < Radiant::Extension
|
|
7
7
|
url "https://github.com/avonderluft/radiant-concurrent_draft-extension"
|
8
8
|
|
9
9
|
def activate
|
10
|
-
[Page,
|
10
|
+
[Page, Layout, PagePart].each do |klass|
|
11
11
|
klass.send :include, ConcurrentDraft::ModelExtensions
|
12
12
|
end
|
13
13
|
Page.send :include, ConcurrentDraft::PageExtensions
|
14
14
|
Page.send :include, ConcurrentDraft::Tags
|
15
|
-
[Admin::PagesController, Admin::
|
15
|
+
[Admin::PagesController, Admin::LayoutsController].each do |klass|
|
16
16
|
klass.send :include, ConcurrentDraft::AdminControllerExtensions
|
17
17
|
klass.class_eval do
|
18
18
|
helper ConcurrentDraft::HelperExtensions
|
19
19
|
end
|
20
20
|
end
|
21
21
|
SiteController.send :include, ConcurrentDraft::SiteControllerExtensions
|
22
|
-
%w{page
|
22
|
+
%w{page layout}.each do |view|
|
23
23
|
admin.send(view).edit.add :main, "admin/draft_controls", :before => "edit_header"
|
24
24
|
admin.send(view).edit.form_bottom.delete 'edit_buttons'
|
25
25
|
admin.send(view).edit.add :form_bottom, 'admin/edit_buttons'
|
26
26
|
end
|
27
|
+
# Snippets have been extracted from core
|
28
|
+
if defined?(SnippetsExtension)
|
29
|
+
Snippet.send :include, ConcurrentDraft::ModelExtensions
|
30
|
+
Admin::SnippetsController.send :include, ConcurrentDraft::AdminControllerExtensions
|
31
|
+
Admin::SnippetsController.class_eval { helper ConcurrentDraft::HelperExtensions }
|
32
|
+
admin.snippet.edit.add :main, "admin/draft_controls", :before => "edit_header"
|
33
|
+
admin.snippet.edit.form_bottom.delete 'edit_buttons'
|
34
|
+
admin.snippet.edit.add :form_bottom, 'admin/edit_buttons'
|
35
|
+
end
|
27
36
|
# admin.page.edit.add :extended_metadata, 'published_meta'
|
28
37
|
Time::DATE_FORMATS[:long_civilian] = lambda {|time| time.strftime("%B %d, %Y %I:%M%p").gsub(/(\s+)0(\d+)/, '\1\2') }
|
29
38
|
end
|
@@ -3,9 +3,11 @@ module ConcurrentDraft::Tags
|
|
3
3
|
|
4
4
|
def self.included(base)
|
5
5
|
base.class_eval do
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
alias_method "tag:old_content", "tag:content"
|
7
|
+
alias_method "tag:content", "tag:concurrent_draft_content"
|
8
|
+
if defined?(SnippetsExtension)
|
9
|
+
alias_method "tag:old_snippet", "tag:snippet"
|
10
|
+
alias_method "tag:snippet", "tag:concurrent_draft_snippet"
|
9
11
|
end
|
10
12
|
end
|
11
13
|
end
|
@@ -35,22 +37,25 @@ module ConcurrentDraft::Tags
|
|
35
37
|
tag.globals.page.render_snippet(part) unless part.nil?
|
36
38
|
end
|
37
39
|
|
38
|
-
|
39
|
-
|
40
|
-
if
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
40
|
+
if defined?(SnippetsExtension)
|
41
|
+
tag 'concurrent_draft_snippet' do |tag|
|
42
|
+
if name = tag.attr['name']
|
43
|
+
if snippet = Snippet.find_by_name(name.strip)
|
44
|
+
tag.locals.yield = tag.expand if tag.double?
|
45
|
+
### CONCURRENT DRAFTS CHANGE ###
|
46
|
+
# Show the draft content on the dev site #
|
47
|
+
# Promote the snippet if it needs to be #
|
48
|
+
snippet.promote_draft! if snippet.draft_should_be_promoted?
|
49
|
+
snippet.content = snippet.draft_content if dev?(tag.globals.page.request)
|
50
|
+
### END CONCURRENT DRAFTS CHANGE ###
|
51
|
+
tag.globals.page.render_snippet(snippet)
|
52
|
+
else
|
53
|
+
raise StandardTags::TagError.new("snippet not found: #{name}")
|
54
|
+
end
|
49
55
|
else
|
50
|
-
raise StandardTags::TagError.new("snippet
|
56
|
+
raise StandardTags::TagError.new("`snippet' tag must contain `name' attribute")
|
51
57
|
end
|
52
|
-
else
|
53
|
-
raise StandardTags::TagError.new("`snippet' tag must contain `name' attribute")
|
54
58
|
end
|
55
59
|
end
|
60
|
+
|
56
61
|
end
|
@@ -4,14 +4,14 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "1.0.
|
7
|
+
s.name = "radiant-concurrent_draft-extension"
|
8
|
+
s.version = "1.0.8"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Andrew vonderLuft", "Sean Cribbs"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
12
|
+
s.date = "2013-01-29"
|
13
|
+
s.description = "Enables draft versions of pages, snippets and layouts, which can be scheduled for promotion."
|
14
|
+
s.email = "avonderluft@avlux.net"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"README.textile"
|
17
17
|
]
|
@@ -67,19 +67,10 @@ Gem::Specification.new do |s|
|
|
67
67
|
"vendor/plugins/12_hour_time/test/12_hour_time_test.rb",
|
68
68
|
"vendor/plugins/12_hour_time/test/test_helper.rb"
|
69
69
|
]
|
70
|
-
s.homepage =
|
70
|
+
s.homepage = "https://github.com/avonderluft/radiant-concurrent_draft-extension"
|
71
71
|
s.require_paths = ["lib"]
|
72
|
-
s.rubygems_version =
|
73
|
-
s.summary =
|
74
|
-
s.test_files = [
|
75
|
-
"spec/controllers/admin_controller_extensions_spec.rb",
|
76
|
-
"spec/controllers/site_controller_extensions_spec.rb",
|
77
|
-
"spec/matchers/concurrent_draft_matcher.rb",
|
78
|
-
"spec/models/model_extensions_spec.rb",
|
79
|
-
"spec/models/page_extensions_spec.rb",
|
80
|
-
"spec/models/tags_spec.rb",
|
81
|
-
"spec/spec_helper.rb"
|
82
|
-
]
|
72
|
+
s.rubygems_version = "1.8.24"
|
73
|
+
s.summary = "Concurrent Draft Extension for Radiant CMS"
|
83
74
|
|
84
75
|
if s.respond_to? :specification_version then
|
85
76
|
s.specification_version = 3
|
@@ -1,4 +1,5 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../spec_helper'
|
1
|
+
# require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
require 'spec_helper'
|
2
3
|
|
3
4
|
shared_examples_for 'controller with scheduled draft promotion' do
|
4
5
|
dataset :users
|
@@ -181,8 +182,10 @@ describe Admin::PagesController, "with concurrent_draft functions" do
|
|
181
182
|
it_should_behave_like 'controller with scheduled draft promotion'
|
182
183
|
end
|
183
184
|
|
184
|
-
|
185
|
-
|
185
|
+
if defined?(SnippetsExtension)
|
186
|
+
describe Admin::SnippetsController, "with concurrent_draft functions" do
|
187
|
+
it_should_behave_like 'controller with scheduled draft promotion'
|
188
|
+
end
|
186
189
|
end
|
187
190
|
|
188
191
|
describe Admin::LayoutsController, "with concurrent_draft functions" do
|
@@ -1,4 +1,5 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../spec_helper'
|
1
|
+
# require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
require 'spec_helper'
|
2
3
|
|
3
4
|
share_examples_for "model with concurrent draft" do
|
4
5
|
it "should be invalid with a draft promotion schedule date in the past" do
|
@@ -60,16 +61,18 @@ share_examples_for "model with concurrent draft" do
|
|
60
61
|
end
|
61
62
|
end
|
62
63
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
64
|
+
if defined?(SnippetsExtension)
|
65
|
+
describe Snippet, "with concurrent draft" do
|
66
|
+
dataset :snippets
|
67
|
+
before :each do
|
68
|
+
@object = snippets(:first)
|
69
|
+
@object.update_attributes(:content => 'content test', :draft_content => 'draft content')
|
70
|
+
end
|
71
|
+
it "should not be publishable" do
|
72
|
+
@object.publishable?.should_not be_true
|
73
|
+
end
|
74
|
+
it_should_behave_like 'model with concurrent draft'
|
71
75
|
end
|
72
|
-
it_should_behave_like 'model with concurrent draft'
|
73
76
|
end
|
74
77
|
|
75
78
|
describe Layout, "with concurrent draft" do
|
data/spec/models/tags_spec.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../spec_helper'
|
1
|
+
# require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
require 'spec_helper'
|
2
3
|
|
3
4
|
describe "ConcurrentDraft::Tags" do
|
4
|
-
dataset :pages
|
5
|
+
dataset :pages
|
5
6
|
describe '<r:content>' do
|
6
7
|
before :each do
|
7
8
|
@page = pages(:home)
|
@@ -17,27 +18,30 @@ describe "ConcurrentDraft::Tags" do
|
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
21
|
+
if defined?(SnippetsExtension)
|
22
|
+
describe "<r:snippet>" do
|
23
|
+
dataset :snippets
|
24
|
+
before :each do
|
25
|
+
@snippet = snippets(:first)
|
26
|
+
@snippet.update_attribute(:draft_content, 'Draft content.')
|
27
|
+
@page = pages(:home)
|
28
|
+
end
|
26
29
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
+
it "should render published snippet content on the live site" do
|
31
|
+
@page.should render('<r:snippet name="first" />').as('test')
|
32
|
+
end
|
30
33
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
+
it "should render draft snippet content on the dev site" do
|
35
|
+
@page.should render('<r:snippet name="first" />').as('Draft content.').on('dev.host')
|
36
|
+
end
|
34
37
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
it "should promote the draft body if it is scheduled" do
|
39
|
+
@snippet.update_attribute(:draft_promotion_scheduled_at, 1.second.from_now)
|
40
|
+
sleep 2
|
41
|
+
@page.should render('<r:snippet name="first" />').as('Draft content.')
|
42
|
+
@snippet.reload
|
43
|
+
@snippet.should be_has_draft_promoted
|
44
|
+
end
|
41
45
|
end
|
42
46
|
end
|
43
47
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -12,6 +12,7 @@ end
|
|
12
12
|
require "#{RADIANT_ROOT}/spec/spec_helper"
|
13
13
|
|
14
14
|
Dataset::Resolver.default << (File.dirname(__FILE__) + "/datasets")
|
15
|
+
Dataset::Resolver.default << (SnippetsExtension.root + "/spec/datasets") if defined?(SnippetsExtension)
|
15
16
|
if File.directory?(File.dirname(__FILE__) + "/scenarios")
|
16
17
|
Scenario.load_paths.unshift File.dirname(__FILE__) + "/scenarios"
|
17
18
|
end
|
metadata
CHANGED
@@ -1,51 +1,41 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: radiant-concurrent_draft-extension
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.8
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 7
|
10
|
-
version: 1.0.7
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Andrew vonderLuft
|
14
9
|
- Sean Cribbs
|
15
10
|
autorequire:
|
16
11
|
bindir: bin
|
17
12
|
cert_chain: []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
type: :runtime
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
13
|
+
date: 2013-01-29 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: radiant
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
25
18
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 15424049
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 0
|
33
|
-
- 0
|
34
|
-
- rc
|
35
|
-
- 2
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
36
22
|
version: 1.0.0.rc2
|
37
|
-
|
38
|
-
version_requirements: *id001
|
23
|
+
type: :runtime
|
39
24
|
prerelease: false
|
40
|
-
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 1.0.0.rc2
|
31
|
+
description: Enables draft versions of pages, snippets and layouts, which can be scheduled
|
32
|
+
for promotion.
|
41
33
|
email: avonderluft@avlux.net
|
42
34
|
executables: []
|
43
|
-
|
44
35
|
extensions: []
|
45
|
-
|
46
|
-
extra_rdoc_files:
|
36
|
+
extra_rdoc_files:
|
47
37
|
- README.textile
|
48
|
-
files:
|
38
|
+
files:
|
49
39
|
- HELP.rdoc
|
50
40
|
- README.textile
|
51
41
|
- Rakefile
|
@@ -96,45 +86,31 @@ files:
|
|
96
86
|
- vendor/plugins/12_hour_time/lib/12_hour_time.rb
|
97
87
|
- vendor/plugins/12_hour_time/test/12_hour_time_test.rb
|
98
88
|
- vendor/plugins/12_hour_time/test/test_helper.rb
|
99
|
-
has_rdoc: true
|
100
89
|
homepage: https://github.com/avonderluft/radiant-concurrent_draft-extension
|
101
90
|
licenses: []
|
102
|
-
|
103
91
|
post_install_message:
|
104
92
|
rdoc_options: []
|
105
|
-
|
106
|
-
require_paths:
|
93
|
+
require_paths:
|
107
94
|
- lib
|
108
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
96
|
none: false
|
110
|
-
requirements:
|
111
|
-
- -
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
|
114
|
-
segments:
|
97
|
+
requirements:
|
98
|
+
- - ! '>='
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
segments:
|
115
102
|
- 0
|
116
|
-
|
117
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
|
+
hash: 1967068690405520845
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
105
|
none: false
|
119
|
-
requirements:
|
120
|
-
- -
|
121
|
-
- !ruby/object:Gem::Version
|
122
|
-
|
123
|
-
segments:
|
124
|
-
- 0
|
125
|
-
version: "0"
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
126
110
|
requirements: []
|
127
|
-
|
128
111
|
rubyforge_project:
|
129
|
-
rubygems_version: 1.
|
112
|
+
rubygems_version: 1.8.24
|
130
113
|
signing_key:
|
131
114
|
specification_version: 3
|
132
115
|
summary: Concurrent Draft Extension for Radiant CMS
|
133
|
-
test_files:
|
134
|
-
- spec/controllers/admin_controller_extensions_spec.rb
|
135
|
-
- spec/controllers/site_controller_extensions_spec.rb
|
136
|
-
- spec/matchers/concurrent_draft_matcher.rb
|
137
|
-
- spec/models/model_extensions_spec.rb
|
138
|
-
- spec/models/page_extensions_spec.rb
|
139
|
-
- spec/models/tags_spec.rb
|
140
|
-
- spec/spec_helper.rb
|
116
|
+
test_files: []
|