feat(plugins): add html field type + CodeEditor component + rework html head generation

update php and js packages to latest
This commit is contained in:
Yassine Doghri 2024-12-17 15:06:08 +00:00
commit 8cf9c6dc83
227 changed files with 2991 additions and 2988 deletions

View file

@ -37,7 +37,7 @@ RSS feed.
Here is a good place to add new tags to the generated channel.
```php
public function rssAfterChannel(Podcast $podcast, SimpleRSSElement $channel): void
public function rssAfterChannel(Podcast $podcast, RssFeed $channel): void
{
// …
}
@ -65,7 +65,7 @@ feed.
Here is a good place to add new tags to the generated item.
```php
public function rssAfterItem(Epsiode $episode, SimpleRSSElement $item): void
public function rssAfterItem(Epsiode $episode, RssFeed $item): void
{
// …
}
@ -75,11 +75,11 @@ public function rssAfterItem(Epsiode $episode, SimpleRSSElement $item): void
This hook is executed in the public pages' `<head>` tag.
This is a good place to add meta tags and third-party scripts to Castopod's
public pages.
This is a good place to add meta tags, custom styles, and third-party scripts to
Castopod's public pages.
```php
public function siteHead(): void
public function siteHead(HtmlHead $head): void
{
// …
}

View file

@ -101,16 +101,16 @@ each property being a field key and the value being a `Field` object.
A field is a form element:
| Property | Type | Note |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------ |
| `type` | `checkbox` \| `datetime` \| `email` \| `group` \| `markdown` \| `number` \| `radio-group` \| `select-multiple` \| `select` \| `text` \| `textarea` \| `toggler` \| `url` | Default is `text` |
| `label` (required) | `string` | Can be translated (see i18n) |
| `hint` | `string` | Can be translated (see i18n) |
| `helper` | `string` | Can be translated (see i18n) |
| `optional` | `boolean` | Default is `false` |
| `options` | `Options` | Required for `radio-group`, `select-multiple`, and `select` types. |
| `multiple` | `boolean` | Default is `false` |
| `fields` | `Array<string, Field>` | Required for `group` type |
| Property | Type | Note |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| `type` | `checkbox` \| `datetime` \| `email` \| `group` \| `html` \| `markdown` \| `number` \| `radio-group` \| `rss` \| `select-multiple` \| `select` \| `text` \| `textarea` \| `toggler` \| `url` | Default is `text` |
| `label` (required) | `string` | Can be translated (see i18n) |
| `hint` | `string` | Can be translated (see i18n) |
| `helper` | `string` | Can be translated (see i18n) |
| `optional` | `boolean` | Default is `false` |
| `options` | `Options` | Required for `radio-group`, `select-multiple`, and `select` types. |
| `multiple` | `boolean` | Default is `false` |
| `fields` | `Array<string, Field>` | Required for `group` type |
#### Options object

View file

@ -2,8 +2,9 @@
title: 验证 & 授权
---
Castopod 使用 `codeigniter/shield` 处理身份验证和授权 与自定义规则。 角色和权限
在两个级别上定义: Roles and permissions are defined at two levels:
Castopod 使用 `codeigniter/shield`
处理身份验证和授权 与自定义规则。 角色和权限在两个级别上定义: Roles and
permissions are defined at two levels:
1. [实例范围](#1-instance-wide-roles-and-permissions)
2. [每个播客](#2-per-podcast-roles-and-permissions)

View file

@ -4,15 +4,12 @@ title: 官方 Docker 镜像
Castopod 在其自动构建期间会将 3 个 Docker 映像推送到 Docker Hub
- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod);一个使
用 nginx 单元的整合 Castopod 镜像
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app):应用程序包,包含
所有 Castopod 依赖关系
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server)Castopod
的 Nginx 配置
- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod);一个使用 nginx 单元的整合 Castopod 镜像
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app):应用程序包,包含所有 Castopod 依赖关系
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server)Castopod 的 Nginx 配置
此外Castopod 需要一个与 MySQL 兼容的数据库。 Redis 数据库 可以添加为缓存处理
器。 A Redis database can be added as a cache handler.
此外Castopod 需要一个与 MySQL 兼容的数据库。 Redis 数据库 可以添加为缓存处理器。 A
Redis database can be added as a cache handler.
## 目前支持的标签

View file

@ -35,9 +35,8 @@ PHP version 8.3 or higher is required, with the following extensions installed:
> 我们建议使用 [MariaDB](https://mariadb.org)。
你需要填写服务器主机名、数据库名称、用户名和密码才能完成安装过程。 如果没有这
些,请与你的服务器管理员联系。 If you do not have these, please contact your
server administrator.
你需要填写服务器主机名、数据库名称、用户名和密码才能完成安装过程。 如果没有这些,请与你的服务器管理员联系。 If
you do not have these, please contact your server administrator.
#### 权限
@ -46,8 +45,8 @@ server administrator.
### 可选FFmpeg v4.1.8 或更高版本,用于视频素材
如果你需要视频素材,则需要 [FFFmpeg](https://www.ffmpeg.org/) 4.1.8 或更高版本。
必须安装以下扩展: The following extensions must be installed:
如果你需要视频素材,则需要 [FFFmpeg](https://www.ffmpeg.org/)
4.1.8 或更高版本。必须安装以下扩展: The following extensions must be installed:
- **FreeType 2** 来自库
[gd](https://www.php.net/manual/en/image.installation.php)
@ -63,11 +62,11 @@ server administrator.
### Pre-requisites
0. 需要一台已经实现 [环境要求](#requirements)的 Web 服务器
1. 为 Castopod 创建一个 MySQL 数据库,其中用户具有访问和修改权限(有关详细信息,
请参阅 [MySQL 兼容数据库](#mysql-compatible-database))。
1. 为 Castopod 创建一个 MySQL 数据库,其中用户具有访问和修改权限(有关详细信息,请参阅
[MySQL 兼容数据库](#mysql-compatible-database))。
2. 使用 _SSL 证书_ 在您的域激活 HTTPS。
3. 下载最新的 [Castopod](https://castopod.org/) 到 web 服务器并解压(如果尚未下
载)。
3. 下载最新的 [Castopod](https://castopod.org/)
到 web 服务器并解压(如果尚未下载)。
- ⚠️ 将 web 服务器根目录设置为 `castopod` 文件夹中的 `public/` 子文件夹。
4. 在 Web 服务器上为各种后台进程添加 **cron 任务** (相应地替换路径):
@ -85,16 +84,16 @@ server administrator.
### (推荐) 安装向导
1. 前往你最喜欢的浏览器并跳转至安装向导页面
(`https://your_domain_name.com/cp-install`)运行 Castopod 安装脚本。
1. 前往你最喜欢的浏览器并跳转至安装向导页面 (`https://your_domain_name.com/cp-install`)运行 Castopod 安装脚本。
2. 请按照屏幕上的说明进行操作。
3. 开始播客!
<Aside>
The install script writes a `.env` file in the package root. 安装脚本将会在根目
录中创建一个 `.env` 文件并写入数据。 如果你不能执行安装向导,那么可以基于
`.env.example` 文件手动创建和编辑 `.env` 文件。
The install script writes a `.env` file in the package
root. 安装脚本将会在根目录中创建一个 `.env`
文件并写入数据。 如果你不能执行安装向导,那么可以基于 `.env.example`
文件手动创建和编辑 `.env` 文件。
</Aside>
@ -147,9 +146,9 @@ email.SMTPPass="你的邮件密码"
### 媒体存储
By default, files are saved to the `public/media` folder using the file system.
默认情况下,文件使用文件系统保存到 `公共/媒体` 文件夹中。 如果您需要将 `media`
文件夹重新定位到其他位置,您可以在您的 `.env` 文件中指定它,如下所示:
By default, files are saved to the `public/media` folder using the file
system. 默认情况下,文件使用文件系统保存到 `公共/媒体` 文件夹中。 如果您需要将
`media` 文件夹重新定位到其他位置,您可以在您的 `.env` 文件中指定它,如下所示:
```ini
# […]
@ -194,9 +193,9 @@ media.s3.region="your_s3_region"
### 使用 YunoHost 安装
[YunoHost](https://yunohost.org/) 是一个基于 Debian GNU/Linux 的发行版,由免费和
开源软件包组成。 它可以为你解决自托管的困难。 It manages the hardships of
self-hosting for you.
[YunoHost](https://yunohost.org/) 是一个基于 Debian
GNU/Linux 的发行版,由免费和开源软件包组成。 它可以为你解决自托管的困难。 It
manages the hardships of self-hosting for you.
<div class="flex flex-wrap items-center gap-4">

View file

@ -5,8 +5,7 @@ title: 安全问题
Castopod 构建于 [CodeIgniter4](https://codeigniter.com/), PHP 框架上,鼓励
[更好的安全实践](https://codeigniter.com/user_guide/concepts/security.html)。
为了最大限度地提高你实例的安全性并防止任何恶意攻击。 我们 建议你在安装或更新后检
查所有的 Castopod 文件权限(避免任何之前的权限错误)
为了最大限度地提高你实例的安全性并防止任何恶意攻击。 我们 建议你在安装或更新后检查所有的 Castopod 文件权限(避免任何之前的权限错误)
- `writable/` 文件夹权限为 **可读** 和 **可写**。
- `public/media/` 文件夹权限为 **可读** 和 **可写**。

View file

@ -4,8 +4,7 @@ title: 如何更新 Castopod
import { Aside } from "@astrojs/starlight/components";
安装 Castopod 后,你可能希望将实例更新到最新版本 版本以享受最新功能 ✨, 修复错误
🐛 和性能提升 ⚡。
安装 Castopod 后,你可能希望将实例更新到最新版本 版本以享受最新功能 ✨, 修复错误 🐛 和性能提升 ⚡。
## 更新说明
@ -13,14 +12,14 @@ import { Aside } from "@astrojs/starlight/components";
- 参看. [我应该在更新前进行备份吗?](#should-i-make-a-backup-before-updating)
1. 前往 [发布页面](https://code.castopod.org/adaures/castopod/-/releases) 和 查
看您的实例是否是最新的 Castopod 版本
1. 前往 [发布页面](https://code.castopod.org/adaures/castopod/-/releases)
和 查看您的实例是否是最新的 Castopod 版本
- 参看
[我在哪里可以找到我的 Castopod 版本?](#where-can-i-find-my-castopod-version)
2. 下载名为`Castopod Package`的最新发布包,你可以在 `zip` 或 `tar.gz` 压缩包之间
选择
2. 下载名为`Castopod Package`的最新发布包,你可以在 `zip` 或 `tar.gz`
压缩包之间选择
- ⚠️ 请确保你下载的是 Castopod 软件包而 **不是** 源代码
- 请注意,你还可以从 [castopod.org](https://castopod.org/)
@ -83,8 +82,9 @@ them sequentially, from the oldest to the newest.
1. 下载最新版本,覆盖您的文件,同时保留 `.env` 文件和 `public/media` 文件夹。
2. 从 `v1.0.0-alpha.43` 开始,按顺序执行每个版本更新指令(从老版本到 最新版本)
然后是 `v1.0.0-alpha.44``v1.0.0-alpha.45`,…,直到 `v1.0.0-beta.1`。
2. 从 `v1.0.0-alpha.43`
开始,按顺序执行每个版本更新指令(从老版本到 最新版本),然后是
`v1.0.0-alpha.44``v1.0.0-alpha.45`,…,直到 `v1.0.0-beta.1`。
3. ✨ 享受你的新实例, 你已经更新完毕!

View file

@ -4,11 +4,10 @@ title: 欢迎 👋
import { LinkCard } from "@astrojs/starlight/components";
Castopod 是一个免费的开源播客托管平台,为那些想要和听众接触与互动的播客们制作
的。
Castopod 是一个免费的开源播客托管平台,为那些想要和听众接触与互动的播客们制作的。
Castopod 易于安装,并使用 [CodeIgniter4](https://codeigniter.com/) 构建, 这是一
个强大的 PHP 框架,并且占用极小。
Castopod 易于安装,并使用 [CodeIgniter4](https://codeigniter.com/)
构建, 这是一个强大的 PHP 框架,并且占用极小。
<LinkCard title="安装" href="./getting-started/install" />
@ -44,28 +43,24 @@ Castopod 易于安装,并使用 [CodeIgniter4](https://codeigniter.com/) 构
- 📤  也支持将播客移出 Castopod
- 🔀  多租户:根据需要托管任意数量的播客
- 👥  多用户:添加贡献者并设置角色
- 🌎  i18n 支持:翻译成英语,法语,波兰语,德语,巴西葡萄牙语和西班牙语
...[还有更多](https://translate.castopod.org) and
- 🌎
 i18n 支持:翻译成英语,法语,波兰语,德语,巴西葡萄牙语和西班牙语 ...[还有更多](https://translate.castopod.org) and
[many more](https://translate.castopod.org)!
## 创作动机
播客生态系统本质上是去中心化的:你可以创建自己的播客 RSS 文件,将其发布到网络上
并在线共享。
播客生态系统本质上是去中心化的:你可以创建自己的播客 RSS 文件,将其发布到网络上并在线共享。
事实上,它是唯一长期保持这种状态的媒体之一。
随着习惯的发展,越来越多的人开始接触播客:允许创作者寻找新的方式来分享他们的想
法,或是让听众获得更好的内容。
随着习惯的发展,越来越多的人开始接触播客:允许创作者寻找新的方式来分享他们的想法,或是让听众获得更好的内容。
随着播客的使用越来越广泛,一些公司正试图控制播客与集中化。
Castopod 的创建旨在提供一种开放且可持续的替代方案来托管你的播客,促进权力下放,
确保播客可以用创造力表达自己。
Castopod 的创建旨在提供一种开放且可持续的替代方案来托管你的播客,促进权力下放,确保播客可以用创造力表达自己。
此项目由开源社区推动的,特别是
由[联邦宇宙](https://fediverse.party/en/fediverse/) 和
[播客 2.0](https://podcastindex.org/) 推动。
此项目由开源社区推动的,特别是由[联邦宇宙](https://fediverse.party/en/fediverse/)
和 [播客 2.0](https://podcastindex.org/) 推动。
## 与其他解决方案的对比
@ -75,51 +70,42 @@ gauge whether Castopod is the right fit for you.
### Castopod 对比 Wordpress
Castopod 经常被称为 “播客中的 Wordpress”因为两者有很多相似之处。 在某些方面,
确实如此。 实际上Castopod 受到 WordPress 生态的极大启发,看到了采用社区的易用
性以及运行它的网站数量。 In some ways this is true. And actually, Castopod was
greatly inspired by the Wordpress ecosystem, seeing the ease of adoption from
the community and the number of websites running it.
Castopod 经常被称为 “播客中的 Wordpress”因为两者有很多相似之处。 在某些方面,确实如此。 实际上Castopod 受到 WordPress 生态的极大启发,看到了采用社区的易用性以及运行它的网站数量。 In
some ways this is true. And actually, Castopod was greatly inspired by the
Wordpress ecosystem, seeing the ease of adoption from the community and the
number of websites running it.
就像 Wordpress 一样Castopod 是免费 & 开源的PHP 构建并使用 MySQL 数据库,可以
在大多数 Web 服务器上轻松安装。
就像 Wordpress 一样Castopod 是免费 & 开源的PHP 构建并使用 MySQL 数据库,可以在大多数 Web 服务器上轻松安装。
Wordpress 是创建你的网站,并使用插件扩展以获得想要内容的好办法。 这是一个成熟的
CMS可以帮助你在线访问任何类型的网站。 It is a full fledged CMS that helps you
get any type of website online.
Wordpress 是创建你的网站,并使用插件扩展以获得想要内容的好办法。 这是一个成熟的 CMS可以帮助你在线访问任何类型的网站。 It
is a full fledged CMS that helps you get any type of website online.
另一方面Castopod 旨在专门满足播客的需求,专注于播客,而不是其他。 你不需要任何
插件即可轻松开始播客之旅。 You don't need any plugin to get you started on your
podcasting journey.
另一方面Castopod 旨在专门满足播客的需求,专注于播客,而不是其他。 你不需要任何插件即可轻松开始播客之旅。 You
don't need any plugin to get you started on your podcasting journey.
还拥有对播客的独特优化:从播客的创建和新剧集的发布一直到广播,营销和分析。
最后根据你的需要Wordpress 和 Castopod 甚至可以共存,因为他们有相同的配置环
境!
最后根据你的需要Wordpress 和 Castopod 甚至可以共存,因为他们有相同的配置环境!
### Castopod 对比 Funkwhale
Funkwhale 是一个自托管、现代界面、免费开源的音乐服务器。 就像 Castopod 一
Funkwhale 也位于联邦宇宙中这是一个去中心化的社交网络允许两者的互联。Just
Funkwhale 是一个自托管、现代界面、免费开源的音乐服务器。 就像 Castopod 一样Funkwhale 也位于联邦宇宙中这是一个去中心化的社交网络允许两者的互联。Just
as Castopod, Funkwhale is on the fediverse, a decentralized social network
allowing interoperability between the two.
Funkwhale 最初是围绕音乐制作的。 后来随着项目的发展引入了托管播客的能力。And
later on, as the project evolved, the ability to host podcasts was introduced.
与 Funkwhale 不同Castopod 是只围绕播客设计和构建的。 这样可以更简单地实现与播
客相关的生态系统,例如播客 2.0 功能(报表、 章节、地点、人员…)。 This allows
easier implementation for features related to the podcasting ecosystem, such as
the podcasting 2.0 features (transcripts, chapters, locations, persons, …).
与 Funkwhale 不同Castopod 是只围绕播客设计和构建的。 这样可以更简单地实现与播客相关的生态系统,例如播客 2.0 功能(报表、 章节、地点、人员…)。 This
allows easier implementation for features related to the podcasting ecosystem,
such as the podcasting 2.0 features (transcripts, chapters, locations, persons,
…).
因此,如果你想托管你的音乐库,你可能应该使用 Funkwhale如果您想主持一个播客
使用 Castopod。
因此,如果你想托管你的音乐库,你可能应该使用 Funkwhale如果您想主持一个播客请使用 Castopod。
### Castopod 与其他播客
有许多非常棒地解决方案可供你托管播客,并
且[很多](https://podcastindex.org/apps)正在搭上播客 2.0 的便车,就像 Castopod 一
样!
有许多非常棒地解决方案可供你托管播客,并且[很多](https://podcastindex.org/apps)正在搭上播客 2.0 的便车,就像 Castopod 一样!
这些解决方案各不相同,你可以对比 [功能列表](#features)。
@ -129,34 +115,30 @@ the podcasting 2.0 features (transcripts, chapters, locations, persons, …).
full control over what you produce. Also, as it is open-source, you can even
customize it as you wish.
- Castopod 是目前唯一一个同时集成去中心化的,带有 ActivePub 的社交网络以及很多播
客 2.0 功能集成的解决方案,希望弥合两者之间的差距。
- Castopod 是目前唯一一个同时集成去中心化的,带有 ActivePub 的社交网络以及很多播客 2.0 功能集成的解决方案,希望弥合两者之间的差距。
## 贡献
喜欢 Castopod 并且想帮忙吗? 请查看以下文档以帮助你入门。 请查看以下文档以帮助你
入门。
喜欢 Castopod 并且想帮忙吗? 请查看以下文档以帮助你入门。 请查看以下文档以帮助你入门。
### 行为准则
Castopod has adopted a Code of Conduct that we expect project participants to
adhere to. Castopod 已经通过了一项行为准则,并希望所有的参与者都能够遵循本行为准
则。 请阅
读[行为准则](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
adhere to.
Castopod 已经通过了一项行为准则,并希望所有的参与者都能够遵循本行为准则。 请阅读[行为准则](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
以便了解哪些行为被允许,哪些行为不会被容忍。
### 贡献指南
阅读我们的 [贡献指南](../contributing/guidelines.md) ,了解我们的开发过程。 提出
错 误修正和改进想法,以及如何构建和测试 Castopod 。
阅读我们的 [贡献指南](../contributing/guidelines.md)
,了解我们的开发过程。 提出错 误修正和改进想法,以及如何构建和测试 Castopod 。
## 联系
你可以联系我们寻求帮助或提出任何问题:
- [Discord](https://castopod.org/discord) (用于与开发人员和社区直接互动)
- [问题跟踪器](https://code.castopod.org/adaures/castopod/-/issues)(用于功能请
求和错误报告)
- [问题跟踪器](https://code.castopod.org/adaures/castopod/-/issues)(用于功能请求和错误报告)
或者,你可以在社交媒体上关注我们,以获取有关 Castopod 的新闻:
@ -168,8 +150,8 @@ adhere to. Castopod 已经通过了一项行为准则,并希望所有的参与
## 赞助商
The ongoing development of Castopod is made possible with the support of its
backers. Castopod 的发展离不开赞助商的支持。 如果你想要帮助我们,请考
虑[赞助 Castopod 的开发](https://opencollective.com/castopod/contribute).
backers.
Castopod 的发展离不开赞助商的支持。 如果你想要帮助我们,请考虑[赞助 Castopod 的开发](https://opencollective.com/castopod/contribute).
[![Ad Aures Logo](../../../assets/images/sponsors/adaures.svg)](https://adaures.com/)

View file

@ -2,8 +2,9 @@
title: 認證 & 授權
---
Castopod 使用 `codeigniter/shield` 處理身分認證和授權 與自定義規則。 腳色和權限
在定義為兩個層級: Roles and permissions are defined at two levels:
Castopod 使用 `codeigniter/shield`
處理身分認證和授權 與自定義規則。 腳色和權限在定義為兩個層級: Roles and
permissions are defined at two levels:
1. [實例範圍](#1-instance-wide-roles-and-permissions)
2. [每個播客](#2-per-podcast-roles-and-permissions)