mirror of
				https://github.com/ether/etherpad-lite.git
				synced 2025-10-31 00:01:16 +01:00 
			
		
		
		
	Added a plugin-readme
This commit is contained in:
		
							parent
							
								
									381e64a801
								
							
						
					
					
						commit
						8756165ece
					
				
							
								
								
									
										16
									
								
								README.plugins
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								README.plugins
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| So, a plugin is an npm package whose name starts with ep_ and that contains a file ep.json | ||||
| require("ep_etherpad-lite/static/js/plugingfw/plugins").update() will use npm to list all installed modules and read their ep.json files. These will contain registrations for hooks which are loaded | ||||
| A hook registration is a pairs of a hook name and a function reference (filename for require() plus function name) | ||||
| require("ep_etherpad-lite/static/js/plugingfw/hooks").callAll("hook_name", {argname:value}) will call all hook functions registered for hook_name | ||||
| That is the basis. | ||||
| Ok, so that was a slight simplification: inside ep.json, hook registrations are grouped into groups called "parts". Parts from all plugins are ordered using a topological sort according to "pre" and "post" pointers to other plugins/parts (just like dependencies, but non-installed plugins are silently ignored). | ||||
| This ordering is honored when you do callAll(hook_name) - hook functions for that hook_name are called in that order | ||||
| Ordering between plugins is undefined, only parts are ordered. | ||||
| 
 | ||||
| A plugin usually has one part, but it van have multiple. | ||||
| This is so that it can insert some hook registration before that of another plugin, and another one after. | ||||
| This is important for e.g. registering URL-handlers for the express webserver, if you have some very generic and some very specific url-regexps | ||||
| So, that's basically it... apart from client-side hooks | ||||
| which works the same way, but uses a separate member of the part (part.client_hooks vs part.hooks), and where the hook function must obviously reside in a file require():able from the client... | ||||
| One thing more: The main etherpad tree is actually a plugin itself, called ep_etherpad-lite, and it has it's own ep.json... | ||||
| was that clear? | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user