mirror of
https://github.com/ad-aures/castopod.git
synced 2026-04-13 19:47:45 +02:00
feat(plugins): add html field type + CodeEditor component + rework html head generation
update php and js packages to latest
This commit is contained in:
parent
b869acb3a9
commit
8cf9c6dc83
227 changed files with 2991 additions and 2988 deletions
|
|
@ -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
|
||||
{
|
||||
// …
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
## 目前支持的标签
|
||||
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@ title: 安全问题
|
|||
Castopod 构建于 [CodeIgniter4](https://codeigniter.com/), PHP 框架上,鼓励
|
||||
[更好的安全实践](https://codeigniter.com/user_guide/concepts/security.html)。
|
||||
|
||||
为了最大限度地提高你实例的安全性并防止任何恶意攻击。 我们 建议你在安装或更新后检
|
||||
查所有的 Castopod 文件权限(避免任何之前的权限错误):
|
||||
为了最大限度地提高你实例的安全性并防止任何恶意攻击。 我们 建议你在安装或更新后检查所有的 Castopod 文件权限(避免任何之前的权限错误):
|
||||
|
||||
- `writable/` 文件夹权限为 **可读** 和 **可写**。
|
||||
- `public/media/` 文件夹权限为 **可读** 和 **可写**。
|
||||
|
|
|
|||
|
|
@ -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. ✨ 享受你的新实例, 你已经更新完毕!
|
||||
|
||||
|
|
|
|||
|
|
@ -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).
|
||||
|
||||
[](https://adaures.com/)
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue