Allow posting announcements with other metadata
This commit is contained in:
		
							parent
							
								
									db5c0c3502
								
							
						
					
					
						commit
						56e6d86f88
					
				
					 3 changed files with 40 additions and 4 deletions
				
			
		|  | @ -1,14 +1,19 @@ | |||
| import { mapState } from 'vuex' | ||||
| import Announcement from '../announcement/announcement.vue' | ||||
| import Checkbox from '../checkbox/checkbox.vue' | ||||
| 
 | ||||
| const AnnouncementsPage = { | ||||
|   components: { | ||||
|     Announcement | ||||
|     Announcement, | ||||
|     Checkbox | ||||
|   }, | ||||
|   data () { | ||||
|     return { | ||||
|       newAnnouncement: { | ||||
|         content: '' | ||||
|         content: '', | ||||
|         startsAt: undefined, | ||||
|         endsAt: undefined, | ||||
|         allDay: false | ||||
|       }, | ||||
|       posting: false, | ||||
|       error: undefined | ||||
|  | @ -29,6 +34,11 @@ const AnnouncementsPage = { | |||
|     postAnnouncement () { | ||||
|       this.posting = true | ||||
|       this.$store.dispatch('postAnnouncement', this.newAnnouncement) | ||||
|         .then(() => { | ||||
|           this.newAnnouncement.content = '' | ||||
|           this.startsAt = undefined | ||||
|           this.endsAt = undefined | ||||
|         }) | ||||
|         .catch(error => { | ||||
|           this.error = error.error | ||||
|         }) | ||||
|  |  | |||
|  | @ -23,6 +23,29 @@ | |||
|               :placeholder="$t('announcements.post_placeholder')" | ||||
|               :disabled="posting" | ||||
|             /> | ||||
|             <span class="announcement-metadata"> | ||||
|               <label for="announcement-start-time">{{ $t('announcements.start_time_prompt') }}</label> | ||||
|               <input | ||||
|                 id="announcement-start-time" | ||||
|                 v-model="newAnnouncement.startsAt" | ||||
|                 :type="newAnnouncement.allDay ? 'date' : 'datetime-local'" | ||||
|               > | ||||
|             </span> | ||||
|             <span class="announcement-metadata"> | ||||
|               <label for="announcement-end-time">{{ $t('announcements.end_time_prompt') }}</label> | ||||
|               <input | ||||
|                 id="announcement-end-time" | ||||
|                 v-model="newAnnouncement.endsAt" | ||||
|                 :type="newAnnouncement.allDay ? 'date' : 'datetime-local'" | ||||
|               > | ||||
|             </span> | ||||
|             <span class="announcement-metadata"> | ||||
|               <Checkbox | ||||
|                 id="announcement-all-day" | ||||
|                 v-model="newAnnouncement.allDay" | ||||
|               /> | ||||
|               <label for="announcement-all-day">{{ $t('announcements.all_day_prompt') }}</label> | ||||
|             </span> | ||||
|           </div> | ||||
|           <div class="footer"> | ||||
|             <button | ||||
|  | @ -80,6 +103,9 @@ | |||
|       display: flex; | ||||
|       align-items: stretch; | ||||
|       flex-direction: column; | ||||
|       .announcement-metadata { | ||||
|         margin-top: 0.5em; | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     .post-textarea { | ||||
|  |  | |||
|  | @ -1381,11 +1381,11 @@ const postAnnouncement = ({ credentials, content, startsAt, endsAt, allDay }) => | |||
|   const payload = { content } | ||||
| 
 | ||||
|   if (typeof startsAt !== 'undefined') { | ||||
|     payload['starts_at'] = startsAt | ||||
|     payload['starts_at'] = new Date(startsAt).toISOString() | ||||
|   } | ||||
| 
 | ||||
|   if (typeof endsAt !== 'undefined') { | ||||
|     payload['ends_at'] = endsAt | ||||
|     payload['ends_at'] = new Date(endsAt).toISOString() | ||||
|   } | ||||
| 
 | ||||
|   if (typeof allDay !== 'undefined') { | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Tusooa Zhu
						Tusooa Zhu