mirror of
				https://github.com/flynx/pWiki.git
				synced 2025-10-30 18:40:08 +00:00 
			
		
		
		
	added update/delete page events and some template tweaking...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									e3b104f9cc
								
							
						
					
					
						commit
						bb04752e7a
					
				| @ -427,8 +427,9 @@ object.Constructor('BasePage', { | ||||
| 	//*/
 | ||||
| 	resolve: relMatchProxy('resolve'), | ||||
| 
 | ||||
| 
 | ||||
| 	delete: async function(path='.', base=true){ | ||||
| 	delete: types.event.Event('delete',  | ||||
| 		async function(handle, path='.', base=true){ | ||||
| 			handle(false) | ||||
| 			if(path === true || path === false){ | ||||
| 				base = path | ||||
| 				path = '.'	} | ||||
| @ -440,7 +441,8 @@ object.Constructor('BasePage', { | ||||
| 					this.__delete__(p) } | ||||
| 			} else { | ||||
| 				this.__delete__(path) } | ||||
| 		return this }, | ||||
| 			handle() | ||||
| 			return this }), | ||||
| 	// XXX should these be implemented here or proxy to .store???
 | ||||
| 	// XXX do we sanity check to no not contain '*'???
 | ||||
| 	copy: async function(to, base=true){ | ||||
| @ -687,8 +689,9 @@ object.Constructor('BasePage', { | ||||
| 	// 		...right now this will write what-ever is given, even if it
 | ||||
| 	// 		will never be explicitly be accessible...
 | ||||
| 	// XXX sync/async???
 | ||||
| 	update: function(...data){ | ||||
| 		return Object.assign(this, ...data) }, | ||||
| 	update: types.event.Event('update', | ||||
| 		function(_, ...data){ | ||||
| 			return Object.assign(this, ...data) }), | ||||
| 
 | ||||
| 	// XXX should this take an options/dict argument????
 | ||||
| 	__init__: function(path, referrer, store){ | ||||
| @ -1359,7 +1362,7 @@ object.Constructor('Page', BasePage, { | ||||
| 				text = typeof(text) == 'string' ? | ||||
| 					[...this.__parser__.group(this, text+'</macro>', 'macro')] | ||||
| 					: text | ||||
| 				var join | ||||
| 				var join, itext | ||||
| 				var iargs = {} | ||||
| 
 | ||||
| 				// stored macros...
 | ||||
| @ -1383,7 +1386,7 @@ object.Constructor('Page', BasePage, { | ||||
| 				// XXX is there a point in overloading text???
 | ||||
| 				text = text.length > 0 ?  | ||||
| 					text  | ||||
| 					: itext | ||||
| 					: itext ?? text | ||||
| 				var sort = (args.sort  | ||||
| 						?? iargs.sort  | ||||
| 						?? '') | ||||
| @ -1441,7 +1444,7 @@ object.Constructor('Page', BasePage, { | ||||
| 								seen: state.seen,  | ||||
| 								depends, | ||||
| 								renderer: state.renderer, | ||||
| 								macros: args.inheritmacros ? | ||||
| 								macros: inheritmacros ? | ||||
| 									{__proto__: macros} | ||||
| 									: {}, | ||||
| 							} | ||||
| @ -2102,7 +2105,9 @@ module.System = { | ||||
| 					<div class="item"> | ||||
| 						<a class="tree-page-title" href="#@source(s ./path)">@source(./title)</a> | ||||
| 						<a class="show-on-hover" href="#@source(s ./path)/info">🛈</a> | ||||
| 						<a class="show-on-hover" href="#@source(s ./path)/delete">×</a> | ||||
| 						<a class="show-on-hover"  | ||||
| 							href="javascript:pwiki.delete('@source(s ./path)')" | ||||
| 							>×</a> | ||||
| 					</div> | ||||
| 					<div style="padding-left: 30px"> | ||||
| 						@include("./tree:$ARGS") | ||||
|  | ||||
| @ -35,7 +35,7 @@ module.BaseParser = { | ||||
| 	//
 | ||||
| 	MACRO_ARGS: ['(\\s*(',[ | ||||
| 				// arg='val' | arg="val" | arg=val
 | ||||
| 				'(?<PREFIXArgName>[a-z-]+)\\s*=\\s*(?<PREFIXArgValue>'+([ | ||||
| 				'(?<PREFIXArgName>[a-z:-]+)\\s*=\\s*(?<PREFIXArgValue>'+([ | ||||
| 					// XXX CHROME/NODE BUG: this does not work yet...
 | ||||
| 					//'\\s+(?<quote>[\'"])[^\\k<quote>]*\\k<quote>',
 | ||||
| 					'"(?<PREFIXDoubleQuotedValue>(\\"|[^"])*?)"', | ||||
|  | ||||
| @ -276,7 +276,7 @@ module.BaseStore = { | ||||
| 			return data },  | ||||
| 		remove: async function(data, path){ | ||||
| 			var {tags, paths} = await data | ||||
| 			for(var tag of paths[path]){ | ||||
| 			for(var tag of paths[path] ?? []){ | ||||
| 				tags[tag].delete(path) } | ||||
| 			return data }, }), | ||||
| 	get tags(){ | ||||
| @ -609,8 +609,11 @@ module.BaseStore = { | ||||
| 	// 		...this could be a sign of problems with index -- needs more 
 | ||||
| 	// 		tought...
 | ||||
| 	update: types.event.Event('update',  | ||||
| 		function(handler, path, data, mode='update'){ | ||||
| 			return this.__update(...[...arguments].slice(1)) }), | ||||
| 		async function(handler, path, data, mode='update'){ | ||||
| 			handler(false) | ||||
| 			var res = await this.__update(...[...arguments].slice(1))  | ||||
| 			handler() | ||||
| 			return res }), | ||||
| 
 | ||||
| 	__delete__: async function(path){ | ||||
| 		delete this.data[path] }, | ||||
| @ -625,8 +628,11 @@ module.BaseStore = { | ||||
| 			this.index('remove', path) } | ||||
| 		return this }, | ||||
| 	delete: types.event.Event('delete',  | ||||
| 		function(handler, path){ | ||||
| 			return this.__delete(path) }), | ||||
| 		async function(handler, path){ | ||||
| 			handler(false) | ||||
| 			var res = await this.__delete(path)  | ||||
| 			handler() | ||||
| 			return res }), | ||||
| 
 | ||||
| 	// XXX NEXT might be a good idea to have an API to move pages from 
 | ||||
| 	// 		current store up the chain...
 | ||||
|  | ||||
| @ -97,7 +97,7 @@ a:hover { | ||||
| 
 | ||||
| /* Spinner... */ | ||||
| .spinner { | ||||
| 	position: absolute; | ||||
| 	position: fixed; | ||||
| 	display: flex; | ||||
| 	text-align: center; | ||||
| 	left: 50%; | ||||
| @ -411,6 +411,7 @@ require(['./browser'], function(browser){ | ||||
| 			//		when the hash is actually changed... | ||||
| 			for(var lnk of this.dom.querySelectorAll(`a[href="${location.hash}"]`)){ | ||||
| 				lnk.addEventListener('click', refresh) } }) | ||||
| 		.delete(refresh) | ||||
| 
 | ||||
| 	// handle special file updates... | ||||
| 	// NOTE: the actual updates are done .navigate(..) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user