| 
														
															@@ -9,20 +9,28 @@ import ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"golang-fave/utils" 
														 | 
														
														 | 
														
															 	"golang-fave/utils" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 ) 
														 | 
														
														 | 
														
															 ) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+type MInfo struct { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	Id     string 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	WantDB bool 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	Mount  string 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	Name   string 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 type Module struct { 
														 | 
														
														 | 
														
															 type Module struct { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	Id       string 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	WantDB   bool 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	Mount    string 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	Name     string 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	FrontEnd func(wrap *wrapper.Wrapper) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	BackEnd  func(wrap *wrapper.Wrapper) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	Info  MInfo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	Front func(wrap *wrapper.Wrapper) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	Back  func(wrap *wrapper.Wrapper) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+type AInfo struct { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	Id     string 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	WantDB bool 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	Mount  string 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 type Action struct { 
														 | 
														
														 | 
														
															 type Action struct { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	Id      string 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	WantDB  bool 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	Mount   string 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	ActFunc func(wrap *wrapper.Wrapper) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	Info AInfo 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	Act  func(wrap *wrapper.Wrapper) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 type Modules struct { 
														 | 
														
														 | 
														
															 type Modules struct { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -43,8 +51,8 @@ func (this *Modules) load() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				result := reflect.ValueOf(this).MethodByName("RegisterModule_" + id).Call([]reflect.Value{}) 
														 | 
														
														 | 
														
															 				result := reflect.ValueOf(this).MethodByName("RegisterModule_" + id).Call([]reflect.Value{}) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				if len(result) >= 1 { 
														 | 
														
														 | 
														
															 				if len(result) >= 1 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 					mod := result[0].Interface().(*Module) 
														 | 
														
														 | 
														
															 					mod := result[0].Interface().(*Module) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					mod.Id = id 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					this.mods[mod.Mount] = mod 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					mod.Info.Id = id 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					this.mods[mod.Info.Mount] = mod 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				} 
														 | 
														
														 | 
														
															 				} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			} 
														 | 
														
														 | 
														
															 			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -54,30 +62,20 @@ func (this *Modules) load() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				result := reflect.ValueOf(this).MethodByName("RegisterAction_" + id).Call([]reflect.Value{}) 
														 | 
														
														 | 
														
															 				result := reflect.ValueOf(this).MethodByName("RegisterAction_" + id).Call([]reflect.Value{}) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				if len(result) >= 1 { 
														 | 
														
														 | 
														
															 				if len(result) >= 1 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 					act := result[0].Interface().(*Action) 
														 | 
														
														 | 
														
															 					act := result[0].Interface().(*Action) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					act.Id = id 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					this.acts[act.Mount] = act 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					act.Info.Id = id 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					this.acts[act.Info.Mount] = act 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				} 
														 | 
														
														 | 
														
															 				} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			} 
														 | 
														
														 | 
														
															 			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-func (this *Modules) newModule(WantDB bool, Mount string, Name string, ff func(wrap *wrapper.Wrapper), bf func(wrap *wrapper.Wrapper)) *Module { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	return &Module{ 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		WantDB:   WantDB, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		Mount:    Mount, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		Name:     Name, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		FrontEnd: ff, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		BackEnd:  bf, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (this *Modules) newModule(info MInfo, ff func(wrap *wrapper.Wrapper), bf func(wrap *wrapper.Wrapper)) *Module { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return &Module{Info: info, Front: ff, Back: bf} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-func (this *Modules) newAction(WantDB bool, Mount string, af func(wrap *wrapper.Wrapper)) *Action { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	return &Action{ 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		WantDB:  WantDB, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		Mount:   Mount, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		ActFunc: af, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (this *Modules) newAction(info AInfo, af func(wrap *wrapper.Wrapper)) *Action { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return &Action{Info: info, Act: af} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (this *Modules) getCurrentModule(wrap *wrapper.Wrapper) (*Module, string) { 
														 | 
														
														 | 
														
															 func (this *Modules) getCurrentModule(wrap *wrapper.Wrapper) (*Module, string) { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -121,7 +119,7 @@ func (this *Modules) XXXActionFire(wrap *wrapper.Wrapper) bool { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				wrap.W.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") 
														 | 
														
														 | 
														
															 				wrap.W.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				wrap.W.Header().Set("Content-Type", "text/html; charset=utf-8") 
														 | 
														
														 | 
														
															 				wrap.W.Header().Set("Content-Type", "text/html; charset=utf-8") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				if act, ok := this.acts[name]; ok { 
														 | 
														
														 | 
														
															 				if act, ok := this.acts[name]; ok { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					if act.WantDB { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					if act.Info.WantDB { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 						err := wrap.UseDatabase() 
														 | 
														
														 | 
														
															 						err := wrap.UseDatabase() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 						if err != nil { 
														 | 
														
														 | 
														
															 						if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 							wrap.MsgError(err.Error()) 
														 | 
														
														 | 
														
															 							wrap.MsgError(err.Error()) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -129,7 +127,7 @@ func (this *Modules) XXXActionFire(wrap *wrapper.Wrapper) bool { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 						} 
														 | 
														
														 | 
														
															 						} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 						defer wrap.DB.Close() 
														 | 
														
														 | 
														
															 						defer wrap.DB.Close() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 					} 
														 | 
														
														 | 
														
															 					} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					act.ActFunc(wrap) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					act.Act(wrap) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 					return true 
														 | 
														
														 | 
														
															 					return true 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				} else { 
														 | 
														
														 | 
														
															 				} else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 					wrap.MsgError(`This action is not implemented`) 
														 | 
														
														 | 
														
															 					wrap.MsgError(`This action is not implemented`) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -145,8 +143,8 @@ func (this *Modules) XXXFrontEnd(wrap *wrapper.Wrapper) bool { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	mod, cm := this.getCurrentModule(wrap) 
														 | 
														
														 | 
														
															 	mod, cm := this.getCurrentModule(wrap) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if mod != nil { 
														 | 
														
														 | 
														
															 	if mod != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		wrap.CurrModule = cm 
														 | 
														
														 | 
														
															 		wrap.CurrModule = cm 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		if mod.FrontEnd != nil { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			if mod.WantDB { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		if mod.Front != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			if mod.Info.WantDB { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				err := wrap.UseDatabase() 
														 | 
														
														 | 
														
															 				err := wrap.UseDatabase() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				if err != nil { 
														 | 
														
														 | 
														
															 				if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 					utils.SystemErrorPageEngine(wrap.W, err) 
														 | 
														
														 | 
														
															 					utils.SystemErrorPageEngine(wrap.W, err) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -154,7 +152,7 @@ func (this *Modules) XXXFrontEnd(wrap *wrapper.Wrapper) bool { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				} 
														 | 
														
														 | 
														
															 				} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				defer wrap.DB.Close() 
														 | 
														
														 | 
														
															 				defer wrap.DB.Close() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			} 
														 | 
														
														 | 
														
															 			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			mod.FrontEnd(wrap) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			mod.Front(wrap) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			return true 
														 | 
														
														 | 
														
															 			return true 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -165,8 +163,8 @@ func (this *Modules) XXXBackEnd(wrap *wrapper.Wrapper) bool { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	mod, cm := this.getCurrentModule(wrap) 
														 | 
														
														 | 
														
															 	mod, cm := this.getCurrentModule(wrap) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if mod != nil { 
														 | 
														
														 | 
														
															 	if mod != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		wrap.CurrModule = cm 
														 | 
														
														 | 
														
															 		wrap.CurrModule = cm 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		if mod.BackEnd != nil { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			if mod.WantDB { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		if mod.Back != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			if mod.Info.WantDB { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				err := wrap.UseDatabase() 
														 | 
														
														 | 
														
															 				err := wrap.UseDatabase() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				if err != nil { 
														 | 
														
														 | 
														
															 				if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 					utils.SystemErrorPageEngine(wrap.W, err) 
														 | 
														
														 | 
														
															 					utils.SystemErrorPageEngine(wrap.W, err) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -174,7 +172,7 @@ func (this *Modules) XXXBackEnd(wrap *wrapper.Wrapper) bool { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				} 
														 | 
														
														 | 
														
															 				} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				defer wrap.DB.Close() 
														 | 
														
														 | 
														
															 				defer wrap.DB.Close() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			} 
														 | 
														
														 | 
														
															 			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			mod.BackEnd(wrap) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			mod.Back(wrap) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			return true 
														 | 
														
														 | 
														
															 			return true 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 |