radiant-shop_packages-extension 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/README +3 -0
- data/Rakefile +138 -0
- data/VERSION +1 -0
- data/app/controllers/.DS_Store +0 -0
- data/app/controllers/admin/shop/packages/packings_controller.rb +90 -0
- data/app/controllers/admin/shop/packages_controller.rb +63 -0
- data/app/datasets/shop_packages.rb +25 -0
- data/app/models/shop_package.rb +79 -0
- data/app/models/shop_packing.rb +22 -0
- data/app/views/admin/shop/packages/edit.html.haml +11 -0
- data/app/views/admin/shop/packages/edit/_foot.html.haml +17 -0
- data/app/views/admin/shop/packages/edit/_form.html.haml +15 -0
- data/app/views/admin/shop/packages/edit/_head.html.haml +4 -0
- data/app/views/admin/shop/packages/edit/_inputs.html.haml +2 -0
- data/app/views/admin/shop/packages/edit/_meta.html.haml +8 -0
- data/app/views/admin/shop/packages/edit/_parts.html.haml +9 -0
- data/app/views/admin/shop/packages/edit/_popups.html.haml +4 -0
- data/app/views/admin/shop/packages/edit/buttons/_browse_products.html.haml +1 -0
- data/app/views/admin/shop/packages/edit/inputs/_name.html.haml +3 -0
- data/app/views/admin/shop/packages/edit/inputs/_price.html.haml +3 -0
- data/app/views/admin/shop/packages/edit/meta/_sku.html.haml +5 -0
- data/app/views/admin/shop/packages/edit/parts/_description.html.haml +1 -0
- data/app/views/admin/shop/packages/edit/parts/_products.html.haml +3 -0
- data/app/views/admin/shop/packages/edit/popups/_browse_products.html.haml +7 -0
- data/app/views/admin/shop/packages/edit/shared/_product.html.haml +8 -0
- data/app/views/admin/shop/packages/index.html.haml +13 -0
- data/app/views/admin/shop/packages/index/_foot.html.haml +8 -0
- data/app/views/admin/shop/packages/index/_head.html.haml +2 -0
- data/app/views/admin/shop/packages/index/_package.html.haml +9 -0
- data/app/views/admin/shop/packages/index/buttons/_new_package.html.haml +1 -0
- data/app/views/admin/shop/packages/new.html.haml +11 -0
- data/app/views/admin/shop/packages/remove.html.haml +12 -0
- data/config/locales/en.yml +11 -0
- data/config/routes.rb +13 -0
- data/cucumber.yml +1 -0
- data/db/migrate/20101015161749_setup_shop_packages.rb +27 -0
- data/lib/shop_packages/interface/packages.rb +34 -0
- data/lib/shop_packages/models/shop_packageable.rb +15 -0
- data/lib/shop_packages/tags/helpers.rb +41 -0
- data/lib/shop_packages/tags/package.rb +94 -0
- data/lib/tasks/shop_packages_extension_tasks.rake +55 -0
- data/public/javascripts/admin/extensions/shop/packages/edit.js +109 -0
- data/public/stylesheets/sass/admin/extensions/shop/packages/edit.sass +162 -0
- data/radiant-shop_packages-extension.gemspec +104 -0
- data/shop_packages_extension.rb +37 -0
- data/spec/controllers/admin/shop/packages/packings_controller_spec.rb +188 -0
- data/spec/controllers/admin/shop/packages_controller_spec.rb +32 -0
- data/spec/datasets/shop_packages.rb +23 -0
- data/spec/lib/shop_packages/tags/package_spec.rb +348 -0
- data/spec/models/shop_package_spec.rb +117 -0
- data/spec/models/shop_packing_spec.rb +67 -0
- data/spec/models/shop_product_spec.rb +25 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +23 -0
- metadata +141 -0
@@ -0,0 +1,55 @@
|
|
1
|
+
namespace :radiant do
|
2
|
+
namespace :extensions do
|
3
|
+
namespace :shop_packages do
|
4
|
+
|
5
|
+
desc "Runs the migration of the Shop Packages extension"
|
6
|
+
task :migrate => :environment do
|
7
|
+
require 'radiant/extension_migrator'
|
8
|
+
if ENV["VERSION"]
|
9
|
+
ShopPackagesExtension.migrator.migrate(ENV["VERSION"].to_i)
|
10
|
+
Rake::Task['db:schema:dump'].invoke
|
11
|
+
else
|
12
|
+
ShopPackagesExtension.migrator.migrate
|
13
|
+
Rake::Task['db:schema:dump'].invoke
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Copies public assets of the Shop Packages to the instance public/ directory."
|
18
|
+
task :update => :environment do
|
19
|
+
is_svn_or_dir = proc {|path| path =~ /\.svn/ || File.directory?(path) }
|
20
|
+
puts "Copying assets from ShopPackagesExtension"
|
21
|
+
Dir[ShopPackagesExtension.root + "/public/**/*"].reject(&is_svn_or_dir).each do |file|
|
22
|
+
path = file.sub(ShopPackagesExtension.root, '')
|
23
|
+
directory = File.dirname(path)
|
24
|
+
mkdir_p RAILS_ROOT + directory, :verbose => false
|
25
|
+
cp file, RAILS_ROOT + path, :verbose => false
|
26
|
+
end
|
27
|
+
unless ShopPackagesExtension.root.starts_with? RAILS_ROOT # don't need to copy vendored tasks
|
28
|
+
puts "Copying rake tasks from ShopPackagesExtension"
|
29
|
+
local_tasks_path = File.join(RAILS_ROOT, %w(lib tasks))
|
30
|
+
mkdir_p local_tasks_path, :verbose => false
|
31
|
+
Dir[File.join ShopPackagesExtension.root, %w(lib tasks *.rake)].each do |file|
|
32
|
+
cp file, local_tasks_path, :verbose => false
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
desc "Syncs all available translations for this ext to the English ext master"
|
38
|
+
task :sync => :environment do
|
39
|
+
# The main translation root, basically where English is kept
|
40
|
+
language_root = ShopPackagesExtension.root + "/config/locales"
|
41
|
+
words = TranslationSupport.get_translation_keys(language_root)
|
42
|
+
|
43
|
+
Dir["#{language_root}/*.yml"].each do |filename|
|
44
|
+
next if filename.match('_available_tags')
|
45
|
+
basename = File.basename(filename, '.yml')
|
46
|
+
puts "Syncing #{basename}"
|
47
|
+
(comments, other) = TranslationSupport.read_file(filename, basename)
|
48
|
+
words.each { |k,v| other[k] ||= words[k] } # Initializing hash variable as empty if it does not exist
|
49
|
+
other.delete_if { |k,v| !words[k] } # Remove if not defined in en.yml
|
50
|
+
TranslationSupport.write_file(filename, basename, comments, other)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
document.observe("dom:loaded", function() {
|
2
|
+
shop_package_edit = new ShopPackageEdit();
|
3
|
+
shop_package_edit.initialize();
|
4
|
+
|
5
|
+
Event.addBehavior({
|
6
|
+
'#available_products .product:click' : function(e) { shop_package_edit.productAttach($(this)) },
|
7
|
+
'#package_products .quantity:blur' : function(e) { shop_package_edit.productUpdate($(this)) },
|
8
|
+
'#package_products .delete:click' : function(e) { shop_package_edit.productRemove($(this)) }
|
9
|
+
})
|
10
|
+
});
|
11
|
+
|
12
|
+
var ShopPackageEdit = Class.create({
|
13
|
+
|
14
|
+
initialize: function() {
|
15
|
+
this.productsSort();
|
16
|
+
},
|
17
|
+
|
18
|
+
productsSort: function() {
|
19
|
+
var route = shop.getRoute('sort_admin_shop_package_packings_path');
|
20
|
+
Sortable.create('package_products', {
|
21
|
+
constraint: false,
|
22
|
+
overlap: 'horizontal',
|
23
|
+
containment: ['package_products'],
|
24
|
+
onUpdate: function(element) {
|
25
|
+
new Ajax.Request(route, {
|
26
|
+
method: 'put',
|
27
|
+
parameters: {
|
28
|
+
'package_id': $('shop_package_id').value,
|
29
|
+
'packings' : Sortable.serialize('package_products')
|
30
|
+
}
|
31
|
+
});
|
32
|
+
}
|
33
|
+
})
|
34
|
+
},
|
35
|
+
|
36
|
+
productAttach: function(element) {
|
37
|
+
var product = element;
|
38
|
+
var route = shop.getRoute('admin_shop_package_packings_path');
|
39
|
+
|
40
|
+
showStatus('Adding Product...');
|
41
|
+
new Ajax.Request(route, {
|
42
|
+
method: 'post',
|
43
|
+
parameters: {
|
44
|
+
'package_id': $('shop_package_id').value,
|
45
|
+
'product_id': element.getAttribute('data-product_id'),
|
46
|
+
},
|
47
|
+
onSuccess: function(data) {
|
48
|
+
$('package_products').insert({ 'bottom' : data.responseText});
|
49
|
+
shop_package_edit.productPostChanges(product);
|
50
|
+
}.bind(element),
|
51
|
+
onFailure: function() {
|
52
|
+
thi.productError();
|
53
|
+
}
|
54
|
+
});
|
55
|
+
},
|
56
|
+
|
57
|
+
productUpdate: function(element) {
|
58
|
+
var product = element.up('.product');
|
59
|
+
var packing_id = product.readAttribute('data-packing_id');
|
60
|
+
var route = shop.getRoute('admin_shop_package_packing_path', 'js', packing_id);
|
61
|
+
|
62
|
+
showStatus('Updating Quantity...');
|
63
|
+
new Ajax.Request(route, {
|
64
|
+
method: 'put',
|
65
|
+
parameters: {
|
66
|
+
'quantity': element.value
|
67
|
+
},
|
68
|
+
onSuccess: function(data) {
|
69
|
+
hideStatus();
|
70
|
+
},
|
71
|
+
onFailure: function(data) {
|
72
|
+
shop_package_edit.errorStatus();
|
73
|
+
}
|
74
|
+
});
|
75
|
+
},
|
76
|
+
|
77
|
+
productRemove: function(element) {
|
78
|
+
var product = element.up('.product');
|
79
|
+
var packing_id = product.readAttribute('data-packing_id');
|
80
|
+
var route = shop.getRoute('admin_shop_package_packing_path', 'js', packing_id);
|
81
|
+
|
82
|
+
showStatus('Removing Product...');
|
83
|
+
element.hide();
|
84
|
+
new Ajax.Request(route, {
|
85
|
+
method: 'delete',
|
86
|
+
onSuccess: function(data) {
|
87
|
+
$('available_products').insert({ 'bottom' : data.responseText });
|
88
|
+
shop_package_edit.productPostChanges(product);
|
89
|
+
},
|
90
|
+
onFailure: function(data) {
|
91
|
+
shop_package_edit.errorStatus();
|
92
|
+
}
|
93
|
+
});
|
94
|
+
},
|
95
|
+
|
96
|
+
productPostChanges: function(element) {
|
97
|
+
element.remove();
|
98
|
+
|
99
|
+
this.productsSort();
|
100
|
+
|
101
|
+
hideStatus();
|
102
|
+
},
|
103
|
+
|
104
|
+
errorStatus: function() {
|
105
|
+
setStatus('Something went wrong, refreshing.');
|
106
|
+
location.reload(true);
|
107
|
+
}
|
108
|
+
|
109
|
+
});
|
@@ -0,0 +1,162 @@
|
|
1
|
+
ol#package_products
|
2
|
+
overflow: hidden
|
3
|
+
padding:
|
4
|
+
top: 10px
|
5
|
+
|
6
|
+
li.product
|
7
|
+
float: left
|
8
|
+
position: relative
|
9
|
+
padding: 10px
|
10
|
+
height: 100px
|
11
|
+
width: 100px
|
12
|
+
margin:
|
13
|
+
right: 10px
|
14
|
+
border:
|
15
|
+
radius: 6px
|
16
|
+
-moz:
|
17
|
+
border:
|
18
|
+
radius: 6px
|
19
|
+
-webkit:
|
20
|
+
border:
|
21
|
+
radius: 6px
|
22
|
+
cursor: move
|
23
|
+
overflow: hidden
|
24
|
+
*
|
25
|
+
vertical:
|
26
|
+
align: middle
|
27
|
+
|
28
|
+
.wrapper
|
29
|
+
display: table-cell
|
30
|
+
height: 100px
|
31
|
+
width: 100px
|
32
|
+
text:
|
33
|
+
align: center
|
34
|
+
vertical:
|
35
|
+
align: middle
|
36
|
+
|
37
|
+
img
|
38
|
+
width: 100px
|
39
|
+
max:
|
40
|
+
height: 100px
|
41
|
+
|
42
|
+
.title
|
43
|
+
font-size: 10px
|
44
|
+
position: absolute
|
45
|
+
display: block
|
46
|
+
width: 96%
|
47
|
+
top: 37.5px
|
48
|
+
left: 0
|
49
|
+
padding: 4px 2%
|
50
|
+
overflow: hidden
|
51
|
+
|
52
|
+
.quantity
|
53
|
+
visibility: hidden
|
54
|
+
font-size: 10px
|
55
|
+
position: absolute
|
56
|
+
display: block
|
57
|
+
width: 30px
|
58
|
+
bottom: 14px
|
59
|
+
left: 18px
|
60
|
+
padding: 2px 0
|
61
|
+
|
62
|
+
.save_quantity
|
63
|
+
width: 45px
|
64
|
+
visibility: hidden
|
65
|
+
position: absolute
|
66
|
+
right: 14px
|
67
|
+
bottom: 14px
|
68
|
+
|
69
|
+
.actions
|
70
|
+
position: absolute
|
71
|
+
display: block
|
72
|
+
width: 100%
|
73
|
+
top: 0
|
74
|
+
left: 0
|
75
|
+
|
76
|
+
.delete
|
77
|
+
position: absolute
|
78
|
+
right: 2px
|
79
|
+
top: 4px
|
80
|
+
width: 20px
|
81
|
+
height: 20px
|
82
|
+
overflow: hidden
|
83
|
+
display: block
|
84
|
+
cursor: pointer
|
85
|
+
background:
|
86
|
+
image: url('/images/admin/minus_disabled.png')
|
87
|
+
repeat: no-repeat
|
88
|
+
position: 0 0
|
89
|
+
cursor: pointer
|
90
|
+
|
91
|
+
&:hover
|
92
|
+
background:
|
93
|
+
image: url('/images/admin/minus.png')
|
94
|
+
|
95
|
+
&:hover
|
96
|
+
background:
|
97
|
+
color: #f9f6fe
|
98
|
+
|
99
|
+
.title, .quantity, .save_quantity
|
100
|
+
visibility: visible
|
101
|
+
|
102
|
+
.title
|
103
|
+
background-color: #f9f6fe
|
104
|
+
|
105
|
+
#browse_products_popup
|
106
|
+
position: relative
|
107
|
+
overflow: hidden
|
108
|
+
|
109
|
+
ul#available_products
|
110
|
+
width: 700px
|
111
|
+
padding: 5px 0 10px
|
112
|
+
overflow: hidden
|
113
|
+
position: relative
|
114
|
+
|
115
|
+
li.product
|
116
|
+
position: relative
|
117
|
+
background-color: #f9f6fe
|
118
|
+
display: block
|
119
|
+
float: left
|
120
|
+
height: 70px
|
121
|
+
width: 70px
|
122
|
+
padding: 10px
|
123
|
+
margin: 0 5px 5px
|
124
|
+
border:
|
125
|
+
radius: 6px
|
126
|
+
-moz:
|
127
|
+
border:
|
128
|
+
radius: 6px
|
129
|
+
-webkit:
|
130
|
+
border:
|
131
|
+
radius: 6px
|
132
|
+
cursor: pointer
|
133
|
+
|
134
|
+
*
|
135
|
+
vertical:
|
136
|
+
align: middle
|
137
|
+
|
138
|
+
.wrapper
|
139
|
+
display: table-cell
|
140
|
+
height: 70px
|
141
|
+
width: 70px
|
142
|
+
text:
|
143
|
+
align: center
|
144
|
+
vertical:
|
145
|
+
algin: middle
|
146
|
+
|
147
|
+
img
|
148
|
+
width: 70px
|
149
|
+
|
150
|
+
.title
|
151
|
+
font-size: 10px
|
152
|
+
position: absolute
|
153
|
+
display: block
|
154
|
+
width: 96%
|
155
|
+
top: 37.5px
|
156
|
+
left: 0
|
157
|
+
background-color: #f9f6fe
|
158
|
+
padding: 4px 2%
|
159
|
+
overflow: hidden
|
160
|
+
|
161
|
+
.actions, .quantity, .save_quantity
|
162
|
+
display: none
|
@@ -0,0 +1,104 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{radiant-shop_packages-extension}
|
8
|
+
s.version = "0.0.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Dirk Kelly"]
|
12
|
+
s.date = %q{2010-11-10}
|
13
|
+
s.description = %q{RadiantShop: Group up Products into packages, you can assign a price to a package}
|
14
|
+
s.email = %q{dk@dirkkelly.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
".gitignore",
|
20
|
+
"README",
|
21
|
+
"Rakefile",
|
22
|
+
"VERSION",
|
23
|
+
"app/controllers/.DS_Store",
|
24
|
+
"app/controllers/admin/shop/packages/packings_controller.rb",
|
25
|
+
"app/controllers/admin/shop/packages_controller.rb",
|
26
|
+
"app/datasets/shop_packages.rb",
|
27
|
+
"app/models/shop_package.rb",
|
28
|
+
"app/models/shop_packing.rb",
|
29
|
+
"app/views/admin/shop/packages/edit.html.haml",
|
30
|
+
"app/views/admin/shop/packages/edit/_foot.html.haml",
|
31
|
+
"app/views/admin/shop/packages/edit/_form.html.haml",
|
32
|
+
"app/views/admin/shop/packages/edit/_head.html.haml",
|
33
|
+
"app/views/admin/shop/packages/edit/_inputs.html.haml",
|
34
|
+
"app/views/admin/shop/packages/edit/_meta.html.haml",
|
35
|
+
"app/views/admin/shop/packages/edit/_parts.html.haml",
|
36
|
+
"app/views/admin/shop/packages/edit/_popups.html.haml",
|
37
|
+
"app/views/admin/shop/packages/edit/buttons/_browse_products.html.haml",
|
38
|
+
"app/views/admin/shop/packages/edit/inputs/_name.html.haml",
|
39
|
+
"app/views/admin/shop/packages/edit/inputs/_price.html.haml",
|
40
|
+
"app/views/admin/shop/packages/edit/meta/_sku.html.haml",
|
41
|
+
"app/views/admin/shop/packages/edit/parts/_description.html.haml",
|
42
|
+
"app/views/admin/shop/packages/edit/parts/_products.html.haml",
|
43
|
+
"app/views/admin/shop/packages/edit/popups/_browse_products.html.haml",
|
44
|
+
"app/views/admin/shop/packages/edit/shared/_product.html.haml",
|
45
|
+
"app/views/admin/shop/packages/index.html.haml",
|
46
|
+
"app/views/admin/shop/packages/index/_foot.html.haml",
|
47
|
+
"app/views/admin/shop/packages/index/_head.html.haml",
|
48
|
+
"app/views/admin/shop/packages/index/_package.html.haml",
|
49
|
+
"app/views/admin/shop/packages/index/buttons/_new_package.html.haml",
|
50
|
+
"app/views/admin/shop/packages/new.html.haml",
|
51
|
+
"app/views/admin/shop/packages/remove.html.haml",
|
52
|
+
"config/locales/en.yml",
|
53
|
+
"config/routes.rb",
|
54
|
+
"cucumber.yml",
|
55
|
+
"db/migrate/20101015161749_setup_shop_packages.rb",
|
56
|
+
"lib/shop_packages/interface/packages.rb",
|
57
|
+
"lib/shop_packages/models/shop_packageable.rb",
|
58
|
+
"lib/shop_packages/tags/helpers.rb",
|
59
|
+
"lib/shop_packages/tags/package.rb",
|
60
|
+
"lib/tasks/shop_packages_extension_tasks.rake",
|
61
|
+
"public/javascripts/admin/extensions/shop/packages/edit.js",
|
62
|
+
"public/stylesheets/sass/admin/extensions/shop/packages/edit.sass",
|
63
|
+
"radiant-shop_packages-extension.gemspec",
|
64
|
+
"shop_packages_extension.rb",
|
65
|
+
"spec/controllers/admin/shop/packages/packings_controller_spec.rb",
|
66
|
+
"spec/controllers/admin/shop/packages_controller_spec.rb",
|
67
|
+
"spec/datasets/shop_packages.rb",
|
68
|
+
"spec/lib/shop_packages/tags/package_spec.rb",
|
69
|
+
"spec/models/shop_package_spec.rb",
|
70
|
+
"spec/models/shop_packing_spec.rb",
|
71
|
+
"spec/models/shop_product_spec.rb",
|
72
|
+
"spec/spec.opts",
|
73
|
+
"spec/spec_helper.rb"
|
74
|
+
]
|
75
|
+
s.homepage = %q{http://github.com/thefrontiergroup/radiant-shop_packages-extension}
|
76
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
77
|
+
s.require_paths = ["lib"]
|
78
|
+
s.rubygems_version = %q{1.3.7}
|
79
|
+
s.summary = %q{Shop Packages Extension for Radiant CMS}
|
80
|
+
s.test_files = [
|
81
|
+
"spec/controllers/admin/shop/packages/packings_controller_spec.rb",
|
82
|
+
"spec/controllers/admin/shop/packages_controller_spec.rb",
|
83
|
+
"spec/datasets/shop_packages.rb",
|
84
|
+
"spec/lib/shop_packages/tags/package_spec.rb",
|
85
|
+
"spec/models/shop_package_spec.rb",
|
86
|
+
"spec/models/shop_packing_spec.rb",
|
87
|
+
"spec/models/shop_product_spec.rb",
|
88
|
+
"spec/spec_helper.rb"
|
89
|
+
]
|
90
|
+
|
91
|
+
if s.respond_to? :specification_version then
|
92
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
93
|
+
s.specification_version = 3
|
94
|
+
|
95
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
96
|
+
s.add_runtime_dependency(%q<radiant-shop-extension>, [">= 0"])
|
97
|
+
else
|
98
|
+
s.add_dependency(%q<radiant-shop-extension>, [">= 0"])
|
99
|
+
end
|
100
|
+
else
|
101
|
+
s.add_dependency(%q<radiant-shop-extension>, [">= 0"])
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Uncomment this if you reference any of your controllers in activate
|
2
|
+
# require_dependency 'application_controller'
|
3
|
+
|
4
|
+
class ShopPackagesExtension < Radiant::Extension
|
5
|
+
version "1.0"
|
6
|
+
description "Describe your extension here"
|
7
|
+
url "http://yourwebsite.com/shop_packages"
|
8
|
+
|
9
|
+
extension_config do |config|
|
10
|
+
config.after_initialize do
|
11
|
+
#
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
UserActionObserver.instance.send :add_observer!, ShopPackage
|
16
|
+
|
17
|
+
def activate
|
18
|
+
|
19
|
+
tab "Shop" do
|
20
|
+
add_item "Packages", "/admin/shop/packages", :after => "products"
|
21
|
+
end
|
22
|
+
|
23
|
+
unless defined? admin.packages
|
24
|
+
Radiant::AdminUI.send :include, ShopPackages::Interface::Packages
|
25
|
+
|
26
|
+
admin.packages = Radiant::AdminUI.load_default_shop_packages_regions
|
27
|
+
end
|
28
|
+
|
29
|
+
ShopProduct.send :include, ShopPackages::Models::ShopPackageable
|
30
|
+
Page.send :include, ShopPackages::Tags::Package
|
31
|
+
|
32
|
+
if Radiant::Extension.descendants.any? { |extension| extension.extension_name == 'ShopDiscounts' }
|
33
|
+
ShopPackage.send :include, ShopDiscounts::Models::Discountable
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|