[wip] category selector for article composer
This commit is contained in:
		
							parent
							
								
									20579e2c17
								
							
						
					
					
						commit
						7fe7ddcfac
					
				| @ -16,7 +16,7 @@ | |||||||
|     const { session } = stores(); |     const { session } = stores(); | ||||||
| 
 | 
 | ||||||
|     let editor; |     let editor; | ||||||
|     let title = '', image = ''; |     let title = '', image = '', category = ''; | ||||||
| 
 | 
 | ||||||
|     let actions = [ |     let actions = [ | ||||||
|         { |         { | ||||||
| @ -26,6 +26,7 @@ | |||||||
|             result: function save() { |             result: function save() { | ||||||
|                 window.localStorage['title'] = title; |                 window.localStorage['title'] = title; | ||||||
|                 window.localStorage['image'] = image; |                 window.localStorage['image'] = image; | ||||||
|  |                 window.localStorage['category'] = category; | ||||||
|                 window.localStorage['html'] = editor.getHtml(true); |                 window.localStorage['html'] = editor.getHtml(true); | ||||||
|                 alert('Successfully saved draft to browser local storage'); |                 alert('Successfully saved draft to browser local storage'); | ||||||
|             } |             } | ||||||
| @ -53,6 +54,7 @@ | |||||||
|     onMount(function load() { |     onMount(function load() { | ||||||
|         title = window.localStorage['title'] || ''; |         title = window.localStorage['title'] || ''; | ||||||
|         image = window.localStorage['image'] || ''; |         image = window.localStorage['image'] || ''; | ||||||
|  |         category = window.localStorage['category'] || ''; | ||||||
|         editor.setHtml(window.localStorage['html'] || '', false); |         editor.setHtml(window.localStorage['html'] || '', false); | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
| @ -88,6 +90,15 @@ | |||||||
|     <form method="POST" action="/cms/article"> |     <form method="POST" action="/cms/article"> | ||||||
|         <p>Article Title: <input type="text" name="title" bind:value={title} required placeholder="How to Assassinate the Governor of California"></p> |         <p>Article Title: <input type="text" name="title" bind:value={title} required placeholder="How to Assassinate the Governor of California"></p> | ||||||
|         <p>Article Author: <strong>{$session.user.realname}</strong></p> |         <p>Article Author: <strong>{$session.user.realname}</strong></p> | ||||||
|  |         <p>Article Category: <select> | ||||||
|  |         {#await fetch('/c').then(r => r.json())} | ||||||
|  |             Loading... | ||||||
|  |         {:then categories} | ||||||
|  |             {#each categories as category} | ||||||
|  |                 <option value={category}>{category}</option> | ||||||
|  |             {/each} | ||||||
|  |         {/await} | ||||||
|  |         </select></p> | ||||||
|         <p>Article Header Image URL: <input type="text" name="image" bind:value={image} required placeholder="http:// ..."></p> |         <p>Article Header Image URL: <input type="text" name="image" bind:value={image} required placeholder="http:// ..."></p> | ||||||
|     </form> |     </form> | ||||||
|     <Editor bind:this={editor} {actions} /> |     <Editor bind:this={editor} {actions} /> | ||||||
|  | |||||||
| @ -205,16 +205,25 @@ express() | |||||||
|         isAuthor, |         isAuthor, | ||||||
|         async function(req, res, next) { |         async function(req, res, next) { | ||||||
|             try { |             try { | ||||||
|                 const { html, title, image } = req.body; |                 const { html, title, image, category } = req.body; | ||||||
|                 if (!title || !image || !html) { |                 if (!title || !image || !html || !category) { | ||||||
|                     res.writeHead(422, { |                     res.writeHead(422, { | ||||||
|                         'Content-Type': 'application/json' |                         'Content-Type': 'application/json' | ||||||
|                     }); |                     }); | ||||||
|                     res.end(JSON.stringify({ |                     res.end(JSON.stringify({ | ||||||
|                         message: `You must supply an article title, image URL, and content.` |                         message: `You must supply an article title, image URL, category, and content.` | ||||||
|                     })); |                     })); | ||||||
|                 } |                 } | ||||||
|                 const article = await new Article({ html, title, image, author: req.user._id }); |                 const cat = await Category.findOne({ name: category }); | ||||||
|  |                 if (!cat) { | ||||||
|  |                     res.writeHead(404, { | ||||||
|  |                         'Content-Type': 'application/json' | ||||||
|  |                     }); | ||||||
|  |                     res.end(JSON.stringify({ | ||||||
|  |                         message: `That category does not exist.` | ||||||
|  |                     })); | ||||||
|  |                 } | ||||||
|  |                 const article = await new Article({ html, title, image, category: cat, author: req.user._id }); | ||||||
|                 await article.save(); |                 await article.save(); | ||||||
|                 res.writeHead(200, { |                 res.writeHead(200, { | ||||||
|                     'Content-Type': 'application/json' |                     'Content-Type': 'application/json' | ||||||
| @ -288,7 +297,14 @@ express() | |||||||
|             'Content-Type': 'application/json' |             'Content-Type': 'application/json' | ||||||
|         }); |         }); | ||||||
|         res.end(JSON.stringify(articles)); |         res.end(JSON.stringify(articles)); | ||||||
|  |     }) | ||||||
| 
 | 
 | ||||||
|  |     .get('/c', async function (req, res, next) { | ||||||
|  |         let categories = await Category.find(); | ||||||
|  |         res.writeHead(200, { | ||||||
|  |             'Content-Type': 'application/json' | ||||||
|  |         }); | ||||||
|  |         res.end(JSON.stringify(categories)); | ||||||
|     }) |     }) | ||||||
| 
 | 
 | ||||||
|     .get('/me', function(req, res, next) { |     .get('/me', function(req, res, next) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user