diff --git a/themes/manual/controller/SiteController.php b/themes/manual/controller/SiteController.php index a76ddec..7d61e48 100644 --- a/themes/manual/controller/SiteController.php +++ b/themes/manual/controller/SiteController.php @@ -8,7 +8,6 @@ require_once __DIR__ . '/../../../plugins/Parsedown.php'; Class SiteController extends Controller { public function actionIndex() { - //获取数据 $titles = []; $content = ''; @@ -28,7 +27,7 @@ Class SiteController extends Controller { $html = $scanner->fixMDUrls($readmeFile['realpath'], $html); } - $pageTitle = "FileSite.io - 无数据库、基于文件和目录的网址导航、图书、图片、视频网站PHP开源系统"; + $pageTitle = !empty($titles) ? $titles[0]['name'] : "FileSite.io - 无数据库、基于文件和目录的Markdown文档、网址导航、图书、图片、视频网站PHP开源系统"; $viewName = 'index'; $params = compact('titles', 'content', 'html'); return $this->render($viewName, $params, $pageTitle); diff --git a/themes/manual/controller/ViewController.php b/themes/manual/controller/ViewController.php index 8bc41fd..c20da50 100644 --- a/themes/manual/controller/ViewController.php +++ b/themes/manual/controller/ViewController.php @@ -36,7 +36,7 @@ Class ViewController extends Controller { throw new Exception("404 - 文件编号 {$fileId} 找不到", 404); } - $pageTitle = !empty($titles) ? $titles[0]['name'] : "404 - 文件找不到"; + $pageTitle = !empty($titles) ? $titles[0]['name'] : "No title, 无标题"; $viewName = 'index'; $params = compact('titles', 'content', 'html'); return $this->render($viewName, $params, $pageTitle); diff --git a/themes/manual/views/layout/main.php b/themes/manual/views/layout/main.php index 60df8a7..aba16e0 100644 --- a/themes/manual/views/layout/main.php +++ b/themes/manual/views/layout/main.php @@ -20,6 +20,10 @@ include_once $viewFile; ?>
diff --git a/www/content/Class_DirScanner.md b/www/content/Class_DirScanner.md new file mode 100644 index 0000000..9dc1cb1 --- /dev/null +++ b/www/content/Class_DirScanner.md @@ -0,0 +1,84 @@ +# 类 DirScanner 定义 + +## 私有属性 + +* nginxSecureOn: Nginx防盗链开启状态 +* nginxSecret: Nginx防盗链密钥 +* userIp: 用户IP地址 +* nginxSecureTimeout: Nginx防盗链有效期,单位:秒 +* nginxSecureLinkMd5Pattern: Nginx防盗链MD5加密方式 +* allowReadContentFileExtensions: 允许读取文件内容的文件类型 +* fields: 私有属性字段名和说明 +* rootDir: 当前扫描的根目录 +* webRoot: 网站静态文件相对路径的根目录,默认值:/content/ +* scanningDirLevel: 当前扫描的目录深度 +* scanStartTime: 开始扫描时间戳,单位:秒 +* scanResults: 目录扫描结果 +* tree: 目录扫描树形结构 + + +## 受保护属性 + +* supportFileExtensions: 支持的文件类型 +* maxReadFilesize: 默认每种文件读取内容最大大小 +* securedFileExtensions: 开启Nginx防盗链的文件类型 + + +## 公开属性 + +* scanTimeCost: 上一次目录扫描耗时,单位:毫秒 + + +## 私有方法 + +* parseDescriptionFiles: 解析描述文件内容 +* parseShortCuts: 解析快捷方式文件内容 +* getId: 根据文件路径生成唯一编号 +* isNginxSecureLinkMd5PatternValid: 判断Nginx防盗链MD5加密方式字符串是否合格 +* getDirData: 根据路径生成目录数组 +* getFileData: 根据路径生成文件数组,兼容URL文件 +* getScanningLevel: 根据路径和根目录获取当前扫描的目录深度 +* getRelativeDirname: 根据相对目录名 +* mergeDescriptionData: 合并描述文件内容到md文件或者目录数据 + + +## 受保护的方法 + +* getSecureLink: 根据文件生成防盗链网址 +* getFilePath: 根据文件生成相对路径 +* getDirPath: 根据目录生成相对路径 + + +## 公开方法 + +* setNginxSecure: 设置Nginx防盗链开启或关闭,以及密钥、用户IP、加密方式、超时时长 +* setNginxSecret: 设置Nginx防盗链密钥 +* setUserIp: 设置当前用户IP,用来生成加密网址 +* setNginxSecureLinkMd5Pattern: 设置Nginx防盗链MD5加密方式 +* setNginxSecureTimeout: 设置Nginx防盗链超时时长,单位:秒 +* setWebRoot: 设置网站静态文件相对根目录 +* getNginxSecret: 获取Nginx防盗链密钥 +* getUserIp: 获取当前用户IP +* getNginxSecureLinkMd5Pattern: 获取Nginx防盗链MD5加密方式 +* getNginxSecureTimeout: 获取Nginx防盗链超时时长,单位:秒 +* getWebRoot: 获取网站静态文件相对根目录 +* isSecureOn: 获取是否开启防盗链 +* scan: 扫描目录获取目录和文件列表,支持指定目录扫描深度(目录级数) +* getScanResults: 获取扫描结果 +* getMenus: 获取扫描结果中的目录结构 +* getMDTitles: 获取.md文件中的h1-h6标题 +* fixMDUrls: 替换.md文件解析之后的HTML中的静态文件URL为相对路径path +* getDefaultReadme: 获取名称为README.md的文件 + + +## 参考说明 + +Nginx防盗链MD5加密方式参考下面网址中的示例, +将Nginx的变量替换$符号为英文大括号; + +示例: +``` +{secure_link_expires}{uri}{remote_addr} {secret} +``` + +* Nginx secure link module diff --git a/www/content/FSC.md b/www/content/FSC.md new file mode 100644 index 0000000..3ecb991 --- /dev/null +++ b/www/content/FSC.md @@ -0,0 +1,74 @@ +# Filesite.io core lib + +FSC is the core lib of filesite.io, a small PHP Framework. + + +## Controllers and Actions + +Please put controller files in the directory **controller/**, +which are extends from the base **Controller**. + +Please name public actions like **actionIndex** in your controller file, +which are using the prefix **action**. + +Examples: +``` +controller/SiteController.php +controller/CommandController.php +``` + + +## Layout and Views + +Please put layout files in the directory **views/layout/**, +and create diretories for your views, +such as **views/site/**. + + +## App config + +Please set configs in the file **conf/app.php**. + +You can use ```FSC::$app['config']``` in controller and views. + +Example in views: + +``` +print_r(FSC::$app['config']); +``` + + +## View data + +You can pass parameters to view with an array, like: + +``` +$viewName = 'index'; +$params = compact('foo', 'bar'); +return $this->render($viewName, $params); +``` + +And you can visit parameters with the variable ```$viewData``` in views. + +Example in view: + +``` +echo "I'm foo {$viewData['foo']}."; +print_r($viewData); +``` + + +## Commands + +You can add functions in the command controller ```controller/CommandController.php```, +and run the command to execute it: + +``` +php bin/command.php +php bin/command.php "test" "foo=bar" +``` + + +## Nginx config example + +Please check the file [Nginx.conf.md](./Nginx.conf.md) diff --git a/Nginx.conf.md b/www/content/Nginx.conf.md similarity index 100% rename from Nginx.conf.md rename to www/content/Nginx.conf.md diff --git a/www/content/README.md b/www/content/README.md index 21364ae..9044c7d 100644 --- a/www/content/README.md +++ b/www/content/README.md @@ -1,16 +1,18 @@ -# filesite.io - 无数据库、基于文件和目录的网址导航、图书、图片、视频网站PHP开源系统 +# filesite.io - 无数据库、基于文件和目录的Markdown文档、网址导航、图书、图片、视频网站PHP开源系统 ## 简介 -项目名称:filesite.io +项目名称:**filesite.io** 项目介绍: -为进一步降低内容分享者、内容创作者把内容变成网站的门槛, + +为**进一步降低**内容分享者、内容创作者把内容变成网站的**门槛**, 以常见的本地磁盘目录+文件的形式作为网站数据来源, 修改磁盘文件内容上传到服务器就可以生成网页, 让大家更易于同时维护本地和网站的内容。 目标用户: +* 经常用Markdown写文档/文章的朋友 * 网址导航站经营者、收藏夹/网址分享者 * 小说网站经营者、小说创作者、博客主、作家、自媒体人 * 图片网站经营者、摄影师、摄影爱好者、驴友 @@ -22,9 +24,9 @@ filesite使用非常简单,一旦部署好之后,以后只需将本地最新内容上传覆盖即可。 -1. 下载filesite源码,并参考文档部署到你的服务器上; -2. 修改配置文件config/app.php,简单设置后上传到服务器完成部署; -3. 将本地内容目录及文件上传到网站目录:content/ +1. 下载filesite源码,并参考[Nginx配置参考](./Nginx.conf.md)部署到你的服务器上; +2. 修改配置文件``config/app.php``,简单设置后上传到服务器完成部署; +3. 将本地内容目录及文件上传到网站目录:``www/content/`` 4. 打开网址浏览最新内容; 有了filesite,你可以保留现有的本地内容创作习惯,并非常容易地把它们制作成一个网站分享给他人。 @@ -42,7 +44,14 @@ Machete是砍刀,它能砍、能削、能切、能剁,最适合披荆斩棘 Filesite.io也一样,它短小精悍,使用它把常见的本地文件制作成网站,就像拿起砍刀一样简单, 所以我们将filesite.io的源码命名为**machete**。 -见[filesite.io源码Machete](https://git.filesite.io/filesite/machete) + +用git下载: +``` +git clone https://git.filesite.io/filesite/machete.git +``` + +去查看filesite.io源码Machete。 + ## 皮肤下载 @@ -51,7 +60,14 @@ Filesite.io也一样,它短小精悍,使用它把常见的本地文件制作 ## 使用手册 -见[filesite.io使用手册](./Manual.md) +filesite.io核心代码参考: +* [Filesite.io core lib](./FSC.md) +* [Nginx配置参考](./Nginx.conf.md) + +filesite.io二次开发参考: +* [filesite.io使用手册](./Manual.md) +* [类DirScanner定义](./Class_DirScanner.md) + ## 反馈与建议