diff --git a/frontend/js/api.js b/frontend/js/api.js index e0ec520..790bc9e 100644 --- a/frontend/js/api.js +++ b/frontend/js/api.js @@ -160,6 +160,7 @@ export const api = { getTokens: () => request('/tokens'), createToken: (data) => request('/tokens', { method: 'POST', body: JSON.stringify(data) }), revokeToken: (id) => request('/tokens/' + id, { method: 'DELETE' }), + setTokenTargets: (id, target_playlist_ids) => request('/tokens/' + id + '/targets', { method: 'PUT', body: JSON.stringify({ target_playlist_ids }) }), // #73: re-designate agency token playlists // Current user getMe: () => request('/auth/me'), diff --git a/frontend/js/i18n/de.js b/frontend/js/i18n/de.js index 36f6bb1..a12fa31 100644 --- a/frontend/js/i18n/de.js +++ b/frontend/js/i18n/de.js @@ -363,6 +363,8 @@ export default { 'apitoken.agency_needs_playlists': 'Wähle mindestens eine Playlist für einen Agentur-Token.', 'apitoken.agency_no_playlists': 'Erstelle zuerst eine Playlist – ein Agentur-Token muss auf eine zielen.', 'apitoken.targets_label': 'Zugewiesen:', + 'apitoken.edit_targets': 'Playlists bearbeiten', + 'apitoken.targets_updated': 'Zuweisungen aktualisiert', 'apitoken.auto_publish_label': 'Automatisch veröffentlichen (meine Freigabe überspringen)', 'apitoken.auto_publish_hint': 'Aus (Standard): Hinzufügungen warten als Entwurf auf deine Veröffentlichung. An: sie gehen sofort live – nur für Agenturen, denen du voll vertraust.', 'apitoken.auto_publish_on': 'Auto-Veröffentlichung an', diff --git a/frontend/js/i18n/en.js b/frontend/js/i18n/en.js index 4754cff..624ef0b 100644 --- a/frontend/js/i18n/en.js +++ b/frontend/js/i18n/en.js @@ -399,6 +399,8 @@ export default { 'apitoken.agency_needs_playlists': 'Select at least one playlist for an agency token.', 'apitoken.agency_no_playlists': 'Create a playlist first — an agency token must target one.', 'apitoken.targets_label': 'Designated:', + 'apitoken.edit_targets': 'Edit playlists', + 'apitoken.targets_updated': 'Designations updated', 'apitoken.auto_publish_label': 'Auto-publish (skip my approval)', 'apitoken.auto_publish_hint': 'Off (default): additions wait as drafts for you to publish. On: they go live immediately — only for agencies you fully trust.', 'apitoken.auto_publish_on': 'auto-publish on', diff --git a/frontend/js/i18n/es.js b/frontend/js/i18n/es.js index d4080b7..53e5696 100644 --- a/frontend/js/i18n/es.js +++ b/frontend/js/i18n/es.js @@ -362,6 +362,8 @@ export default { 'apitoken.agency_needs_playlists': 'Selecciona al menos una lista para un token de agencia.', 'apitoken.agency_no_playlists': 'Crea una lista primero: un token de agencia debe apuntar a una.', 'apitoken.targets_label': 'Designadas:', + 'apitoken.edit_targets': 'Editar listas', + 'apitoken.targets_updated': 'Designaciones actualizadas', 'apitoken.auto_publish_label': 'Publicación automática (omitir mi aprobación)', 'apitoken.auto_publish_hint': 'Desactivado (predeterminado): las adiciones esperan como borradores para que las publiques. Activado: se publican de inmediato, solo para agencias de plena confianza.', 'apitoken.auto_publish_on': 'publicación automática activada', diff --git a/frontend/js/i18n/fr.js b/frontend/js/i18n/fr.js index bec332b..ff2d2bf 100644 --- a/frontend/js/i18n/fr.js +++ b/frontend/js/i18n/fr.js @@ -363,6 +363,8 @@ export default { 'apitoken.agency_needs_playlists': 'Sélectionnez au moins une liste pour un jeton d\'agence.', 'apitoken.agency_no_playlists': 'Créez d\'abord une liste : un jeton d\'agence doit en cibler une.', 'apitoken.targets_label': 'Assignées :', + 'apitoken.edit_targets': 'Modifier les listes', + 'apitoken.targets_updated': 'Désignations mises à jour', 'apitoken.auto_publish_label': 'Publication automatique (ignorer mon approbation)', 'apitoken.auto_publish_hint': 'Désactivé (par défaut) : les ajouts attendent en brouillon votre publication. Activé : ils sont diffusés immédiatement, uniquement pour les agences de pleine confiance.', 'apitoken.auto_publish_on': 'publication automatique activée', diff --git a/frontend/js/i18n/pt.js b/frontend/js/i18n/pt.js index ffa7553..6708436 100644 --- a/frontend/js/i18n/pt.js +++ b/frontend/js/i18n/pt.js @@ -363,6 +363,8 @@ export default { 'apitoken.agency_needs_playlists': 'Selecione pelo menos uma lista para um token de agência.', 'apitoken.agency_no_playlists': 'Crie uma lista primeiro: um token de agência deve apontar para uma.', 'apitoken.targets_label': 'Designadas:', + 'apitoken.edit_targets': 'Editar listas', + 'apitoken.targets_updated': 'Designações atualizadas', 'apitoken.auto_publish_label': 'Publicação automática (ignorar minha aprovação)', 'apitoken.auto_publish_hint': 'Desativado (padrão): as adições aguardam como rascunho para você publicar. Ativado: vão ao ar imediatamente, apenas para agências de total confiança.', 'apitoken.auto_publish_on': 'publicação automática ativada', diff --git a/frontend/js/views/settings.js b/frontend/js/views/settings.js index dcec920..5c8f93a 100644 --- a/frontend/js/views/settings.js +++ b/frontend/js/views/settings.js @@ -90,6 +90,7 @@ export async function render(container) {
${t('settings.loading_users')}
${t('apitoken.agency_no_playlists')}
`} +