⚙️ Configuration#
This page documents the GenericSetup profiles, Plone registry settings, and permissions provided by sc-videos.
📦 GenericSetup profiles#
Profile |
ID |
Description |
|---|---|---|
Default |
|
Main installation profile. Registers the Video content type, catalog indexes/columns, control panel, and permissions. |
Initial content |
|
Creates example Video content items using |
Uninstall |
|
Removes the browser layer. Hidden from the add-ons control panel. |
🔐 Permissions#
Permission ID |
Title |
Default roles |
|---|---|---|
|
Add Video |
Manager, Site Administrator, Editor, Contributor |
|
Add VideoSeries |
None (controlled via |
|
Add Episode |
None (granted locally on VideoSeries creation) |
The Video permission controls who can create Video content items.
The VideoSeries permission is managed by the enable_series registry setting: when enabled, the setting grants the permission to default roles on the portal.
The Episode permission is granted locally inside each VideoSeries container by a creation subscriber.
📇 Catalog configuration#
Indexes#
Index |
Type |
Adapter |
Description |
|---|---|---|---|
|
|
|
Video duration in seconds. Supports range queries. |
|
|
|
|
|
|
|
UUID of the nearest parent VideoSeries. Indexed on Episodes only. |
Metadata columns#
Column |
Source |
|---|---|
|
|
|
|
|
|
These columns are available in catalog search results (brain attributes), allowing templates and blocks to display video information without waking the full content object.
Indexer adapters#
Adapter name |
Module |
Description |
|---|---|---|
|
|
Returns the |
|
|
Returns video duration in seconds. |
|
|
Returns |
|
|
Traverses ancestors to return the UUID of the nearest parent VideoSeries. Registered for |
🔍 Querystring fields#
sc-videos registers querystring fields so that Collection and Listing blocks can filter by video attributes. All fields appear in the Video group in the querystring editor.
Field |
Index |
Operations |
Description |
|---|---|---|---|
Video duration |
|
Equals, Less than, Larger than |
Filter by exact duration in seconds. Sortable. |
Video duration range |
|
Matches any of, Matches none of |
Filter by duration bucket using the |
Has video |
|
Yes, No |
Filter content by whether it has a video attached. |
Series |
|
Matches any of, Matches none of |
Filter Episodes by their parent VideoSeries. Uses the |
Duration range vocabulary#
The sc.videos.vocabulary.duration_ranges vocabulary provides human-readable duration buckets for the Video duration range querystring field:
Token |
Label |
Duration (seconds) |
|---|---|---|
|
0-10 minutes |
0 -- 600 |
|
11-30 minutes |
601 -- 1,800 |
|
31-60 minutes |
1,801 -- 3,600 |
|
> 60 minutes |
3,601+ |
When a user selects a duration range, the duration_modifier (IParsedQueryIndexModifier) translates it into a catalog range query against the duration index.
🌐 Registry settings#
Settings are stored in the Plone registry under the sc.videos prefix.
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Enable VideoSeries and Episode content types. When enabled, grants the VideoSeries add permission on the portal. |
|
|
|
Enable YouTube Data API v3. |
|
|
|
Google API key for YouTube. |
See ⚙️ Video Settings control panel for the web UI and REST API access.
⚛️ Frontend settings#
Frontend configuration is grouped under config.settings.voltoVideos in the @plone/registry runtime configuration.
Integrators can override these values from their own applyConfig function.
voltoVideos.description#
Controls how long video descriptions returned by the metadata pipeline are truncated before being written into form fields by applyVideoMetadataToForm (used by the VideoURLWidget "fetch metadata" action).
Key |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Maximum length (in characters) of the description after metadata population. |
|
|
|
Suffix appended when the description is truncated. Counts against |
Example override:
import type { ConfigType } from '@plone/registry';
export default function applyConfig(config: ConfigType) {
config.settings.voltoVideos.description.maxLength = 280;
config.settings.voltoVideos.description.ellipsis = '…';
return config;
}
Types are declared via module augmentation on @plone/types' SettingsConfig, so TypeScript will catch typos and type mismatches on these keys.
🌍 Browser layer#
Interface: sc.videos.interfaces.IBrowserLayer
Registered by the default profile and removed by the uninstall profile. Used to scope views, adapters, and other registrations to sites where sc-videos is installed.
📂 ZCML dependencies#
sc-videos depends on the following packages (loaded via dependencies.zcml):
plone.restapiplone.volto
See also
⚙️ Video Settings control panel. The Video Settings control panel.
📄 Video content type. The Video content type definition.
📋 IRemoteVideo behavior. The IRemoteVideo behavior.