diff --git a/README.md b/README.md index ce228153534a16af1acfdbdf1076cb51eb60c244..68272ab9329404669fd7706bd35d4044815f8ce6 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ - [Gitee仓库](https://gitee.com/wonderful-code/buildadmin) - [GitHub仓库](https://github.com/build-admin/BuildAdmin) - [备用文档:wonderful-code.gitee.io](https://wonderful-code.gitee.io/) -- [邮箱 1094963513@qq.com](mailto:1094963513@qq.com) +- [邮箱 hi@buildadmin.com](mailto:hi@buildadmin.com) ### 💕 特别鸣谢 感谢巨人提供肩膀,排名不分先后 diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 7f7ae4b7a5303d1d65247298084884fe83842661..d5e066ee5e85e2c93f3e0844c4afa00e5376d182 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -63,12 +63,12 @@ module.exports = { ['/guide/install/preparePM.md', '准备Npm包管理器'], ['/guide/install/disablement.md', 'PHP解除函数禁用'], ['/guide/install/missingExtension.md', 'PHP缺少扩展'], - ['/guide/install/fileOperation.md', 'PHP没有文件操作权限'], ['/guide/install/npmInstallFail.md', 'npm install 执行失败'], ['/guide/install/npmBuildFail.md', 'npm build 执行失败'], ['/guide/install/setNpmRegistryFail.md', '设置NPM源失败'], ['/guide/install/dirNoPermission.md', '目录或文件无写入权限'], ['/guide/install/hideIndex.md', '隐藏 index.html'], + ['/guide/install/manualOperation.md', '手动完成未尽事宜'], ['/guide/install/webInstallGuide.md', '安装引导说明'], ], }, @@ -82,6 +82,14 @@ module.exports = { ['/guide/other/contributionCode.md', '贡献代码'], ['/guide/other/gitCommitSpecification.md', 'git 提交规范'], ['/guide/other/update.md', '框架更新指南'], + { + title: '附录', + collapsable: true, + children: [ + ['/guide/other/appendix/getPoints.md', '获取积分'], + ['/guide/other/appendix/templateAgreement.md', '模块购买和使用协议'], + ] + } ], }, ], @@ -129,6 +137,18 @@ module.exports = { ['/senior/server/dataLImit.md', '数据权限控制'], ] }, + { + title: '模块开发', + collapsable: false, + children: [ + ['/senior/module/start.md', '开始'], + ['/senior/module/basicInfo.md', '模块基本信息'], + ['/senior/module/directoryStructure.md', '模块目录结构'], + ['/senior/module/configJson.md', '模块基本配置'], + ['/senior/module/installSql.md', '模块安装SQL'], + ['/senior/module/coreController.md', '模块核心控制器'], + ] + }, ] }, }, diff --git a/docs/guide/install/disablement.md b/docs/guide/install/disablement.md index 37c331ab83e39df8b2c22c616e56494581fa953d..5ce6d2a02a5606d8fff902925fc936540e050510 100644 --- a/docs/guide/install/disablement.md +++ b/docs/guide/install/disablement.md @@ -6,11 +6,11 @@ pageClass: max-content 若您在解除函数时考虑到安全因素,请参考[安装服务进阶](https://wonderful-code.gitee.io/guide/install/senior.html),安装服务使用正确不会造成任何潜在安全问题 -### 以解除`popen`和`pclose`的禁用为例 +### 以解除`proc_open`和`proc_close`以及`proc_get_status`三个函数的禁用为例 1. 请先确保已将`PHP`加入到系统环境变量 2. 打开`终端`或`Windows PowerShell` 3. 执行`php --ini`命令,其中的`Loaded Configuration File:`所示文件,就是当前环境PHP加载的ini文件,**编辑它** 4. 搜索`disable_functions` 5. 比如您看到的是`disable_functions = system, exec, shell_exec, popen, pclose, passthru, proc_open, proc_close, proc_get_status,...` -6. 删除掉其中的`popen`、`pclose`并保存,修改后为`disable_functions = system, exec, shell_exec, passthru, proc_open, proc_close, proc_get_status,...` +6. 删除掉其中的`proc_open`、`proc_close`、`proc_get_status`并保存,修改后为`disable_functions = system, exec, shell_exec, popen, pclose, passthru,...` 7. 最后记得**重启安装服务**(启动服务的窗口Ctrl+c,再重新执行启动命令) \ No newline at end of file diff --git a/docs/guide/install/fileOperation.md b/docs/guide/install/fileOperation.md deleted file mode 100644 index 2883e5da1c9452666fad639b19378b4d576b353b..0000000000000000000000000000000000000000 --- a/docs/guide/install/fileOperation.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -pageClass: max-content ---- - -> PHP没有文件操作权限,通常指的是`feof`和`fgets`函数在`php.ini`中被禁用掉了 - -### 解除函数禁用 -- 打开`终端`或`Windows PowerShell` -- 执行`php --ini`命令,其中的`Loaded Configuration File:`所示文件,就是当前环境PHP加载的ini文件,编辑它 -- 搜索`disable_functions` -- 比如您看到的是`disable_functions = system, exec, shell_exec, feof, fgets, passthru, proc_open, proc_close, proc_get_status,...` -- 删除掉其中的`feof`、`fgets`并保存,修改后为`disable_functions = system, exec, shell_exec, passthru, proc_open, proc_close, proc_get_status,...` -- 最后记得**重启安装服务**(启动服务的窗口Ctrl+c,再重新执行启动命令) \ No newline at end of file diff --git a/docs/guide/install/manualOperation.md b/docs/guide/install/manualOperation.md new file mode 100644 index 0000000000000000000000000000000000000000..3d8b7474e0ace7d7749204346eac81fb62a42d4f --- /dev/null +++ b/docs/guide/install/manualOperation.md @@ -0,0 +1,19 @@ +--- +pageClass: max-content +--- + +# 手动完成未尽事宜 +后台`WEB终端`执行命令失败,需要手动调整至命令能够执行的状态。 +1. 请确保您的站点运行在[开发环境](https://wonderful-code.gitee.io/guide/other/developerMustSee.html#%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83)(后端服务是通过`php think run`启动的) +2. 打开`WEB终端`窗口,查看失败的命令名称,根据下表查得实际执行的**命令**和**目录** +3. 打开/连接您本地PC或服务器的终端,手动执行命令切换到该目录,并执行**实际执行命令**,执行成功后,再前往`WEB终端`点击重试按钮。 + +注:`php think run`启动的服务内加载了运行环境中所有的`环境变量`,所以理论上,所有本地能正常执行的命令,WEB终端内也可以正常执行,本地失败,则终端必然也会失败。 + +### `WEB终端`实际命令与目录对照表 +|WEB终端命令名称|实际执行命令|执行目录|备注|本地执行失败参考| +|:----:|:----:|:----:|:----:|:----:| +|web-install.npm|npm install|`站点根目录/web`|命令中的`npm`为当前包管理器,可能会有变化|[install执行失败](http://localhost:8080/guide/install/npmInstallFail.html)| +|web-build.npm|npm run build|`站点根目录/web`|命令中的`npm`为当前包管理器,可能会有变化|[build执行失败](http://localhost:8080/guide/install/npmBuildFail.html)| +|composer.update|composer update|`站点根目录`||查看命令窗口的具体报错解决| +|test.npm|npm install|`站点根目录/public/npm-install-test`|命令中的`npm`为当前包管理器,可能会有变化|[install执行失败](http://localhost:8080/guide/install/npmInstallFail.html)| \ No newline at end of file diff --git a/docs/guide/install/senior.md b/docs/guide/install/senior.md index c00be5aedb68fe07271725f49d85d7f40d8c0742..43852b92e1747bb801a81a859ccf1415a5b850fd 100644 --- a/docs/guide/install/senior.md +++ b/docs/guide/install/senior.md @@ -20,7 +20,7 @@ Document root is: D:\WWW\ba\public # 安装服务命令限制 您可以对WEB终端的命令进行限制。\ -在`/config/buildadmin.php`文件中的`allowed_commands`字段上,`BuildAdmin`预设了一系列允许执行命令,这些命令都是非常安全的;如果您想通过安装服务执行其他的命令,请自行向该字段追加 +在`/config/terminal.php`文件中的`commands`字段上,`BuildAdmin`预设了一系列允许执行命令,这些命令都是非常安全的;如果您想通过安装服务执行其他的命令,请自行向该字段追加 # 服务安全保障 在`终端`,按下`Ctrl+C`,即可停止服务;在`终端`停止运行/断开时,服务会自动停止;加上以上的**指定安装服务端口**和**安装服务命令限制**,安装服务使用正确不会造成任何潜在安全问题。 diff --git a/docs/guide/other/appendix/getPoints.md b/docs/guide/other/appendix/getPoints.md new file mode 100644 index 0000000000000000000000000000000000000000..5486bb087f474f1b34027d9110105c3fe8498f5b --- /dev/null +++ b/docs/guide/other/appendix/getPoints.md @@ -0,0 +1,21 @@ +--- +pageClass: max-content +--- + +# 获取积分 +BuildAdmin是一款开源且无需授权即可商业使用的框架,为了框架可长期持续发展,我们建立了模块市场,小伙伴们可**通过参与生态建设来获取积分**,然后通过积分在模块市场下载自己需要的产品,积分目前有以下获取途径。 + +|途径|增加积分数额|领取方式|要求/备注| +|:----:|:----:|:----:|:----:| +|发布模块|100|自动发放|模块需经过官方审核成功上架| +|模块销售|合理自定义|定期自动发放|| +|star代码仓库|5|发送邮件|`gitee`和`github`可各获取一次| +|反馈bug|10-100|发送邮件|bug需复现成功且无前人反馈,官方根据bug评估增加积分| +|提交pr|20-200|发送邮件|官方根据pr评估增加积分,合并成功后发放| +|提交is|12-120|发送邮件|官方根据is评估增加积分| +|解决is|22-220|发送邮件|官方根据is评估增加积分| +|注册官网账户|10|自动发放|| +|watch仓库|1|发送邮件|`gitee`和`github`可各获取一次| +|fork仓库|1|发送邮件|`gitee`和`github`可各获取一次| + +自助领取积分功能已在待办,目前多数情况均需手动向`hi@buildadmin.com`发送邮件领取积分,请直接提供官网账户邮箱号+昵称+参与生态建设的截图凭证。 diff --git a/docs/guide/other/appendix/templateAgreement.md b/docs/guide/other/appendix/templateAgreement.md new file mode 100644 index 0000000000000000000000000000000000000000..0640697490cad716f4a9566f9b0beace667001e2 --- /dev/null +++ b/docs/guide/other/appendix/templateAgreement.md @@ -0,0 +1,94 @@ +--- +pageClass: max-content +--- + +# 模块购买和使用协议 + +### 一、导语 +BuildAdmin官网平台系由重庆鱼木飞鸟科技有限公司负责运营(以下简称“本平台”)。本平台在此特别提醒您(用户)在购买使用本平台产品时点击同意本协议之前,应当认真阅读本《模块购买和使用协议》(以下简称“协议”)。为确保您充分理解本协议中各条款内容,请您审慎阅读。未成年人应在法定监护人的陪同下阅读本协议。 +勾选并同意“理解并同意《模块购买和使用协议》”或类似的按钮或相应的链接,则表示您已完整阅读、理解并同意接受本协议的条款和条件。如果您不同意本协议或其中任何条款约定,则无权使用、购买服务。 + +### 二、模块下载 +1. 用户可以在本平台模块市场中在线下载和安装使用。 +2. 模块需要在注册登录且购买后才可以下载安装使用。 + +### 三、模块购买支付条款 +1. 用户可以在本平台模块市场中在线购买模块,购买时需提前注册好本平台账号。 +2. 积分可作为购买模块的货币使用。您在本平台模块市场支付购买相关产品时,可通过 “支付积分”完成。 +3. 用户承诺接受并遵守本协议的约定。如果用户不同意本协议的约定,应立即停止购买使用本平台模块市场服务。 +4. 用户在本平台模块市场购买产品时,用户应是具有法律规定的完全民事权利能力和民事行为能力,能够独立承担民事责任的自然人、法人或其他组织,若您不具备前述与您行为相适应的民事行为能力,则您及您的监护人应依照法律规定承担因此而导致的后果。同时本平台有权注销(永久冻结)用户的相关帐号,并保留追究用户及其监护人民事、刑事责任等权利。 +5. 用户应当在购买使用本平台模块之前认真阅读全部协议内容。用户确认本平台对协议中所含免除或限制其责任的条款已尽提示、说明义务,用户同意此协议。用户如对协议内容有任何异议的,应向本平台咨询。但无论用户事实上是否在购买本平台模块之前认真阅读了本协议内容,只要用户成功购买并使用了本平台任何产品,既与本平台缔结了本协议,本协议即对用户产生约束,届时用户不应以未阅读本协议的内容或者未获得本平台对用户问询解答等理由,主张本协议无效或要求撤销本协议。 + +### 四、使用模块市场 +1. 当您注册和使用本平台时您同意提供准确,完整的信息,您同意更新您的注册数据,以时刻确保它的准确和完整。您同意本平台可以根据本协议,存储和使用您提供的登记资料,以维护您的帐户,并履行义务。如您不同意接受本协议所有条款,则无权使用本平台服务。 +2. 您同意您在本平台购买的产品仅限自己学习使用,一切商业行业和本站无关。 +3. 本平台任何产品禁止再分发或以衍生品的形式再分发。 +4. 本平台任何产品禁止分享、复制、转售和传播。 +5. 本协议约定本平台与用户之间的权利义务。本协议可由本平台随时更新,更新后的协议条款一旦公布即代替原来的协议条款,恕不再另行通知,用户可在本网站查阅最新版协议条款。在本平台修改协议条款后,如果用户不接受修改后的条款,请立即停止使用本平台提供的服务,用户继续使用本平台提供的服务将被视为接受修改后的协议。 +6. 您同意您将不会从事任何活动干扰或破坏操作本平台的模块市场。您同意您将不会利用本平台模块制作、上载、复制、发布、传播包括但不限于如下法律、法规和政策禁止的内容: +- 反对宪法所确定的基本原则的; +- 危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一,损害国家荣誉和利益的; +- 侮辱或者诽谤他人,侵害他人合法权益的; +- 破坏国家宗教政策,宣扬邪教和封建迷信的; +- 散布谣言,扰乱社会秩序,破坏社会稳定的; +- 散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的; +- 含有法律、行政法规禁止的其他内容的信息。 + +### 五、本平台对您的行为的免责 +您在通过本平台模块市场购买使用任何基于本平台开发的产品之前,请仔细阅读下述免责条款。本平台对于您的以下行为不承担任何责任: +1. 您使用平台相关产品的某一行为或多种行为不符合国家法律法规的规定,或通过其产品从事非法活动,或侵害平台和任何第三方的合法权益,包括但不仅限于以下内容而造成的相关责任由您自行承担: +- 通过平台提供的模块储存、传播、邮件发送或提供具有非法性、威胁性、危害性、侮辱性、暴力、淫秽、种族或民族歧视的内容; +- 出售、转售或复制、开发服务商授予的使用权限; +- 复制和模仿服务商的设计理念、界面、功能和图表反对宪法所确定的基本原则的; +- 含有法律、法规、政策或本协议禁止的其他内容的行为。 +2. 您未严格按照产品的使用说明和或操作说明使用产品所引发的一切法律后果由您自行承担。 +3. 本平台模块市场仅是提供模块、案例、单页等应用的平台,对于是否购买该产品,应由您(用户)自行判断,且审慎购买。您需自行了解产品的适用性、各项功能、使用说明、收费标准、服务有效期等相关情况并注意交易风险,本平台不因您的判断而对您的行为负责。 + +### 六、本平台对其他事由的免责 +您在通过本平台购买使用任何产品之前,请仔细阅读下述免责条款,本平台对包括但不限于以下情况不承担任何责任: +1. 您理解并确认,在使用本平台服务的过程中,可能会遇到不可抗力等风险因素,使本平台服务发生中断。不可抗力是指不能预见、不能克服并不能避免的,且对一方或双方造成重大影响的客观事件,包括但不限于自然灾害如洪水、地震、风暴等,社会事件如战争、动乱、或政府管制等。出现上述情况时,由此给用户或第三方造成的损失,本平台及合作开发商在法律允许的范围内免责。 +2. 您理解并确认本平台因现有技术限制,相关产品可能存在瑕疵,您在使用产品期间所致的损害本平台免责。 +3. 您理解并确认基于本平台开发的任何产品,在适用的法律允许的最大限度内,产品与产品所提供或提出的任何服务都“按现状”及“可用性”来提供,本平台对一切瑕疵不提供任何形式的担保。 +4. 您理解并确认如果由于黑客攻击、政府管制、网络通讯瘫痪等对其发生和后果不能预见的事件,本平台和您均确认此属不可抗力,在不可抗力下,您同意本平台无须对本协议的延期履行、不能履行承担任何责任。 +5. 本平台需要定期或不定期地对本平台或相关的设备进行检修或者维护,如因此类情况而造成服务在合理时间内的中断,本平台无需为此承担任何责任,本平台会事先进行通告。 +6. 您理解并确认因包括但不限于用户原因、网络服务质量、社会环境等差异的影响,可能会存在各种安全问题的侵扰,如盗取用户账户、窃取用户信息、诱导下载安装病毒软件或访问含有病毒的网站等,继而影响本服务的正常使用,本平台无需为此承担任何责任。 +7. 用户理解并确认对于本平台向用户提供的下列产品或者服务的质量缺陷及其引发的任何损失,本平台无需承担任何责任: +- 本平台向用户免费提供的服务; +- 本平台向用户赠送的任何产品或者服务。 + +### 七、退款、转让、售后 +1. 本平台模块市场所有产品因提供全部源码,所有产品均为最终出售,不支持任何原因退款,请在购买前慎重考虑和仔细阅读此协议。 +2. 通过本平台提供的产品价格可能随时更改,本平台对降价或促销优惠,不提供价格保护或退款。 +3. 本平台任何产品禁止分享、复制、转售和传播。 +4. 只有在本平台模块市场界面在线购买的正版产品才有售后服务,通过其他任何途径购买或安装的均为盗版,本平台不提供任何售后服务。 +5. 在支持售后时,请提供你购买相关产品时订单号,以便我们核对购买记录后为你提供售后服务,如果查询不到购买记录或拒绝提供或提供的资料无法证明已购买正版,则是盗版用户,本平台不提供任何售后服务。 + +### 八、价格与更新 +1. 模块金额以最终结算价格为准,本平台对已售出的模块不做任何差价补偿。 +2. 如因系统BUG或用户自己使用特殊手段以低价或免费的形式购买的模块,本平台有权收回售出的模块。 +3. 在安装与更新模块前,请做好整站的文件和数据备份,本平台不对安装或更新模块时造成的损失承担任何责任。 +4. 模块的开发商放弃更新造成的无法更新,本平台不承担任何责任。 + +### 九、知识产权声明 +1. 本平台模块源代码所有权和著作权归开发者本人所有。 +2. 除另有特别声明外,本平台模块所依托的代码、文字、图片等著作权、专利权及其他知识产权均归开发者本人所有。 + +### 十、服务的变更、中断、终止 +1. 本平台保留变更和修改本协议的权利。修订后的协议一经发布,立即生效。如您仍使用本平台或仍在本平台模块市场购买相关产品,将自动构成您同意并接受修订后的协议。 +2. 由于网络服务的特殊性,用户理解并确认本平台有权保留服务变更、中断、终止的权利。本平台拟变更、中断、终止的服务应提前告知用户。 +3. 当用户出现以下情形之一,本平台可随时有权变更、中断、终止与您的服务。且无需对用户或任何第三方承担任何责任。 +- 您违反本协议的任何规定或违反国家法律、法规或相关政策。 +- 按照法律规定或有关机关单位要求。 +- 您不再是本平台用户。 +- 出于安全的因素或其他有必要因素,本平台暂时或不再提供模块市场服务。 + +### 十一、法律责任 +1. 如果本平台发现或收到他人举报、投诉用户违反本协议约定的,本平台有权进行核查,且包括但不限于对用户资料、聊天记录进行审查,并视情节轻重对违规帐号处以包括但不限于警告、帐号封禁、设备封禁、功能封禁的处罚。 +2. 您理解并同意本平台有权依法合理对违反有关法律法规或本协议规定的行为进行处罚,对违法违规的任何用户采取适当的法律行动,并依据法律法规保存有关信息向有关部门报告等,用户应承担由此产生的一切法律责任。 +3. 如果司法管辖权的法院发现本协议的任何条款无效,那么该条款将从本协议中删除,而不影响所载的其余条款。本协议的其余条款将继续有效并可强制执行。 + +### 十二、其他 +1. 本平台郑重提醒用户注意本协议中免除本平台责任和限制用户权利的条款,请用户仔细阅读,自主考虑风险。未成年人应在法定监护人的陪同下阅读本协议。 +2. 本协议之效力、解释、变更、执行与争议解决均适用中华人民共和国法律,没有相关法律规定的,参照通用国际商业惯例和(或)行业惯例。 +3. 若您和本平台之间因本协议发生任何纠纷或争议时,应首先通过友好协商来解决,协商无果的,您可向本平台住所地有管辖权的人民法院提起诉讼。 +4. 如本协议的任何条款无论因何种原因无效或不具可执行性,则上述条款可被分离,其余条款仍具有法律效应,对双方具有约束力。 \ No newline at end of file diff --git a/docs/senior/faq.md b/docs/senior/faq.md index ba866e669d3074b9ec270c1e95e478345b565647..04554e8ae6884218bdf9f4622ad6fd4c04d2dae4 100644 --- a/docs/senior/faq.md +++ b/docs/senior/faq.md @@ -93,4 +93,7 @@ RewriteRule (.*)$ /index\.php\?s=$1 [I] 2. 无需修改`web/.env.development`文件,API请求地址以正确配置(除非你明白你在做什么)。 #### 您在[生产环境](https://wonderful-code.gitee.io/guide/other/developerMustSee.html#%E7%BA%BF%E4%B8%8A%E7%8E%AF%E5%A2%83)下 -- `web`与`server`在同一站点,不存在此问题,除非您已经独立部署`web`端,那么请在`config/buildadmin.php`文件中配置允许跨域的域名。 \ No newline at end of file +- `web`与`server`在同一站点,不存在此问题,除非您已经独立部署`web`端,那么请在`config/buildadmin.php`文件中配置允许跨域的域名。 + +## 四、禁用模块时提示:ENOENT: no such file or directory, open '文件路径' +这是因为禁用模块时会自动删除模块提供的文件,文件丢失后vite报错是正常现象,请刷新浏览器继续使用即可。 \ No newline at end of file diff --git a/docs/senior/module/basicInfo.md b/docs/senior/module/basicInfo.md new file mode 100644 index 0000000000000000000000000000000000000000..70e34418f07c52d207bc76093a436f7b35518686 --- /dev/null +++ b/docs/senior/module/basicInfo.md @@ -0,0 +1,28 @@ +--- +pageClass: max-content +--- + +# 模块基本信息文件 +BuildAdmin通过此文件来识别ZIP包是否为一个正确的模块包文件,它必须存在。 + +### 模块根目录的 info.ini 文件 +``` ini +# 模块唯一标识,若不知您新建的模块标识是否唯一,暂时的,可主动询问群聊管理员 +uid = test1 +# 模块标题 +title = 测试模块 +# 模块介绍 +intro = 测试模块的介绍 +# 模块作者 +author = 码上开花 +# 模块作者官网ID +authorid = 1 +# 模块主页 +website = https://www.buildadmin.com +# 模块版本号 +version = 1.0.0 +# 模块状态,系统自动维护,有此字段即可 +state = 0 +# 模块在安装时,是否会触发WEB端开发环境的热重载:0=不触发,1=热重载,2=热更新 +vitereload = 0 +``` \ No newline at end of file diff --git a/docs/senior/module/configJson.md b/docs/senior/module/configJson.md new file mode 100644 index 0000000000000000000000000000000000000000..511142d318b47b47c5fa3609a69da3d9f44406b0 --- /dev/null +++ b/docs/senior/module/configJson.md @@ -0,0 +1,37 @@ +--- +pageClass: max-content +--- + +# 模块配置 +- 您可以在模块配置中指定模块所需的**NPM依赖**、**Composer依赖**,系统在安装时会自动安装这些依赖。 +- 您可以在模块配置中指定模块被禁用时不应被删除的文件,比如此模块覆盖了某个系统核心文件,那么模块被禁用时,禁用程序自动将此核心文件删除时,系统可能会崩溃(虽然系统在安装模块前有自动备份,且在禁用模块时会自动恢复)。 + +### 模块根目录的 config.json 文件 +json不支持注释,所以若要复制以下代码时,请一定删除注释代码。 +``` json +{ + // composer依赖列表 + "require": { + "nelexa/zip": "^3.3", + "guzzlehttp/guzzle": "^6.3" + }, + // composer开发环境依赖列表 + "require-dev": { + "symfony/var-dumper": "^4.2", + "topthink/think-trace": "^1.1" + }, + // NPM依赖列表 + "dependencies": { + "vue-i18n": "~9.1.9", + "vue-router": "~4.0.11" + }, + // NPM开发环境依赖列表 + "devDependencies": { + "@types/lodash": "~4.14.180", + "@types/node": "~17.0.9" + }, + // 禁用本模块时,不能删除的文件 + // 如果是系统核心文件:模块禁用时会自动恢复“安装模块时备份的所有冲突文件”,所以以下文件,多数情况会被还原到模块安装之前 + "protectedFiles": ["app/common.php", "app/admin/event.php"] +} +``` \ No newline at end of file diff --git a/docs/senior/module/coreController.md b/docs/senior/module/coreController.md new file mode 100644 index 0000000000000000000000000000000000000000..6c4ba633b3bb7c1d3541973b3b8b146efd22a9b1 --- /dev/null +++ b/docs/senior/module/coreController.md @@ -0,0 +1,101 @@ +--- +pageClass: max-content +--- + +# 模块核心控制器 +您可以为模块建立一个**核心控制器**文件,在该文件内,您可以准备好模块的`安装、卸载、更新、启用、禁用`事件方法,在用户对本模块执行对应操作时,系统将自动执行对应的方法。 + +### 核心控制器文件名 +- 核心控制器是以模块标识名进行**首字母大写**的方式来命名的 + +|模块唯一标识|核心控制器文件名|类名| +|:----:|:----:|:----:| +|test|Test|Test| +|userlogin|Userlogin|Userlogin| +|login1|Login1|Login1| + +### 核心控制器方法 + +``` php +value('id'); + $menu = [ + [ + 'type' => 'menu', + 'title' => '通知公告管理', + 'name' => 'routine/notice', + 'path' => 'routine/notice', + 'icon' => 'el-icon-ChatLineRound', + 'menu_type' => 'tab', + 'component' => '/src/views/backend/routine/notice/index.vue', + 'keepalive' => '1', + 'pid' => $pMenu ? $pMenu : 0, + 'children' => [ + ['type' => 'button', 'title' => '查看', 'name' => 'routine/notice/index'], + ['type' => 'button', 'title' => '添加', 'name' => 'routine/notice/add'], + ['type' => 'button', 'title' => '编辑', 'name' => 'routine/notice/edit'], + ['type' => 'button', 'title' => '删除', 'name' => 'routine/notice/del'], + ['type' => 'button', 'title' => '快速排序', 'name' => 'routine/notice/sortable'], + ], + ] + ]; + Menu::create($menu); + + } + + /** + * 卸载模块时执行的方法 + */ + public function uninstall() + { + // 删除添加的菜单 + Menu::delete('routine/notice', true); + } + + /** + * 启用模块时执行的方法 + */ + public function enable() + { + Db::name('config') + ->where('name', 'record_number') + ->update([ + 'value' => '备案号-测试1', + ]); + + Menu::enable('routine/notice'); + } + + /** + * 禁用模块时执行的方法 + */ + public function disable() + { + Menu::disable('routine/notice'); + } + + /** + * 升级模块时执行的方法 + */ + public function update() + { + + } +} + +``` \ No newline at end of file diff --git a/docs/senior/module/directoryStructure.md b/docs/senior/module/directoryStructure.md new file mode 100644 index 0000000000000000000000000000000000000000..0d7eff3511fd560039c8a6ce41642193468195f6 --- /dev/null +++ b/docs/senior/module/directoryStructure.md @@ -0,0 +1,22 @@ +--- +pageClass: max-content +--- + +# 目录结构 +模块的目录结构几乎等同于`BuildAdmin`本身的目录结构,您的模块包内也可以包含以下目录 +``` ini +app +config +extend +public +vendor +web +``` +您可以在这些目录内添加任意文件,模块在安装时,会直接将以上目录**覆盖到`BuildAdmin`项目目录**,在覆盖前,系统会: +- 导入安装sql +- 检测文件和依赖的冲突并自动备份 +- 执行开发者预设的模块启用脚本 + +::: tip +通过对目录结构的理解,您应该已经了解如何使用模块来为系统新增文件和覆盖系统已有文件。 +::: \ No newline at end of file diff --git a/docs/senior/module/installSql.md b/docs/senior/module/installSql.md new file mode 100644 index 0000000000000000000000000000000000000000..e1e95f81cc03ba30c7325d5a249893d7beddfd37 --- /dev/null +++ b/docs/senior/module/installSql.md @@ -0,0 +1,24 @@ +--- +pageClass: max-content +--- + +# 模块安装SQL +模块在安装时,会自动在项目数据库中执行此文件内的sql命令。 +- 您可以在此文件内,写好建表、改表结构、更新配置等`sql`命令。 +- 请在sql命令中使用`__PREFIX__`来代表当前项目的数据表前缀。 +- 模块添加的数据表,请以模块唯一标识开头。 + +### 模块根目录的 install.sql 文件 +``` sql +-- 修改系统配置 +UPDATE __PREFIX__config SET value='测试1' WHERE name='site_name'; + +-- 创建一个数据表 +CREATE TABLE IF NOT EXISTS `__PREFIX__module_NewTable` ( + `id` int(10) UNSIGNED NULL AUTO_INCREMENT COMMENT 'ID' , + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='模块添加的数据表'; + +-- 修改表结构 +ALTER TABLE `__PREFIX__module_NewTable` ADD COLUMN `welcome_msg` text COMMENT '欢迎语' AFTER `id`; +``` \ No newline at end of file diff --git a/docs/senior/module/start.md b/docs/senior/module/start.md new file mode 100644 index 0000000000000000000000000000000000000000..4e3461341a8279aa1cfcd832d9bc92c04113782f --- /dev/null +++ b/docs/senior/module/start.md @@ -0,0 +1,23 @@ +--- +pageClass: max-content +--- + +# 开始 +`BuildAdmin`的模块开发非常简单,开发者可以通过模块修改整个`BuildAdmin站点`的任何部分或增加任何功能。 + +### 什么是模块? +- 模块可以在系统的任何位置新增文件。 +- 模块可以为系统添加依赖,并由系统的模块安装器完成依赖的安装,包括`composer`和`npm`依赖。 +- 模块可以覆盖系统已有的任何文件(若您打算发布此模块,请一定注意,因为此举可能造成您的模块无法成功上架,确要修改请提交PR)。 +- 模块可以自动导入安装sql文件。 +- 模块可以在启用、禁用、更新时,自动执行一个方法。 +- ... + +### 如何发布模块到市场 +所有开发者都可以参与模块市场的建设,为模块市场提供新的模块可获得**一次性积分奖励**加上模块每次**销售的积分奖励**,在发布模块前,请您了解: + +1. 所有模块均需经过官方审核才可以上架。 +2. 覆盖了系统核心文件的模块,大概率不能上架(系统核心的修改请提交PR)。 +3. 开发模块前,请一定通读本模块开发文档。 +4. 发布模块请发送模块所有资料到邮箱`hi@buildadmin.com`。 +5. 目前通常情况下只审核`后台管理功能、单页、主题模板、实用案例、实用工具、接口整合、开发测试、基础设施`类别的模块,且均需以积分销售。 \ No newline at end of file diff --git a/docs/senior/server/config.md b/docs/senior/server/config.md index 290229a4fe81e9d52b1c31284b988a6cb3442041..6a043afc397cd861b21efeebeb1a40f0120e9a73 100644 --- a/docs/senior/server/config.md +++ b/docs/senior/server/config.md @@ -8,16 +8,16 @@ pageClass: max-content ## 系统配置 ::: tip -我们基于TP的目录结构,在`/config/`目录下放置了`buildadmin.php`文件,该文件为`BuildAdmin`的系统配置文件。 +我们基于TP的目录结构,在`/config/`目录下放置了`buildadmin.php`和`terminal.php`文件,这两个文件为`BuildAdmin`的系统配置文件。 ::: -您可以在该文件内配置: +您可以在这两个文件内配置: - 允许跨域访问的域名 -- WEB终端允许执行的命令 - 是否开启前台会员中心 - 管理员登录重试次数 - 当拖拽排序两条记录权重相等时的处理方式 - TOKEN 驱动 +- WEB终端允许执行的命令 - .... #### 获取系统配置