58 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | // 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) | ||
|  | 		} | ||
|  | 	}) | ||
|  | } |