houdini/client/js/events/new/wizard.js

60 lines
1.6 KiB
JavaScript
Raw Normal View History

// 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_event_name_step', function(form_obj) {
var name = form_obj['event[name]']
checkName(name, 'event', function(){
appl.def('new_event', form_obj)
appl.wizard.advance('new_event_wiz')
})
})
// Post a new event.
appl.def('create_event', function(el) {
var form_data = utils.toFormData(appl.prev_elem(el))
form_data = utils.mergeFormData(form_data, appl.new_event)
appl.def('new_event_wiz.loading', true)
post_event(form_data)
.then(function(req) {
appl.notify("Redirecting to your new event...")
appl.redirect(JSON.parse(req.response).url)
})
.catch(function(req) {
appl.def('new_event_wiz.loading', false)
appl.def('new_event_wiz.error', req.responseText)
})
})
// Using the bare-bones XMLHttpRequest API so we can post form data and upload the image
function post_event(form_data) {
return new Promise(function(resolve, reject) {
var req = new XMLHttpRequest()
req.open("POST", '/nonprofits/' + app.nonprofit_id + '/events')
req.setRequestHeader('X-CSRF-Token', window._csrf)
req.send(form_data)
req.onload = function(ev) {
if(req.status === 200) resolve(req)
else reject(req)
}
})
}
// Pikaday and timepicker initialization nonsense
var Pikaday = require('pikaday')
var moment = require('moment')
new Pikaday({
field: document.querySelector('#date-string-input'),
format: 'M/D/YYYY',
minDate: moment().toDate()
})