├── Demo ├── Controller │ ├── BaseController.pas │ ├── IndexController.pas │ ├── MainController.pas │ └── UserController.pas ├── Project │ ├── WebDemo.dpr │ ├── WebDemo.dproj │ ├── WebDemo.dproj.local │ ├── WebDemo.identcache │ ├── WebDemo.res │ ├── favicon.ico │ └── mvc.inc ├── Publish │ ├── Resources │ │ ├── config.json │ │ └── mime.json │ ├── SQL │ │ └── user.xml │ ├── SQLite3.dll │ ├── WebRoot │ │ ├── 404.html │ │ ├── 500.html │ │ ├── assets │ │ │ ├── css │ │ │ │ ├── layui.css │ │ │ │ ├── layui.mobile.css │ │ │ │ ├── main.css │ │ │ │ └── modules │ │ │ │ │ ├── code.css │ │ │ │ │ ├── laydate │ │ │ │ │ └── default │ │ │ │ │ │ └── laydate.css │ │ │ │ │ └── layer │ │ │ │ │ └── default │ │ │ │ │ ├── icon-ext.png │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── layer.css │ │ │ │ │ ├── loading-0.gif │ │ │ │ │ ├── loading-1.gif │ │ │ │ │ └── loading-2.gif │ │ │ ├── echarts.min.js │ │ │ ├── echarts.simple.min.js │ │ │ ├── font │ │ │ │ ├── iconfont.eot │ │ │ │ ├── iconfont.svg │ │ │ │ ├── iconfont.ttf │ │ │ │ ├── iconfont.woff │ │ │ │ └── iconfont.woff2 │ │ │ ├── images │ │ │ │ ├── face │ │ │ │ │ ├── 0.gif │ │ │ │ │ ├── 1.gif │ │ │ │ │ ├── 10.gif │ │ │ │ │ ├── 11.gif │ │ │ │ │ ├── 12.gif │ │ │ │ │ ├── 13.gif │ │ │ │ │ ├── 14.gif │ │ │ │ │ ├── 15.gif │ │ │ │ │ ├── 16.gif │ │ │ │ │ ├── 17.gif │ │ │ │ │ ├── 18.gif │ │ │ │ │ ├── 19.gif │ │ │ │ │ ├── 2.gif │ │ │ │ │ ├── 20.gif │ │ │ │ │ ├── 21.gif │ │ │ │ │ ├── 22.gif │ │ │ │ │ ├── 23.gif │ │ │ │ │ ├── 24.gif │ │ │ │ │ ├── 25.gif │ │ │ │ │ ├── 26.gif │ │ │ │ │ ├── 27.gif │ │ │ │ │ ├── 28.gif │ │ │ │ │ ├── 29.gif │ │ │ │ │ ├── 3.gif │ │ │ │ │ ├── 30.gif │ │ │ │ │ ├── 31.gif │ │ │ │ │ ├── 32.gif │ │ │ │ │ ├── 33.gif │ │ │ │ │ ├── 34.gif │ │ │ │ │ ├── 35.gif │ │ │ │ │ ├── 36.gif │ │ │ │ │ ├── 37.gif │ │ │ │ │ ├── 38.gif │ │ │ │ │ ├── 39.gif │ │ │ │ │ ├── 4.gif │ │ │ │ │ ├── 40.gif │ │ │ │ │ ├── 41.gif │ │ │ │ │ ├── 42.gif │ │ │ │ │ ├── 43.gif │ │ │ │ │ ├── 44.gif │ │ │ │ │ ├── 45.gif │ │ │ │ │ ├── 46.gif │ │ │ │ │ ├── 47.gif │ │ │ │ │ ├── 48.gif │ │ │ │ │ ├── 49.gif │ │ │ │ │ ├── 5.gif │ │ │ │ │ ├── 50.gif │ │ │ │ │ ├── 51.gif │ │ │ │ │ ├── 52.gif │ │ │ │ │ ├── 53.gif │ │ │ │ │ ├── 54.gif │ │ │ │ │ ├── 55.gif │ │ │ │ │ ├── 56.gif │ │ │ │ │ ├── 57.gif │ │ │ │ │ ├── 58.gif │ │ │ │ │ ├── 59.gif │ │ │ │ │ ├── 6.gif │ │ │ │ │ ├── 60.gif │ │ │ │ │ ├── 61.gif │ │ │ │ │ ├── 62.gif │ │ │ │ │ ├── 63.gif │ │ │ │ │ ├── 64.gif │ │ │ │ │ ├── 65.gif │ │ │ │ │ ├── 66.gif │ │ │ │ │ ├── 67.gif │ │ │ │ │ ├── 68.gif │ │ │ │ │ ├── 69.gif │ │ │ │ │ ├── 7.gif │ │ │ │ │ ├── 70.gif │ │ │ │ │ ├── 71.gif │ │ │ │ │ ├── 8.gif │ │ │ │ │ └── 9.gif │ │ │ │ └── logo.png │ │ │ ├── jquery-1.11.0.min.js │ │ │ ├── jquery.PrintArea.js │ │ │ ├── jquery.table2excel.min.js │ │ │ ├── js │ │ │ │ ├── data.js │ │ │ │ ├── index.js │ │ │ │ ├── jquery-1.11.0.min.js │ │ │ │ ├── jquery.PrintArea.js │ │ │ │ ├── jquery.qrcode.min.js │ │ │ │ ├── jquery.table2excel.js │ │ │ │ ├── jquery.table2excel.min.js │ │ │ │ ├── province.js │ │ │ │ └── tbdValidate.js │ │ │ ├── json │ │ │ │ ├── index.json │ │ │ │ ├── project.json │ │ │ │ ├── src.json │ │ │ │ └── user.json │ │ │ ├── lay │ │ │ │ └── modules │ │ │ │ │ ├── carousel.js │ │ │ │ │ ├── code.js │ │ │ │ │ ├── colorpicker.js │ │ │ │ │ ├── element.js │ │ │ │ │ ├── flow.js │ │ │ │ │ ├── form.js │ │ │ │ │ ├── jquery.js │ │ │ │ │ ├── laydate.js │ │ │ │ │ ├── layedit.js │ │ │ │ │ ├── layer.js │ │ │ │ │ ├── laypage.js │ │ │ │ │ ├── laytpl.js │ │ │ │ │ ├── mobile.js │ │ │ │ │ ├── rate.js │ │ │ │ │ ├── slider.js │ │ │ │ │ ├── table.js │ │ │ │ │ ├── transfer.js │ │ │ │ │ ├── tree.js │ │ │ │ │ ├── upload.js │ │ │ │ │ └── util.js │ │ │ ├── layui.all.js │ │ │ └── layui.js │ │ ├── favicon.ico │ │ ├── image │ │ │ └── logo.png │ │ ├── js │ │ │ ├── index.js │ │ │ └── user │ │ │ │ ├── add.js │ │ │ │ ├── edit.js │ │ │ │ └── index.js │ │ └── view │ │ │ ├── include.html │ │ │ ├── index.html │ │ │ ├── login.html │ │ │ ├── main │ │ │ ├── aa.html │ │ │ └── main.html │ │ │ └── user │ │ │ ├── add.html │ │ │ ├── edit.html │ │ │ ├── index.html │ │ │ └── print.html │ ├── libmysql.dll │ ├── mvc.ini │ ├── sqlite.db │ ├── 服务卸载.bat │ └── 服务安装.bat └── Service │ ├── IndexService.pas │ ├── MainService.pas │ ├── Map │ ├── SQLMap.pas │ ├── ServiceMap.pas │ └── TableMap.pas │ ├── RoleService.pas │ └── UserService.pas ├── LICENSE ├── MVC5.0 ├── CrossSocket │ ├── BSD.kqueue.pas │ ├── Linux.epoll.pas │ ├── Net.CrossHttpMiddleware.pas │ ├── Net.CrossHttpParams.pas │ ├── Net.CrossHttpRouter.pas │ ├── Net.CrossHttpServer.pas │ ├── Net.CrossHttpUtils.pas │ ├── Net.CrossServer.pas │ ├── Net.CrossSocket.Base.pas │ ├── Net.CrossSocket.Epoll.pas │ ├── Net.CrossSocket.Iocp.pas │ ├── Net.CrossSocket.Kqueue.pas │ ├── Net.CrossSocket.pas │ ├── Net.CrossSslDemoCert.pas │ ├── Net.CrossSslServer.pas │ ├── Net.CrossSslSocket.Base.pas │ ├── Net.CrossSslSocket.MbedTls.pas │ ├── Net.CrossSslSocket.OpenSSL.pas │ ├── Net.CrossSslSocket.pas │ ├── Net.CrossWebSocketServer.pas │ ├── Net.MbedBIO.pas │ ├── Net.MbedTls.pas │ ├── Net.OpenSSL.pas │ ├── Net.Posix.inc │ ├── Net.RawSocket.pas │ ├── Net.SocketAPI.pas │ ├── Net.Winsock.inc │ ├── Net.Winsock2.pas │ ├── Net.Wship6.pas │ ├── Utils.DateTime.pas │ ├── Utils.Logger.pas │ ├── Utils.RegEx.pas │ └── Utils.Utils.pas ├── SDK │ ├── MVC.App.pas │ ├── MVC.Config.pas │ ├── MVC.Controller.pas │ ├── MVC.CrossCommon.pas │ ├── MVC.DB.pas │ ├── MVC.DES.pas │ ├── MVC.DM.pas │ ├── MVC.DSQuery.pas │ ├── MVC.DataSet.pas │ ├── MVC.HttpCross.pas │ ├── MVC.HttpMmt.pas │ ├── MVC.JSON.pas │ ├── MVC.JWT.pas │ ├── MVC.LogUnit.pas │ ├── MVC.Main.dfm │ ├── MVC.Main.pas │ ├── MVC.MmtHttp.pas │ ├── MVC.Net.pas │ ├── MVC.Route.pas │ ├── MVC.Service.pas │ ├── MVC.Session.pas │ ├── MVC.Tool.pas │ ├── MVC.TplParser.pas │ ├── MVC.TplUnit.pas │ ├── MVC.Verify.pas │ ├── MVC.WINServer.dfm │ ├── MVC.WINServer.pas │ └── _版本.txt ├── mORMot │ ├── Delphinus.Info.json │ ├── Delphinus.Install.json │ ├── PasZip.pas │ ├── ReadMe.txt │ ├── SynBidirSock.pas │ ├── SynBigTable.pas │ ├── SynBz.pas │ ├── SynBzPas.pas │ ├── SynCommons.pas │ ├── SynCrtSock.pas │ ├── SynCrypto.pas │ ├── SynCurl.pas │ ├── SynDB.pas │ ├── SynDBDataset.pas │ ├── SynDBFirebird.pas │ ├── SynDBMidasVCL.pas │ ├── SynDBODBC.pas │ ├── SynDBOracle.pas │ ├── SynDBPostgres.pas │ ├── SynDBRemote.pas │ ├── SynDBSQLite3.pas │ ├── SynDBVCL.pas │ ├── SynDBZeos.pas │ ├── SynDoubleToText.inc │ ├── SynDprUses.inc │ ├── SynEcc.pas │ ├── SynEcc32O2.obj │ ├── SynEcc32asm.inc │ ├── SynEcc64O2.o │ ├── SynFPCCMemAligned.pas │ ├── SynFPCLinux.pas │ ├── SynFPCMetaFile.pas │ ├── SynFPCSock.pas │ ├── SynFPCSockLIBC.inc │ ├── SynFPCTypInfo.pas │ ├── SynFPCx64MM.pas │ ├── SynFastWideString.pas │ ├── SynGSSAPI.pas │ ├── SynGSSAPIAuth.pas │ ├── SynGdiPlus.pas │ ├── SynKylix.pas │ ├── SynLZ.pas │ ├── SynLZO.pas │ ├── SynLizard.pas │ ├── SynLog.pas │ ├── SynMemoEx.pas │ ├── SynMongoDB.pas │ ├── SynMustache.pas │ ├── SynOleDB.pas │ ├── SynOpenSSL.pas │ ├── SynPdf.pas │ ├── SynProtoRTSPHTTP.pas │ ├── SynProtoRelay.pas │ ├── SynSM.inc │ ├── SynSM.pas │ ├── SynSMAPI.pas │ ├── SynSQLite3.pas │ ├── SynSQLite3RegEx.pas │ ├── SynSQLite3Static.pas │ ├── SynSSPI.pas │ ├── SynSSPIAuth.pas │ ├── SynScaleMM.pas │ ├── SynSelfTests.pas │ ├── SynTBB.pas │ ├── SynTable.pas │ ├── SynTaskDialog.RES │ ├── SynTaskDialog.pas │ ├── SynTaskDialog.rc │ ├── SynTests.pas │ ├── SynVirtualDataSet.pas │ ├── SynWinSock.pas │ ├── SynZLibSSE.pas │ ├── SynZip.pas │ ├── SynZipFiles.pas │ ├── Synopse.inc │ ├── SynopseCommit.inc │ ├── build-fpc-linux64.sh │ ├── bunzipasm.inc │ ├── compil.bat │ ├── compilFPC.bat │ ├── compilpil.bat │ ├── crc32c64.obj │ ├── deflate.obj │ ├── lizard.dpr │ ├── lizard.lpi │ ├── padlock.o │ ├── padlock_aes.o │ ├── padlock_sha.o │ ├── sha512-x64sse4.obj │ ├── sha512-x86.obj │ ├── trees.obj │ ├── vista.RES │ ├── vista.manifest │ ├── vista.rc │ ├── vistaAdm.RES │ ├── vistaAdm.manifest │ └── vistaAdm.rc └── 更新记录.txt ├── README.md └── 加密工具.zip /Demo/Controller/BaseController.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Controller/BaseController.pas -------------------------------------------------------------------------------- /Demo/Controller/IndexController.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Controller/IndexController.pas -------------------------------------------------------------------------------- /Demo/Controller/MainController.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Controller/MainController.pas -------------------------------------------------------------------------------- /Demo/Controller/UserController.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Controller/UserController.pas -------------------------------------------------------------------------------- /Demo/Project/WebDemo.dpr: -------------------------------------------------------------------------------- 1 | program WebDemo; 2 | {$I mvc.inc} 3 | 4 | uses 5 | MVC.App, 6 | BaseController in '..\Controller\BaseController.pas', 7 | IndexController in '..\Controller\IndexController.pas', 8 | MainController in '..\Controller\MainController.pas', 9 | IndexService in '..\Service\IndexService.pas', 10 | MainService in '..\Service\MainService.pas', 11 | UserController in '..\Controller\UserController.pas', 12 | UserService in '..\Service\UserService.pas', 13 | RoleService in '..\Service\RoleService.pas', 14 | SQLMap in '..\Service\Map\SQLMap.pas', 15 | TableMap in '..\Service\Map\TableMap.pas', 16 | ServiceMap in '..\Service\Map\ServiceMap.pas'; 17 | 18 | {$R *.res} 19 | 20 | begin 21 | MVCApp.Run(); 22 | end. 23 | 24 | -------------------------------------------------------------------------------- /Demo/Project/WebDemo.dproj.local: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 2022-01-18 22:27:14.000.205,D:\我的文档\Embarcadero\Studio\Projects\Unit1.dfm=D:\my\DFinal\MVC.Form.dfm 5 | 2022-01-18 22:27:24.000.844,D:\我的文档\Embarcadero\Studio\Projects\Project1.dproj=D:\my\DFinal\DFinal.dproj 6 | 2022-01-18 22:31:02.000.651,D:\my\DFinal\Project\DFinal.dproj=D:\my\DFinal\DFinal.dproj 7 | 2022-01-18 22:31:14.000.991,D:\my\DFinal\Command\MVC.Form.dfm=D:\my\DFinal\MVC.Form.dfm 8 | 2022-01-18 22:34:30.000.426,D:\my\DFinal\Command\MVC.MmtHttp.pas=D:\my\DFinal\Project\Unit1.pas 9 | 2022-01-18 23:06:31.000.041,D:\my\DFinal\Command\MVC.pas=D:\my\DFinal\Project\Unit1.pas 10 | 2022-01-18 23:06:42.000.425,D:\my\DFinal\Command\MVC.JSON.JSON=D:\my\DFinal\Command\MVC.JSON 11 | 2022-01-19 17:13:32.000.923,D:\my\DFinal\Command\MVC.MmtHttp.pas=D:\my\DFinal\Command\MVC.HttpMmt.pas 12 | 2022-01-23 10:09:05.000.871,D:\my\DFinal\Project\Project\DFinal.dproj=D:\my\DFinal\Project\DFinal.dproj 13 | 2022-01-23 10:09:53.000.648,D:\my\DFinal\Project\DFinal.dproj=D:\my\DFinal\Project\Project\DFinal.dproj 14 | 2022-01-26 11:11:09.000.999,D:\my\DFinal\Command\MVC.Command.pas=D:\my\DFinal\Command\MVC.App.pas 15 | 2022-01-27 13:07:30.000.275,D:\my\DFinal\Command\MVC.Command.pas=D:\my\DFinal\Command\MVC.App.pas 16 | 2022-01-30 13:36:00.000.696,D:\my\DFinal\Command\MVC.DB=D:\my\DFinal\Command\MVC.DB.DB 17 | 2022-02-01 22:02:33.000.922,D:\my\DFinal\Command\MVC.DM1.pas=D:\my\DFinal\Project\Unit1.pas 18 | 2022-02-03 18:47:08.000.649,D:\my\DFinal\Command\MVC.SQL=D:\my\DFinal\Command\MVC.SQL.SQL 19 | 2022-02-03 20:33:34.000.848,D:\my\DFinal\Service\TableMap.pas=D:\my\DFinal\Service\Table\TableMap.pas 20 | 2022-02-08 09:31:39.000.335,D:\my\DFinal\Config\MVC.Redis.pas=D:\my\DFinal\Project\Unit1.pas 21 | 2022-02-17 20:16:47.000.620,D:\my\MVC-demo\Project\DFinal.dproj=D:\my\MVC-demo\Project\MVCDemo.dproj 22 | 2022-02-19 19:30:27.000.501,D:\my\MVC5.0.1-layui\Project\MVCTest.dproj=D:\my\MVC5.0.1-layui\Project\MVCDemo.dproj 23 | 2022-02-19 19:51:51.000.214,D:\my\MVC5.0.1-layui\Project\MVCTest.dproj=D:\my\MVC5.0.1-layui\Project\MVCDemo.dproj 24 | 2022-02-21 15:48:27.000.144,D:\my\MVC5.0-Demo\WebDemo\Project\MVCDemo.dproj=D:\my\MVC5.0-Demo\WebDemo\Project\WebDemo.dproj 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Demo/Project/WebDemo.identcache: -------------------------------------------------------------------------------- 1 | 9D:\GitHub\DelphiWebMVC\Demo\Controller\UserController.pas6D:\GitHub\DelphiWebMVC\Demo\Service\Map\ServiceMap.pas4D:\GitHub\DelphiWebMVC\Demo\Service\Map\TableMap.pas3D:\GitHub\DelphiWebMVC\Demo\Service\RoleService.pas4D:\GitHub\DelphiWebMVC\Demo\Service\IndexService.pas/D:\GitHub\DelphiWebMVC\Demo\Project\WebDemo.dpr9D:\GitHub\DelphiWebMVC\Demo\Controller\BaseController.pas:D:\GitHub\DelphiWebMVC\Demo\Controller\IndexController.pas3D:\GitHub\DelphiWebMVC\Demo\Service\UserService.pas2D:\GitHub\DelphiWebMVC\Demo\Service\Map\SQLMap.pas9D:\GitHub\DelphiWebMVC\Demo\Controller\MainController.pas3D:\GitHub\DelphiWebMVC\Demo\Service\MainService.pas -------------------------------------------------------------------------------- /Demo/Project/WebDemo.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Project/WebDemo.res -------------------------------------------------------------------------------- /Demo/Project/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Project/favicon.ico -------------------------------------------------------------------------------- /Demo/Project/mvc.inc: -------------------------------------------------------------------------------- 1 |  2 | {$STRONGLINKTYPES ON} //禁止删除 3 | {.$APPTYPE CONSOLE} //控制台模式 4 | {.$DEFINE SERVICE} //生成windows服务编译条件 5 | {.$DEFINE LOGDEBUG} //调试日志开关,正式发布关闭 6 | {.$DEFINE CROSSSOCKET} //使用跨平台Cross-Socket库 7 | 8 | 9 | {----------------------配置说明--------------------} 10 | /////////////////////////////////////////////////// 11 | //1.生成windows服务, 12 | //2.关闭{$APPTYPE CONSOLE},打开{$DEFINE SERVICE} 13 | //3.在config文件中设置WinService参数。 14 | /////////////////////////////////////////////////// 15 | 16 | 17 | /////////////////////////////////////////////////// 18 | //1.进行linux等跨平台开发 19 | //2.打开{$APPTYPE CONSOLE},{$DEFINE CROSSSOCKET} 20 | /////////////////////////////////////////////////// 21 | {----------------------配置说明--------------------} 22 | -------------------------------------------------------------------------------- /Demo/Publish/Resources/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "AppTitle":"MVC演示Demo", 3 | 4 | "Server": { 5 | "Port": "8004", 6 | "Compress":"deflate", 7 | "HTTPQueueLength":1000, 8 | "ChildThreadCount":10 9 | }, 10 | "WinService":{ 11 | "Name":"myMVCService", 12 | "DisplayName":"MVC演示Demo服务描述", 13 | "ServiceType":"stWin32", 14 | "StartType":"stAuto" 15 | }, 16 | "Redis":{ 17 | "Host":"127.0.0.1", 18 | "Port":6379, 19 | "PassWord":"admin", 20 | "InitSize":5, 21 | "TimeOut":60, 22 | "ReadTimeOut":10 23 | }, 24 | "Config":{ 25 | "auto_start":true, 26 | "APP":"", 27 | "leftFmt":"#{", 28 | "rightFmt":"}", 29 | "session_timer":30, 30 | "open_log":true, 31 | "open_debug":true, 32 | "Corss_Origin":{ 33 | "Allow_Origin":"*", 34 | "Allow_Headers":"*", 35 | "Allow_Method":"*", 36 | "Allow_Credentials":true 37 | }, 38 | "directory":[ 39 | { 40 | "path":"/view/", 41 | "permission":false 42 | } 43 | ] 44 | }, 45 | "DBConfig":{ 46 | "db1": { 47 | "DriverID": "SQLite", 48 | "Database": "sqlite.db", 49 | "User_Name": "", 50 | "Password": "", 51 | "OpenMode": "CreateUTF8", 52 | "Pooled": "True", 53 | "POOL_CleanupTimeout": "30000", 54 | "POOL_ExpireTimeout": "90000", 55 | "POOL_MaximumItems": "50" 56 | }, 57 | "db2": { 58 | "DriverID": "MySQL", 59 | "Server": "127.0.0.1", 60 | "Port": "3306", 61 | "Database": "test", 62 | "User_Name": "root", 63 | "Password": "root", 64 | "CharacterSet": "utf8", 65 | "Compress": "False", 66 | "Pooled": "True", 67 | "POOL_CleanupTimeout": "30000", 68 | "POOL_ExpireTimeout": "90000", 69 | "POOL_MaximumItems": "50" 70 | }, 71 | 72 | "db5": { 73 | "DriverID": "Ora", 74 | "CharacterSet": "UTF8", 75 | "Database": "192.168.1.56:1521/orcl", 76 | "User_Name": "soft", 77 | "Password": "000000", 78 | "Pooled": "True", 79 | "POOL_CleanupTimeout": "30000", 80 | "POOL_ExpireTimeout": "90000", 81 | "POOL_MaximumItems": "50" 82 | }, 83 | "db3": { 84 | "DriverID": "MSSQL", 85 | "Server": "192.168.1.56", 86 | "Port": "1433", 87 | "Database": "test", 88 | "User_Name": "sa", 89 | "Password": "sa", 90 | "Pooled": "True", 91 | "POOL_CleanupTimeout": "30000", 92 | "POOL_ExpireTimeout": "90000", 93 | "POOL_MaximumItems": "50" 94 | } 95 | 96 | 97 | } 98 | } -------------------------------------------------------------------------------- /Demo/Publish/Resources/mime.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "Extensions": "css", 3 | "MimeType": "text/css" 4 | }, 5 | { 6 | "Extensions": "html;htm", 7 | "MimeType": "text/html" 8 | }, 9 | { 10 | "Extensions": "js", 11 | "MimeType": "text/javascript" 12 | }, 13 | { 14 | "Extensions": "jpeg;jpg", 15 | "MimeType": "image/jpeg" 16 | }, 17 | { 18 | "Extensions": "png", 19 | "MimeType": "image/x-png" 20 | }, 21 | { 22 | "Extensions": "ico", 23 | "MimeType": "image/x-icon" 24 | }, 25 | { 26 | "Extensions": "gif", 27 | "MimeType": "image/gif" 28 | }, 29 | { 30 | "Extensions": "bmp", 31 | "MimeType": "image/bmp" 32 | }, 33 | { 34 | "Extensions": "xml", 35 | "MimeType": "text/xml" 36 | }, 37 | { 38 | "Extensions": "json", 39 | "MimeType": "text/json" 40 | }, 41 | { 42 | "Extensions": "svg", 43 | "MimeType": "image/svg+xml" 44 | }, 45 | { 46 | "Extensions": "woff", 47 | "MimeType": "application/font-woff" 48 | }, 49 | { 50 | "Extensions": "woff2", 51 | "MimeType": "application/font-woff2" 52 | }, 53 | { 54 | "Extensions": "rtx", 55 | "MimeType": "text/richtext" 56 | }, 57 | { 58 | "Extensions": "zip", 59 | "MimeType": "application/x-zip-compressed" 60 | }, 61 | { 62 | "Extensions": "txt", 63 | "MimeType": "text/plain" 64 | }, 65 | { 66 | "Extensions": "svg;svgz", 67 | "MimeType": "image/svg+xml" 68 | }, 69 | { 70 | "Extensions": "apk", 71 | "MimeType": "application/vnd.android.package-archive" 72 | } 73 | ] -------------------------------------------------------------------------------- /Demo/Publish/SQL/user.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | * 4 | users 5 | 6 | 7 | id 8 | 9 | 10 | 11 | 12 | users 13 | 14 | id= <#if #{_Param.name} eq '管理员'>2 <#else> 1 15 | 16 | 17 | 21 | 22 | users 23 | 24 | name=#{_Param.name|s}, 25 | sex=#{_Param.sex|s}, 26 | age=#{_Param.age}, 27 | ntime= now() 28 | 29 | 30 | 31 | 32 | users 33 | 34 | name=#{_param.name|s}, 35 | sex=#{_Param.sex|s}, 36 | age=#{_Param.age} 37 | 38 | id=#{_Param.id} 39 | 40 | 41 | 42 | users 43 | id=#{_Param.id} 44 | 45 | 46 | select * from users 47 | 48 | 49 | call testProc(#{_param.id}); 50 | 51 | 52 | -------------------------------------------------------------------------------- /Demo/Publish/SQLite3.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/SQLite3.dll -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 404 8 | 9 | 10 |

404

11 |

(┬_┬) 网页被外星人劫持了(┬_┬)

12 |

#{message}

13 | 14 | -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/500.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 500 8 | 9 | 10 |

500

11 |

(┬_┬) 网页被外星人劫持了(┬_┬)

12 |

#{message}

13 | 14 | -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/css/main.css: -------------------------------------------------------------------------------- 1 | .bitian{ color:#dc2b2b;} 2 | .layui-layout-admin .layui-body { 3 | /*去掉底部固定区域44px*/ 4 | bottom: 0px; 5 | } -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/css/modules/code.css: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.6 MIT License By https://www.layui.com */ 2 | html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none} -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/css/modules/layer/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/css/modules/layer/default/icon-ext.png -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/css/modules/layer/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/css/modules/layer/default/icon.png -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/css/modules/layer/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/css/modules/layer/default/loading-0.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/css/modules/layer/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/css/modules/layer/default/loading-1.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/css/modules/layer/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/css/modules/layer/default/loading-2.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/font/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/font/iconfont.eot -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/font/iconfont.ttf -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/font/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/font/iconfont.woff -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/font/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/font/iconfont.woff2 -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/0.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/1.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/10.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/11.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/12.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/13.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/14.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/15.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/16.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/17.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/18.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/19.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/2.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/20.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/21.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/22.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/23.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/24.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/25.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/26.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/27.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/28.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/29.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/3.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/30.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/31.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/32.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/33.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/34.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/35.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/36.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/37.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/38.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/39.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/4.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/40.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/41.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/42.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/43.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/44.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/45.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/46.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/47.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/48.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/49.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/5.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/50.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/51.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/52.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/53.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/54.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/55.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/56.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/57.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/58.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/59.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/6.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/60.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/61.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/62.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/63.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/64.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/65.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/66.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/67.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/68.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/69.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/7.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/70.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/71.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/8.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/face/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/face/9.gif -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/WebRoot/assets/images/logo.png -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/jquery.PrintArea.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | var counter = 0; 3 | var modes = { iframe: "iframe", popup: "popup" }; 4 | var defaults = { mode: modes.iframe, 5 | popHt: 500, 6 | popWd: 400, 7 | popX: 200, 8 | popY: 200, 9 | popTitle: '', 10 | popClose: false 11 | }; 12 | 13 | var settings = {}; //global settings 14 | 15 | $.fn.printArea = function (options) { 16 | $.extend(settings, defaults, options); 17 | 18 | counter++; 19 | var idPrefix = "printArea_"; 20 | $("[id^=" + idPrefix + "]").remove(); 21 | var ele = getFormData($(this)); 22 | 23 | settings.id = idPrefix + counter; 24 | 25 | var writeDoc; 26 | var printWindow; 27 | 28 | switch (settings.mode) { 29 | case modes.iframe: 30 | var f = new Iframe(); 31 | writeDoc = f.doc; 32 | printWindow = f.contentWindow || f; 33 | break; 34 | case modes.popup: 35 | printWindow = new Popup(); 36 | writeDoc = printWindow.doc; 37 | } 38 | 39 | writeDoc.open(); 40 | writeDoc.write(docType() + "" + getHead() + getBody(ele) + ""); 41 | writeDoc.close(); 42 | 43 | printWindow.focus(); 44 | printWindow.print(); 45 | 46 | if (settings.mode == modes.popup && settings.popClose) 47 | printWindow.close(); 48 | } 49 | 50 | function docType() { 51 | if (settings.mode == modes.iframe || !settings.strict) return ""; 52 | 53 | var standard = settings.strict == false ? " Trasitional" : ""; 54 | var dtd = settings.strict == false ? "loose" : "strict"; 55 | 56 | return ''; 57 | } 58 | 59 | function getHead() { 60 | var head = "" + settings.popTitle + ""; 61 | $(document).find("link") 62 | .filter(function () { 63 | return $(this).attr("rel").toLowerCase() == "stylesheet"; 64 | }) 65 | .filter(function () { // this filter contributed by "mindinquiring" 66 | var media = $(this).attr("media"); 67 | if (media == undefined) { 68 | return false; 69 | } 70 | else { 71 | return (media.toLowerCase() == "" || media.toLowerCase() == "print"); 72 | } 73 | }) 74 | .each(function () { 75 | head += ''; 76 | }); 77 | head += ""; 78 | return head; 79 | } 80 | 81 | function getBody(printElement) { 82 | return '
' + $(printElement).html() + '
'; 83 | } 84 | 85 | function getFormData(ele) { 86 | $("input,select,textarea", ele).each(function () { 87 | // In cases where radio, checkboxes and select elements are selected and deselected, and the print 88 | // button is pressed between select/deselect, the print screen shows incorrectly selected elements. 89 | // To ensure that the correct inputs are selected, when eventually printed, we must inspect each dom element 90 | var type = $(this).attr("type"); 91 | if (type == "radio" || type == "checkbox") { 92 | if ($(this).is(":not(:checked)")) this.removeAttribute("checked"); 93 | else this.setAttribute("checked", true); 94 | } 95 | else if (type == "text") 96 | this.setAttribute("value", $(this).val()); 97 | else if (type == "select-multiple" || type == "select-one") 98 | $(this).find("option").each(function () { 99 | if ($(this).is(":not(:selected)")) this.removeAttribute("selected"); 100 | else this.setAttribute("selected", true); 101 | }); 102 | else if (type == "textarea") { 103 | var v = $(this).attr("value"); 104 | if ($.browser.mozilla) { 105 | if (this.firstChild) this.firstChild.textContent = v; 106 | else this.textContent = v; 107 | } 108 | else this.innerHTML = v; 109 | } 110 | }); 111 | return ele; 112 | } 113 | 114 | function Iframe() { 115 | var frameId = settings.id; 116 | var iframeStyle = 'border:0;position:absolute;width:0px;height:0px;left:0px;top:0px;'; 117 | var iframe; 118 | 119 | try { 120 | iframe = document.createElement('iframe'); 121 | document.body.appendChild(iframe); 122 | $(iframe).attr({ style: iframeStyle, id: frameId, src: "" }); 123 | iframe.doc = null; 124 | iframe.doc = iframe.contentDocument ? iframe.contentDocument : (iframe.contentWindow ? iframe.contentWindow.document : iframe.document); 125 | } 126 | catch (e) { throw e + ". iframes may not be supported in this browser."; } 127 | 128 | if (iframe.doc == null) throw "Cannot find document."; 129 | 130 | return iframe; 131 | } 132 | 133 | function Popup() { 134 | var windowAttr = "location=no,statusbar=no,directories=no,menubar=no,titlebar=no,toolbar=no,dependent=no"; 135 | windowAttr += ",width=595px,height=842px,top=0,left=0,toolbar=no,scrollbars=no,personalbar=no"; 136 | windowAttr += ",resizable=yes,screenX=" + settings.popX + ",screenY=" + settings.popY + ""; 137 | 138 | var newWin = window.open("", "_blank", windowAttr); 139 | 140 | newWin.doc = newWin.document; 141 | 142 | return newWin; 143 | } 144 | 145 | })(jQuery); -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/jquery.table2excel.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery table2excel - v1.0.2 3 | * jQuery plugin to export an .xls file in browser from an HTML table 4 | * https://github.com/rainabba/jquery-table2excel 5 | * 6 | * Made by rainabba 7 | * Under MIT License 8 | */ 9 | !function(a,b,c,d){function e(b,c){this.element=b,this.settings=a.extend({},h,c),this._defaults=h,this._name=g,this.init()}function f(a){return(a.filename?a.filename:"table2excel")+""}var g="table2excel",h={exclude:".noExl",name:"Table2Excel"};e.prototype={init:function(){var b=this;b.template={head:'",table:{head:"",tail:"
"},foot:""},b.tableRows=[],a(b.element).each(function(c,d){var e="";a(d).find("tr").not(b.settings.exclude).each(function(b,c){e+=""+a(c).html()+""}),b.tableRows.push(e)}),b.tableToExcel(b.tableRows,b.settings.name)},tableToExcel:function(d,e){var g,h,i,j=this,k="";if(j.uri="data:application/vnd.ms-excel;base64,",j.base64=function(a){return b.btoa(unescape(encodeURIComponent(a)))},j.format=function(a,b){return a.replace(/{(\w+)}/g,function(a,c){return b[c]})},j.ctx={worksheet:e||"Worksheet",table:d},k=j.template.head,a.isArray(d))for(g in d)k+=j.template.sheet.head+"Table"+g+j.template.sheet.tail;if(k+=j.template.mid,a.isArray(d))for(g in d)k+=j.template.table.head+"{table"+g+"}"+j.template.table.tail;k+=j.template.foot;for(g in d)j.ctx["table"+g]=d[g];if(delete j.ctx.table,"undefined"!=typeof msie&&msie>0||navigator.userAgent.match(/Trident.*rv\:11\./))if("undefined"!=typeof Blob){k=[k];var l=new Blob(k,{type:"text/html"});b.navigator.msSaveBlob(l,f(j.settings))}else txtArea1.document.open("text/html","replace"),txtArea1.document.write(k),txtArea1.document.close(),txtArea1.focus(),sa=txtArea1.document.execCommand("SaveAs",!0,f(j.settings));else h=j.uri+j.base64(j.format(k,j.ctx)),i=c.createElement("a"),i.download=f(j.settings),i.href=h,i.click();return!0}},a.fn[g]=function(b){var c=this;return c.each(function(){a.data(c,"plugin_"+g)||a.data(c,"plugin_"+g,new e(this,b))}),c}}(jQuery,window,document); -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/js/index.js: -------------------------------------------------------------------------------- 1 | var $,tab,skyconsWeather; 2 | layui.config({ 3 | base : "js/" 4 | }).use(['bodyTab','form','element','layer','jquery'],function(){ 5 | var form = layui.form(), 6 | layer = layui.layer, 7 | element = layui.element(); 8 | $ = layui.jquery; 9 | tab = layui.bodyTab(); 10 | 11 | //锁屏 12 | function lockPage(){ 13 | layer.open({ 14 | title : false, 15 | type : 1, 16 | content : $("#lock-box"), 17 | closeBtn : 0, 18 | shade : 0.9 19 | }) 20 | } 21 | $(".lockcms").on("click",function(){ 22 | window.sessionStorage.setItem("lockcms",true); 23 | lockPage(); 24 | }) 25 | // 判断是否显示锁屏 26 | if(window.sessionStorage.getItem("lockcms") == "true"){ 27 | lockPage(); 28 | } 29 | // 解锁 30 | $("#unlock").on("click",function(){ 31 | if($(this).siblings(".admin-header-lock-input").val() == ''){ 32 | layer.msg("请输入解锁密码!"); 33 | }else{ 34 | if($(this).siblings(".admin-header-lock-input").val() == "123456"){ 35 | window.sessionStorage.setItem("lockcms",false); 36 | $(this).siblings(".admin-header-lock-input").val(''); 37 | layer.closeAll("page"); 38 | }else{ 39 | layer.msg("密码错误,请重新输入!"); 40 | } 41 | } 42 | }); 43 | $(document).on('keydown', function() { 44 | if(event.keyCode == 13) { 45 | $("#unlock").click(); 46 | } 47 | }); 48 | 49 | //手机设备的简单适配 50 | var treeMobile = $('.site-tree-mobile'), 51 | shadeMobile = $('.site-mobile-shade') 52 | 53 | treeMobile.on('click', function(){ 54 | $('body').addClass('site-mobile'); 55 | }); 56 | 57 | shadeMobile.on('click', function(){ 58 | $('body').removeClass('site-mobile'); 59 | }); 60 | 61 | // 添加新窗口 62 | $(".layui-nav .layui-nav-item a").on("click",function(){ 63 | addTab($(this)); 64 | $(this).parent("li").siblings().removeClass("layui-nav-itemed"); 65 | }) 66 | 67 | //公告层 68 | function showNotice(){ 69 | layer.open({ 70 | type: 1, 71 | title: "系统公告", //不显示标题栏 72 | closeBtn: false, 73 | area: '310px', 74 | shade: 0.8, 75 | id: 'LAY_layuipro', //设定一个id,防止重复弹出 76 | btn: ['火速围观'], 77 | moveType: 1, //拖拽模式,0或者1 78 | content: '

最近偶然发现贤心大神的layui框架,瞬间被他的完美样式所吸引,虽然功能不算强大,但毕竟是一个刚刚出现的框架,后面会慢慢完善的。很早之前就想做一套后台模版,但是感觉bootstrop代码的冗余太大,不是非常喜欢,自己写又太累,所以一直闲置了下来。直到遇到了layui我才又燃起了制作一套后台模版的斗志。由于本人只是纯前端,所以页面只是单纯的实现了效果,没有做服务器端的一些处理,可能后期技术跟上了会更新的,如果有什么问题欢迎大家指导。谢谢大家。

在此特别感谢Beginner和Paco,他们写的框架给了我很好的启发和借鉴。希望有时间可以多多请教。

', 79 | success: function(layero){ 80 | var btn = layero.find('.layui-layer-btn'); 81 | btn.css('text-align', 'center'); 82 | btn.on("click",function(){ 83 | window.sessionStorage.setItem("showNotice","true"); 84 | }) 85 | if($(window).width() > 432){ //如果页面宽度不足以显示顶部“系统公告”按钮,则不提示 86 | btn.on("click",function(){ 87 | layer.tips('系统公告躲在了这里', '#showNotice', { 88 | tips: 3 89 | }); 90 | }) 91 | } 92 | } 93 | }); 94 | } 95 | //判断是否处于锁屏状态(如果关闭以后则未关闭浏览器之前不再显示) 96 | if(window.sessionStorage.getItem("lockcms") != "true" && window.sessionStorage.getItem("showNotice") != "true"){ 97 | showNotice(); 98 | } 99 | $(".showNotice").on("click",function(){ 100 | showNotice(); 101 | }) 102 | 103 | //刷新后还原打开的窗口 104 | if(window.sessionStorage.getItem("menu") != null){ 105 | menu = JSON.parse(window.sessionStorage.getItem("menu")); 106 | curmenu = window.sessionStorage.getItem("curmenu"); 107 | var openTitle = ''; 108 | for(var i=0;i'; 112 | }else{ 113 | openTitle += ''+menu[i].icon+''; 114 | } 115 | openTitle += ''+menu[i].title+''; 116 | openTitle += ''; 117 | element.tabAdd("bodyTab",{ 118 | title : openTitle, 119 | content :"'),o=t(['
',"
"].join(""));t("#"+f)[0]||t("body").append(n),i.elem.next().hasClass(c)||(e.elemFile.wrap(o),i.elem.next("."+c).append(function(){var e=[];return layui.each(i.data,function(t,i){i="function"==typeof i?i():i,e.push('')}),e.join("")}()))},p.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},p.prototype.preview=function(e){var t=this;window.FileReader&&layui.each(t.chooseFiles,function(t,i){var n=new FileReader;n.readAsDataURL(i),n.onload=function(){e&&e(t,i,this.result)}})},p.prototype.upload=function(e,i){var n,a=this,l=a.config,r=a.elemFile[0],u=function(){var i=0,n=0,o=e||a.files||a.chooseFiles||r.files,u=function(){l.multiple&&i+n===a.fileLength&&"function"==typeof l.allDone&&l.allDone({total:a.fileLength,successful:i,aborted:n})};layui.each(o,function(e,o){var r=new FormData;r.append(l.field,o),layui.each(l.data,function(e,t){t="function"==typeof t?t():t,r.append(e,t)});var c={url:l.url,type:"post",data:r,contentType:!1,processData:!1,dataType:"json",headers:l.headers||{},success:function(t){i++,d(e,t),u()},error:function(){n++,a.msg("请求上传接口出现异常"),m(e),u()}};"function"==typeof l.progress&&(c.xhr=function(){var e=t.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){if(e.lengthComputable){var t=Math.floor(e.loaded/e.total*100);l.progress(t,l.item[0],e)}}),e}),t.ajax(c)})},c=function(){var e=t("#"+f);a.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var t,i=e.contents().find("body");try{t=i.text()}catch(n){a.msg("获取上传后的响应信息出现异常"),clearInterval(p.timer),m()}t&&(clearInterval(p.timer),i.html(""),d(0,t))},30)},d=function(e,t){if(a.elemFile.next("."+s).remove(),r.value="","object"!=typeof t)try{t=JSON.parse(t)}catch(i){return t={},a.msg("请对上传接口返回有效JSON")}"function"==typeof l.done&&l.done(t,e||0,function(e){a.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){a.upload(e)})},h=l.exts,v=function(){var t=[];return layui.each(e||a.chooseFiles,function(e,i){t.push(i.name)}),t}(),g={preview:function(e){a.preview(e)},upload:function(e,t){var i={};i[e]=t,a.upload(i)},pushFile:function(){return a.files=a.files||{},layui.each(a.chooseFiles,function(e,t){a.files[e]=t}),a.files},resetFile:function(e,t,i){var n=new File([t],i);a.files=a.files||{},a.files[e]=n}},y=function(){if("choose"!==i&&!l.auto||(l.choose&&l.choose(g),"choose"!==i))return l.before&&l.before(g),o.ie?o.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\/\\]+\..+/g)||[]||"":v,0!==v.length){switch(l.accept){case"file":if(h&&!RegExp("\\w\\.("+h+")$","i").test(escape(v)))return a.msg("选择的文件中包含不支持的格式"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(v)))return a.msg("选择的视频中包含不支持的格式"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(v)))return a.msg("选择的音频中包含不支持的格式"),r.value="";break;default:if(layui.each(v,function(e,t){RegExp("\\w\\.("+(h||"jpg|png|gif|bmp|jpeg$")+")","i").test(escape(t))||(n=!0)}),n)return a.msg("选择的图片中包含不支持的格式"),r.value=""}if(a.fileLength=function(){var t=0,i=e||a.files||a.chooseFiles||r.files;return layui.each(i,function(){t++}),t}(),l.number&&a.fileLength>l.number)return a.msg("同时最多只能上传的数量为:"+l.number);if(l.size>0&&!(o.ie&&o.ie<10)){var F;if(layui.each(a.chooseFiles,function(e,t){if(t.size>1024*l.size){var i=l.size/1024;i=i>=1?i.toFixed(2)+"MB":l.size+"KB",r.value="",F=i}}),F)return a.msg("文件不能超过"+F)}y()}},p.prototype.reload=function(e){e=e||{},delete e.elem,delete e.bindAction;var i=this,e=i.config=t.extend({},i.config,a.config,e),n=e.elem.next();n.attr({name:e.name,accept:e.acceptMime,multiple:e.multiple})},p.prototype.events=function(){var e=this,i=e.config,a=function(t){e.chooseFiles={},layui.each(t,function(t,i){var n=(new Date).getTime();e.chooseFiles[n+"-"+t]=i})},l=function(t,n){var o=e.elemFile,a=t.length>1?t.length+"个文件":(t[0]||{}).name||o[0].value.match(/[^\/\\]+\..+/g)||[]||"";o.next().hasClass(s)&&o.next().remove(),e.upload(null,"choose"),e.isFile()||i.choose||o.after(''+a+"")};i.elem.off("upload.start").on("upload.start",function(){var o=t(this),a=o.attr("lay-data");if(a)try{a=new Function("return "+a)(),e.config=t.extend({},i,a)}catch(l){n.error("Upload element property lay-data configuration item has a syntax error: "+a)}e.config.item=o,e.elemFile[0].click()}),o.ie&&o.ie<10||i.elem.off("upload.over").on("upload.over",function(){var e=t(this);e.attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){var e=t(this);e.removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(n,o){var r=t(this),u=o.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),a(u),i.auto?e.upload(u):l(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var t=this.files||[];a(t),i.auto?e.upload():l(t)}),i.bindAction.off("upload.action").on("upload.action",function(){e.upload()}),i.elem.data("haveEvents")||(e.elemFile.on("change",function(){t(this).trigger("upload.change")}),i.elem.on("click",function(){e.isFile()||t(this).trigger("upload.start")}),i.drag&&i.elem.on("dragover",function(e){e.preventDefault(),t(this).trigger("upload.over")}).on("dragleave",function(e){t(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),t(this).trigger("upload.drop",e)}),i.bindAction.on("click",function(){t(this).trigger("upload.action")}),i.elem.data("haveEvents",!0))},a.render=function(e){var t=new p(e);return l.call(t)},e(r,a)}); -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/lay/modules/util.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.6 MIT License By https://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var t=layui.$,i={fixbar:function(e){var i,n,a="layui-fixbar",o="layui-fixbar-top",r=t(document),l=t("body");e=t.extend({showHeight:200},e),e.bar1=e.bar1===!0?"":e.bar1,e.bar2=e.bar2===!0?"":e.bar2,e.bgcolor=e.bgcolor?"background-color:"+e.bgcolor:"";var c=[e.bar1,e.bar2,""],u=t(['"].join("")),g=u.find("."+o),s=function(){var t=r.scrollTop();t>=e.showHeight?i||(g.show(),i=1):i&&(g.hide(),i=0)};t("."+a)[0]||("object"==typeof e.css&&u.css(e.css),l.append(u),s(),u.find("li").on("click",function(){var i=t(this),n=i.attr("lay-type");"top"===n&&t("html,body").animate({scrollTop:0},200),e.click&&e.click.call(this,n)}),r.on("scroll",function(){clearTimeout(n),n=setTimeout(function(){s()},100)}))},countdown:function(e,t,i){var n=this,a="function"==typeof t,o=new Date(e).getTime(),r=new Date(!t||a?(new Date).getTime():t).getTime(),l=o-r,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];a&&(i=t);var u=setTimeout(function(){n.countdown(e,r+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],t,u),l<=0&&clearTimeout(u),u},timeAgo:function(e,t){var i=this,n=[[],[]],a=(new Date).getTime()-new Date(e).getTime();return a>26784e5?(a=new Date(e),n[0][0]=i.digit(a.getFullYear(),4),n[0][1]=i.digit(a.getMonth()+1),n[0][2]=i.digit(a.getDate()),t||(n[1][0]=i.digit(a.getHours()),n[1][1]=i.digit(a.getMinutes()),n[1][2]=i.digit(a.getSeconds())),n[0].join("-")+" "+n[1].join(":")):a>=864e5?(a/1e3/60/60/24|0)+"天前":a>=36e5?(a/1e3/60/60|0)+"小时前":a>=18e4?(a/1e3/60|0)+"分钟前":a<0?"未来":"刚刚"},digit:function(e,t){var i="";e=String(e),t=t||2;for(var n=e.length;n/g,">").replace(/'/g,"'").replace(/"/g,""")},event:function(e,n,a){var o=t("body");return a=a||"click",n=i.event[e]=t.extend(!0,i.event[e],n)||{},i.event.UTIL_EVENT_CALLBACK=i.event.UTIL_EVENT_CALLBACK||{},o.off(a,"*["+e+"]",i.event.UTIL_EVENT_CALLBACK[e]),i.event.UTIL_EVENT_CALLBACK[e]=function(){var i=t(this),a=i.attr(e);"function"==typeof n[a]&&n[a].call(this,i)},o.on(a,"*["+e+"]",i.event.UTIL_EVENT_CALLBACK[e]),n}};!function(e,t,i){"$:nomunge";function n(){a=t[l](function(){o.each(function(){var t=e(this),i=t.width(),n=t.height(),a=e.data(this,u);(i!==a.w||n!==a.h)&&t.trigger(c,[a.w=i,a.h=n])}),n()},r[g])}var a,o=e([]),r=e.resize=e.extend(e.resize,{}),l="setTimeout",c="resize",u=c+"-special-event",g="delay",s="throttleWindow";r[g]=250,r[s]=!0,e.event.special[c]={setup:function(){if(!r[s]&&this[l])return!1;var t=e(this);o=o.add(t),e.data(this,u,{w:t.width(),h:t.height()}),1===o.length&&n()},teardown:function(){if(!r[s]&&this[l])return!1;var t=e(this);o=o.not(t),t.removeData(u),o.length||clearTimeout(a)},add:function(t){function n(t,n,o){var r=e(this),l=e.data(this,u)||{};l.w=n!==i?n:r.width(),l.h=o!==i?o:r.height(),a.apply(this,arguments)}if(!r[s]&&this[l])return!1;var a;return e.isFunction(t)?(a=t,n):(a=t.handler,void(t.handler=n))}}}(t,window),e("util",i)}); -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/assets/layui.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.6 MIT License By https://www.layui.com */ 2 | ;!function(e){"use strict";var t=document,n={modules:{},status:{},timeout:10,event:{}},r=function(){this.v="2.5.6"},o=function(){var e=t.currentScript?t.currentScript.src:function(){for(var e,n=t.scripts,r=n.length-1,o=r;o>0;o--)if("interactive"===n[o].readyState){e=n[o].src;break}return e||n[r].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),a=function(t){e.console&&console.error&&console.error("Layui hint: "+t)},i="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u={layer:"modules/layer",laydate:"modules/laydate",laypage:"modules/laypage",laytpl:"modules/laytpl",layim:"modules/layim",layedit:"modules/layedit",form:"modules/form",upload:"modules/upload",transfer:"modules/transfer",tree:"modules/tree",table:"modules/table",element:"modules/element",rate:"modules/rate",colorpicker:"modules/colorpicker",slider:"modules/slider",carousel:"modules/carousel",flow:"modules/flow",util:"modules/util",code:"modules/code",jquery:"modules/jquery",mobile:"modules/mobile","layui.all":"../layui.all"};r.prototype.cache=n,r.prototype.define=function(e,t){var r=this,o="function"==typeof e,a=function(){var e=function(e,t){layui[e]=t,n.status[e]=!0};return"function"==typeof t&&t(function(r,o){e(r,o),n.callback[r]=function(){t(e)}}),this};return o&&(t=e,e=[]),!layui["layui.all"]&&layui["layui.mobile"]?a.call(r):(r.use(e,a),r)},r.prototype.use=function(e,r,l){function c(e,t){var r="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===e.type||r.test((e.currentTarget||e.srcElement).readyState))&&(n.modules[d]=t,y.removeChild(h),function o(){return++m>1e3*n.timeout/4?a(d+" is not a valid module"):void(n.status[d]?s():setTimeout(o,4))}())}function s(){l.push(layui[d]),e.length>1?p.use(e.slice(1),r,l):"function"==typeof r&&r.apply(layui,l)}var p=this,f=n.dir=n.dir?n.dir:o,y=t.getElementsByTagName("head")[0];e="string"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(p.each(e,function(t,n){"jquery"===n&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var d=e[0],m=0;if(l=l||[],n.host=n.host||(f.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===e.length||layui["layui.all"]&&u[d]||!layui["layui.all"]&&layui["layui.mobile"]&&u[d])return s(),p;var v=(u[d]?f+"lay/":/^\{\/\}/.test(p.modules[d])?"":n.base||"")+(p.modules[d]||d)+".js";if(v=v.replace(/^\{\/\}/,""),!n.modules[d]&&layui[d]&&(n.modules[d]=v),n.modules[d])!function g(){return++m>1e3*n.timeout/4?a(d+" is not a valid module"):void("string"==typeof n.modules[d]&&n.status[d]?s():setTimeout(g,4))}();else{var h=t.createElement("script");h.async=!0,h.charset="utf-8",h.src=v+function(){var e=n.version===!0?n.v||(new Date).getTime():n.version||"";return e?"?v="+e:""}(),y.appendChild(h),!h.attachEvent||h.attachEvent.toString&&h.attachEvent.toString().indexOf("[native code")<0||i?h.addEventListener("load",function(e){c(e,v)},!1):h.attachEvent("onreadystatechange",function(e){c(e,v)}),n.modules[d]=v}return p},r.prototype.getStyle=function(t,n){var r=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return r[r.getPropertyValue?"getPropertyValue":"getAttribute"](n)},r.prototype.link=function(e,r,o){var i=this,u=t.createElement("link"),l=t.getElementsByTagName("head")[0];"string"==typeof r&&(o=r);var c=(o||e).replace(/\.|\//g,""),s=u.id="layuicss-"+c,p=0;return u.rel="stylesheet",u.href=e+(n.debug?"?v="+(new Date).getTime():""),u.media="all",t.getElementById(s)||l.appendChild(u),"function"!=typeof r?i:(function f(){return++p>1e3*n.timeout/100?a(e+" timeout"):void(1989===parseInt(i.getStyle(t.getElementById(s),"width"))?function(){r()}():setTimeout(f,100))}(),i)},n.callback={},r.prototype.factory=function(e){if(layui[e])return"function"==typeof n.callback[e]?n.callback[e]:null},r.prototype.addcss=function(e,t,r){return layui.link(n.dir+"css/"+e,t,r)},r.prototype.img=function(e,t,n){var r=new Image;return r.src=e,r.complete?t(r):(r.onload=function(){r.onload=null,"function"==typeof t&&t(r)},void(r.onerror=function(e){r.onerror=null,"function"==typeof n&&n(e)}))},r.prototype.config=function(e){e=e||{};for(var t in e)n[t]=e[t];return this},r.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),r.prototype.extend=function(e){var t=this;e=e||{};for(var n in e)t[n]||t.modules[n]?a("模块名 "+n+" 已被占用"):t.modules[n]=e[n];return t},r.prototype.router=function(e){var t=this,e=e||location.hash,n={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(e)?(e=e.replace(/^#\//,""),n.href="/"+e,e=e.replace(/([^#])(#.*$)/,"$1").split("/")||[],t.each(e,function(e,t){/^\w+=/.test(t)?function(){t=t.split("="),n.search[t[0]]=t[1]}():n.path.push(t)}),n):n},r.prototype.url=function(e){var t=this,n={pathname:function(){var t=e?function(){var t=(e.match(/\.[^.]+?\/.+/)||[])[0]||"";return t.replace(/^[^\/]+/,"").replace(/\?.+/,"")}():location.pathname;return t.replace(/^\//,"").split("/")}(),search:function(){var n={},r=(e?function(){var t=(e.match(/\?.+/)||[])[0]||"";return t.replace(/\#.+/,"")}():location.search).replace(/^\?+/,"").split("&");return t.each(r,function(e,t){var r=t.indexOf("="),o=function(){return r<0?t.substr(0,t.length):0!==r&&t.substr(0,r)}();o&&(n[o]=r>0?t.substr(r+1):null)}),n}(),hash:t.router(function(){return e?(e.match(/#.+/)||[])[0]||"":location.hash}())};return n},r.prototype.data=function(t,n,r){if(t=t||"layui",r=r||localStorage,e.JSON&&e.JSON.parse){if(null===n)return delete r[t];n="object"==typeof n?n:{key:n};try{var o=JSON.parse(r[t])}catch(a){var o={}}return"value"in n&&(o[n.key]=n.value),n.remove&&delete o[n.key],r[t]=JSON.stringify(o),n.key?o[n.key]:o}},r.prototype.sessionData=function(e,t){return this.data(e,t,sessionStorage)},r.prototype.device=function(t){var n=navigator.userAgent.toLowerCase(),r=function(e){var t=new RegExp(e+"/([^\\s\\_\\-]+)");return e=(n.match(t)||[])[1],e||!1},o={os:function(){return/windows/.test(n)?"windows":/linux/.test(n)?"linux":/iphone|ipod|ipad|ios/.test(n)?"ios":/mac/.test(n)?"mac":void 0}(),ie:function(){return!!(e.ActiveXObject||"ActiveXObject"in e)&&((n.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:r("micromessenger")};return t&&!o[t]&&(o[t]=r(t)),o.android=/android/.test(n),o.ios="ios"===o.os,o.mobile=!(!o.android&&!o.ios),o},r.prototype.hint=function(){return{error:a}},r.prototype.each=function(e,t){var n,r=this;if("function"!=typeof t)return r;if(e=e||[],e.constructor===Object){for(n in e)if(t.call(e[n],n,e[n]))break}else for(n=0;na?1:o 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/view/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DelphiWebMVC 6 | 7 | 8 | 9 | 10 | 11 |
12 |

Welcome DelphiWebMVC

13 | 14 |
15 | 23 |
24 | <#if #{kk} gt 10 and #{dd} eq 'ok' and #{data.name} eq '你好'> 25 |

hello

26 | <#else> 27 |

no hello

28 | 29 | #{data} 30 |
#{data.name}
31 |
#{data.sex}
32 |
#{data.idcard}
33 |
34 |

#{msg}

35 |
36 |

进入系统演示

37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/view/login.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <#include file="include.html" /> 6 | MVC案例 7 | 8 | 9 | 10 |
11 | 12 |
13 | 14 |
15 |
16 |
17 |
登录
18 |
19 | 20 | 21 | 22 | 23 | 29 | 30 | 31 | 32 | 38 | 39 | 40 | 41 | 47 | 48 | 49 | 50 | 55 | 56 | 57 | 58 | 59 | 66 | 67 |
账号 24 |
25 | 27 |
28 |
密码 33 |
34 | 36 |
37 |
验证码 42 |
43 | 45 |
46 |
51 |
52 | 53 |
54 |
60 | 61 |
62 | 63 | 64 |
65 |
68 | 账号:admin 密码:admin 69 |
70 |
71 |
72 | 73 |
74 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/view/main/aa.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DelphiWebMVC 6 | 7 | 8 | 9 | 10 | 11 |
12 |

Welcome DelphiWebMVC

13 | 14 |
15 | 23 |
24 | <#if #{kk} gt 10 and #{dd} eq 'ok' and #{data.name} eq '你好'> 25 |

hello

26 | <#else> 27 |

no hello

28 | 29 |
#{data.name}
30 |
#{data.sex}
31 |
#{data.idcard}
32 |
33 |

#{msg}

34 |
35 |

进入系统演示

36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/view/main/main.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | DelphiWebMVC 7 | <#include file="/include.html" /> 8 | 9 | 10 | 11 | 12 | 13 |
14 |
15 | 18 | 19 | 20 | 34 |
35 | 36 |
37 |
38 | 39 | 54 |
55 |
56 | 57 |
58 | 59 |
60 |
    61 |
  • 首页
  • 62 |
63 |
64 |
65 | 66 |
67 |
68 | 69 |
70 | 71 |
72 | 73 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/view/user/add.html: -------------------------------------------------------------------------------- 1 | <#include file="/include.html" /> 2 | 3 | 4 | 5 |
6 | 7 |
8 |
9 |
10 | 11 |
12 | 17 |
18 |
19 |
20 | 21 |
22 | 24 |
25 |
26 |
27 | 28 |
29 | 31 |
32 |
33 |
34 | 35 |
36 | 38 |
39 |
40 | 41 |
42 |
43 | 44 | 45 |
46 |
47 |
48 | 49 |
50 | 51 |
52 | 53 | -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/view/user/edit.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 | 6 |
7 |
8 | 9 |
10 | 15 |
16 |
17 |
18 | 19 |
20 | 22 |
23 |
24 |
25 | 26 |
27 | 29 |
30 |
31 |
32 | 33 |
34 | 36 |
37 |
38 | 39 |
40 | 41 |
42 | 43 |
44 | 45 | -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/view/user/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DelphiWebMVC 6 | <#include file="/include.html" /> 7 | 8 | 9 | 13 | 14 | 15 |
16 | 17 | 18 |
19 | 20 | 21 |
22 | 28 |
29 | 30 |
31 | 32 | 33 | 34 |
35 |
36 |
37 |
38 |
39 |
40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /Demo/Publish/WebRoot/view/user/print.html: -------------------------------------------------------------------------------- 1 | <#include file="/include.html" /> 2 |
3 |
4 | 5 | 6 |
7 |
8 |
9 | 29 |
30 |

用户花名册

31 |
32 |
打印时间:#{nowdate}
33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | <#list data=list item=i> 41 | 42 | 43 | 44 | 45 | 46 | 47 |
用户名姓名登记日期
#{i.username}#{i.realname}#{i.uptime}
48 | 49 | 50 | 51 | 72 |
-------------------------------------------------------------------------------- /Demo/Publish/libmysql.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/libmysql.dll -------------------------------------------------------------------------------- /Demo/Publish/mvc.ini: -------------------------------------------------------------------------------- 1 | [ResPath] 2 | Path= 3 | -------------------------------------------------------------------------------- /Demo/Publish/sqlite.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Publish/sqlite.db -------------------------------------------------------------------------------- /Demo/Publish/服务卸载.bat: -------------------------------------------------------------------------------- 1 | WebDemo.exe /uninstall -------------------------------------------------------------------------------- /Demo/Publish/服务安装.bat: -------------------------------------------------------------------------------- 1 | WebDemo.exe /install -------------------------------------------------------------------------------- /Demo/Service/IndexService.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Service/IndexService.pas -------------------------------------------------------------------------------- /Demo/Service/MainService.pas: -------------------------------------------------------------------------------- 1 | unit MainService; 2 | 3 | interface 4 | 5 | uses 6 | System.SysUtils, System.Classes, MVC.JSON, MVC.DataSet, MVC.Service, mvc.DB; 7 | 8 | type 9 | TMainService = record 10 | function getMenu(): IDataSet; 11 | end; 12 | 13 | implementation 14 | 15 | uses 16 | TableMap; 17 | { TIndexService } 18 | 19 | function TMainService.getMenu(): IDataSet; 20 | var 21 | sql: ISQL; 22 | begin 23 | var conn: IConn := IIConn; 24 | sql := IISQL(Tb_dict_menu); 25 | sql.Order('s_id'); 26 | Result := conn.Db.Find(sql); 27 | end; 28 | 29 | end. 30 | 31 | -------------------------------------------------------------------------------- /Demo/Service/Map/SQLMap.pas: -------------------------------------------------------------------------------- 1 | unit SQLMap; 2 | 3 | interface 4 | 5 | const 6 | sql_users = 'sql\user.xml'; 7 | 8 | 9 | implementation 10 | 11 | end. 12 | 13 | -------------------------------------------------------------------------------- /Demo/Service/Map/ServiceMap.pas: -------------------------------------------------------------------------------- 1 | unit ServiceMap; 2 | 3 | interface 4 | 5 | uses 6 | MainService, RoleService, UserService, IndexService; 7 | 8 | type 9 | TServiceMap = record 10 | public 11 | Index: TIndexService; 12 | Main: TMainService; 13 | Role: TRoleService; 14 | User: TUserService; 15 | end; 16 | 17 | implementation 18 | 19 | end. 20 | 21 | -------------------------------------------------------------------------------- /Demo/Service/Map/TableMap.pas: -------------------------------------------------------------------------------- 1 | unit TableMap; 2 | 3 | interface 4 | 5 | const 6 | Tb_Uses = 'users'; 7 | Tb_dict_menu = 'dict_menu'; 8 | tb_dict_role = 'dict_role'; 9 | 10 | 11 | implementation 12 | 13 | end. 14 | 15 | -------------------------------------------------------------------------------- /Demo/Service/RoleService.pas: -------------------------------------------------------------------------------- 1 | unit RoleService; 2 | 3 | interface 4 | 5 | uses 6 | System.SysUtils, System.Classes, MVC.JSON, MVC.DataSet, MVC.Service, mvc.DB; 7 | 8 | type 9 | TRoleService = record 10 | function getdata(): IDataSet; 11 | end; 12 | 13 | implementation 14 | 15 | uses 16 | TableMap; 17 | 18 | 19 | { TRoleService } 20 | 21 | function TRoleService.getdata: IDataSet; 22 | begin 23 | var conn: Iconn := IIConn; 24 | var sql: ISQL := IISQL(tb_dict_role); 25 | Result := conn.db.Find(sql); 26 | end; 27 | 28 | end. 29 | 30 | -------------------------------------------------------------------------------- /Demo/Service/UserService.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/Demo/Service/UserService.pas -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/BSD.kqueue.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { Delphi cross platform socket library } 4 | { } 5 | { Copyright (c) 2017 WiNDDRiVER(soulawing@gmail.com) } 6 | { } 7 | { Homepage: https://github.com/winddriver/Delphi-Cross-Socket } 8 | { } 9 | {******************************************************************************} 10 | unit BSD.kqueue; 11 | 12 | interface 13 | 14 | uses 15 | Posix.Base, Posix.Time; 16 | 17 | const 18 | EVFILT_READ = -1; 19 | EVFILT_WRITE = -2; 20 | EVFILT_AIO = -3; { attached to aio requests } 21 | EVFILT_VNODE = -4; { attached to vnodes } 22 | EVFILT_PROC = -5; { attached to struct proc } 23 | EVFILT_SIGNAL = -6; { attached to struct proc } 24 | EVFILT_TIMER = -7; { timers } 25 | EVFILT_NETDEV = -8; { network devices } 26 | EVFILT_FS = -9; { filesystem events } 27 | 28 | EVFILT_SYSCOUNT = 9; 29 | 30 | EV_ADD = $0001; { add event to kq } 31 | EV_DELETE = $0002; { delete event from kq } 32 | EV_ENABLE = $0004; { enable event } 33 | EV_DISABLE = $0008; { disable event (not reported) } 34 | 35 | { flags } 36 | EV_ONESHOT = $0010; { only report one occurrence } 37 | EV_CLEAR = $0020; { clear event state after reporting } 38 | EV_RECEIPT = $0040; { force EV_ERROR on success, data=0 } 39 | EV_DISPATCH = $0080; { disable event after reporting } 40 | EV_SYSFLAGS = $F000; { reserved by system } 41 | EV_FLAG1 = $2000; { filter-specific flag } 42 | 43 | { returned values } 44 | EV_EOF = $8000; { EOF detected } 45 | EV_ERROR = $4000; { error, data contains errno } 46 | 47 | { data/hint flags for EVFILT_READ|WRITE, shared with userspace } 48 | NOTE_LOWAT = $0001; { low water mark } 49 | 50 | { data/hint flags for EVFILT_VNODE, shared with userspace } 51 | NOTE_DELETE = $0001; { vnode was removed } 52 | NOTE_WRITE = $0002; { data contents changed } 53 | NOTE_EXTEND = $0004; { size increased } 54 | NOTE_ATTRIB = $0008; { attributes changed } 55 | NOTE_LINK = $0010; { link count changed } 56 | NOTE_RENAME = $0020; { vnode was renamed } 57 | NOTE_REVOKE = $0040; { vnode access was revoked } 58 | 59 | { data/hint flags for EVFILT_PROC, shared with userspace } 60 | NOTE_EXIT = $80000000; { process exited } 61 | NOTE_FORK = $40000000; { process forked } 62 | NOTE_EXEC = $20000000; { process exec'd } 63 | NOTE_PCTRLMASK = $f0000000; { mask for hint bits } 64 | NOTE_PDATAMASK = $000fffff; { mask for pid } 65 | 66 | { additional flags for EVFILT_PROC } 67 | NOTE_TRACK = $00000001; { follow across forks } 68 | NOTE_TRACKERR = $00000002; { could not track child } 69 | NOTE_CHILD = $00000004; { am a child process } 70 | 71 | { data/hint flags for EVFILT_NETDEV, shared with userspace } 72 | NOTE_LINKUP = $0001; { link is up } 73 | NOTE_LINKDOWN = $0002; { link is down } 74 | NOTE_LINKINV = $0004; { link state is invalid } 75 | 76 | type 77 | PKEvent = ^TKEvent; 78 | TKEvent = record 79 | Ident : UIntPtr; { identifier for this event } 80 | Filter : SmallInt; { filter for event } 81 | Flags : Word; 82 | FFlags : Cardinal; 83 | Data : IntPtr; 84 | uData : Pointer; { opaque user data identifier } 85 | end; 86 | 87 | function kqueue: Integer; cdecl; 88 | external libc name _PU + 'kqueue'; 89 | {$EXTERNALSYM kqueue} 90 | 91 | function kevent(kq: Integer; ChangeList: PKEvent; nChanged: Integer; 92 | EventList: PKevent; nEvents: Integer; Timeout: PTimeSpec): Integer; cdecl; 93 | external libc name _PU + 'kevent'; 94 | {$EXTERNALSYM kevent} 95 | 96 | procedure EV_SET(kevp: PKEvent; const aIdent: UIntPtr; const aFilter: SmallInt; 97 | const aFlags: Word; const aFFlags: Cardinal; const aData: IntPtr; 98 | const auData: Pointer); inline; 99 | 100 | implementation 101 | 102 | procedure EV_SET(kevp: PKEvent; const aIdent: UIntPtr; const aFilter: SmallInt; 103 | const aFlags: Word; const aFFlags: Cardinal; const aData: IntPtr; 104 | const auData: Pointer); inline; 105 | begin 106 | kevp^.Ident := aIdent; 107 | kevp^.Filter := aFilter; 108 | kevp^.Flags := aFlags; 109 | kevp^.FFlags := aFFlags; 110 | kevp^.Data := aData; 111 | kevp^.uData := auData; 112 | end; 113 | 114 | end. 115 | -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Linux.epoll.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { Delphi cross platform socket library } 4 | { } 5 | { Copyright (c) 2017 WiNDDRiVER(soulawing@gmail.com) } 6 | { } 7 | { Homepage: https://github.com/winddriver/Delphi-Cross-Socket } 8 | { } 9 | {******************************************************************************} 10 | unit Linux.epoll; 11 | 12 | interface 13 | 14 | uses 15 | Posix.Base, Posix.Signal; 16 | 17 | const 18 | EPOLLIN = $01; { The associated file is available for read(2) operations. } 19 | EPOLLPRI = $02; { There is urgent data available for read(2) operations. } 20 | EPOLLOUT = $04; { The associated file is available for write(2) operations. } 21 | EPOLLERR = $08; { Error condition happened on the associated file descriptor. } 22 | EPOLLHUP = $10; { Hang up happened on the associated file descriptor. } 23 | EPOLLONESHOT = $40000000; { Sets the One-Shot behaviour for the associated file descriptor. } 24 | EPOLLET = $80000000; { Sets the Edge Triggered behaviour for the associated file descriptor. } 25 | 26 | { Valid opcodes ( "op" parameter ) to issue to epoll_ctl } 27 | EPOLL_CTL_ADD = 1; 28 | EPOLL_CTL_DEL = 2; 29 | EPOLL_CTL_MOD = 3; 30 | 31 | type 32 | EPoll_Data = record 33 | case integer of 34 | 0: (ptr: pointer); 35 | 1: (fd: Integer); 36 | 2: (u32: Cardinal); 37 | 3: (u64: UInt64); 38 | end; 39 | TEPoll_Data = Epoll_Data; 40 | PEPoll_Data = ^Epoll_Data; 41 | 42 | EPoll_Event = {$IFDEF CPUX64}packed {$ENDIF}record 43 | Events: Cardinal; 44 | Data : TEpoll_Data; 45 | end; 46 | 47 | TEPoll_Event = Epoll_Event; 48 | PEpoll_Event = ^Epoll_Event; 49 | 50 | { open an epoll file descriptor } 51 | function epoll_create(size: Integer): Integer; cdecl; 52 | external libc name _PU + 'epoll_create'; 53 | {$EXTERNALSYM epoll_create} 54 | 55 | { control interface for an epoll descriptor } 56 | function epoll_ctl(epfd, op, fd: Integer; event: pepoll_event): Integer; cdecl; 57 | external libc name _PU + 'epoll_ctl'; 58 | {$EXTERNALSYM epoll_ctl} 59 | 60 | { wait for an I/O event on an epoll file descriptor } 61 | function epoll_wait(epfd: Integer; events: pepoll_event; maxevents, timeout: Integer): Integer; cdecl; 62 | external libc name _PU + 'epoll_wait'; 63 | {$EXTERNALSYM epoll_wait} 64 | 65 | { create a file descriptor for event notification } 66 | function eventfd(initval: Cardinal; flags: Integer): Integer; cdecl; 67 | external libc name _PU + 'eventfd'; 68 | {$EXTERNALSYM eventfd} 69 | 70 | implementation 71 | 72 | end. 73 | -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Net.CrossHttpMiddleware.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/CrossSocket/Net.CrossHttpMiddleware.pas -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Net.CrossHttpParams.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/CrossSocket/Net.CrossHttpParams.pas -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Net.CrossHttpRouter.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/CrossSocket/Net.CrossHttpRouter.pas -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Net.CrossServer.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/CrossSocket/Net.CrossServer.pas -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Net.CrossSocket.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { Delphi cross platform socket library } 4 | { } 5 | { Copyright (c) 2017 WiNDDRiVER(soulawing@gmail.com) } 6 | { } 7 | { Homepage: https://github.com/winddriver/Delphi-Cross-Socket } 8 | { } 9 | {******************************************************************************} 10 | unit Net.CrossSocket; 11 | 12 | interface 13 | 14 | uses 15 | Net.CrossSocket.Base, 16 | {$IFDEF MSWINDOWS} 17 | Net.CrossSocket.Iocp 18 | {$ELSEIF defined(MACOS) or defined(IOS)} 19 | Net.CrossSocket.Kqueue 20 | {$ELSEIF defined(LINUX) or defined(ANDROID)} 21 | Net.CrossSocket.Epoll 22 | {$ENDIF}; 23 | 24 | type 25 | TCrossListen = 26 | {$IFDEF MSWINDOWS} 27 | TIocpListen 28 | {$ELSEIF defined(MACOS) or defined(IOS)} 29 | TKqueueListen 30 | {$ELSEIF defined(LINUX) or defined(ANDROID)} 31 | TEpollListen 32 | {$ENDIF}; 33 | 34 | TCrossConnection = 35 | {$IFDEF MSWINDOWS} 36 | TIocpConnection 37 | {$ELSEIF defined(MACOS) or defined(IOS)} 38 | TKqueueConnection 39 | {$ELSEIF defined(LINUX) or defined(ANDROID)} 40 | TEpollConnection 41 | {$ENDIF}; 42 | 43 | TCrossSocket = 44 | {$IFDEF MSWINDOWS} 45 | TIocpCrossSocket 46 | {$ELSEIF defined(MACOS) or defined(IOS)} 47 | TKqueueCrossSocket 48 | {$ELSEIF defined(LINUX) or defined(ANDROID)} 49 | TEpollCrossSocket 50 | {$ENDIF}; 51 | 52 | implementation 53 | 54 | end. 55 | 56 | -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Net.CrossSslDemoCert.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { Delphi cross platform socket library } 4 | { } 5 | { Copyright (c) 2017 WiNDDRiVER(soulawing@gmail.com) } 6 | { } 7 | { Homepage: https://github.com/winddriver/Delphi-Cross-Socket } 8 | { } 9 | {******************************************************************************} 10 | unit Net.CrossSslDemoCert; 11 | 12 | interface 13 | 14 | const 15 | SSL_SERVER_CERT: string = 16 | '-----BEGIN CERTIFICATE-----' + sLineBreak + 17 | 'MIIDRDCCAiwCAf8wDQYJKoZIhvcNAQEFBQAwaDELMAkGA1UEBhMCVVMxCzAJBgNV' + sLineBreak + 18 | 'BAgMAkNBMQswCQYDVQQHDAJMQTEVMBMGA1UECgwMVGVzdCBSb290IENBMQswCQYD' + sLineBreak + 19 | 'VQQLDAJJVDEbMBkGA1UEAwwSd3d3LnRlc3Ryb290Y2EuY29tMB4XDTEzMDIyNzE4' + sLineBreak + 20 | 'MjE1NloXDTIzMDIyNTE4MjE1NlowaDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNB' + sLineBreak + 21 | 'MQswCQYDVQQHDAJMQTEVMBMGA1UECgwMVGVzdCBDb21wYW55MQswCQYDVQQLDAJJ' + sLineBreak + 22 | 'VDEbMBkGA1UEAwwSd3d3LnRlc3RzZXJ2ZXIuY29tMIIBIjANBgkqhkiG9w0BAQEF' + sLineBreak + 23 | 'AAOCAQ8AMIIBCgKCAQEAzkHv+S30g5Dc+F1RJ1PUq9Hbh1YkEUJdYEj7ti+UfONV' + sLineBreak + 24 | 'NOT24hXzg8zaNSVO2Bhm+l8vzOVYMnjK9xcGSq5R5I633+lEeFdxURfsSJv9Vymq' + sLineBreak + 25 | 'tHUj5eNkmjzWBVrf4HvnZTJtRJljs941zYUgyJT9tkQXaerGFKJ6sfdXYfhGrkuK' + sLineBreak + 26 | 'gA1e71TwpRFYcfyYbQ3htENTh2CFBv7l5gjrITcmEJwpcU3U4nx4ZTr0IPLmV2kr' + sLineBreak + 27 | 'K8IJysY4dqgRcmduEI5ZgbYGkdG8L7QjggFXA6QNDPu8DfmXeeqS0gIffEm22bk7' + sLineBreak + 28 | 'b2fMnPfnFsJLsDdyhgrdYktnWhtZNij0y80tV4YCTwIDAQABMA0GCSqGSIb3DQEB' + sLineBreak + 29 | 'BQUAA4IBAQDMLn9VnUQt6BWx73J1lExYO/LWulMOnMR/WSVFy9dSwry+E807ekMY' + sLineBreak + 30 | 'WC8b3gpgDIqfkZjmttE9VtAdss2Baten+oBW+K13339sxHvcn30OxOs/Bln0yvaZ' + sLineBreak + 31 | 'Be+Zir7iE450b1IdYI98PMTSKgrK2e3vx/uUOCgG2yvs6/1v5rz5er/M1SQNzdMS' + sLineBreak + 32 | 'blelHWRQ1/ExwoUWBfIBkx/A4lTPmLgoC9fnXSiLhHKbZdfCJD8KLzEV0Se+ocn/' + sLineBreak + 33 | 'vl+6tlcUznap0TsRQpC67T/NGUimxdAhb6G1/U6z9bq0QQIuDxpOIpvwIgLvfRFx' + sLineBreak + 34 | 'qZQxmxOcK28fejHngmek7ZJNYKQbNewP' + sLineBreak + 35 | '-----END CERTIFICATE-----' + sLineBreak; 36 | 37 | SSL_SERVER_PKEY: string = 38 | '-----BEGIN PRIVATE KEY-----' + sLineBreak + 39 | 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDOQe/5LfSDkNz4' + sLineBreak + 40 | 'XVEnU9Sr0duHViQRQl1gSPu2L5R841U05PbiFfODzNo1JU7YGGb6Xy/M5VgyeMr3' + sLineBreak + 41 | 'FwZKrlHkjrff6UR4V3FRF+xIm/1XKaq0dSPl42SaPNYFWt/ge+dlMm1EmWOz3jXN' + sLineBreak + 42 | 'hSDIlP22RBdp6sYUonqx91dh+EauS4qADV7vVPClEVhx/JhtDeG0Q1OHYIUG/uXm' + sLineBreak + 43 | 'COshNyYQnClxTdTifHhlOvQg8uZXaSsrwgnKxjh2qBFyZ24QjlmBtgaR0bwvtCOC' + sLineBreak + 44 | 'AVcDpA0M+7wN+Zd56pLSAh98SbbZuTtvZ8yc9+cWwkuwN3KGCt1iS2daG1k2KPTL' + sLineBreak + 45 | 'zS1XhgJPAgMBAAECggEAIT83s27Y7yw2skI4hqJYsamOPW6BOdb8vjyFdoSM5uSu' + sLineBreak + 46 | 'I2yU7zSioCgxNEfjQaoNT2ZwihKd+OTHsrSfawJWaQUoVot/YfaWaX/1sm6Sk64/' + sLineBreak + 47 | 'uf733mKdIM+VoB9Z3xGZ5xIN0vT2wVOcUJiZBDwf+XVYYNZbP5BBPtaj20LuAcIZ' + sLineBreak + 48 | 'OmW9uigdXQkQ1dylUkRPitjJ92bbysrTr621JTBSmvKnF7ctcF/Ql6VfS5RcqzYI' + sLineBreak + 49 | '6U1vozoFkjmUnExlYZHC6qKCFG73Z+IcC7ojdMpzMp4/EqiveV/9EVdFlLRB1YAa' + sLineBreak + 50 | 'tND93xU9mo7L26XQzy79Xf2dWRUgUvaJ/7EvLA1RoQKBgQD2ZhJ9ogqfQ0ahq0D6' + sLineBreak + 51 | '5neZo6bPbckEKshv1GKR5ixnYpPp1kCIxM8oIzb9fOvTX4MOMeRzPJyrJNwhVgfY' + sLineBreak + 52 | 'otWLrvkNviGHXN0frmkdj/Y/WSWh7clzzwXmGbB/8NPG4yzREvQ8vhKBkAmZln6K' + sLineBreak + 53 | 'ICl8J5NxOxF6GgYJ793GcsfZVQKBgQDWS3DYMVQ3eRgFajkQ/8+Gacgdu+8/SyM1' + sLineBreak + 54 | 'WptHOlPvKfqg3nZYPlAjMnVmk0Q7l/d2EtFBPP07/Jz0IvC/pMz0S8XfW/NigcRn' + sLineBreak + 55 | '0R5Nci3BXbmQEjxNGt0m0sX4C4/Bx8ei8pugipX96OemT/bWP05RskL6tWsofGsb' + sLineBreak + 56 | '8zgIQcldEwKBgCyx90iyzBp3qahJ2E+q3qcP+IJH9965pAIlFHxCtGtMhmg0ZSBq' + sLineBreak + 57 | 'EunE+YSh1GVTPgKlKjt9Ey44UXX6lRHG99WOt762bn6Pac0FZivmoVR8Z0coSxKm' + sLineBreak + 58 | 'yvsiTdHnbYL2UnraZVNfZxv5dMRXeDy1+NB8nVI81L7BWbcTu7bzuyzBAoGAY0j4' + sLineBreak + 59 | 's3HHbxwvwPKCFhovcDs6eGxGYLDTUzjzkIC5uqlccYQgmKnmPyh1tFyu1F2ITbBS' + sLineBreak + 60 | 'O0OioFRd887sdB5KxzUELIRRs2YkNWVyALfR8zEVdGa+gYrcw8wL5OyWYlXJbPmy' + sLineBreak + 61 | 'mSMcc1OhYDDUUFdsVfWdisLbLxrWFVEOuOSiAvkCgYEA2viHsxoFxOrhnZQOhaLT' + sLineBreak + 62 | 'RPrgaSojv9pooHQ6fJwplewt91tb1OchDIeZk9Sl1hqPAXB0167of43GDOw2vfnq' + sLineBreak + 63 | 'Ust7RtiyJhQhSkz0qp4aH4P9l+dZJIWnpgjcyWkcz893br9gEuVnQgh13V/lcxOn' + sLineBreak + 64 | 'JtpaCFuHNTU3PcFiuQW+cN0=' + sLineBreak + 65 | '-----END PRIVATE KEY-----' + sLineBreak; 66 | 67 | implementation 68 | 69 | end. 70 | -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Net.CrossSslServer.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/CrossSocket/Net.CrossSslServer.pas -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Net.CrossSslSocket.Base.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/CrossSocket/Net.CrossSslSocket.Base.pas -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Net.CrossSslSocket.pas: -------------------------------------------------------------------------------- 1 | unit Net.CrossSslSocket; 2 | 3 | interface 4 | 5 | uses 6 | Net.CrossSocket.Base, 7 | Net.CrossSslSocket.Base 8 | {$IFDEF __MBED_TLS__} 9 | ,Net.CrossSslSocket.MbedTls 10 | {$ELSE} 11 | ,Net.CrossSslSocket.OpenSSL 12 | {$ENDIF}; 13 | 14 | type 15 | TCrossSslConnection = 16 | {$IFDEF __MBED_TLS__} 17 | TCrossMbedTlsConnection 18 | {$ELSE} 19 | TCrossOpenSslConnection 20 | {$ENDIF}; 21 | 22 | TCrossSslSocket = 23 | {$IFDEF __MBED_TLS__} 24 | TCrossMbedTlsSocket 25 | {$ELSE} 26 | TCrossOpenSslSocket 27 | {$ENDIF}; 28 | 29 | implementation 30 | 31 | end. 32 | -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Net.Posix.inc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/CrossSocket/Net.Posix.inc -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Net.RawSocket.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/CrossSocket/Net.RawSocket.pas -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Net.SocketAPI.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/CrossSocket/Net.SocketAPI.pas -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Utils.Logger.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/CrossSocket/Utils.Logger.pas -------------------------------------------------------------------------------- /MVC5.0/CrossSocket/Utils.RegEx.pas: -------------------------------------------------------------------------------- 1 | {******************************************************************************} 2 | { } 3 | { Delphi cross platform socket library } 4 | { } 5 | { Copyright (c) 2017 WiNDDRiVER(soulawing@gmail.com) } 6 | { } 7 | { Homepage: https://github.com/winddriver/Delphi-Cross-Socket } 8 | { } 9 | {******************************************************************************} 10 | unit Utils.RegEx; 11 | 12 | interface 13 | 14 | uses 15 | System.RegularExpressions, System.RegularExpressionsCore; 16 | 17 | type 18 | TMatchEvaluatorProc = reference to function(const AMatch: TMatch): string; 19 | 20 | IScopeEvaluator = interface 21 | function GetMatchEvaluator: TMatchEvaluator; 22 | 23 | property MatchEvaluator: TMatchEvaluator read GetMatchEvaluator; 24 | end; 25 | 26 | TScopeEvaluator = class(TInterfacedObject, IScopeEvaluator) 27 | private 28 | FMatchEvaluatorProc: TMatchEvaluatorProc; 29 | 30 | function MatchEvaluator(const AMatch: TMatch): string; 31 | function GetMatchEvaluator: TMatchEvaluator; 32 | public 33 | constructor Create(AMatchEvaluatorProc: TMatchEvaluatorProc); 34 | end; 35 | 36 | TRegExHelper = record helper for TRegEx 37 | function Replace(const Input: string; Evaluator: TMatchEvaluatorProc): string; overload; 38 | function Replace(const Input: string; Evaluator: TMatchEvaluatorProc; Count: Integer): string; overload; 39 | class function Replace(const Input, Pattern: string; Evaluator: TMatchEvaluatorProc): string; overload; static; 40 | class function Replace(const Input, Pattern: string; Evaluator: TMatchEvaluatorProc; Options: TRegExOptions): string; overload; static; 41 | end; 42 | 43 | implementation 44 | 45 | { TScopeEvaluator } 46 | 47 | constructor TScopeEvaluator.Create(AMatchEvaluatorProc: TMatchEvaluatorProc); 48 | begin 49 | FMatchEvaluatorProc := AMatchEvaluatorProc; 50 | end; 51 | 52 | function TScopeEvaluator.GetMatchEvaluator: TMatchEvaluator; 53 | begin 54 | Result := Self.MatchEvaluator; 55 | end; 56 | 57 | function TScopeEvaluator.MatchEvaluator(const AMatch: TMatch): string; 58 | begin 59 | if Assigned(FMatchEvaluatorProc) then 60 | Result := FMatchEvaluatorProc(AMatch); 61 | end; 62 | 63 | { TRegExHelper } 64 | 65 | function TRegExHelper.Replace(const Input: string; 66 | Evaluator: TMatchEvaluatorProc; Count: Integer): string; 67 | var 68 | LScopeEvaluator: IScopeEvaluator; 69 | begin 70 | LScopeEvaluator := TScopeEvaluator.Create(Evaluator); 71 | Result := Self.Replace(Input, LScopeEvaluator.MatchEvaluator, Count); 72 | end; 73 | 74 | function TRegExHelper.Replace(const Input: string; 75 | Evaluator: TMatchEvaluatorProc): string; 76 | var 77 | LScopeEvaluator: IScopeEvaluator; 78 | begin 79 | LScopeEvaluator := TScopeEvaluator.Create(Evaluator); 80 | Result := Self.Replace(Input, LScopeEvaluator.MatchEvaluator); 81 | end; 82 | 83 | class function TRegExHelper.Replace(const Input, Pattern: string; 84 | Evaluator: TMatchEvaluatorProc; Options: TRegExOptions): string; 85 | var 86 | LScopeEvaluator: IScopeEvaluator; 87 | begin 88 | LScopeEvaluator := TScopeEvaluator.Create(Evaluator); 89 | Result := Replace(Input, Pattern, LScopeEvaluator.MatchEvaluator, Options); 90 | end; 91 | 92 | class function TRegExHelper.Replace(const Input, Pattern: string; 93 | Evaluator: TMatchEvaluatorProc): string; 94 | var 95 | LScopeEvaluator: IScopeEvaluator; 96 | begin 97 | LScopeEvaluator := TScopeEvaluator.Create(Evaluator); 98 | Result := Replace(Input, Pattern, LScopeEvaluator.MatchEvaluator); 99 | end; 100 | 101 | end. 102 | -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.App.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.App.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.Controller.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.Controller.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.DES.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.DES.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.DM.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.DM.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.DSQuery.pas: -------------------------------------------------------------------------------- 1 | unit MVC.DSQuery; 2 | 3 | interface 4 | 5 | uses 6 | FireDAC.Phys.FBDef, FireDAC.Phys.FB, FireDAC.DApt, Data.DB, 7 | FireDAC.Comp.Client; 8 | 9 | type 10 | TDSQuery = class(TFDQuery) 11 | private 12 | function GetB(key: string): boolean; 13 | function GetD(key: string): TDateTime; 14 | function GetF(key: string): double; 15 | function GetI(key: string): integer; 16 | function GetS(key: string): string; 17 | procedure SetB(key: string; const Value: boolean); 18 | procedure SetD(key: string; const Value: TDateTime); 19 | procedure SetF(key: string; const Value: double); 20 | procedure SetI(key: string; const Value: integer); 21 | procedure SetS(key: string; const Value: string); 22 | public 23 | property S[key: string]: string read GetS write SetS; 24 | property I[key: string]: integer read GetI write SetI; 25 | property B[key: string]: boolean read GetB write SetB; 26 | property D[key: string]: TDateTime read GetD write SetD; 27 | property F[key: string]: double read GetF write SetF; 28 | end; 29 | 30 | implementation 31 | { TDSQuery } 32 | 33 | function TDSQuery.GetB(key: string): boolean; 34 | begin 35 | Result := FieldByName(key).value; 36 | end; 37 | 38 | function TDSQuery.GetD(key: string): TDateTime; 39 | begin 40 | Result := FieldByName(key).value; 41 | end; 42 | 43 | function TDSQuery.GetF(key: string): double; 44 | begin 45 | Result := FieldByName(key).value; 46 | end; 47 | 48 | function TDSQuery.GetI(key: string): integer; 49 | begin 50 | Result := FieldByName(key).value; 51 | end; 52 | 53 | function TDSQuery.GetS(key: string): string; 54 | begin 55 | Result := FieldByName(key).value; 56 | end; 57 | 58 | procedure TDSQuery.SetB(key: string; const Value: boolean); 59 | begin 60 | FieldByName(key).Value := Value; 61 | end; 62 | 63 | procedure TDSQuery.SetD(key: string; const Value: TDateTime); 64 | begin 65 | FieldByName(key).Value := Value; 66 | end; 67 | 68 | procedure TDSQuery.SetF(key: string; const Value: double); 69 | begin 70 | FieldByName(key).Value := Value; 71 | end; 72 | 73 | procedure TDSQuery.SetI(key: string; const Value: integer); 74 | begin 75 | FieldByName(key).Value := Value; 76 | end; 77 | 78 | procedure TDSQuery.SetS(key: string; const Value: string); 79 | begin 80 | FieldByName(key).Value := Value; 81 | end; 82 | 83 | end. 84 | 85 | -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.DataSet.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.DataSet.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.HttpCross.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.HttpCross.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.HttpMmt.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.HttpMmt.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.JWT.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.JWT.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.LogUnit.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.LogUnit.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.Main.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.Main.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.MmtHttp.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.MmtHttp.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.Net.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.Net.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.Service.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.Service.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.Tool.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.Tool.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.TplParser.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.TplParser.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.TplUnit.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.TplUnit.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.Verify.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/SDK/MVC.Verify.pas -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.WINServer.dfm: -------------------------------------------------------------------------------- 1 | object WINService: TWINService 2 | OldCreateOrder = False 3 | DisplayName = 'MVCWebService' 4 | OnStart = ServiceStart 5 | OnStop = ServiceStop 6 | Height = 150 7 | Width = 215 8 | end 9 | -------------------------------------------------------------------------------- /MVC5.0/SDK/MVC.WINServer.pas: -------------------------------------------------------------------------------- 1 | unit MVC.WINServer; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, Vcl.Graphics, 7 | Vcl.Controls, Vcl.SvcMgr, Vcl.Dialogs; 8 | 9 | type 10 | TMServiceType = Vcl.SvcMgr.TServiceType; 11 | 12 | TMStartType = Vcl.SvcMgr.TStartType; 13 | 14 | TWINService = class(TService) 15 | procedure ServiceStart(Sender: TService; var Started: Boolean); 16 | procedure ServiceStop(Sender: TService; var Stopped: Boolean); 17 | private { Private declarations } 18 | public 19 | function GetServiceController: TServiceController; override; 20 | procedure setParam(sName, sDisplayName: string; sServiceType: TMServiceType; sStartType: TMStartType); 21 | { Public declarations } 22 | end; 23 | 24 | var 25 | WINService: TWINService; 26 | 27 | 28 | implementation 29 | 30 | {$R *.dfm} 31 | uses 32 | MVC.App; 33 | 34 | procedure ServiceController(CtrlCode: DWord); stdcall; 35 | begin 36 | WINService.Controller(CtrlCode); 37 | 38 | end; 39 | 40 | function TWINService.GetServiceController: TServiceController; 41 | begin 42 | Result := ServiceController; 43 | end; 44 | 45 | procedure TWINService.ServiceStart(Sender: TService; var Started: Boolean); 46 | begin 47 | 48 | StartServer(); 49 | Started := true; 50 | end; 51 | 52 | procedure TWINService.ServiceStop(Sender: TService; var Stopped: Boolean); 53 | begin 54 | 55 | CloseServer(); 56 | Stopped := true; 57 | end; 58 | 59 | procedure TWINService.setParam(sName, sDisplayName: string; sServiceType: TMServiceType; sStartType: TMStartType); 60 | begin 61 | Name := sName; 62 | // Dependencies 63 | DisplayName := sDisplayName; 64 | ServiceType := sServiceType; 65 | StartType := sStartType; 66 | end; 67 | 68 | end. 69 | 70 | -------------------------------------------------------------------------------- /MVC5.0/SDK/_版本.txt: -------------------------------------------------------------------------------- 1 | V5.0.5 -------------------------------------------------------------------------------- /MVC5.0/mORMot/Delphinus.Info.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "{58455621-E9CB-4DDC-8812-7FF096576B21}", 3 | "name": "mORMot", 4 | "picture": ".\\SQLite3\\Documentation\\mORMot128.png", 5 | "package_compiler_min": 14, 6 | "compiler_min": 14 7 | } 8 | -------------------------------------------------------------------------------- /MVC5.0/mORMot/Delphinus.Install.json: -------------------------------------------------------------------------------- 1 | { 2 | "search_pathes": 3 | [ 4 | { 5 | "pathes": ".;.\\SQLite3;.\\CrossPlatform;.\\SynDBDataSet;.\\SQlite3\\DDD\\dom;.\\SQlite3\\DDD\\infra;.\\SQlite3\\DDD\\tools", 6 | "platforms": "Win32;Win64" 7 | } 8 | ], 9 | 10 | "browsing_pathes": 11 | [ 12 | { 13 | "pathes": ".;.\\SQLite3;.\\CrossPlatform;.\\SynDBDataSet;.\\SQlite3\\DDD\\dom;.\\SQlite3\\DDD\\infra;.\\SQlite3\\DDD\\tools", 14 | "platforms": "Win32;Win64" 15 | } 16 | ], 17 | 18 | "source_folders": 19 | [ 20 | { 21 | "folder": ".", 22 | "recursive": true, 23 | "filter": "*.*;*" 24 | } 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /MVC5.0/mORMot/ReadMe.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/ReadMe.txt -------------------------------------------------------------------------------- /MVC5.0/mORMot/SynDprUses.inc: -------------------------------------------------------------------------------- 1 | {$ifndef LVCL} 2 | {$ifdef FPC} // we may be on Kylix or upcoming Delphi for Linux 3 | {$ifdef Unix} // we may also be on Darwin / OSX 4 | cthreads, // should be the very first unit - before FastMM4 e.g. 5 | {$endif Unix} 6 | {$ifdef FPC_X64MM_WIN} // SynFPCx64MM is not fully validated on Windows yet 7 | {$ifdef MSWINDOWS} 8 | SynFPCx64MM, 9 | {$endif MSWINDOWS} 10 | {$else} 11 | {$ifdef FPC_X64MM} 12 | {$ifndef MSWINDOWS} 13 | SynFPCx64MM, 14 | {$endif MSWINDOWS} 15 | {$else} 16 | {$ifdef FPC_FASTMM4} 17 | FastMM4Messages in '..\RTL7\FastMM4Messages.pas', 18 | FastMM4 in '..\RTL7\FastMM4.pas', 19 | {$else} 20 | {$ifdef FPC_SYNJEMALLOC} 21 | SynFPCCMemAligned, // after "apt-get install libjemalloc1" 22 | {$else} 23 | {$ifdef FPC_SYNTBB} 24 | SynFPCCMemAligned, // after "apt-get install libtbb2" 25 | {$else} 26 | {$ifdef FPC_SYNCMEM} 27 | SynFPCCMemAligned, // you may also set FPC_NO_DEFAULT_MEMORYMANAGER 28 | {$else} 29 | {$ifdef FPC_CMEM} 30 | cmem, // you may also set FPC_NO_DEFAULT_MEMORYMANAGER 31 | {$endif FPC_CMEM} 32 | {$endif FPC_SYNCMEM} 33 | {$endif FPC_SYNTBB} 34 | {$endif FPC_SYNJEMALLOC} 35 | {$endif FPC_FASTMM4} 36 | {$endif FPC_X64MM} 37 | {$endif FPC_X64MM_WIN} 38 | {$ifdef Unix} // we may also be on Darwin / OSX 39 | {$ifdef Darwin} 40 | // iosxwstr, // optional WideString manager for Mac 41 | {$else} 42 | // cwstring, // optional WideString manager 43 | {$endif Darwin} 44 | {$else} 45 | {$ifopt D-} // at the moment, debug mode with cmem causes trouble 46 | //cmem, // default FPC's heap manager is very RAM hungry (one heap per thread) 47 | {$endif} 48 | {$endif Unix} 49 | {$else} // enable FastMM4 on older versions of Delphi 50 | {$IFDEF CONDITIONALEXPRESSIONS} 51 | {$if CompilerVersion <= 17} // Delphi 2006 (and up) have FastMM4 integrated 52 | FastMM4Messages, 53 | FastMM4, 54 | {$ifend} 55 | {$ifdef UNICODE} 56 | {$WARN DUPLICATE_CTOR_DTOR OFF} // global at .dpr level - see QC 100815 57 | {$endif} 58 | {$ELSE} 59 | FastMM4, // no conditional expressions -> versions older than Delphi 6 60 | {$ENDIF} 61 | {$endif FPC} 62 | {$endif LVCL} 63 | 64 | -------------------------------------------------------------------------------- /MVC5.0/mORMot/SynEcc32O2.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/SynEcc32O2.obj -------------------------------------------------------------------------------- /MVC5.0/mORMot/SynEcc64O2.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/SynEcc64O2.o -------------------------------------------------------------------------------- /MVC5.0/mORMot/SynFPCSockLIBC.inc: -------------------------------------------------------------------------------- 1 | { 2 | This file is part of the Free Pascal run time library. 3 | Copyright (c) 2004 by the Free Pascal development team 4 | 5 | See the file COPYING.FPC, included in this distribution, 6 | for details about the copyright. 7 | 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 | 12 | **********************************************************************} 13 | 14 | 15 | //{$define uselibc:=cdecl; external;} 16 | 17 | Uses 18 | initc; 19 | 20 | threadvar internal_socketerror : cint; 21 | 22 | const 23 | {$ifdef BEOS} 24 | {$ifdef HAIKU} 25 | libname = 'network'; 26 | {$else} 27 | libname = 'net'; 28 | {$endif} 29 | {$else} 30 | libname='c'; 31 | {$endif} 32 | 33 | function cfpaccept (s:cint; addrx : psockaddr; addrlen : psocklen):cint; cdecl; external libname name 'accept'; 34 | function cfpbind (s:cint; addrx : psockaddr; addrlen : tsocklen):cint; cdecl; external libname name 'bind'; 35 | function cfpconnect (s:cint; name : psockaddr; namelen : tsocklen):cint; cdecl; external libname name 'connect'; 36 | function cfpgetpeername (s:cint; name : psockaddr; namelen : psocklen):cint; cdecl; external libname name 'getpeername'; 37 | function cfpgetsockname (s:cint; name : psockaddr; namelen : psocklen):cint; cdecl; external libname name 'getsockname'; 38 | function cfpgetsockopt (s:cint; level:cint; optname:cint; optval:pointer; optlen : psocklen):cint; cdecl; external libname name 'getsockopt'; 39 | function cfplisten (s:cint; backlog : cint):cint; cdecl; external libname name 'listen'; 40 | function cfprecv (s:cint; buf: pointer; len: size_t; flags: cint):ssize_t; cdecl; external libname name 'recv'; 41 | function cfprecvfrom (s:cint; buf: pointer; len: size_t; flags: cint; from : psockaddr; fromlen : psocklen):ssize_t; cdecl; external libname name 'recvfrom'; 42 | //function cfprecvmsg (s:cint; msg: pmsghdr; flags:cint):ssize_t; cdecl; external libname name ''; 43 | function cfpsend (s:cint; msg:pointer; len:size_t; flags:cint):ssize_t; cdecl; external libname name 'send'; 44 | function cfpsendto (s:cint; msg:pointer; len:size_t; flags:cint; tox :psockaddr; tolen: tsocklen):ssize_t; cdecl; external libname name 'sendto'; 45 | //function cfpsendmsg (s:cint; hdr: pmsghdr; flags:cint):ssize; cdecl; external libname name ''; 46 | function cfpsetsockopt (s:cint; level:cint; optname:cint; optval:pointer; optlen :tsocklen):cint; cdecl; external libname name 'setsockopt'; 47 | function cfpshutdown (s:cint; how:cint):cint; cdecl; external libname name 'shutdown'; 48 | function cfpsocket (domain:cint; xtype:cint; protocol: cint):cint; cdecl; external libname name 'socket'; 49 | 50 | {$if defined(BEOS) and not defined(HAIKU)} 51 | // function unavailable under BeOS 52 | {$else} 53 | function cfpsocketpair (d:cint; xtype:cint; protocol:cint; sv:pcint):cint; cdecl; external libname name 'socketpair'; 54 | {$endif} 55 | 56 | 57 | function fpaccept (s:cint; addrx : psockaddr; addrlen : psocklen):cint; 58 | 59 | begin 60 | fpaccept:=cfpaccept(s,addrx,addrlen); 61 | internal_socketerror:=fpgeterrno; 62 | end; 63 | 64 | function fpbind (s:cint; addrx : psockaddr; addrlen : tsocklen):cint; 65 | begin 66 | fpbind:=cfpbind (s,addrx,addrlen); 67 | internal_socketerror:=fpgeterrno; 68 | end; 69 | 70 | function fpconnect (s:cint; name : psockaddr; namelen : tsocklen):cint; 71 | begin 72 | fpconnect:=cfpconnect (s,name,namelen); 73 | internal_socketerror:=fpgeterrno; 74 | end; 75 | 76 | function fpgetpeername (s:cint; name : psockaddr; namelen : psocklen):cint; 77 | begin 78 | fpgetpeername:=cfpgetpeername (s,name,namelen); 79 | internal_socketerror:=fpgeterrno; 80 | end; 81 | 82 | function fpgetsockname (s:cint; name : psockaddr; namelen : psocklen):cint; 83 | begin 84 | fpgetsockname:=cfpgetsockname(s,name,namelen); 85 | internal_socketerror:=fpgeterrno; 86 | end; 87 | 88 | function fpgetsockopt (s:cint; level:cint; optname:cint; optval:pointer; optlen : psocklen):cint; 89 | begin 90 | fpgetsockopt:=cfpgetsockopt(s,level,optname,optval,optlen); 91 | internal_socketerror:=fpgeterrno; 92 | end; 93 | 94 | function fplisten (s:cint; backlog : cint):cint; 95 | begin 96 | fplisten:=cfplisten(s,backlog); 97 | internal_socketerror:=fpgeterrno; 98 | end; 99 | 100 | function fprecv (s:cint; buf: pointer; len: size_t; flags:cint):ssize_t; 101 | begin 102 | fprecv:= cfprecv (s,buf,len,flags); 103 | internal_socketerror:=fpgeterrno; 104 | end; 105 | 106 | function fprecvfrom (s:cint; buf: pointer; len: size_t; flags: cint; from : psockaddr; fromlen : psocklen):ssize_t; 107 | begin 108 | fprecvfrom:= cfprecvfrom (s,buf,len,flags,from,fromlen); 109 | internal_socketerror:=fpgeterrno; 110 | end; 111 | 112 | function fpsend (s:cint; msg:pointer; len:size_t; flags:cint):ssize_t; 113 | begin 114 | fpsend:=cfpsend (s,msg,len,flags); 115 | internal_socketerror:=fpgeterrno; 116 | end; 117 | 118 | function fpsendto (s:cint; msg:pointer; len:size_t; flags:cint; tox :psockaddr; tolen: tsocklen):ssize_t; 119 | begin 120 | fpsendto:=cfpsendto (s,msg,len,flags,tox,tolen); 121 | internal_socketerror:=fpgeterrno; 122 | end; 123 | 124 | function fpsetsockopt (s:cint; level:cint; optname:cint; optval:pointer; optlen :tsocklen):cint; 125 | begin 126 | fpsetsockopt:=cfpsetsockopt(s,level,optname,optval,optlen); 127 | internal_socketerror:=fpgeterrno; 128 | end; 129 | 130 | function fpshutdown (s:cint; how:cint):cint; 131 | begin 132 | fpshutdown:=cfpshutdown(s,how); 133 | internal_socketerror:=fpgeterrno; 134 | end; 135 | 136 | function fpsocket (domain:cint; xtype:cint; protocol: cint):cint; 137 | begin 138 | fpsocket:=cfpsocket(domain,xtype,protocol); 139 | internal_socketerror:=fpgeterrno; 140 | end; 141 | 142 | {$if defined(BEOS) and not defined(HAIKU)} 143 | // function unavailable under BeOS 144 | function fpsocketpair (d:cint; xtype:cint; protocol:cint; sv:pcint):cint; 145 | begin 146 | internal_socketerror:= -1; // TODO : check if it is an error 147 | end; 148 | {$else} 149 | function fpsocketpair (d:cint; xtype:cint; protocol:cint; sv:pcint):cint; 150 | begin 151 | fpsocketpair:=cfpsocketpair(d,xtype,protocol,sv); 152 | internal_socketerror:=fpgeterrno; 153 | end; 154 | {$endif} 155 | -------------------------------------------------------------------------------- /MVC5.0/mORMot/SynSM.inc: -------------------------------------------------------------------------------- 1 | { 2 | This file is part of Synopse framework. 3 | 4 | Synopse framework. Copyright (C) 2022 Arnaud Bouchez 5 | Synopse Informatique - https://synopse.info 6 | 7 | Scripting support for mORMot Copyright (C) 2022 Pavel Mashlyakovsky 8 | pavel.mash at gmail.com 9 | 10 | *** BEGIN LICENSE BLOCK ***** 11 | Version: MPL 1.1/GPL 2.0/LGPL 2.1 12 | 13 | The contents of this file are subject to the Mozilla Public License Version 14 | 1.1 (the "License"); you may not use this file except in compliance with 15 | the License. You may obtain a copy of the License at 16 | http://www.mozilla.org/MPL 17 | 18 | Software distributed under the License is distributed on an "AS IS" basis, 19 | WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 20 | for the specific language governing rights and limitations under the License. 21 | 22 | The Initial Developer of the Original Code is 23 | Pavel Mashlyakovsky. 24 | Portions created by the Initial Developer are Copyright (C) 2013 25 | the Initial Developer. All Rights Reserved. 26 | 27 | Contributor(s): 28 | - Arnaud Bouchez 29 | 30 | Alternatively, the contents of this file may be used under the terms of 31 | either the GNU General Public License Version 2 or later (the "GPL"), or 32 | the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 33 | in which case the provisions of the GPL or the LGPL are applicable instead 34 | of those above. If you wish to allow use of your version of this file only 35 | under the terms of either the GPL or the LGPL, and not to allow others to 36 | use your version of this file under the terms of the MPL, indicate your 37 | decision by deleting the provisions above and replace them with the notice 38 | and other provisions required by the GPL or the LGPL. If you do not delete 39 | the provisions above, a recipient may use your version of this file under 40 | the terms of any one of the MPL, the GPL or the LGPL. 41 | 42 | ***** END LICENSE BLOCK ***** 43 | 44 | Version 1.18 45 | - initial release. Use SpiderMonkey 1.8.5 46 | - defines some global conditionals used by SynSMAPI.pas and SynSM.pas 47 | 48 | } 49 | 50 | 51 | {.$define JS_188} 52 | // for future use 53 | 54 | {.$define JS_189} 55 | // for future use 56 | 57 | {$DEFINE IS_LITTLE_ENDIAN} 58 | //TODO add processor architecture check here or remove define and corresponding code below if FPC only for x32/64? 59 | 60 | {$DEFINE JS_THREADSAFE} 61 | // we MUST compile mozjs with JS_THREADSAFE directive 62 | 63 | {$DEFINE SM_DEBUG} 64 | // for debuging SynSM 65 | 66 | {$DEFINE CONSIDER_TIME_IN_Z} 67 | // let serve all date-time as in GMT0 (UTC) timezone 68 | 69 | {.$DEFINE WITHASSERT} 70 | // ensure *TO_JSVAL() macros will check explicitly for the target type 71 | 72 | {$ifndef FPC} 73 | {$if CompilerVersion = 24.0} 74 | // see https://synopse.info/forum/viewtopic.php?pid=12598#p12598 75 | {$define FIXBUGXE3} 76 | {$ifend} 77 | {$endif} 78 | 79 | -------------------------------------------------------------------------------- /MVC5.0/mORMot/SynSMAPI.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/SynSMAPI.pas -------------------------------------------------------------------------------- /MVC5.0/mORMot/SynScaleMM.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/SynScaleMM.pas -------------------------------------------------------------------------------- /MVC5.0/mORMot/SynTBB.pas: -------------------------------------------------------------------------------- 1 | /// implements a Linux FPC heap manager that uses Intel TBB, with no overhead 2 | // - expected to be enabled with -dFPC_NO_DEFAULT_MEMORYMANAGER -dFPC_SYNTBB, 3 | // and run e.g. "apt-get install libtbb2" on the Linux target system 4 | unit SynTBB; 5 | 6 | { 7 | This file is part of Synopse mORMot framework. 8 | 9 | Synopse mORMot framework. Copyright (C) 2019 Arnaud Bouchez 10 | Synopse Informatique - https://synopse.info 11 | 12 | *** BEGIN LICENSE BLOCK ***** 13 | Version: MPL 1.1/GPL 2.0/LGPL 2.1 14 | 15 | The contents of this file are subject to the Mozilla Public License Version 16 | 1.1 (the "License"); you may not use this file except in compliance with 17 | the License. You may obtain a copy of the License at 18 | http://www.mozilla.org/MPL 19 | 20 | Software distributed under the License is distributed on an "AS IS" basis, 21 | WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 22 | for the specific language governing rights and limitations under the License. 23 | 24 | The Original Code is Synopse mORMot framework. 25 | 26 | The Initial Developer of the Original Code is Arnaud Bouchez. 27 | 28 | Portions created by the Initial Developer are Copyright (C) 2019 29 | the Initial Developer. All Rights Reserved. 30 | 31 | Contributor(s): 32 | 33 | 34 | Alternatively, the contents of this file may be used under the terms of 35 | either the GNU General Public License Version 2 or later (the "GPL"), or 36 | the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 37 | in which case the provisions of the GPL or the LGPL are applicable instead 38 | of those above. if you wish to allow use of your version of this file only 39 | under the terms of either the GPL or the LGPL, and not to allow others to 40 | use your version of this file under the terms of the MPL, indicate your 41 | decision by deleting the provisions above and replace them with the notice 42 | and other provisions required by the GPL or the LGPL. if you do not delete 43 | the provisions above, a recipient may use your version of this file under 44 | the terms of any one of the MPL, the GPL or the LGPL. 45 | 46 | ***** END LICENSE BLOCK ***** 47 | 48 | 49 | Version 1.18 50 | - initial revision 51 | 52 | } 53 | 54 | interface 55 | 56 | {$I Synopse.inc} // set proper flags, and define LINUX for BSD and ANDROID 57 | 58 | {$ifndef FPC} 59 | THIS UNIT IS FOR FPC ONLY ! 60 | {$endif FPC} 61 | {$ifndef LINUX} 62 | THIS UNIT IS FOR POSIX ONLY ! 63 | {$endif LINUX} 64 | 65 | implementation 66 | 67 | uses 68 | pthreads, // as required by TBB library - will also link needed glibc 69 | dl; 70 | 71 | // late-binding API calls to the external Internal TBB malloc library 72 | 73 | var 74 | malloc: function(size: PtrUInt): pointer; cdecl; 75 | calloc: function(count, size: PtrUInt): pointer; cdecl; 76 | free: procedure(p: pointer); cdecl; 77 | realloc: function(p: pointer; size: PtrUInt): pointer; cdecl; 78 | msize: function(p: pointer): PtrUInt; cdecl; 79 | 80 | // TMemoryManager replacement 81 | 82 | function _GetMem(size: PtrUInt): pointer; 83 | begin 84 | result := malloc(size); 85 | end; 86 | 87 | function _FreeMem(p: pointer): PtrUInt; 88 | begin 89 | free(p); // free(nil) has no effect 90 | result := 0; 91 | end; 92 | 93 | function _FreeMemSize(p: pointer; size: PtrUInt): PtrUInt; 94 | begin // our unit won't check the "size" value (not mandatory) 95 | if size <> 0 then 96 | free(p); 97 | result := 0; 98 | end; 99 | 100 | function _AllocMem(size: PtrUInt): pointer; 101 | begin 102 | result := calloc(size, 1); // no need to call FillChar() e.g. from mmap 103 | end; 104 | 105 | function _ReAllocMem(var p: pointer; size: PtrUInt): pointer; 106 | begin 107 | result := realloc(p, size); // is free(p) if size=0 or malloc(size) if p=nil 108 | p := result; 109 | end; 110 | 111 | function _MemSize(p: pointer): PtrUInt; 112 | begin // AFAIK used only by fpc_AnsiStr_SetLength() in RTL 113 | result := msize(p); 114 | end; 115 | 116 | function _GetHeapStatus: THeapStatus; 117 | begin 118 | FillChar(result, sizeof(result), 0); 119 | end; 120 | 121 | function _GetFPCHeapStatus: TFPCHeapStatus; 122 | begin 123 | FillChar(result, sizeof(result), 0); 124 | end; 125 | 126 | const 127 | NewMM: TMemoryManager = ( 128 | NeedLock: false; 129 | GetMem: @_Getmem; 130 | FreeMem: @_FreeMem; 131 | FreememSize: @_FreememSize; 132 | AllocMem: @_AllocMem; 133 | ReallocMem: @_ReAllocMem; 134 | MemSize: @_MemSize; 135 | InitThread: nil; 136 | DoneThread: nil; 137 | RelocateHeap: nil; 138 | GetHeapStatus: @_GetHeapStatus; 139 | GetFPCHeapStatus: @_GetFPCHeapStatus); 140 | 141 | var 142 | OldMM: TMemoryManager; 143 | lib: pointer; 144 | 145 | initialization 146 | { lib := dlopen('libjemalloc.so.1', RTLD_LAZY); // jemalloc 3.6 is slower than libtbb2 147 | if lib <> nil then begin 148 | pointer(@malloc) := dlsym(lib, 'malloc'); 149 | pointer(@calloc) := dlsym(lib, 'calloc'); 150 | pointer(@free) := dlsym(lib, 'free'); 151 | pointer(@realloc) := dlsym(lib, 'realloc'); 152 | pointer(@msize) := dlsym(lib, 'malloc_usable_size'); 153 | writeln('pointer(@msize)= ', PtrInt(@msize)); 154 | end else } 155 | lib := dlopen('libtbbmalloc.so.2', RTLD_LAZY); 156 | if lib = nil then 157 | lib := dlopen('libtbbmalloc.so', RTLD_LAZY); 158 | if lib = nil then 159 | writeln(dlerror, ' [apt-get install libtbb2]') 160 | else begin 161 | pointer(@malloc) := dlsym(lib, 'scalable_malloc'); 162 | pointer(@calloc) := dlsym(lib, 'scalable_calloc'); 163 | pointer(@free) := dlsym(lib, 'scalable_free'); 164 | pointer(@realloc) := dlsym(lib, 'scalable_realloc'); 165 | pointer(@msize) := dlsym(lib, 'scalable_msize'); 166 | end; 167 | if Assigned(msize) then begin 168 | {$ifdef CPUX64} // no cdecl on x86_64 -> direct call is just fine 169 | NewMM.GetMem := pointer(@malloc); 170 | NewMM.FreeMem := pointer(@free); 171 | NewMM.MemSize := pointer(@msize); 172 | {$endif} 173 | GetMemoryManager(OldMM); 174 | SetMemoryManager(NewMM); 175 | end; 176 | 177 | finalization 178 | if lib <> nil then begin 179 | SetMemoryManager(OldMM); 180 | dlclose(lib); 181 | end; 182 | end. 183 | 184 | -------------------------------------------------------------------------------- /MVC5.0/mORMot/SynTaskDialog.RES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/SynTaskDialog.RES -------------------------------------------------------------------------------- /MVC5.0/mORMot/SynTaskDialog.rc: -------------------------------------------------------------------------------- 1 | btnok 2 SQlite3\SQLite3btnok.bmp 2 | btnarrow 2 SQlite3\SQLite3btnarrow.bmp 3 | -------------------------------------------------------------------------------- /MVC5.0/mORMot/SynopseCommit.inc: -------------------------------------------------------------------------------- 1 | '1.18.6365' 2 | -------------------------------------------------------------------------------- /MVC5.0/mORMot/build-fpc-linux64.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -rf ./fpc/* 4 | mkdir -p ./fpc/lib/x86_64-linux 5 | mkdir -p ./fpc/bin/x86_64-linux 6 | 7 | fpc.sh -B -MObjFPC -Scagi -Cg -Cirot -gw2 -gl -l -dFPCSQLITE3STATIC -dUseCThreads -Fi -Fifpc/lib/x86_64-linux -Fl./fpc-linux64 -Fu./SQLite3 -Fu./SQLite3/DDD/dom -Fu./SQLite3/DDD/infra "-Fu./SQLite3/Samples/33 - ECC" -Fu. -FUfpc/lib/x86_64-linux -FEfpc/bin/x86_64-linux/ ./SQLite3/TestSQL3.dpr 8 | -------------------------------------------------------------------------------- /MVC5.0/mORMot/compil.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | cls 3 | 4 | rem goto SkipOldDelphi 5 | 6 | set DCC=c:\progs\delphi5\bin\dcc32.exe 7 | set DelphiVersion=Delphi 5 8 | call compilpil.bat 9 | 10 | set DCC=c:\progs\delphi6\bin\dcc32.exe 11 | set DelphiVersion=Delphi 6 12 | call compilpil.bat 13 | 14 | :SkipOldDelphi 15 | 16 | set DelphiVersion= 17 | set LVCL=LVCL 18 | call compilpil.bat 19 | set LVCL= 20 | 21 | set DelphiVersion= 22 | call compilpil.bat 23 | 24 | set DCC="c:\progs\CodeGear\RAD Studio\5.0\bin\dcc32.exe" 25 | if not exist %DCC% set DCC="c:\progs\Delphi2007\bin\dcc32.exe" 26 | set DelphiVersion=Delphi 2007 27 | call compilpil.bat 28 | 29 | set DCC="c:\progs\Embarcadero\RAD Studio\10.0\bin\dcc32.exe" 30 | if not exist %DCC% set DCC="c:\progs\DelphiXE3\bin\dcc32.exe" 31 | set DelphiVersion=Delphi XE3 Win32 32 | call compilpil.bat 33 | 34 | set DCC="c:\progs\Embarcadero\RAD Studio\11.0\bin\dcc32.exe" 35 | if not exist %DCC% set DCC="c:\progs\DelphiXE4\bin\dcc32.exe" 36 | set DelphiVersion=Delphi XE4 Win32 37 | call compilpil.bat 38 | 39 | set DCC="c:\progs\Embarcadero\RAD Studio\11.0\bin\dcc64.exe" 40 | if not exist %DCC% set DCC="c:\progs\DelphiXE4\bin\dcc64.exe" 41 | set DelphiVersion=Delphi XE4 Win64 42 | call compilpil.bat 43 | 44 | set DCC="c:\progs\Embarcadero\Studio\14.0\bin\dcc32.exe" 45 | if not exist %DCC% set DCC="c:\progs\DelphiXE6\bin\dcc32.exe" 46 | set DelphiVersion=Delphi XE6 Win32 47 | call compilpil.bat 48 | 49 | set DCC="c:\progs\Embarcadero\Studio\14.0\bin\dcc64.exe" 50 | if not exist %DCC% set DCC="c:\progs\DelphiXE6\bin\dcc64.exe" 51 | set DelphiVersion=Delphi XE6 Win64 52 | call compilpil.bat 53 | 54 | set DCC="c:\progs\Embarcadero\XE7\bin\fastdcc32.exe" 55 | if not exist %DCC% set DCC="c:\progs\DelphiXE7\bin\dcc32.exe" 56 | set DelphiVersion=Delphi XE7 Win32 57 | call compilpil.bat 58 | 59 | set DCC="c:\progs\Embarcadero\XE7\bin\fastdcc64.exe" 60 | if not exist %DCC% set DCC="c:\progs\DelphiXE7\bin\dcc64.exe" 61 | set DelphiVersion=Delphi XE7 Win64 62 | call compilpil.bat 63 | 64 | pause -------------------------------------------------------------------------------- /MVC5.0/mORMot/compilFPC.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | set lib=d:\dev\lib 4 | set bin=d:\dev\lib\tempbuild\fpc 5 | set fpc=c:\np\fpc\bin\i386-win32\fpc.exe 6 | 7 | if exist %fpc% ( 8 | 9 | cd \dev\lib 10 | if not exist %bin% mkdir %bin% 11 | del %bin%\*.exe %bin%\*.o %bin%\*.a %bin%\*.ppu %bin%\*.map %bin%\*.db3 %bin%\*.ini %bin%\*.data %bin%\*.mdb %bin%\TestSQL3.* > nul 2> nul 12 | echo. 13 | 14 | cd \dev\lib\SQLite3 15 | echo Compiling using %fpc%... 16 | 17 | @rem -O2 don't make GPF during DDD tests any more... 18 | 19 | %fpc% -B -MObjFPC -Scgi -CX -O2 -XX -ve -dFPCSQLITE3STATIC -Fi%lib% -Fu%lib% -Fu%lib%\SQLite3 -Fu%lib%\kylix -l -Fl%lib%\fpc-win32 -FE%bin% TestSQL3.dpr >%bin%\compilMsg 20 | 21 | rem %fpc% -B -MObjFPC -Scgi -CX -O1 -XX -ve -Fi%lib% -Fu%lib% -Fu%lib%\SQLite3 -l -Fl%lib%\fpc-win32 -FE%bin% TestSQL3.dpr >%bin%\compilation 22 | 23 | del %bin%\*.o %bin%\*.a %bin%\*.ppu %bin%\*.mdb > nul 24 | 25 | %bin%\TestSQL3 26 | 27 | ) else ( 28 | 29 | echo !!!! %fpc% not found !!!! 30 | ) 31 | 32 | pause 33 | -------------------------------------------------------------------------------- /MVC5.0/mORMot/crc32c64.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/crc32c64.obj -------------------------------------------------------------------------------- /MVC5.0/mORMot/deflate.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/deflate.obj -------------------------------------------------------------------------------- /MVC5.0/mORMot/lizard.dpr: -------------------------------------------------------------------------------- 1 | /// compiled under FPC to have working lizard1-32.dll/lizard1-64.dll files for Delphi 2 | library lizard; 3 | 4 | uses 5 | SynLizard; // LIZARD_STANDALONE should be defined in the Lazarus Projects Options 6 | 7 | {$ifndef FPC} 8 | FPC-only library - not compilable under Delphi 9 | {$endif} 10 | 11 | exports 12 | Lizard_versionNumber, Lizard_compressBound, Lizard_compress, 13 | Lizard_sizeofState, Lizard_compress_extState, 14 | Lizard_decompress_safe, Lizard_decompress_safe_partial; 15 | 16 | begin 17 | end. 18 | -------------------------------------------------------------------------------- /MVC5.0/mORMot/lizard.lpi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | <UseAppBundle Value="False"/> 16 | <ResourceType Value="res"/> 17 | </General> 18 | <BuildModes Count="2"> 19 | <Item1 Name="Win32" Default="True"/> 20 | <Item2 Name="Win64"> 21 | <CompilerOptions> 22 | <Version Value="11"/> 23 | <PathDelim Value="\"/> 24 | <Target> 25 | <Filename Value="SQlite3\exe\lizard1-64"/> 26 | </Target> 27 | <SearchPaths> 28 | <IncludeFiles Value="$(ProjOutDir)"/> 29 | <Libraries Value="static\$(TargetCPU)-$(TargetOS)"/> 30 | <UnitOutputDirectory Value="SQLite3\fpc\lib\$(TargetCPU)-$(TargetOS)"/> 31 | </SearchPaths> 32 | <CodeGeneration> 33 | <SmartLinkUnit Value="True"/> 34 | <RelocatableUnit Value="True"/> 35 | <TargetCPU Value="x86_64"/> 36 | <TargetOS Value="win64"/> 37 | <Optimizations> 38 | <OptimizationLevel Value="2"/> 39 | </Optimizations> 40 | </CodeGeneration> 41 | <Linking> 42 | <Debugging> 43 | <GenerateDebugInfo Value="False"/> 44 | </Debugging> 45 | <LinkSmart Value="True"/> 46 | <Options> 47 | <ExecutableType Value="Library"/> 48 | </Options> 49 | </Linking> 50 | <Other> 51 | <CustomOptions Value="-dLIZARD_STANDALONE"/> 52 | <OtherDefines Count="1"> 53 | <Define0 Value="LIZARD_STANDALONE"/> 54 | </OtherDefines> 55 | </Other> 56 | </CompilerOptions> 57 | </Item2> 58 | </BuildModes> 59 | <PublishOptions> 60 | <Version Value="2"/> 61 | </PublishOptions> 62 | <RunParams> 63 | <FormatVersion Value="2"/> 64 | <Modes Count="1"> 65 | <Mode0 Name="default"/> 66 | </Modes> 67 | </RunParams> 68 | <Units Count="1"> 69 | <Unit0> 70 | <Filename Value="lizard.dpr"/> 71 | <IsPartOfProject Value="True"/> 72 | </Unit0> 73 | </Units> 74 | </ProjectOptions> 75 | <CompilerOptions> 76 | <Version Value="11"/> 77 | <PathDelim Value="\"/> 78 | <Target> 79 | <Filename Value="SQlite3\exe\lizard1-32"/> 80 | </Target> 81 | <SearchPaths> 82 | <Libraries Value="static\$(TargetCPU)-$(TargetOS)"/> 83 | <UnitOutputDirectory Value="SQLite3\fpc\lib\$(TargetCPU)-$(TargetOS)"/> 84 | </SearchPaths> 85 | <CodeGeneration> 86 | <SmartLinkUnit Value="True"/> 87 | <RelocatableUnit Value="True"/> 88 | <TargetCPU Value="i386"/> 89 | <TargetOS Value="win32"/> 90 | <Optimizations> 91 | <OptimizationLevel Value="2"/> 92 | </Optimizations> 93 | </CodeGeneration> 94 | <Linking> 95 | <Debugging> 96 | <GenerateDebugInfo Value="False"/> 97 | </Debugging> 98 | <LinkSmart Value="True"/> 99 | <Options> 100 | <ExecutableType Value="Library"/> 101 | </Options> 102 | </Linking> 103 | <Other> 104 | <CustomOptions Value="-dLIZARD_STANDALONE"/> 105 | <OtherDefines Count="1"> 106 | <Define0 Value="LIZARD_STANDALONE"/> 107 | </OtherDefines> 108 | </Other> 109 | </CompilerOptions> 110 | <Debugging> 111 | <Exceptions Count="3"> 112 | <Item1> 113 | <Name Value="EAbort"/> 114 | </Item1> 115 | <Item2> 116 | <Name Value="ECodetoolError"/> 117 | </Item2> 118 | <Item3> 119 | <Name Value="EFOpenError"/> 120 | </Item3> 121 | </Exceptions> 122 | </Debugging> 123 | </CONFIG> 124 | -------------------------------------------------------------------------------- /MVC5.0/mORMot/padlock.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/padlock.o -------------------------------------------------------------------------------- /MVC5.0/mORMot/padlock_aes.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/padlock_aes.o -------------------------------------------------------------------------------- /MVC5.0/mORMot/padlock_sha.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/padlock_sha.o -------------------------------------------------------------------------------- /MVC5.0/mORMot/sha512-x64sse4.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/sha512-x64sse4.obj -------------------------------------------------------------------------------- /MVC5.0/mORMot/sha512-x86.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/sha512-x86.obj -------------------------------------------------------------------------------- /MVC5.0/mORMot/trees.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/trees.obj -------------------------------------------------------------------------------- /MVC5.0/mORMot/vista.RES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/vista.RES -------------------------------------------------------------------------------- /MVC5.0/mORMot/vista.manifest: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 2 | <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> 3 | <dependency> 4 | <dependentAssembly> 5 | <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/> 6 | </dependentAssembly> 7 | </dependency> 8 | <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 9 | <security> 10 | <requestedPrivileges> 11 | <requestedExecutionLevel level="asInvoker" uiAccess="false"/> 12 | </requestedPrivileges> 13 | </security> 14 | </trustInfo> 15 | <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 16 | <application> 17 | <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> 18 | <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> 19 | <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 20 | <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> 21 | <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> 22 | </application> 23 | </compatibility> 24 | </assembly> -------------------------------------------------------------------------------- /MVC5.0/mORMot/vista.rc: -------------------------------------------------------------------------------- 1 | 1 24 "vista.manifest" -------------------------------------------------------------------------------- /MVC5.0/mORMot/vistaAdm.RES: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/mORMot/vistaAdm.RES -------------------------------------------------------------------------------- /MVC5.0/mORMot/vistaAdm.manifest: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 2 | <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> 3 | <dependency> 4 | <dependentAssembly> 5 | <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/> 6 | </dependentAssembly> 7 | </dependency> 8 | <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 9 | <security> 10 | <requestedPrivileges> 11 | <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> 12 | </requestedPrivileges> 13 | </security> 14 | </trustInfo> 15 | <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 16 | <application> 17 | <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> 18 | <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> 19 | <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 20 | <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> 21 | <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> 22 | </application> 23 | </compatibility> 24 | </assembly> -------------------------------------------------------------------------------- /MVC5.0/mORMot/vistaAdm.rc: -------------------------------------------------------------------------------- 1 | 1 24 "vistaAdm.manifest" -------------------------------------------------------------------------------- /MVC5.0/更新记录.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/MVC5.0/更新记录.txt -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DelphiWebMVC介绍: 2 | 安装指南:https://my.oschina.net/delphimvc/blog/1581715<BR> 3 | 我的博客:https://my.oschina.net/delphimvc<BR> 4 | 相关视频:https://my.oschina.net/delphimvc/blog/4291418<BR> 5 | 开发手册:https://www.yuque.com/suxingying/mvc5.0/vt954m<BR> 6 | 案例赏析:http://129.211.87.47:8004/<BR> 7 | 讨论QQ群: 685072623<BR> 8 | 开发工具:delphi xe10.3<BR> 9 | 注意:win10系统以管理员权限运行<BR> 10 | 数据库支持MySQL,SQLite,MSSQL,Oracle<BR> -------------------------------------------------------------------------------- /加密工具.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pearroom/DelphiWebMVC/6bf9825ef307a5d5d8f189ddb651249d3a9173ee/加密工具.zip --------------------------------------------------------------------------------