// License: LGPL-3.0-or-later require('../../common/pikaday-timepicker') require('../../components/wizard') require('../../common/image_uploader') var checkName = require('../../common/ajax/check_campaign_or_event_name') var format_err = require('../../common/format_response_error') appl.def('advance_campaign_name_step', function(form_obj) { var name = form_obj['campaign[name]'] checkName(name, 'campaign', function(){ appl.def('new_campaign', form_obj) appl.wizard.advance('new_campaign_wiz') }) }) // Post a new campaign. appl.def('create_campaign', function(el) { var form_data = utils.toFormData(appl.prev_elem(el)) form_data = utils.mergeFormData(form_data, appl.new_campaign) appl.def('new_campaign_wiz.loading', true) // TODO: for p2p capmaigns, merge with preset campaing params post_campaign(form_data) .then(function(req) { appl.notify("Redirecting to your campaign...") appl.redirect(JSON.parse(req.response).url) }) .catch(function(req) { appl.def('new_campaign_wiz.loading', false) appl.def('new_campaign_wiz.error', req.responseText) }) }) var Pikaday = require('pikaday') var moment = require('moment') new Pikaday({ field: document.querySelector('.js-date-picker'), format: 'M/D/YYYY', minDate: moment().toDate() }) // Using the bare-bones XMLHttpRequest API so we can post form data and upload the image function post_campaign(form_data) { return new Promise(function(resolve, reject) { var req = new XMLHttpRequest() req.open("POST", '/nonprofits/' + app.nonprofit_id + '/campaigns') req.setRequestHeader('X-CSRF-Token', window._csrf) req.send(form_data) req.onload = function(ev) { if(req.status === 200) resolve(req) else reject(req) } }) }