caboose-cms 0.8.78 → 0.8.79
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/caboose/admin_edit_invoice.js +45 -18
- data/app/controllers/caboose/invoices_controller.rb +20 -10
- data/app/controllers/caboose/subscriptions_controller.rb +60 -58
- data/app/controllers/caboose/variants_controller.rb +80 -97
- data/app/models/caboose/core_plugin.rb +1 -2
- data/app/models/caboose/line_item.rb +2 -1
- data/app/models/caboose/schema.rb +64 -67
- data/app/models/caboose/subscription.rb +130 -20
- data/app/models/caboose/variant.rb +21 -1
- data/app/views/caboose/invoices/admin_edit.html.erb +11 -3
- data/app/views/caboose/invoices/admin_index.html.erb +26 -13
- data/app/views/caboose/invoices/admin_user_edit.html.erb +60 -0
- data/app/views/caboose/subscriptions/admin_edit.html.erb +25 -60
- data/app/views/caboose/subscriptions/admin_index.html.erb +17 -18
- data/app/views/caboose/subscriptions/admin_user_index.html.erb +41 -0
- data/app/views/caboose/users/_admin_header.html.erb +3 -1
- data/app/views/caboose/variants/admin_edit.html.erb +26 -1
- data/lib/caboose/version.rb +1 -1
- data/lib/tasks/caboose.rake +4 -0
- metadata +4 -7
- data/app/controllers/caboose/user_subscriptions_controller.rb +0 -146
- data/app/models/caboose/user_subscription.rb +0 -144
- data/app/views/caboose/user_subscriptions/admin_edit.html.erb +0 -38
- data/app/views/caboose/user_subscriptions/admin_index.html.erb +0 -38
- data/app/views/caboose/user_subscriptions/admin_user_index.html.erb +0 -39
@@ -0,0 +1,60 @@
|
|
1
|
+
|
2
|
+
<%= render :partial => 'caboose/users/admin_header' %>
|
3
|
+
<input type='hidden' name='invoice_id' id='invoice_id' value='<%= @invoice.id %>' />
|
4
|
+
|
5
|
+
<h1>Edit Invoice #<%= @invoice.id %></h1>
|
6
|
+
|
7
|
+
<div id='overview_table'></div>
|
8
|
+
<div id='invoice_table'></div>
|
9
|
+
<div id='message'></div>
|
10
|
+
<div id='controls'></div>
|
11
|
+
|
12
|
+
<%= render :partial => 'caboose/users/admin_footer' %>
|
13
|
+
|
14
|
+
<!--
|
15
|
+
<p>
|
16
|
+
<input type='button' value='< Back' onclick="window.location='/admin/invoices';" />
|
17
|
+
<% if @invoice.financial_status == Caboose::Invoice::FINANCIAL_STATUS_AUTHORIZED && @invoice.total > 0.00 %>
|
18
|
+
<input type='button' value='Capture Funds' onclick="controller.capture_funds();" />
|
19
|
+
<input type='button' value='Void' onclick="controller.void_invoice();" />
|
20
|
+
<% end %>
|
21
|
+
<% if @invoice.financial_status == Caboose::Invoice::FINANCIAL_STATUS_CAPTURED && @invoice.total > 0.00 %>
|
22
|
+
<input type='button' value='Refund' onclick="refund_invoice(<%= @invoice.id %>);" />
|
23
|
+
<% end %>
|
24
|
+
<input type='button' value='Resend Confirmation' onclick="resend_confirmation(<%= @invoice.id %>)" />
|
25
|
+
<input type='button' value='Add Item' onclick="controller.add_variant();" />
|
26
|
+
<input type='button' value='Print Invoice' onclick="controller.print_invoice(<%= @invoice.id %>);" />
|
27
|
+
|
28
|
+
<% str = Caboose.plugin_hook('admin_edit_invoice_buttons', "", @invoice) %>
|
29
|
+
<% if str %><%= raw str %><% end %>
|
30
|
+
</p>
|
31
|
+
-->
|
32
|
+
|
33
|
+
<% content_for :caboose_js do %>
|
34
|
+
<%= javascript_include_tag 'caboose/model/all' %>
|
35
|
+
<%= javascript_include_tag 'caboose/admin_edit_invoice' %>
|
36
|
+
<script type='text/javascript'>
|
37
|
+
|
38
|
+
var controller = false;
|
39
|
+
$(document).ready(function() {
|
40
|
+
controller = new InvoiceController({
|
41
|
+
invoice_id: <%= raw Caboose.json(@invoice.id) %>,
|
42
|
+
authenticity_token: <%= raw Caboose.json(form_authenticity_token) %>
|
43
|
+
});
|
44
|
+
});
|
45
|
+
|
46
|
+
</script>
|
47
|
+
<% end %>
|
48
|
+
|
49
|
+
<% content_for :caboose_css do %>
|
50
|
+
<style type='text/css'>
|
51
|
+
|
52
|
+
table.shipping_address td,
|
53
|
+
table.billing_address td {
|
54
|
+
padding: 0 !important;
|
55
|
+
margin: 0 !important;
|
56
|
+
border: 0 !important;
|
57
|
+
}
|
58
|
+
|
59
|
+
</style>
|
60
|
+
<% end %>
|
@@ -1,81 +1,46 @@
|
|
1
|
-
<%
|
2
|
-
s = @subscription
|
3
|
-
%>
|
4
1
|
|
5
|
-
|
2
|
+
<%= render :partial => 'caboose/users/admin_header' %>
|
6
3
|
|
7
|
-
<p><div id='subscription_<%=
|
8
|
-
<p><div id='subscription_<%=
|
9
|
-
<p><div id='subscription_<%=
|
10
|
-
<p><div id='subscription_<%=
|
11
|
-
<p><div id='subscription_<%= s.id %>_prorate' ></div></p>
|
12
|
-
<p><div id='subscription_<%= s.id %>_prorate_method' ></div></p>
|
13
|
-
<p><div id='subscription_<%= s.id %>_prorate_flat_amount' ></div></p>
|
14
|
-
|
15
|
-
<p><code>def custom_prorate_function() {</code></p>
|
16
|
-
<p><div id='subscription_<%= s.id %>_prorate_function' ></div></p>
|
17
|
-
<p><code>
|
18
|
-
# Returns the amount that should be prorated for the first invoice for a subscription.<br />
|
19
|
-
# Note: self represents the user subscription object.<br />
|
20
|
-
}</code></p>
|
21
|
-
<p><div id='subscription_<%= s.id %>_start_on_day' ></div></p>
|
22
|
-
<p><div id='subscription_<%= s.id %>_start_day' ></div></p>
|
23
|
-
<p><div id='subscription_<%= s.id %>_start_month' ></div></p>
|
4
|
+
<p><div id='subscription_<%= @subscription.id %>_variant_id' ></div></p>
|
5
|
+
<p><div id='subscription_<%= @subscription.id %>_date_started' ></div></p>
|
6
|
+
<p><div id='subscription_<%= @subscription.id %>_date_started_full' ></div></p>
|
7
|
+
<p><div id='subscription_<%= @subscription.id %>_status' ></div></p>
|
24
8
|
|
25
9
|
<div id='message'></div>
|
26
|
-
|
27
10
|
<p>
|
28
|
-
<input type='button' value='
|
29
|
-
|
30
|
-
|
11
|
+
<input type='button' value='Create Invoices for this Subscription' onclick="create_subscription_invoices(<%= @subscription.id %>);" />
|
12
|
+
|
13
|
+
<%= render :partial => 'caboose/users/admin_footer' %>
|
31
14
|
|
32
15
|
<% content_for :caboose_js do %>
|
33
|
-
<%= javascript_include_tag
|
34
|
-
<script type=
|
16
|
+
<%= javascript_include_tag "caboose/model/all" %>
|
17
|
+
<script type="text/javascript">
|
35
18
|
|
36
19
|
$(document).ready(function() {
|
37
20
|
new ModelBinder({
|
38
21
|
name: 'Subscription',
|
39
|
-
id: <%=
|
40
|
-
update_url: '/admin/subscriptions/<%=
|
22
|
+
id: <%= @subscription.id %>,
|
23
|
+
update_url: '/admin/users/<%= @edituser.id %>/subscriptions/<%= @subscription.id %>',
|
41
24
|
authenticity_token: '<%= form_authenticity_token %>',
|
42
|
-
attributes: [
|
43
|
-
{ name: '
|
44
|
-
{ name: '
|
45
|
-
{ name: '
|
46
|
-
{ name: '
|
47
|
-
|
48
|
-
|
49
|
-
{ name: 'prorate_flat_amount' , nice_name: 'Prorate flat amount' , type: 'text' , value: <%= raw Caboose.json(s.prorate_flat_amount )%>, width: 400, align: 'left' },
|
50
|
-
{ name: 'prorate_function' , nice_name: 'Custom Prorate Function' , type: 'textarea' , value: <%= raw Caboose.json(s.prorate_function )%>, width: 400, align: 'left' , height: 100 },
|
51
|
-
{ name: 'start_on_day' , nice_name: 'Start on day' , type: 'checkbox' , value: <%= raw Caboose.json(s.start_on_day )%>, width: 400, align: 'left' },
|
52
|
-
{ name: 'start_day' , nice_name: 'Start day' , type: 'select' , value: <%= raw Caboose.json(s.start_day )%>, width: 400, align: 'left' , options_url: '/admin/subscriptions/start-day-options' },
|
53
|
-
{ name: 'start_month' , nice_name: 'Start month' , type: 'select' , value: <%= raw Caboose.json(s.start_month )%>, width: 400, align: 'left' , options_url: '/admin/subscriptions/start-month-options' }
|
54
|
-
]
|
55
|
-
});
|
25
|
+
attributes: [
|
26
|
+
{ name: 'variant_id' , nice_name: 'Variant' , type: 'select' , value: <%= raw Caboose.json(@subscription.variant_id ) %>, width: 400 , options_url: '/admin/subscriptions/subscription-options' },
|
27
|
+
{ name: 'date_started' , nice_name: 'Date Started' , type: 'date' , value: <%= raw Caboose.json(@subscription.date_started ) %>, width: 400 , date_format: 'Y-m-d' },
|
28
|
+
{ name: 'date_started_full' , nice_name: 'Date Started Full' , type: 'date' , value: <%= raw Caboose.json(@subscription.date_started_full ) %>, width: 400 , date_format: 'Y-m-d' },
|
29
|
+
{ name: 'status' , nice_name: 'Status' , type: 'select' , value: <%= raw Caboose.json(@subscription.status ) %>, width: 400 , options_url: '/admin/subscriptions/status-options' }
|
30
|
+
]
|
31
|
+
});
|
56
32
|
});
|
57
33
|
|
58
|
-
function
|
34
|
+
function create_subscription_invoices(subscription_id)
|
59
35
|
{
|
60
|
-
if (!confirm)
|
61
|
-
{
|
62
|
-
var p = $('<p/>')
|
63
|
-
.addClass('note warning')
|
64
|
-
.append("Are you sure you want to delete the subscription? ")
|
65
|
-
.append($('<input/>').attr('type','button').val('Yes').click(function(e) { delete_subscription(subscription_id, true); })).append(' ')
|
66
|
-
.append($('<input/>').attr('type','button').val('No' ).click(function(e) { $('#message').empty(); }));
|
67
|
-
$('#message').empty().append(p);
|
68
|
-
return;
|
69
|
-
}
|
70
|
-
$('#message').html("<p class='loading'>Deleting subscription...</p>");
|
71
36
|
$.ajax({
|
72
|
-
url:
|
73
|
-
type: '
|
37
|
+
url: "/admin/users/<%= @edituser.id %>/subscriptions/" + subscription_id + "/invoices",
|
38
|
+
type: 'post',
|
74
39
|
success: function(resp) {
|
75
40
|
if (resp.error) $('#message').html("<p class='note error'>" + resp.error + "</p>");
|
76
|
-
if (resp.success)
|
77
|
-
}
|
78
|
-
});
|
41
|
+
if (resp.success) $('#message').html("<p class='note success'>Invoices have been created successfully.</p>");
|
42
|
+
}
|
43
|
+
});
|
79
44
|
}
|
80
45
|
|
81
46
|
</script>
|
@@ -1,8 +1,6 @@
|
|
1
|
-
<%
|
2
|
-
sc = @site.store_config
|
3
|
-
%>
|
4
1
|
|
5
|
-
<h1>
|
2
|
+
<h1>Subcriptions</h1>
|
3
|
+
|
6
4
|
<div id='subscriptions'></div>
|
7
5
|
|
8
6
|
<% content_for :caboose_js do %>
|
@@ -19,24 +17,25 @@ $(document).ready(function() {
|
|
19
17
|
allow_bulk_delete: true,
|
20
18
|
allow_duplicate: false,
|
21
19
|
allow_advanced_edit: true,
|
22
|
-
|
23
|
-
{
|
24
|
-
{
|
25
|
-
{
|
26
|
-
|
27
|
-
|
28
|
-
{ show: true, bulk_edit: true, name: '
|
29
|
-
{ show: true, bulk_edit: true, name: '
|
30
|
-
{ show: true, bulk_edit: true, name: '
|
31
|
-
{ show: true, bulk_edit: true, name: '
|
32
|
-
{ show: true, bulk_edit: true, name: '
|
20
|
+
search_fields: [
|
21
|
+
{ name: 'variant_id' , nice_name: 'Variant' , type: 'select', width: 400, options_url: '/admin/subscriptions/variant-options' , empty_option_text: '-- Any Variant --' },
|
22
|
+
{ name: 'user_id' , nice_name: 'User' , type: 'select', width: 400, options_url: '/admin/subscriptions/user-options' , empty_option_text: '-- Any User --' },
|
23
|
+
{ name: 'status' , nice_name: 'Status' , type: 'select', width: 400, options_url: '/admin/subscriptions/status-options' , empty_option_text: '-- Any Status --' }
|
24
|
+
],
|
25
|
+
fields: [
|
26
|
+
{ show: true, bulk_edit: true, name: 'variant_id' , nice_name: 'Variant' , sort: 'variant_id' , type: 'select' , value: function(s) { return s.variant_id }, text: function(s) { return s.variant && s.variant.product ? s.variant.product.title : s.variant_id; }, width: 75, align: 'left', options_url: '/admin/subscriptions/variant-options' },
|
27
|
+
{ show: true, bulk_edit: true, name: 'user_id' , nice_name: 'User' , sort: 'user_id' , type: 'select' , value: function(s) { return s.user_id }, text: function(s) { return s.user ? s.user.first_name + ' ' + s.user.last_name : s.user_id; }, width: 75, align: 'left', options_url: '/admin/subscriptions/user-options' },
|
28
|
+
{ show: true, bulk_edit: true, name: 'date_started' , nice_name: 'Date Started' , sort: 'date_started' , type: 'date' , value: function(s) { return s.date_started }, width: 100, align: 'left' , date_format: 'Y-m-d' },
|
29
|
+
{ show: true, bulk_edit: true, name: 'date_started_full' , nice_name: 'Date Started Full' , sort: 'date_started_full' , type: 'date' , value: function(s) { return s.date_started_full }, width: 100, align: 'left' , date_format: 'Y-m-d' },
|
30
|
+
{ show: true, bulk_edit: true, name: 'status' , nice_name: 'Status' , sort: 'status' , type: 'select' , value: function(s) { return s.status }, width: 75, align: 'left' , options_url: '/admin/subscriptions/status-options' }
|
33
31
|
],
|
34
32
|
new_model_text: 'New Subscription',
|
35
|
-
no_models_text:
|
33
|
+
no_models_text: "There are subscriptions right now.",
|
36
34
|
new_model_fields: [
|
37
|
-
{ name: '
|
35
|
+
{ name: 'variant_id' , nice_name: 'Variant' , type: 'select', width: 400, options_url: '/admin/subscriptions/variant-options' },
|
36
|
+
{ name: 'user_id' , nice_name: 'User' , type: 'select', width: 400, options_url: '/admin/subscriptions/user-options' }
|
38
37
|
],
|
39
|
-
bulk_import_fields: ['
|
38
|
+
bulk_import_fields: ['variant_id', 'user_id', 'date_started', 'date_started_full', 'status'],
|
40
39
|
bulk_import_url: '/admin/subscriptions/bulk'
|
41
40
|
});
|
42
41
|
});
|
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
<h1>Subcriptions</h1>
|
3
|
+
|
4
|
+
<div id='subscriptions'></div>
|
5
|
+
|
6
|
+
<% content_for :caboose_js do %>
|
7
|
+
<%= javascript_include_tag 'caboose/model/all' %>
|
8
|
+
<script type='text/javascript'>
|
9
|
+
|
10
|
+
$(document).ready(function() {
|
11
|
+
var that = this;
|
12
|
+
var table = new IndexTable({
|
13
|
+
form_authenticity_token: '<%= form_authenticity_token %>',
|
14
|
+
container: 'subscriptions',
|
15
|
+
base_url: '/admin/users/<%= @edituser.id %>/subscriptions',
|
16
|
+
allow_bulk_edit: true,
|
17
|
+
allow_bulk_delete: true,
|
18
|
+
allow_duplicate: false,
|
19
|
+
allow_advanced_edit: true,
|
20
|
+
search_fields: [
|
21
|
+
{ name: 'variant_id' , nice_name: 'Variant' , type: 'select', width: 400, options_url: '/admin/subscriptions/variant-options' , empty_option_text: '-- Any Variant --' },
|
22
|
+
{ name: 'status' , nice_name: 'Status' , type: 'select', width: 400, options_url: '/admin/subscriptions/status-options' , empty_option_text: '-- Any Status --' }
|
23
|
+
],
|
24
|
+
fields: [
|
25
|
+
{ show: true, bulk_edit: true, name: 'variant_id' , nice_name: 'Variant' , sort: 'variant_id' , type: 'select' , value: function(s) { return s.variant_id }, text: function(s) { return s.variant && s.variant.product ? s.variant.product.title : s.variant_id; }, width: 75, align: 'left', options_url: '/admin/subscriptions/variant-options' },
|
26
|
+
{ show: true, bulk_edit: true, name: 'date_started' , nice_name: 'Date Started' , sort: 'date_started' , type: 'date' , value: function(s) { return s.date_started }, width: 100, align: 'left' , date_format: 'Y-m-d' },
|
27
|
+
{ show: true, bulk_edit: true, name: 'date_started_full' , nice_name: 'Date Started Full' , sort: 'date_started_full' , type: 'date' , value: function(s) { return s.date_started_full }, width: 100, align: 'left' , date_format: 'Y-m-d' },
|
28
|
+
{ show: true, bulk_edit: true, name: 'status' , nice_name: 'Status' , sort: 'status' , type: 'select' , value: function(s) { return s.status }, width: 75, align: 'left' , options_url: '/admin/subscriptions/status-options' }
|
29
|
+
],
|
30
|
+
new_model_text: 'New Subscription',
|
31
|
+
no_models_text: "There are subscriptions right now for this user.",
|
32
|
+
new_model_fields: [
|
33
|
+
{ name: 'variant_id' , nice_name: 'Variant' , type: 'select', width: 400, options_url: '/admin/subscriptions/variant-options' }
|
34
|
+
],
|
35
|
+
bulk_import_fields: ['variant_id', 'date_started', 'date_started_full', 'status'],
|
36
|
+
bulk_import_url: '/admin/users/<%= @edituser.id %>/subscriptions/bulk'
|
37
|
+
});
|
38
|
+
});
|
39
|
+
|
40
|
+
</script>
|
41
|
+
<% end %>
|
@@ -9,9 +9,11 @@
|
|
9
9
|
<%
|
10
10
|
tabs = {
|
11
11
|
'General' => "/admin/users/#{@edituser.id}",
|
12
|
+
'Invoices' => "/admin/users/#{@edituser.id}/invoices",
|
12
13
|
'Login Logs' => "/admin/login-logs?user_id=#{@edituser.id}",
|
13
14
|
'Password' => "/admin/users/#{@edituser.id}/password",
|
14
|
-
'Roles' => "/admin/users/#{@edituser.id}/roles",
|
15
|
+
'Roles' => "/admin/users/#{@edituser.id}/roles",
|
16
|
+
'Subscriptions' => "/admin/users/#{@edituser.id}/subscriptions",
|
15
17
|
'Delete' => "/admin/users/#{@edituser.id}/delete"
|
16
18
|
}
|
17
19
|
if @site.use_store
|
@@ -55,6 +55,22 @@ v = @variant
|
|
55
55
|
<div id='variant_<%= v.id %>_is_bundle'></div>
|
56
56
|
<div id='variant_children'></div>
|
57
57
|
|
58
|
+
<h2>Subscription</h2>
|
59
|
+
<div id='variant_<%= v.id %>_is_subscription'></div>
|
60
|
+
<div id='variant_<%= v.id %>_subscription_interval' ></div>
|
61
|
+
<div id='variant_<%= v.id %>_subscription_prorate' ></div>
|
62
|
+
<div id='variant_<%= v.id %>_subscription_prorate_method' ></div>
|
63
|
+
<div id='variant_<%= v.id %>_subscription_prorate_flat_amount' ></div>
|
64
|
+
<div id='variant_<%= v.id %>_subscription_start_on_day' ></div>
|
65
|
+
<div id='variant_<%= v.id %>_subscription_start_day' ></div>
|
66
|
+
<div id='variant_<%= v.id %>_subscription_start_month' ></div>
|
67
|
+
<p><code>def custom_prorate_function() {</code></p>
|
68
|
+
<p><div id='variant_<%= v.id %>_subscription_prorate_function' ></div></p>
|
69
|
+
<p><code>
|
70
|
+
# Returns the amount that should be prorated for the first invoice for a subscription.<br />
|
71
|
+
# Note: self represents the subscription object.<br />
|
72
|
+
}</code></p>
|
73
|
+
|
58
74
|
<h2>Delete Variant</h2>
|
59
75
|
<div id='message'></div>
|
60
76
|
<p><input type='button' value='Delete Variant' onclick="delete_variant(<%= v.id %>);" /></p>
|
@@ -124,7 +140,16 @@ $(document).ready(function() {
|
|
124
140
|
else
|
125
141
|
vcc.hide();
|
126
142
|
}
|
127
|
-
}
|
143
|
+
},
|
144
|
+
{ name: 'is_subscription' , nice_name: 'Is Subscription' , type: 'checkbox' , align: 'right' , width: 400, value: <%= raw Caboose.json(v.is_subscription ? 1 : 0 ) %> },
|
145
|
+
{ name: 'subscription_interval' , nice_name: 'Interval' , type: 'select' , align: 'right' , width: 400, value: <%= raw Caboose.json(v.subscription_interval ) %> , options_url: '/admin/variants/subscription-interval-options' },
|
146
|
+
{ name: 'subscription_prorate' , nice_name: 'Prorate' , type: 'checkbox' , align: 'right' , width: 400, value: <%= raw Caboose.json(v.subscription_prorate ) %> },
|
147
|
+
{ name: 'subscription_prorate_method' , nice_name: 'Prorate method' , type: 'select' , align: 'right' , width: 400, value: <%= raw Caboose.json(v.subscription_prorate_method ) %> , options_url: '/admin/variants/subscription-prorate-method-options' },
|
148
|
+
{ name: 'subscription_prorate_flat_amount' , nice_name: 'Prorate flat amount' , type: 'text' , align: 'right' , width: 400, value: <%= raw Caboose.json(v.subscription_prorate_flat_amount ) %> },
|
149
|
+
{ name: 'subscription_prorate_function' , nice_name: 'Custom Prorate Function' , type: 'textarea' , align: 'right' , width: 400, value: <%= raw Caboose.json(v.subscription_prorate_function ) %> , height: 100 },
|
150
|
+
{ name: 'subscription_start_on_day' , nice_name: 'Start on day' , type: 'checkbox' , align: 'right' , width: 400, value: <%= raw Caboose.json(v.subscription_start_on_day ) %> },
|
151
|
+
{ name: 'subscription_start_day' , nice_name: 'Start day' , type: 'select' , align: 'right' , width: 400, value: <%= raw Caboose.json(v.subscription_start_day ) %> , options_url: '/admin/variants/subscription-start-day-options' },
|
152
|
+
{ name: 'subscription_start_month' , nice_name: 'Start month' , type: 'select' , align: 'right' , width: 400, value: <%= raw Caboose.json(v.subscription_start_month ) %> , options_url: '/admin/variants/subscription-start-month-options' }
|
128
153
|
]
|
129
154
|
});
|
130
155
|
vcc = new VariantChildrenController({
|
data/lib/caboose/version.rb
CHANGED
data/lib/tasks/caboose.rake
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: caboose-cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.79
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Barry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|
@@ -811,7 +811,6 @@ files:
|
|
811
811
|
- app/controllers/caboose/station_controller.rb
|
812
812
|
- app/controllers/caboose/store_controller.rb
|
813
813
|
- app/controllers/caboose/subscriptions_controller.rb
|
814
|
-
- app/controllers/caboose/user_subscriptions_controller.rb
|
815
814
|
- app/controllers/caboose/users_controller.rb
|
816
815
|
- app/controllers/caboose/variant_children_controller.rb
|
817
816
|
- app/controllers/caboose/variants_controller.rb
|
@@ -933,7 +932,6 @@ files:
|
|
933
932
|
- app/models/caboose/tax_calculator.rb
|
934
933
|
- app/models/caboose/tax_line.rb
|
935
934
|
- app/models/caboose/user.rb
|
936
|
-
- app/models/caboose/user_subscription.rb
|
937
935
|
- app/models/caboose/utilities/schema.rb
|
938
936
|
- app/models/caboose/variant.rb
|
939
937
|
- app/models/caboose/variant_child.rb
|
@@ -1077,6 +1075,7 @@ files:
|
|
1077
1075
|
- app/views/caboose/invoices/admin_new.html.erb
|
1078
1076
|
- app/views/caboose/invoices/admin_print.html.erb
|
1079
1077
|
- app/views/caboose/invoices/admin_summary_report.html.erb
|
1078
|
+
- app/views/caboose/invoices/admin_user_edit.html.erb
|
1080
1079
|
- app/views/caboose/invoices_mailer/customer_new_invoice.html.erb
|
1081
1080
|
- app/views/caboose/invoices_mailer/customer_payment_authorization.html.erb
|
1082
1081
|
- app/views/caboose/invoices_mailer/customer_receipt.html.erb
|
@@ -1208,9 +1207,7 @@ files:
|
|
1208
1207
|
- app/views/caboose/store/admin_edit_tax.html.erb
|
1209
1208
|
- app/views/caboose/subscriptions/admin_edit.html.erb
|
1210
1209
|
- app/views/caboose/subscriptions/admin_index.html.erb
|
1211
|
-
- app/views/caboose/
|
1212
|
-
- app/views/caboose/user_subscriptions/admin_index.html.erb
|
1213
|
-
- app/views/caboose/user_subscriptions/admin_user_index.html.erb
|
1210
|
+
- app/views/caboose/subscriptions/admin_user_index.html.erb
|
1214
1211
|
- app/views/caboose/users/_admin_footer.html.erb
|
1215
1212
|
- app/views/caboose/users/_admin_header.html.erb
|
1216
1213
|
- app/views/caboose/users/admin_delete_form.html.erb
|
@@ -1,146 +0,0 @@
|
|
1
|
-
|
2
|
-
module Caboose
|
3
|
-
class UserSubscriptionsController < ApplicationController
|
4
|
-
|
5
|
-
#===========================================================================
|
6
|
-
# Admin actions
|
7
|
-
#===========================================================================
|
8
|
-
|
9
|
-
# @route GET /admin/user-subscriptions
|
10
|
-
def admin_index
|
11
|
-
return if !user_is_allowed('usersubscriptions', 'view')
|
12
|
-
render :layout => 'caboose/admin'
|
13
|
-
end
|
14
|
-
|
15
|
-
# @route GET /admin/users/:user_id/subscriptions
|
16
|
-
def admin_user_index
|
17
|
-
return if !user_is_allowed('usersubscriptions', 'view')
|
18
|
-
@edituser = User.find(params[:user_id])
|
19
|
-
render :layout => 'caboose/admin'
|
20
|
-
end
|
21
|
-
|
22
|
-
# @route GET /admin/user-subscriptions/json
|
23
|
-
# @route GET /admin/users/:user_id/subscriptions/json
|
24
|
-
def admin_json
|
25
|
-
return if !user_is_allowed('usersubscriptions', 'view')
|
26
|
-
|
27
|
-
pager = PageBarGenerator.new(params, {
|
28
|
-
'subscription_id' => '',
|
29
|
-
'user_id' => params[:user_id] ? params[:user_id] : '',
|
30
|
-
'date_started_gte' => '',
|
31
|
-
'date_started_lte' => '',
|
32
|
-
'date_started_full_gte' => '',
|
33
|
-
'date_started_full_lte' => '',
|
34
|
-
'status' => ''
|
35
|
-
},{
|
36
|
-
'model' => 'Caboose::UserSubscription',
|
37
|
-
'sort' => 'date_started',
|
38
|
-
'desc' => false,
|
39
|
-
'base_url' => params[:user_id] ? "/admin/users/#{params[:user_id]}/subscriptions" : '/admin/user-subscriptions',
|
40
|
-
'use_url_params' => false
|
41
|
-
})
|
42
|
-
render :json => {
|
43
|
-
:pager => pager,
|
44
|
-
:models => pager.items.as_json(:include => [:user, :subscription])
|
45
|
-
}
|
46
|
-
end
|
47
|
-
|
48
|
-
# @route GET /admin/users/:user_id/subscriptions/:id
|
49
|
-
def admin_edit
|
50
|
-
return if !user_is_allowed('usersubscriptions', 'edit')
|
51
|
-
@user_subscription = UserSubscription.find(params[:id])
|
52
|
-
@edituser = User.find(params[:user_id])
|
53
|
-
render :layout => 'caboose/admin'
|
54
|
-
end
|
55
|
-
|
56
|
-
# @route GET /admin/users/:user_id/subscriptions/:id/json
|
57
|
-
def admin_json_single
|
58
|
-
return if !user_is_allowed('usersubscriptions', 'view')
|
59
|
-
us = UserSubscription.find(params[:id])
|
60
|
-
render :json => us
|
61
|
-
end
|
62
|
-
|
63
|
-
# @route POST /admin/users/:user_id/subscriptions
|
64
|
-
def admin_add
|
65
|
-
return unless user_is_allowed('usersubscriptions', 'add')
|
66
|
-
|
67
|
-
resp = Caboose::StdClass.new
|
68
|
-
s = params[:subscription_id] ? Subscription.where(:id => params[:subscription_id]).first : nil
|
69
|
-
|
70
|
-
if subscription_id.nil? || s.nil? || s.site_id != @site.id
|
71
|
-
resp.error = "A valid subscription is required."
|
72
|
-
else
|
73
|
-
us = UserSubscription.create(
|
74
|
-
:subscription_id => s.id,
|
75
|
-
:user_id => params[:user_id],
|
76
|
-
:date_started => Date.today,
|
77
|
-
:date_started_full => Date.today,
|
78
|
-
:status => UserSubcription::STATUS_ACTIVE
|
79
|
-
)
|
80
|
-
resp.redirect = "/admin/users/#{params[:user_id]}/subscriptions/#{us.id}"
|
81
|
-
resp.success = true
|
82
|
-
end
|
83
|
-
render :json => resp
|
84
|
-
end
|
85
|
-
|
86
|
-
# @route PUT /admin/users/:user_id/subscriptions/:id
|
87
|
-
def admin_update
|
88
|
-
return unless user_is_allowed('usersubscriptions', 'edit')
|
89
|
-
|
90
|
-
resp = StdClass.new
|
91
|
-
models = params[:id] == 'bulk' ? params[:model_ids].collect{ |model_id| UserSubscription.find(model_id) } : [UserSubscription.find(params[:id])]
|
92
|
-
|
93
|
-
params.each do |k, v|
|
94
|
-
case k
|
95
|
-
when 'subscription_id' then models.each{ |us| us.subscription_id = v }
|
96
|
-
when 'user_id' then models.each{ |us| us.user_id = v }
|
97
|
-
when 'date_started' then models.each{ |us| us.date_started = v }
|
98
|
-
when 'date_started_full' then models.each{ |us| us.date_started_full = v }
|
99
|
-
when 'status' then models.each{ |us| us.status = v }
|
100
|
-
end
|
101
|
-
end
|
102
|
-
models.each{ |us| us.save }
|
103
|
-
resp.success = true
|
104
|
-
render :json => resp
|
105
|
-
end
|
106
|
-
|
107
|
-
# @route DELETE /admin/users/:user_id/subscriptions/:id
|
108
|
-
def admin_delete
|
109
|
-
return unless user_is_allowed('usersubscriptions', 'delete')
|
110
|
-
|
111
|
-
model_ids = params[:id] == 'bulk' ? params[:model_ids] : [params[:id]]
|
112
|
-
model_ids.each do |model_id|
|
113
|
-
UserSubscription.where(:id => model_id).destroy_all
|
114
|
-
end
|
115
|
-
|
116
|
-
render :json => { :sucess => true }
|
117
|
-
end
|
118
|
-
|
119
|
-
# @route_priority 1
|
120
|
-
# @route GET /admin/user-subscriptions/:field-options
|
121
|
-
# @route GET /admin/users/:user_id/subscriptions/:field-options
|
122
|
-
def admin_options
|
123
|
-
if !user_is_allowed('subscriptions', 'edit')
|
124
|
-
render :json => false
|
125
|
-
return
|
126
|
-
end
|
127
|
-
|
128
|
-
options = []
|
129
|
-
case params[:field]
|
130
|
-
when 'subscription'
|
131
|
-
arr = Subcription.where(:site_id => @site.id).reorder(:name).all
|
132
|
-
options = arr.collect{ |s| { 'value' => s.id, 'text' => s.name }}
|
133
|
-
when 'status'
|
134
|
-
options = [
|
135
|
-
{ 'value' => UserSubscription::STATUS_ACTIVE , 'text' => 'Active' },
|
136
|
-
{ 'value' => UserSubscription::STATUS_INACTIVE , 'text' => 'Inactive' }
|
137
|
-
]
|
138
|
-
when 'user'
|
139
|
-
arr = User.where(:site_id => @site.id).reorder('last_name, first_name').all
|
140
|
-
options = arr.collect{ |u| { 'value' => u.id, 'text' => "#{u.first_name} #{u.last_name}" }}
|
141
|
-
end
|
142
|
-
render :json => options
|
143
|
-
end
|
144
|
-
|
145
|
-
end
|
146
|
-
end
|