Create campaign from template
This commit is contained in:
parent
2db5e72bcb
commit
aedb12ee03
3 changed files with 42 additions and 0 deletions
|
@ -94,4 +94,11 @@ class CampaignTemplate < ActiveRecord::Base
|
||||||
# self.total_supporters = 1
|
# self.total_supporters = 1
|
||||||
# self.published = false if self.published.nil?
|
# self.published = false if self.published.nil?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def create_campaign_params
|
||||||
|
excluded = %w(
|
||||||
|
id template_name created_at updated_at
|
||||||
|
)
|
||||||
|
attributes.except!(*excluded)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
<script>
|
<script>
|
||||||
app.current_nonprofit_user = "<%= current_nonprofit_user? %>"
|
app.current_nonprofit_user = "<%= current_nonprofit_user? %>"
|
||||||
app.nonprofit_id = <%= @nonprofit.id %>
|
app.nonprofit_id = <%= @nonprofit.id %>
|
||||||
|
app.profile_id = '<%= raw current_user.profile.id %>'
|
||||||
</script>
|
</script>
|
||||||
<%= IncludeAsset.js '/client/js/campaign_templates/index/page.js' %>
|
<%= IncludeAsset.js '/client/js/campaign_templates/index/page.js' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -52,6 +53,9 @@
|
||||||
<small>Customizable attributes: <%= template.customizable_attributes_list %></small>
|
<small>Customizable attributes: <%= template.customizable_attributes_list %></small>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<a class="button">Create campaign from template</a>
|
||||||
|
<!--= on 'click' (create_campaign '<%= raw(template.create_campaign_params.to_json) %>') -->
|
||||||
|
|
||||||
<a class="button red">Delete template</a>
|
<a class="button red">Delete template</a>
|
||||||
<!--= on 'click' (delete_template <%= template.id %>) -->
|
<!--= on 'click' (delete_template <%= template.id %>) -->
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -72,3 +72,34 @@ appl.def('delete_template', function(id) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
appl.def('create_campaign', function(campaign_params) {
|
||||||
|
appl.def('loading', true)
|
||||||
|
|
||||||
|
var url = '/nonprofits/' + app.nonprofit_id + '/campaigns'
|
||||||
|
var params = new Object
|
||||||
|
params.campaign = JSON.parse(campaign_params)
|
||||||
|
params.campaign.profile_id = app.profile_id
|
||||||
|
|
||||||
|
return new Promise(function(resolve, reject) {
|
||||||
|
var req = new XMLHttpRequest()
|
||||||
|
req.open("POST", url)
|
||||||
|
req.setRequestHeader('X-CSRF-Token', window._csrf)
|
||||||
|
req.setRequestHeader('Content-Type', 'application/json')
|
||||||
|
req.send(JSON.stringify(params))
|
||||||
|
req.onload = function(ev) {
|
||||||
|
if(req.status === 200) resolve(req)
|
||||||
|
else reject(req)
|
||||||
|
}
|
||||||
|
}).then(function(req) {
|
||||||
|
appl.def('loading', false)
|
||||||
|
appl.notify('Redirecting you to your campaign…')
|
||||||
|
var campaign_id = JSON.parse(req.response).id
|
||||||
|
appl.redirect(url + '/' + campaign_id)
|
||||||
|
})
|
||||||
|
.catch(function(req) {
|
||||||
|
appl.def('loading', false)
|
||||||
|
appl.notify(req.responseText)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
Loading…
Reference in a new issue