You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
senzapaura_es/static/admin/config.yml

427 lines
16 KiB

# Panel de contenido (Sveltia CMS).
#
# Escribe los mismos archivos Markdown de `src/content/`, así que nada de lo
# que ya funciona cambia: el esquema los sigue validando al compilar, git sigue
# guardando el historial de cada letra y el catálogo sigue sin hacer consultas.
#
# Los campos de aquí replican el esquema de `src/lib/content/schema.ts`. Cuando
# se añada un campo allí, hay que añadirlo también aquí, o el panel lo borrará
# al guardar una entrada.
backend:
name: github
# Cambiar por el repositorio real cuando exista. Trabajando en local no se
# usa: el flujo local abre la carpeta del proyecto desde el propio navegador.
repo: senzapaura/senzapaura
branch: main
# Dónde aterrizan las imágenes que se suban desde el panel. Si prefieres
# agruparlas por disco (static/images/<album>/), se mueven a mano después: al
# esquema le vale cualquier ruta que empiece por "/".
media_folder: static/images
public_folder: /images
collections:
# ---------------------------------------------------------------- estilos
- name: estilos
label: Estilos
label_singular: Estilo
description: Cada estilo es un segmento de la página de música.
folder: src/content/estilos
identifier_field: nombre
create: true
slug: '{{slug}}'
summary: '{{nombre}}'
fields:
- { name: nombre, label: Nombre, widget: string }
- name: resumen
label: Resumen
widget: string
required: false
hint: Una frase corta; acompaña al título del segmento.
- name: orden
label: Orden
widget: number
value_type: int
min: 0
default: 10
hint: Menor número, más arriba en la página de música.
- name: principal
label: Estilo principal
widget: boolean
default: false
required: false
hint: Solo uno puede serlo. Es el que abre la portada.
- { name: imagen, label: Imagen del segmento, widget: image, required: false }
- name: body
label: Texto introductorio
widget: markdown
required: false
# ---------------------------------------------------------------- álbumes
- name: albumes
label: Álbumes
label_singular: Álbum
description: Discos, EPs, singles y colecciones.
folder: src/content/albumes
identifier_field: titulo
create: true
slug: '{{slug}}'
summary: '{{titulo}} · {{fecha}}'
fields:
- { name: titulo, label: Título, widget: string }
- name: estilo
label: Estilo
widget: relation
collection: estilos
value_field: '{{slug}}'
display_fields: [nombre]
search_fields: [nombre]
- { name: fecha, label: Fecha de publicación, widget: datetime, date_format: 'YYYY-MM-DD', time_format: false, picker_utc: true }
- name: tipo
label: Tipo
widget: select
default: album
options: [album, ep, single, coleccion]
- { name: portada, label: Portada, widget: image, required: false }
- { name: sello, label: Sello, widget: string, required: false }
- { name: resumen, label: Resumen, widget: string, required: false }
- { name: destacado, label: Destacado, widget: boolean, default: false, required: false }
- name: edicion
label: Datos de edición
widget: object
required: false
collapsed: true
fields:
- { name: numeroCatalogo, label: Nº de catálogo, widget: string, required: false }
- name: formatos
label: Formatos
widget: select
multiple: true
required: false
options: [digital, cd, vinilo, casete]
- { name: pais, label: País, widget: string, required: false }
- name: creditos
label: Créditos del disco
widget: list
required: false
label_singular: Crédito
summary: '{{rol}}: {{nombre}}'
fields:
- { name: rol, label: Cometido, widget: string }
- { name: nombre, label: Nombre, widget: string }
- name: enlaces
label: Enlaces de escucha
widget: object
required: false
collapsed: true
fields:
- { name: spotify, label: Spotify, widget: string, required: false }
- { name: appleMusic, label: Apple Music, widget: string, required: false }
- { name: youtube, label: YouTube, widget: string, required: false }
- { name: bandcamp, label: Bandcamp, widget: string, required: false }
- name: body
label: Notas del disco
widget: markdown
required: false
# -------------------------------------------------------------- canciones
- name: canciones
label: Canciones
label_singular: Canción
description: El cuerpo del texto es la letra. Los saltos de línea se respetan.
folder: src/content/canciones
identifier_field: titulo
create: true
slug: '{{slug}}'
summary: '{{titulo}}'
fields:
- { name: titulo, label: Título, widget: string }
- name: estilo
label: Estilo
widget: relation
collection: estilos
value_field: '{{slug}}'
display_fields: [nombre]
search_fields: [nombre]
- name: album
label: Álbum
widget: relation
collection: albumes
value_field: '{{slug}}'
display_fields: [titulo]
search_fields: [titulo]
required: false
hint: Déjalo vacío si es un single suelto; irá al álbum «Singles» de su estilo.
- name: numero
label: Nº de pista
widget: number
value_type: int
min: 1
required: false
hint: Obligatorio si hay álbum. Se ignora en los singles.
- name: duracion
label: Duración
widget: string
required: false
pattern: ['^\d{1,2}:[0-5]\d$', 'Escríbela como m:ss, por ejemplo 4:12']
- { name: ano, label: Año, widget: number, value_type: int, min: 1900, max: 2200, required: false }
- name: audio
label: Archivo de audio
widget: file
required: false
media_folder: /media/audio/subidas
public_folder: subidas
hint: >-
Sube aquí el archivo completo, con el nombre que sea. Al arrancar
(`npm run dev`) se coloca en la carpeta de su disco, se genera el
fragmento de muestra y se rellena la duración si está vacía.
- { name: portada, label: Portada propia, widget: image, required: false, hint: 'Si la dejas vacía se usa la del álbum.' }
- name: interpretes
label: Intérpretes
widget: list
required: false
field: { name: nombre, label: Nombre, widget: string }
- name: letra
label: Firma de la letra
widget: list
required: false
hint: Déjalo vacío si la firmas tú.
field: { name: nombre, label: Nombre, widget: string }
- name: musica
label: Firma de la música
widget: list
required: false
hint: Déjalo vacío si la firmas tú.
field: { name: nombre, label: Nombre, widget: string }
- { name: destacada, label: Destacada, widget: boolean, default: false, required: false }
- name: instrumental
label: Instrumental
widget: boolean
default: false
required: false
hint: Sin letra. El cuerpo pasa a leerse como notas de la pieza.
- { name: alaVenta, label: A la venta, widget: boolean, required: false, hint: 'Por defecto se vende si tiene audio.' }
- name: idioma
label: Idioma de la letra
widget: select
default: es
options:
- { label: 'Español', value: es }
- { label: 'Inglés', value: en }
- { label: 'Portugués', value: pt }
- { label: 'Francés', value: fr }
- { label: 'Italiano', value: it }
- { label: 'Catalán', value: ca }
- { label: 'Gallego', value: gl }
- { label: 'Euskera', value: eu }
required: false
- name: traduccion
label: Traducción al español
widget: text
required: false
hint: >-
Solo si la letra no está en español. Se enseña en una segunda columna
al lado de la original, así que conviene respetar el corte de los
versos para que se puedan seguir en paralelo.
- name: inspiracion
label: De dónde sale
widget: text
required: false
hint: Separa los párrafos con una línea en blanco.
- name: etiquetas
label: Etiquetas
widget: list
required: false
hint: >-
De qué habla, cómo suena, con quién se canta. Cruzan el catálogo por
donde no lo hacen el estilo ni el disco.
- name: versiones
label: Alternativas musicales
widget: list
required: false
label_singular: Versión
summary: '{{nombre}}'
collapsed: true
fields:
- { name: nombre, label: Nombre del arreglo, widget: string }
- name: audio
label: Archivo de audio
widget: file
media_folder: /media/audio/subidas
public_folder: subidas
hint: El arreglo completo. Se coloca solo al arrancar, como el principal.
- name: duracion
label: Duración
widget: string
required: false
pattern: ['^\d{1,2}:[0-5]\d$', 'Escríbela como m:ss']
- { name: nota, label: Nota, widget: string, required: false }
- name: videos
label: Vídeos
widget: list
required: false
label_singular: Vídeo
summary: '{{titulo}}'
collapsed: true
fields:
- name: youtube
label: Enlace o id de YouTube
widget: string
hint: Pega el enlace tal cual; el esquema saca el id.
- { name: titulo, label: Qué es, widget: string, required: false }
- name: registro
label: Registro de la obra
widget: object
required: false
collapsed: true
fields:
- name: iswc
label: ISWC
widget: string
required: false
pattern: ['^[Tt][-\s.]?\d{3}[.\s]?\d{3}[.\s]?\d{3}[-\s]?\d$', 'Formato T-DDD.DDD.DDD-C']
hint: Identifica la OBRA. Es el mismo en todas sus versiones.
- name: isrc
label: ISRC
widget: string
required: false
pattern: ['^[A-Za-z]{2}[-\s]?[A-Za-z0-9]{3}[-\s]?\d{2}[-\s]?\d{5}$', 'Formato CC-XXX-YY-NNNNN']
hint: Identifica ESTA grabación. Cada versión tiene el suyo.
- { name: entidad, label: Entidad de gestión, widget: string, required: false }
- { name: numero, label: Nº de registro, widget: string, required: false }
- { name: editorial, label: Editorial musical, widget: string, required: false }
- name: reparto
label: Reparto de autoría
widget: list
required: false
label_singular: Parte
summary: '{{nombre}} — {{porcentaje}} %'
hint: Si lo rellenas, los porcentajes tienen que sumar exactamente 100.
fields:
- { name: nombre, label: Nombre, widget: string }
- name: rol
label: Qué firma
widget: select
default: letra y musica
options: ['letra', 'musica', 'letra y musica']
- { name: porcentaje, label: Porcentaje, widget: number, value_type: float, min: 0.01, max: 100 }
- name: enlaces
label: Enlaces de escucha
widget: object
required: false
collapsed: true
fields:
- { name: spotify, label: Spotify, widget: string, required: false }
- { name: appleMusic, label: Apple Music, widget: string, required: false }
- { name: youtube, label: YouTube, widget: string, required: false }
- name: body
label: Letra
widget: markdown
required: false
hint: Los saltos de línea se respetan; cada verso en su línea.
# ----------------------------------------------------------------- taller
- name: taller
label: Taller de letras
label_singular: Capítulo
description: Los principios del oficio y una ficha de creación por estilo.
folder: src/content/taller
identifier_field: titulo
create: true
slug: '{{slug}}'
summary: '{{titulo}}'
fields:
- { name: titulo, label: Título, widget: string }
- name: tipo
label: Tipo
widget: select
default: principio
options:
- { label: 'Principio (el curso)', value: principio }
- { label: 'Ficha de estilo', value: ficha }
- { name: orden, label: Orden dentro de su bloque, widget: number, value_type: int, min: 0, default: 10 }
- { name: resumen, label: Resumen, widget: string, required: false }
- name: ficha
label: Datos del estilo
widget: object
required: false
collapsed: true
hint: Solo para las fichas de estilo; en los principios se deja vacío.
fields:
- { name: origen, label: Origen, widget: string, required: false }
- { name: compas, label: Compás, widget: string, required: false }
- { name: tempo, label: Tempo, widget: string, required: false }
- { name: metrica, label: Métrica, widget: string, required: false }
- { name: estructura, label: Estructura, widget: string, required: false }
- { name: rima, label: Rima, widget: string, required: false }
- name: temas
label: De qué se habla
widget: list
required: false
field: { name: tema, label: Tema, widget: string }
- name: rasgos
label: Rasgos de escritura
widget: list
required: false
field: { name: rasgo, label: Rasgo, widget: string }
- { name: body, label: Texto del capítulo, widget: markdown }
# ---------------------------------------------------------------- páginas
# ------------------------------------------------------------------- blog
- name: blog
label: Blog
label_singular: Entrada
description: Apuntes fechados. El cuerpo del texto es el artículo.
folder: src/content/blog
identifier_field: titulo
create: true
slug: '{{slug}}'
summary: '{{titulo}} · {{fecha}}'
fields:
- { name: titulo, label: Título, widget: string }
- { name: fecha, label: Fecha, widget: datetime, date_format: 'YYYY-MM-DD', time_format: false, picker_utc: true }
- name: resumen
label: Resumen
widget: string
required: false
hint: Una frase; es lo que se lee en el listado y en los buscadores.
- { name: imagen, label: Imagen de cabecera, widget: image, required: false }
- name: etiquetas
label: Etiquetas
widget: list
required: false
hint: Las mismas que las canciones; así el blog cruza con el catálogo.
- name: canciones
label: Temas de los que habla
widget: relation
collection: canciones
value_field: '{{slug}}'
display_fields: [titulo]
search_fields: [titulo]
multiple: true
required: false
- name: borrador
label: Borrador
widget: boolean
default: false
required: false
hint: Mientras esté marcado no aparece en la web.
- name: body
label: Texto
widget: markdown
- name: paginas
label: Páginas
label_singular: Página
description: Textos sueltos, como la biografía.
folder: src/content/paginas
identifier_field: titulo
create: true
slug: '{{slug}}'
summary: '{{titulo}}'
fields:
- { name: titulo, label: Título, widget: string }
- { name: descripcion, label: Descripción, widget: string, required: false }
- { name: body, label: Texto, widget: markdown }

Powered by TurnKey Linux.