mm-draft 0.1.8 → 0.1.9
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/README.md +11 -6
- data/Rakefile +2 -2
- data/lib/mongo_mapper/plugins/draft/draft.rb +24 -15
- data/lib/mongo_mapper/plugins/draft/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e1db6a6bf3c38fb8e5024fee979f5edd37174b8
|
4
|
+
data.tar.gz: 4f1e604160432a5a8ef04efa74fe3f705fb2bd7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f85ba7db6bda0423638745931227cfe3514d05c20d5d24ea348c49f2b70a118a4a46152bbad205f6e3cdc29cd2c7738f496fbcec8d63870891638d56b5531558
|
7
|
+
data.tar.gz: ac814e646bddfae8e3b0f9b432f8f0bd0ce0663a55f622a21d55929764fde6da46468216c7b7567f4ecbbee15271454fdd400514132d92479f4a1a8162f0a0b4
|
data/README.md
CHANGED
@@ -7,17 +7,19 @@ Plugin for MongoMapper to have draft/published option on models.
|
|
7
7
|
NOTE: Can have issues with other plugins...
|
8
8
|
|
9
9
|
##Instance methods
|
10
|
-
|
10
|
+
|
11
|
+
```
|
11
12
|
.draft? - true/false
|
12
13
|
.published? - true/false
|
13
14
|
.published_record - returns the published record) (or nil, if the document never has been published)
|
14
15
|
.draft_record - returns the draft record for a published record
|
15
|
-
|
16
|
+
```
|
16
17
|
|
17
18
|
*draft_record* will return self if the draft? returns true
|
18
19
|
*published_record* will return self if draft? returns false
|
19
20
|
|
20
21
|
## Usage:
|
22
|
+
|
21
23
|
Create record as normal.
|
22
24
|
|
23
25
|
*.save* - Saves draft (with normal validation)
|
@@ -33,16 +35,19 @@ Duplicating the records also gives the benefit of working directly on the publis
|
|
33
35
|
## Example
|
34
36
|
|
35
37
|
### Model
|
36
|
-
|
38
|
+
|
39
|
+
```ruby
|
37
40
|
class Monkey
|
38
41
|
include MongoMapper::Document
|
39
42
|
plugin MongoMapper::Draft
|
40
43
|
|
41
44
|
key :name, String, :default => "test"
|
42
45
|
end
|
43
|
-
|
46
|
+
```
|
47
|
+
|
44
48
|
### Usage of model
|
45
|
-
|
49
|
+
|
50
|
+
```ruby
|
46
51
|
m = Monkey.new
|
47
52
|
m.name = "Leif"
|
48
53
|
m.save
|
@@ -56,7 +61,7 @@ m.save
|
|
56
61
|
m.name # returns "Artn"
|
57
62
|
|
58
63
|
m.published_model.name # returns "Leif"
|
59
|
-
|
64
|
+
```
|
60
65
|
|
61
66
|
|
62
67
|
Copyright (c) 2011 Leif Ringstad, released under the MIT license
|
data/Rakefile
CHANGED
@@ -10,7 +10,7 @@ namespace :test do
|
|
10
10
|
test.libs << 'test'
|
11
11
|
test.ruby_opts << '-rubygems'
|
12
12
|
test.pattern = 'test/unit/**/test_*.rb'
|
13
|
-
test.verbose = true
|
13
|
+
test.verbose = true
|
14
14
|
end
|
15
15
|
|
16
16
|
#TODO Add performance
|
@@ -18,7 +18,7 @@ namespace :test do
|
|
18
18
|
test.libs << 'test'
|
19
19
|
test.ruby_opts << '-rubygems'
|
20
20
|
test.pattern = 'test/performance/test/**/*.rb'
|
21
|
-
test.verbose = true
|
21
|
+
test.verbose = true
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -33,9 +33,9 @@ module MongoMapper
|
|
33
33
|
end
|
34
34
|
|
35
35
|
|
36
|
-
# if already published,
|
36
|
+
# if already published, update the record
|
37
37
|
if (self.published?)
|
38
|
-
old_published_record = self.published_record
|
38
|
+
# old_published_record = self.published_record
|
39
39
|
# support for mm-tree
|
40
40
|
# remove parents from previous published record
|
41
41
|
# TREE Support disabled for now
|
@@ -44,19 +44,31 @@ module MongoMapper
|
|
44
44
|
# old_published_record.save
|
45
45
|
# end
|
46
46
|
# destroy old published record... Not ideal, but should work
|
47
|
-
self.published_record.destroy if self.published_record != nil
|
48
|
-
live_record = self.clone
|
49
|
-
live_record.created_at = old_published_record.created_at if self.respond_to?("created_at")
|
50
|
-
|
47
|
+
# self.published_record.destroy if self.published_record != nil
|
48
|
+
# live_record = self.clone
|
49
|
+
# live_record.created_at = old_published_record.created_at if self.respond_to?("created_at")
|
50
|
+
update_attribs = self.attributes.clone
|
51
|
+
["_id", "created_at", "updated_at"].each do |rmkey|
|
52
|
+
update_attribs.delete(rmkey)
|
53
|
+
end
|
54
|
+
update_attribs["draft"] = false
|
55
|
+
update_attribs["draft_record_published_id"] = nil
|
56
|
+
live_record = self.published_record
|
57
|
+
live_record.update_attributes!(update_attribs)
|
58
|
+
else # clone the record
|
59
|
+
|
51
60
|
live_record = self.clone
|
52
|
-
|
61
|
+
if self.respond_to?("created_at")
|
62
|
+
time_proc = lambda { Time.now.utc }
|
63
|
+
live_record.created_at = time_proc.call
|
64
|
+
end
|
65
|
+
live_record.draft_record_published_id = nil
|
66
|
+
live_record.draft = false
|
67
|
+
live_record.save!
|
53
68
|
end
|
54
69
|
|
55
|
-
self.draft_record_published_id
|
56
|
-
self.
|
57
|
-
self.save!
|
58
|
-
self.class.set_callback(:save, :before, :update_timestamps ) if self.respond_to?("updated_at")
|
59
|
-
|
70
|
+
self.set(draft_record_published_id: live_record._id)
|
71
|
+
self.reload
|
60
72
|
|
61
73
|
# TREE Support disabled for now
|
62
74
|
# if (self.respond_to?("parent_id_field") && self.respond_to?("path_field") && self.respond_to?("depth_field"))
|
@@ -75,9 +87,6 @@ module MongoMapper
|
|
75
87
|
# end
|
76
88
|
# end
|
77
89
|
|
78
|
-
live_record.draft = false;
|
79
|
-
live_record.updated_at = Time.now.utc if self.respond_to?("updated_at")
|
80
|
-
live_record.save!
|
81
90
|
return true
|
82
91
|
end
|
83
92
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mm-draft
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leif Ringstad
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|