| 
									
										
										
										
											2016-01-10 06:34:20 +08:00
										 |  |  | package plugins | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"net/url" | 
					
						
							|  |  |  | 	"path" | 
					
						
							| 
									
										
										
										
											2016-01-10 06:56:39 +08:00
										 |  |  | 	"path/filepath" | 
					
						
							| 
									
										
										
										
											2016-01-10 06:34:20 +08:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type FrontendPluginBase struct { | 
					
						
							|  |  |  | 	PluginBase | 
					
						
							|  |  |  | 	Module     string `json:"module"` | 
					
						
							|  |  |  | 	StaticRoot string `json:"staticRoot"` | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (fp *FrontendPluginBase) initFrontendPlugin() { | 
					
						
							|  |  |  | 	if fp.StaticRoot != "" { | 
					
						
							|  |  |  | 		StaticRoutes = append(StaticRoutes, &PluginStaticRoute{ | 
					
						
							| 
									
										
										
										
											2016-01-10 06:56:39 +08:00
										 |  |  | 			Directory: filepath.Join(fp.PluginDir, fp.StaticRoot), | 
					
						
							| 
									
										
										
										
											2016-01-10 06:34:20 +08:00
										 |  |  | 			PluginId:  fp.Id, | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	fp.Info.Logos.Small = evalRelativePluginUrlPath(fp.Info.Logos.Small, fp.Id) | 
					
						
							|  |  |  | 	fp.Info.Logos.Large = evalRelativePluginUrlPath(fp.Info.Logos.Large, fp.Id) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	fp.handleModuleDefaults() | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (fp *FrontendPluginBase) handleModuleDefaults() { | 
					
						
							|  |  |  | 	if fp.Module != "" { | 
					
						
							|  |  |  | 		return | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if fp.StaticRoot != "" { | 
					
						
							| 
									
										
										
										
											2016-01-10 06:56:39 +08:00
										 |  |  | 		fp.Module = path.Join("plugins", fp.Id, "module") | 
					
						
							| 
									
										
										
										
											2016-01-10 06:34:20 +08:00
										 |  |  | 		return | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	fp.Module = path.Join("app/plugins", fp.Type, fp.Id, "module") | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func evalRelativePluginUrlPath(pathStr string, pluginId string) string { | 
					
						
							|  |  |  | 	u, _ := url.Parse(pathStr) | 
					
						
							|  |  |  | 	if u.IsAbs() { | 
					
						
							|  |  |  | 		return pathStr | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return path.Join("public/plugins", pluginId, pathStr) | 
					
						
							|  |  |  | } |