diff options
| author | Raphael Kabo <mail@raphaelkabo.com> | 2019-09-30 13:57:28 +0100 | 
|---|---|---|
| committer | Raphael Kabo <mail@raphaelkabo.com> | 2019-09-30 13:57:28 +0100 | 
| commit | 40ade71e0019bbb59710a2e2e5d74197c47cb1b0 (patch) | |
| tree | e3d6cacdaa694ede107389054261a78841652514 | |
| parent | eddfe0389047ac1df5a8194d36c3bde1fcc05866 (diff) | |
Fixes to iCal parser
| -rw-r--r-- | public/js/generate-timezones.js | 3 | ||||
| -rwxr-xr-x | routes.js | 17 | ||||
| -rw-r--r-- | views/partials/editeventgroupmodal.handlebars | 4 | ||||
| -rw-r--r-- | views/partials/editeventmodal.handlebars | 6 | ||||
| -rw-r--r-- | views/partials/importeventform.handlebars | 11 | ||||
| -rwxr-xr-x | views/partials/neweventform.handlebars | 4 | ||||
| -rwxr-xr-x | views/partials/neweventgroupform.handlebars | 2 | 
7 files changed, 33 insertions, 14 deletions
diff --git a/public/js/generate-timezones.js b/public/js/generate-timezones.js index 2c7cbf9..01c9989 100644 --- a/public/js/generate-timezones.js +++ b/public/js/generate-timezones.js @@ -343,7 +343,8 @@ const timezones = [      "Pacific/Tarawa",      "Pacific/Tongatapu",      "Pacific/Wake", -    "Pacific/Wallis" +    "Pacific/Wallis", +    "Etc/UTC"    ];    const dateTimeUtc = moment().utc(); @@ -505,9 +505,18 @@ router.post('/importevent', (req, res) => {  	if (req.files && Object.keys(req.files).length != 0) {  		importediCalObject = ical.parseICS(req.files.icsImportControl.data.toString('utf8'));  		for (var key in importediCalObject) { -    	importedEventData = importediCalObject[key]; +    		importedEventData = importediCalObject[key];  		} -		creatorEmail = importedEventData.organizer.val.replace("MAILTO:", "") +		console.log(importedEventData) +		let creatorEmail; +		if (req.body.creatorEmail) { +			creatorEmail = req.body.creatorEmail +		} else if (importedEventData.organizer) { +			creatorEmail = importedEventData.organizer.val.replace("MAILTO:", ""); +		} else { +			res.status(500).send("Please supply an email address on the previous page."); +		} +		  		const event = new Event({  			id: eventID,  			type: 'public', @@ -515,12 +524,12 @@ router.post('/importevent', (req, res) => {  			location: importedEventData.location,  			start: importedEventData.start,  			end: importedEventData.end, -			timezone: importedEventData.start.tz, +			timezone: typeof importedEventData.start.tz != 'undefined' ? importedEventData.start.tz : "Etc/UTC",  			description: importedEventData.description,  			image: '',  			creatorEmail: creatorEmail,  			url: '', -			hostName: importedEventData.organizer.params.CN, +			hostName: importedEventData.organizer ? importedEventData.organizer.params.CN : "",  			viewPassword: '',  			editPassword: '',  			editToken: editToken, diff --git a/views/partials/editeventgroupmodal.handlebars b/views/partials/editeventgroupmodal.handlebars index 7ab1221..64fba9b 100644 --- a/views/partials/editeventgroupmodal.handlebars +++ b/views/partials/editeventgroupmodal.handlebars @@ -11,7 +11,7 @@  			<div class="modal-body">  				<div class="form-group">  					<label for="eventGroupName" >Name</label> -					<input type="text" class="form-control" id="eventGroupName" name="eventGroupName" placeholder="Make it snappy." value="{{eventGroupData.name}}" data-validation="required length" data-validation-length="3-60"> +					<input type="text" class="form-control" id="eventGroupName" name="eventGroupName" placeholder="Make it snappy." value="{{eventGroupData.name}}" data-validation="required length" data-validation-length="3-120">  				</div>  				<div class="form-group">  					<label for="eventGroupDescription" >Description</label> @@ -24,7 +24,7 @@  				</div>  				<div class="form-group">  					<label for="hostName" >Host or organisation name</label> -					<input type="text" class="form-control" id="hostName" name="hostName" placeholder="Will be shown on the event group page (optional)." value="{{eventGroupData.hostName}}" data-validation="length" data-validation-length="3-60" data-validation-optional="true"> +					<input type="text" class="form-control" id="hostName" name="hostName" placeholder="Will be shown on the event group page (optional)." value="{{eventGroupData.hostName}}" data-validation="length" data-validation-length="3-120" data-validation-optional="true">  				</div>  				<div class="form-group">  					<label>Cover image</label> diff --git a/views/partials/editeventmodal.handlebars b/views/partials/editeventmodal.handlebars index 553d961..ce3cdcd 100644 --- a/views/partials/editeventmodal.handlebars +++ b/views/partials/editeventmodal.handlebars @@ -14,13 +14,13 @@  						<label for="eventName" class="col-form-label">Event name</label>  						<input type="text" class="form-control" id="eventName" name="eventName"  							placeholder="Make it snappy." value="{{eventData.name}}" data-validation="required length" -							data-validation-length="3-60"> +							data-validation-length="3-120">  					</div>  					<div class="form-group">  						<label for="eventLocation" class="col-form-label">Location</label>  						<input type="text" class="form-control" id="eventLocation" name="eventLocation"  							placeholder="Be specific." value="{{eventData.location}}" data-validation="required length" -							data-validation-length="3-60"> +							data-validation-length="3-120">  					</div>  					<div class="form-group">  						<label for="eventStart" class="col-form-label">Starts</label> @@ -53,7 +53,7 @@  						<label for="hostName" class="col-form-label">Host name</label>  						<input type="text" class="form-control" id="hostName" name="hostName"  							placeholder="Will be shown on the event page (optional)." value="{{eventData.hostName}}" -							data-validation="length" data-validation-length="3-60" data-validation-optional="true"> +							data-validation="length" data-validation-length="3-120" data-validation-optional="true">  					</div>  					<div class="form-group">  						<label for="eventImage" class="col-form-label">Cover image</label> diff --git a/views/partials/importeventform.handlebars b/views/partials/importeventform.handlebars index 7bf5b17..9ad038a 100644 --- a/views/partials/importeventform.handlebars +++ b/views/partials/importeventform.handlebars @@ -6,11 +6,20 @@  <img class="img-thumbnail mb-3 d-block mx-auto" src="/images/facebook-export.png" alt="Image showing the location of the export option on Facebook" />  <form id="icsImportForm" action="/importevent" method="post" enctype="multipart/form-data"> -  <div class="custom-file" id="icsImportContainer"> +  <div class="form-group"> +    <div class="custom-file" id="icsImportContainer">      <input required name="icsImportControl" type="file" class="custom-file-input" id="icsImportControl" aria-describedby="fileHelp" accept="text/calendar">      <label name="icsImportLabel" class="custom-file-label" id="icsImportLabel" for="icsImportControl">         <i class="far fa-file-alt"></i> Select file      </label>    </div> +  </div> +  <div class="form-group"> +    <label for="creatorEmail" class="form-label">Your email</label> +    <div class="form-group"> +      <input type="email" class="form-control" id="creatorEmail" name="creatorEmail" placeholder="We won't spam you <3" data-validation="email" data-validation-optional="true"> +      <small class="form-text">We will send your secret editing link to this email address.</small> +    </div> +  </div>    <button type="submit" class="d-block mt-3 mx-auto btn btn-primary w-50">Import</button>  </form> diff --git a/views/partials/neweventform.handlebars b/views/partials/neweventform.handlebars index fff2f4d..82ecfd9 100755 --- a/views/partials/neweventform.handlebars +++ b/views/partials/neweventform.handlebars @@ -4,13 +4,13 @@    <div class="form-group row">      <label for="eventName" class="col-sm-2 col-form-label">Event name</label>      <div class="form-group col-sm-10"> -      <input type="text" class="form-control" id="eventName" name="eventName" placeholder="Make it snappy." value="{{data.eventName}}" data-validation="required length" data-validation-length="3-60"> +      <input type="text" class="form-control" id="eventName" name="eventName" placeholder="Make it snappy." value="{{data.eventName}}" data-validation="required length" data-validation-length="3-120">      </div>    </div>    <div class="form-group row">      <label for="eventLocation" class="col-sm-2 col-form-label">Location</label>      <div class="form-group col-sm-10"> -      <input type="text" class="form-control" id="eventLocation" name="eventLocation" placeholder="Be specific." value="{{data.eventLocation}}" data-validation="required length"  data-validation-length="3-60"> +      <input type="text" class="form-control" id="eventLocation" name="eventLocation" placeholder="Be specific." value="{{data.eventLocation}}" data-validation="required length"  data-validation-length="3-120">      </div>    </div>    <div class="form-group row"> diff --git a/views/partials/neweventgroupform.handlebars b/views/partials/neweventgroupform.handlebars index b7524d4..20dd832 100755 --- a/views/partials/neweventgroupform.handlebars +++ b/views/partials/neweventgroupform.handlebars @@ -5,7 +5,7 @@    <div class="form-group row">      <label for="eventGroupName" class="col-sm-2 col-form-label">Event group name</label>      <div class="form-group col-sm-10"> -      <input type="text" class="form-control" id="eventGroupName" name="eventGroupName" placeholder="Make it snappy." value="{{data.eventName}}" data-validation="required length" data-validation-length="3-60"> +      <input type="text" class="form-control" id="eventGroupName" name="eventGroupName" placeholder="Make it snappy." value="{{data.eventName}}" data-validation="required length" data-validation-length="3-120">      </div>    </div>    <div class="form-group row">  | 
