浏览代码

* Remove module, move module before default

Michaël Van Canneyt 3 年之前
父节点
当前提交
f9c006ca9f
共有 1 个文件被更改,包括 23 次插入0 次删除
  1. 23 0
      packages/fcl-web/src/base/fphttp.pp

+ 23 - 0
packages/fcl-web/src/base/fphttp.pp

@@ -202,6 +202,7 @@ Type
     FRouteID : Integer;
   Protected
     procedure HandleRequest(ARequest: TRequest; AResponse: TResponse);
+    // Route.ID+1
     Property RouteID : Integer Read FRouteID;
   Public
     Destructor Destroy; override;
@@ -226,6 +227,8 @@ Type
     Function FindModule(const AModuleName : String) : TModuleItem;
     Function ModuleByName(const AModuleName : String) : TModuleItem;
     Function IndexOfModule(const AModuleName : String) : Integer;
+    Procedure RemoveModule(const AModuleName : String);
+    function MoveModuleBeforeDefault(const AModuleName: String): Boolean;
     Property Modules [Index : Integer]: TModuleItem Read GetModule Write SetModule;default;
     Property OnModuleRequest : TOnModuleRequest Read FOnModuleRequest Write FOnModuleRequest;
   end;
@@ -446,6 +449,26 @@ begin
     Dec(Result);
 end;
 
+procedure TModuleFactory.RemoveModule(const AModuleName: String);
+
+Var
+  aRouteID,Idx : Integer;
+
+begin
+  Idx:=IndexOfModule(aModuleName);
+  if Idx<>-1 then
+    begin
+    aRouteID:=Modules[Idx].RouteID;
+    HTTPRouter.DeleteRouteByID(aRouteID);
+    Delete(Idx);
+    end;
+end;
+
+function TModuleFactory.MoveModuleBeforeDefault(const AModuleName: String) : Boolean;
+begin
+  Result:=HTTPRouter.MoveRouteBeforeDefault(ModuleByName(aModuleName).RouteID-1);
+end;
+
 
 procedure RegisterHTTPModule(ModuleClass: TCustomHTTPModuleClass; SkipStreaming : Boolean = False);
 begin