active_admin-duplicatable 0.2.0 → 0.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eb10024fedf5e94c75bbd06c61ba63fe07e6642d
4
- data.tar.gz: 9373c50c442549149090552c640af79feb063553
3
+ metadata.gz: fb70dd281048047d1568dcb775b19aa46507ed41
4
+ data.tar.gz: baff5ba471c1409a7cd10d7954c45c54598e9759
5
5
  SHA512:
6
- metadata.gz: ad0a5517a5ac40df74e0d26b8dce2a50086aede86d10a14c6dec55acf06f3c66968fa6a5b78620861ebf8b9f2d836b737771274967d85658e47d3d756392a6f2
7
- data.tar.gz: c62337fb12d53a28627d86d27e8dad9062259361b76d725e2b3b37cb0fe1b033fd80d2680f8527ac52f76de45af335bbb5f56403d72db0c372e22a6efd0e4d8a
6
+ metadata.gz: 28623f63ac6b3877c16694ef73293f3837f3cd82c84a4618a305d8cbed9cef90f725ae04f04ad22115179e8aa4fdb3cce59527693b33ae92c42f47aad22d5c01
7
+ data.tar.gz: 1163c61a02ba1d7d667c4c69c99766f40daa584571cdc11e5b83c68a5052a130ccf99ff7bbe0cacf867fc0b95532b50ef6e034499fe78091b09f7082febf5c18
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.3.0] - 2017-10-03
8
+
9
+ ### Added
10
+
11
+ - Allow custom duplication methods in the `:via` option. Rather than always
12
+ calling `#amoeba_dup`, it can be configured to call any method.
13
+
7
14
  ## [0.2.0] - 2015-07-23
8
15
 
9
16
  - Avoid ActiveAdmin `1.0.0.pre1` deprecation warning when `#action_item` isn't
@@ -20,6 +27,7 @@ All notable changes to this project will be documented in this file.
20
27
 
21
28
  - Initial release
22
29
 
23
- [unreleased]: https://github.com/zorab47/active_admin-duplicatable/compare/v0.2.0...HEAD
30
+ [unreleased]: https://github.com/zorab47/active_admin-duplicatable/compare/v0.3.0...HEAD
24
31
  [0.1.0]: https://github.com/zorab47/active_admin-duplicatable/compare/v0.0.1...v0.1.0
25
32
  [0.2.0]: https://github.com/zorab47/active_admin-duplicatable/compare/v0.1.0...v0.2.0
33
+ [0.3.0]: https://github.com/zorab47/active_admin-duplicatable/compare/v0.2.0...v0.3.0
@@ -23,6 +23,8 @@ module ActiveAdmin
23
23
 
24
24
  if via == :save
25
25
  enable_resource_duplication_via_save
26
+ elsif via != :form
27
+ enable_resource_duplication_via_custom_method(via)
26
28
  else
27
29
  enable_resource_duplication_via_form
28
30
  end
@@ -81,6 +83,36 @@ module ActiveAdmin
81
83
  end
82
84
  end
83
85
 
86
+ # Enables resource duplication via a custom method
87
+ #
88
+ # - Adds a duplicate action button.
89
+ # - Calls a custom duplication method on the model. The method should
90
+ # handle any copying of data and persistence of the new record.
91
+ # - Redirects the user to edit the newly duplicated resource.
92
+ #
93
+ # No return.
94
+ def enable_resource_duplication_via_custom_method(method)
95
+ action_item(*compatible_action_item_parameters) do
96
+ if controller.action_methods.include?('new') && authorized?(ActiveAdmin::Auth::CREATE, active_admin_config.resource_class)
97
+ link_to(I18n.t(:duplicate_model, default: "Duplicate %{model}", scope: [:active_admin], model: active_admin_config.resource_label), action: :duplicate)
98
+ end
99
+ end
100
+
101
+ member_action :duplicate do
102
+ resource = resource_class.find(params[:id])
103
+
104
+ authorize! ActiveAdmin::Auth::CREATE, resource
105
+
106
+ begin
107
+ duplicate = resource.send method
108
+ redirect_to({ action: :edit, id: duplicate.id }, flash: { notice: "#{active_admin_config.resource_label} was successfully duplicated." })
109
+ rescue => e
110
+ Rails.logger.warn(e)
111
+ redirect_to({ action: :show }, flash: { error: "#{active_admin_config.resource_label} could not be duplicated." })
112
+ end
113
+ end
114
+ end
115
+
84
116
  # For ActiveAdmin `action_item` compatibility.
85
117
  #
86
118
  # - When ActiveAdmin is less than 1.0.0.pre1 exclude name parameter from
@@ -1,5 +1,5 @@
1
1
  module Activeadmin
2
2
  module Duplicatable
3
- VERSION = "0.2.0"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_admin-duplicatable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Maresh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-23 00:00:00.000000000 Z
11
+ date: 2017-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeadmin
@@ -149,11 +149,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
149
  version: '0'
150
150
  requirements: []
151
151
  rubyforge_project:
152
- rubygems_version: 2.2.3
152
+ rubygems_version: 2.5.2.1
153
153
  signing_key:
154
154
  specification_version: 4
155
155
  summary: Simple duplication of ActiveAdmin resources
156
156
  test_files:
157
157
  - spec/duplicatable_spec.rb
158
158
  - spec/spec_helper.rb
159
- has_rdoc: