86 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			86 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | format should change permalink | ||
|  | date | ||
|  | show file path | ||
|  | show prod url | ||
|  | show dev url | ||
|  | 
 | ||
|  | 
 | ||
|  | POST tests | ||
|  | create a title and delete it (no error) | ||
|  | change the format. does the permalink change? (yes) | ||
|  | change the permalink. change the title. does the permalink stay? (yes) | ||
|  | 
 | ||
|  | change the format. does the permalink change? (yes) | ||
|  | change the format in the frontmatter permalink. does the format change? (yes) | ||
|  | 
 | ||
|  | create a description and delete it (no error) | ||
|  | create a description. does the frontmatter change? (yes) | ||
|  | 
 | ||
|  | 
 | ||
|  | protection | ||
|  | Don't allow changing the uuid, original_url, or original_date | ||
|  | 
 | ||
|  | TODO | ||
|  | --- | ||
|  | 
 | ||
|  | check that no other post uses the same permalink | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | default data-model 'ruhoh@2.2' | ||
|  | other data-model 'desirae@1.0' | ||
|  | 
 | ||
|  | Widgets | ||
|  | ======= | ||
|  | 
 | ||
|  | All widgets should export an object with a `create(widgetConf, desiState)` function that returns a promise. | ||
|  | 
 | ||
|  | ```yaml | ||
|  | widgets: | ||
|  |   foogizmo: | ||
|  |     # only stuff that is intensely specific to foogizmo goes here | ||
|  |     # stuff like google ad and disqus ids should go in config.yml or data.yml | ||
|  |     config: | ||
|  |       foobeep: boop | ||
|  |        | ||
|  |     handle: | ||
|  |       - html | ||
|  |       - markdown | ||
|  |     handlers: | ||
|  |       post: fooposter | ||
|  |       page: foopager | ||
|  | ``` | ||
|  | 
 | ||
|  | ```javascript | ||
|  | 'use strict'; | ||
|  | 
 | ||
|  | module.exports.Foogizmo.create = function (foogizmoConf, desiState) { | ||
|  |   return new Promise(function (resolve) { | ||
|  | 
 | ||
|  |     function pager(desiPageState) { | ||
|  |       // Do processing | ||
|  | 
 | ||
|  |       return Promise.resolve(); | ||
|  |     } | ||
|  | 
 | ||
|  |     function poster(desiPostState) { | ||
|  |       // Do processing | ||
|  | 
 | ||
|  |       desiPostState.fooembedinator = function (fooval) { | ||
|  |         // figure out what type of link fooval is and return iframe html | ||
|  |         return '<iframe src="http://embedinator.com/"' + foovalProcessed + '></iframe>' | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  |     resolve({ foopager: pager, fooposter: poster }); | ||
|  |   }); | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | Overlays | ||
|  | -------- | ||
|  | 
 | ||
|  | For any config a widget uses, it should also check on post.fooconfig and theme.fooconfig to make sure that they don't override the foogizmo.config.fooconfig | ||
|  | 
 | ||
|  | 
 |