playlist start
This commit is contained in:
parent
02f018c1c7
commit
79e3ed3a1b
@ -78,11 +78,11 @@
|
||||
"playlist_panel_th_duration": "Duration",
|
||||
"playlist_panel_th_enabled": "Enabled",
|
||||
"playlist_panel_th_activity": "Options",
|
||||
"playlist_form_add_title": "Add Slide",
|
||||
"playlist_form_add_title": "Add Playlist",
|
||||
"playlist_form_add_submit": "Add",
|
||||
"playlist_form_edit_title": "Edit Slide",
|
||||
"playlist_form_edit_title": "Edit Playlist",
|
||||
"playlist_form_edit_submit": "Save",
|
||||
"playlist_form_label_name": "Name",
|
||||
"playlist_form_label_name": "Enter playlist name",
|
||||
"playlist_form_label_time_sync": "Sync slides across players",
|
||||
"playlist_form_button_cancel": "Cancel",
|
||||
"js_playlist_delete_confirmation": "Are you sure?",
|
||||
|
||||
22
lang/es.json
22
lang/es.json
@ -69,20 +69,20 @@
|
||||
"slideshow_content_form_button_upload_choosen": "No hay archivos seleccionados",
|
||||
"js_slideshow_content_delete_confirmation": "¿Estás seguro?",
|
||||
|
||||
"playlist_page_title": "Listas de reproducción",
|
||||
"playlist_page_title": "Playlist",
|
||||
"playlist_button_add": "Agregar una lista de reproducción",
|
||||
"playlist_panel_active": "Listas de reproducción activas",
|
||||
"playlist_panel_inactive": "Listas de reproducción inactivas",
|
||||
"playlist_panel_empty": "Actualmente, no hay listas de reproducción. %link% ahora.",
|
||||
"playlist_panel_active": "Playlist activas",
|
||||
"playlist_panel_inactive": "Playlist inactivas",
|
||||
"playlist_panel_empty": "Actualmente, no hay playlist. %link% ahora.",
|
||||
"playlist_panel_th_name": "Nombre",
|
||||
"playlist_panel_th_duration": "Duración",
|
||||
"playlist_panel_th_enabled": "Habilitado",
|
||||
"playlist_panel_th_activity": "Opciones",
|
||||
"playlist_form_add_title": "Agregar Diapositiva",
|
||||
"playlist_form_add_title": "Agregar Playlist",
|
||||
"playlist_form_add_submit": "Agregar",
|
||||
"playlist_form_edit_title": "Editar Diapositiva",
|
||||
"playlist_form_edit_title": "Editar Playlist",
|
||||
"playlist_form_edit_submit": "Guardar",
|
||||
"playlist_form_label_name": "Nombre",
|
||||
"playlist_form_label_name": "Introduce el nombre de la playlist",
|
||||
"playlist_form_label_time_sync": "Sincronizar diapositivas entre reproductores",
|
||||
"playlist_form_button_cancel": "Cancelar",
|
||||
"js_playlist_delete_confirmation": "¿Estás seguro?",
|
||||
@ -156,11 +156,11 @@
|
||||
"settings_variable_form_label_name": "Nombre",
|
||||
"settings_variable_form_label_value": "Valor",
|
||||
"settings_variable_form_button_cancel": "Cancelar",
|
||||
"settings_variable_form_error_not_playlist_enabled_while_fleet_player_enabled": "No puede deshabilitar listas de reproducción mientras la gestión de reproductores de flota está activada",
|
||||
"settings_variable_form_error_not_playlist_enabled_while_fleet_player_enabled": "No puede deshabilitar playlist mientras la gestión de reproductores de flota está activada",
|
||||
"settings_variable_desc_lang": "Idioma del servidor",
|
||||
"settings_variable_desc_playlist_enabled": "Habilitar gestión de listas de reproducción",
|
||||
"settings_variable_desc_playlist_enabled": "Habilitar gestión de playlist",
|
||||
"settings_variable_desc_fleet_player_enabled": "Habilitar gestión de reproductores de flota",
|
||||
"settings_variable_desc_edition_fleet_player_enabled": "La gestión de listas de reproducción también se habilitará",
|
||||
"settings_variable_desc_edition_fleet_player_enabled": "La gestión de playlist también se habilitará",
|
||||
"settings_variable_desc_auth_enabled": "Habilitar gestión de autenticación",
|
||||
"settings_variable_desc_edition_auth_enabled": "Las credenciales predeterminadas del usuario serán admin/admin",
|
||||
"settings_variable_desc_external_url": "URL externa (ej.: https://studio-01.company.com o http://10.10.3.100)",
|
||||
@ -251,7 +251,7 @@
|
||||
"enum_variable_section_general": "1. General",
|
||||
"enum_variable_section_player_options": "2. Opciones del reproductor",
|
||||
"enum_variable_section_player_animation": "3. Animación del reproductor",
|
||||
"enum_variable_section_playlist": "4. Listas de reproducción",
|
||||
"enum_variable_section_playlist": "4. Playlist",
|
||||
"enum_variable_section_fleet": "5. Gestión de flota",
|
||||
"enum_variable_section_security": "6. Seguridad",
|
||||
"enum_application_language_english": "Inglés",
|
||||
|
||||
22
lang/fr.json
22
lang/fr.json
@ -69,25 +69,25 @@
|
||||
"slideshow_content_form_button_upload_choosen": "Aucun fichier sélectionné",
|
||||
"js_slideshow_content_delete_confirmation": "Êtes-vous sûr ?",
|
||||
|
||||
"playlist_page_title": "Listes de lecture",
|
||||
"playlist_button_add": "Ajouter une liste de lecture",
|
||||
"playlist_panel_active": "Listes de lecture actives",
|
||||
"playlist_panel_inactive": "Listes de lecture inactives",
|
||||
"playlist_panel_empty": "Actuellement, il n'y a pas de liste de lecture. %link% maintenant.",
|
||||
"playlist_page_title": "Playlist",
|
||||
"playlist_button_add": "Ajouter une playlist",
|
||||
"playlist_panel_active": "Playlist actives",
|
||||
"playlist_panel_inactive": "Playlist inactives",
|
||||
"playlist_panel_empty": "Actuellement, il n'y a pas de playlist. %link% maintenant.",
|
||||
"playlist_panel_th_name": "Nom",
|
||||
"playlist_panel_th_duration": "Durée",
|
||||
"playlist_panel_th_enabled": "Activé",
|
||||
"playlist_panel_th_activity": "Options",
|
||||
"playlist_form_add_title": "Ajout d'une liste de lecture",
|
||||
"playlist_form_add_title": "Ajout d'une Playlist",
|
||||
"playlist_form_add_submit": "Ajouter",
|
||||
"playlist_form_edit_title": "Modification d'une liste de lecture",
|
||||
"playlist_form_edit_title": "Modification d'une Playlist",
|
||||
"playlist_form_edit_submit": "Enregistrer",
|
||||
"playlist_form_label_name": "Nom",
|
||||
"playlist_form_label_name": "Entrez le nom de la playlist",
|
||||
"playlist_form_label_time_sync": "Synchroniser les slides des lecteurs",
|
||||
"playlist_form_button_cancel": "Annuler",
|
||||
"js_playlist_delete_confirmation": "Êtes-vous sûr ?",
|
||||
"playlist_delete_has_slides": "La liste de lecture contient des slides, supprimez-les avant et réessayez",
|
||||
"playlist_delete_has_node_player_groups": "La liste de lecture est attribuée à un groupe de lecteur",
|
||||
"playlist_delete_has_slides": "La playlist contient des slides, supprimez-les avant et réessayez",
|
||||
"playlist_delete_has_node_player_groups": "La playlist est attribuée à un groupe de lecteur",
|
||||
|
||||
"fleet_node_player_page_title": "Lecteurs",
|
||||
"fleet_node_player_button_add": "Ajouter un lecteur",
|
||||
@ -168,7 +168,7 @@
|
||||
"settings_variable_desc_default_slide_duration": "Durée de la slide d'introduction (en secondes)",
|
||||
"settings_variable_desc_default_slide_time_with_seconds": "Afficher les secondes de l'horloge de la slide d'introduction",
|
||||
"settings_variable_desc_polling_interval": "Intervalle de rafraîchissement des paramètres à appliquer au lecteur (en secondes)",
|
||||
"settings_variable_desc_playlist_default_time_sync": "Synchroniser les slides des lecteurs pour la liste de lecture par défaut",
|
||||
"settings_variable_desc_playlist_default_time_sync": "Synchroniser les slides des lecteurs pour la playlist par défaut",
|
||||
|
||||
"settings_variable_desc_slide_animation_enabled": "Activer les effets d'animation entre les slides",
|
||||
"settings_variable_desc_slide_animation_entrance_effect": "Effet d'animation d'arrivée de la slide",
|
||||
|
||||
@ -78,11 +78,11 @@
|
||||
"playlist_panel_th_duration": "Durata",
|
||||
"playlist_panel_th_enabled": "Abilitata",
|
||||
"playlist_panel_th_activity": "Opzioni",
|
||||
"playlist_form_add_title": "Aggiungi Slide",
|
||||
"playlist_form_add_title": "Aggiungi Playlist",
|
||||
"playlist_form_add_submit": "Aggiungi",
|
||||
"playlist_form_edit_title": "Modifica Slide",
|
||||
"playlist_form_edit_title": "Modifica Playlist",
|
||||
"playlist_form_edit_submit": "Salva",
|
||||
"playlist_form_label_name": "Nome",
|
||||
"playlist_form_label_name": "Inserisci il nome della playlist",
|
||||
"playlist_form_label_time_sync": "Sincronizza le slide tra gli schermi",
|
||||
"playlist_form_button_cancel": "Cancella",
|
||||
"js_playlist_delete_confirmation": "Sei sicuro?",
|
||||
|
||||
@ -23,16 +23,11 @@ class PlaylistController(ObController):
|
||||
self._app.add_url_rule('/playlist/toggle', 'playlist_toggle', self.guard_playlist(self._auth(self.playlist_toggle)), methods=['POST'])
|
||||
self._app.add_url_rule('/playlist/delete', 'playlist_delete', self.guard_playlist(self._auth(self.playlist_delete)), methods=['DELETE'])
|
||||
|
||||
def playlist(self):
|
||||
return render_template(
|
||||
'playlist/playlist.jinja.html',
|
||||
playlists=self._model_store.playlist().get_enabled_playlists(),
|
||||
)
|
||||
|
||||
def playlist_list(self):
|
||||
durations = self._model_store.playlist().get_durations_by_playlists()
|
||||
return render_template(
|
||||
'playlist/list.jinja.html',
|
||||
playlists=self._model_store.playlist().get_all(ascending=True),
|
||||
enabled_playlists=self._model_store.playlist().get_enabled_playlists(with_default=True),
|
||||
disabled_playlists=self._model_store.playlist().get_disabled_playlists(),
|
||||
durations=durations
|
||||
@ -41,7 +36,8 @@ class PlaylistController(ObController):
|
||||
def playlist_add(self):
|
||||
playlist = Playlist(
|
||||
name=request.form['name'],
|
||||
time_sync=False if request.form['time_sync'] == '0' else True,
|
||||
enabled=True,
|
||||
time_sync=False
|
||||
)
|
||||
|
||||
self._model_store.playlist().add_form(playlist)
|
||||
|
||||
@ -62,8 +62,8 @@ class ContentManager(ModelManager):
|
||||
|
||||
return self.hydrate_object(object)
|
||||
|
||||
def get_all(self, sort: bool = False) -> List[Content]:
|
||||
return self.hydrate_list(self._db.get_all(self.TABLE_NAME, sort="created_at" if sort else None, ascending=False))
|
||||
def get_all(self, sort: Optional[str] = 'created_at', ascending=False) -> List[Content]:
|
||||
return self.hydrate_list(self._db.get_all(self.TABLE_NAME, sort=sort, ascending=ascending))
|
||||
|
||||
def get_all_indexed(self, attribute: str = 'id', multiple=False) -> Dict[str, Content]:
|
||||
index = {}
|
||||
|
||||
@ -69,8 +69,8 @@ class PlaylistManager(ModelManager):
|
||||
map[duration['playlist_id']] = duration['total_duration']
|
||||
return map
|
||||
|
||||
def get_all(self) -> List[Playlist]:
|
||||
return self.hydrate_list(self._db.get_all(self.TABLE_NAME))
|
||||
def get_all(self, sort: Optional[str] = 'created_at', ascending=False) -> List[Playlist]:
|
||||
return self.hydrate_list(self._db.get_all(self.TABLE_NAME, sort=sort, ascending=ascending))
|
||||
|
||||
def get_all_labels_indexed(self) -> Dict:
|
||||
index = {}
|
||||
|
||||
@ -59,7 +59,7 @@
|
||||
"position": 0,
|
||||
"pills": [
|
||||
{"name": "Bibliothèque", "route": "slideshow_content_list", "icon": "fa-image"},
|
||||
{"name": "Planifier", "route": "slideshow_slide_list", "icon": "fa-clock"},
|
||||
{"name": "Playlists", "route": "playlist_list", "icon": "fa-play"},
|
||||
]
|
||||
},
|
||||
"configuration": {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
{% extends 'base.jinja.html'%}
|
||||
{% extends 'base.jinja.html' %}
|
||||
|
||||
{% block page_title %}
|
||||
{{ l.playlist_page_title }}
|
||||
@ -9,52 +9,41 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block add_js %}
|
||||
<script src="{{ STATIC_PREFIX }}js/lib/tablednd-fixed.js"></script>
|
||||
<script src="{{ STATIC_PREFIX }}js/playlist/playlists.js"></script>
|
||||
{{ HOOK(H_PLAYLIST_JAVASCRIPT) }}
|
||||
{% endblock %}
|
||||
|
||||
{% block page %}
|
||||
<div class="toolbar">
|
||||
<h2><i class="fa fa-bars-staggered icon-left"></i>{{ l.playlist_page_title }}</h2>
|
||||
|
||||
<div class="toolbar-actions">
|
||||
<div class="top-content">
|
||||
<h1>
|
||||
{{ l.playlist_page_title }}
|
||||
</h1>
|
||||
|
||||
<div class="top-actions">
|
||||
{{ HOOK(H_PLAYLIST_TOOLBAR_ACTIONS_START) }}
|
||||
<button class="purple playlist-add item-add"><i class="fa fa-plus icon-left"></i>{{ l.playlist_button_add }}</button>
|
||||
<button class="btn btn-info playlist-add item-add">
|
||||
<i class="fa fa-play icon-left"></i>
|
||||
{{ l.playlist_button_add }}
|
||||
</button>
|
||||
{{ HOOK(H_PLAYLIST_TOOLBAR_ACTIONS_END) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="alert alert-error hidden">
|
||||
|
||||
</div>
|
||||
<div class="panel">
|
||||
<div class="panel-body">
|
||||
<h3>{{ l.playlist_panel_active }}</h3>
|
||||
|
||||
{% with tclass='active', playlists=enabled_playlists %}
|
||||
{% include 'playlist/component/table.jinja.html' %}
|
||||
{% endwith %}
|
||||
<div class="bottom-content">
|
||||
<div class="page-content">
|
||||
<div class="inner">
|
||||
{% with playlists=playlists %}
|
||||
{% include 'playlist/component/table.jinja.html' %}
|
||||
{% endwith %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-inactive">
|
||||
<div class="panel-body">
|
||||
<h3>{{ l.playlist_panel_inactive }}</h3>
|
||||
|
||||
{% with tclass='inactive', playlists=disabled_playlists %}
|
||||
{% include 'playlist/component/table.jinja.html' %}
|
||||
{% endwith %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="modals hidden">
|
||||
<div class="modals-outer">
|
||||
<a href="javascript:void(0);" class="modal-close">
|
||||
<i class="fa fa-close"></i>
|
||||
</a>
|
||||
<div class="modals-inner">
|
||||
{% include 'playlist/modal/add.jinja.html' %}
|
||||
{% include 'playlist/modal/edit.jinja.html' %}
|
||||
{% include 'core/utrack.jinja.html' %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -3,8 +3,7 @@
|
||||
{{ l.playlist_form_add_title }}
|
||||
</h2>
|
||||
|
||||
<form class="form" action="/playlist/add" method="POST" enctype="multipart/form-data">
|
||||
|
||||
<form class="form" action="{{ url_for('playlist_add') }}" method="POST">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="playlist-add-name">{{ l.playlist_form_label_name }}</label>
|
||||
@ -13,22 +12,15 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="playlist-add-time-sync">{{ l.playlist_form_label_time_sync }}</label>
|
||||
<div class="widget">
|
||||
<select name="time_sync" type="text" id="playlist-add-time-sync" required="required">
|
||||
<option value="1">✅</option>
|
||||
<option value="0">❌</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<button type="button" class="btn-normal modal-close">
|
||||
{{ l.playlist_form_button_cancel }}
|
||||
<button type="button" class="btn btn-naked modal-close">
|
||||
{{ l.common_close }}
|
||||
</button>
|
||||
<button type="submit" class="green">
|
||||
<i class="fa fa-plus icon-left"></i> {{ l.playlist_form_add_submit }}
|
||||
<button type="submit" class="btn btn-info">
|
||||
<i class="fa fa-save icon-left"></i>{{ l.common_save }}
|
||||
</button>
|
||||
<button type="button" disabled="disabled" class="btn btn-naked hidden btn-loading">
|
||||
{{ l.common_loading }}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user