diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index 4480485a45..e9c2692ccc 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/.bower.json +++ b/dashboard-ui/bower_components/emby-webcomponents/.bower.json @@ -15,12 +15,12 @@ }, "devDependencies": {}, "ignore": [], - "version": "1.4.91", - "_release": "1.4.91", + "version": "1.4.93", + "_release": "1.4.93", "_resolution": { "type": "version", - "tag": "1.4.91", - "commit": "a4c5466d5a59e57b157aa941fcadb1e0df602f75" + "tag": "1.4.93", + "commit": "8b6b445547b02a088fbafed08120ed87c4004df5" }, "_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_target": "^1.2.0", diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-itemscontainer/emby-itemscontainer.js b/dashboard-ui/bower_components/emby-webcomponents/emby-itemscontainer/emby-itemscontainer.js index 751c121495..356375824e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-itemscontainer/emby-itemscontainer.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-itemscontainer/emby-itemscontainer.js @@ -1,4 +1,4 @@ -define(['itemShortcuts', 'connectionManager', 'registerElement'], function (itemShortcuts, connectionManager) { +define(['itemShortcuts', 'connectionManager', 'layoutManager', 'browser', 'registerElement'], function (itemShortcuts, connectionManager, layoutManager, browser) { var ItemsContainerProtoType = Object.create(HTMLDivElement.prototype); @@ -85,23 +85,99 @@ function onClick(e) { var itemsContainer = this; + var target = e.target; - var menuButton = parentWithClass(e.target, 'menuButton'); + var menuButton = parentWithClass(target, 'menuButton'); if (menuButton) { - showContextMenu(menuButton, itemsContainer); - e.stopPropagation(); - return false; + var card = parentWithAttribute(target, 'data-id'); + if (card) { + showContextMenu(card, target); + e.stopPropagation(); + return false; + } } + + itemShortcuts.onClick.call(this, e); + } + + function disableEvent(e) { + + e.preventDefault(); + e.stopPropagation(); + return false; + } + + function showContextMenu(card, target, options) { + + var itemId = card.getAttribute('data-id'); + var serverId = card.getAttribute('data-serverid'); + var type = card.getAttribute('data-type'); + + var apiClient = connectionManager.getApiClient(serverId); + + var promise = type == 'Timer' ? apiClient.getLiveTvTimer(itemId) : apiClient.getItem(apiClient.getCurrentUserId(), itemId); + + promise.then(function (item) { + + require(['itemContextMenu'], function (itemContextMenu) { + + itemContextMenu.show(Object.assign(options || {}, { + item: item, + positionTo: target + })); + }); + }); + } + + function onContextMenu(e) { + + var itemsContainer = this; + + var target = e.target; + var card = parentWithAttribute(target, 'data-id'); + if (card) { + + //var itemSelectionPanel = card.querySelector('.itemSelectionPanel'); + + //if (!itemSelectionPanel) { + // showContextMenu(card, {}); + //} + + showContextMenu(card, target, { + identify: false + }); + } + + e.preventDefault(); + e.stopPropagation(); + return false; + } + + function getShortcutOptions() { + return { + click: false + }; } ItemsContainerProtoType.attachedCallback = function () { this.addEventListener('click', onClick); - itemShortcuts.on(this); + + // mobile safari doesn't allow contextmenu override + if (browser.safari && browser.mobile) { + this.addEventListener('contextmenu', disableEvent); + // todo: use tap hold + } else { + this.addEventListener('contextmenu', onContextMenu); + } + + itemShortcuts.on(this, getShortcutOptions()); }; ItemsContainerProtoType.detachedCallback = function () { this.removeEventListener('click', onClick); - itemShortcuts.off(this); + this.removeEventListener('contextmenu', onContextMenu); + this.removeEventListener('contextmenu', disableEvent); + itemShortcuts.off(this, getShortcutOptions()); }; document.registerElement('emby-itemscontainer', { diff --git a/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js b/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js index 8d8afc0752..a3e00bab21 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js +++ b/dashboard-ui/bower_components/emby-webcomponents/itemcontextmenu.js @@ -39,20 +39,24 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter', }); } - if (options.edit !== false) { - if (itemHelper.canEdit(user, item.Type)) { + if (itemHelper.canEdit(user, item.Type)) { - if (!isTheater) { + if (!isTheater) { + if (options.edit !== false) { commands.push({ name: globalize.translate('sharedcomponents#EditInfo'), id: 'edit' }); + } + if (options.editImages !== false) { commands.push({ name: globalize.translate('sharedcomponents#EditImages'), id: 'editimages' }); } - if (item.MediaType == 'Video' && item.Type != 'TvChannel' && item.Type != 'Program' && item.LocationType != 'Virtual') { + } + if (item.MediaType == 'Video' && item.Type != 'TvChannel' && item.Type != 'Program' && item.LocationType != 'Virtual') { + if (options.editSubtitles !== false) { commands.push({ name: globalize.translate('sharedcomponents#EditSubtitles'), id: 'editsubtitles' diff --git a/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js b/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js index a2d52f8edc..947959be6b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js +++ b/dashboard-ui/bower_components/emby-webcomponents/listview/listview.js @@ -282,7 +282,12 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan html += ''; if (enableSideMediaInfo) { - html += '
' + mediaInfo.getPrimaryMediaInfoHtml(item) + '
'; + html += '
' + mediaInfo.getPrimaryMediaInfoHtml(item, { + + year: false, + container: false + + }) + '
'; } if (!clickEntireItem) { diff --git a/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js b/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js index 77e78850e5..449da26ff8 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js +++ b/dashboard-ui/bower_components/emby-webcomponents/mediainfo/mediainfo.js @@ -125,7 +125,7 @@ define(['datetime', 'globalize', 'embyRouter', 'material-icons', 'css!./mediainf } } - if (item.ProductionYear && item.Type == "Series") { + if (options.year !== false && item.ProductionYear && item.Type == "Series") { if (item.Status == "Continuing") { miscInfo.push(globalize.translate('sharedcomponents#ValueSeriesYearToPresent', item.ProductionYear)); @@ -237,7 +237,7 @@ define(['datetime', 'globalize', 'embyRouter', 'material-icons', 'css!./mediainf miscInfo.push(item.Width + "x" + item.Height); } - if (item.Type == 'Audio' && item.Container) { + if (options.container !== false && item.Type == 'Audio' && item.Container) { miscInfo.push(item.Container); } diff --git a/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js b/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js index 3138b5ec9e..6b9fc7a748 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js +++ b/dashboard-ui/bower_components/emby-webcomponents/shortcuts.js @@ -235,6 +235,10 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g if (action) { executeAction(card, action); + + e.preventDefault(); + e.stopPropagation(); + return false; } } } @@ -277,20 +281,34 @@ define(['playbackManager', 'inputManager', 'connectionManager', 'embyRouter', 'g } } - function on(context) { - context.addEventListener('click', onClick); - inputManager.on(context, onCommand); + function on(context, options) { + + options = options || {}; + + if (options.click !== false) { + context.addEventListener('click', onClick); + } + + if (options.command !== false) { + inputManager.on(context, onCommand); + } } - function off(context) { + function off(context, options) { + options = options || {}; + context.removeEventListener('click', onClick); - inputManager.off(context, onCommand); + + if (options.command !== false) { + inputManager.off(context, onCommand); + } } return { on: on, off: off, - execute: executeAction + execute: executeAction, + onClick: onClick }; }); \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/da.json b/dashboard-ui/bower_components/emby-webcomponents/strings/da.json index c536180e89..651c8b85fc 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/da.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/da.json @@ -1,4 +1,6 @@ { + "EditInfo": "Edit Info", + "RemoveFromPlaylist": "Remove from Playlist", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Del", "ServerUpdateNeeded": "Denne Emby server b\u00f8r opdateres. For at downloade den nyeste version bes\u00f8g venligst {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/de.json b/dashboard-ui/bower_components/emby-webcomponents/strings/de.json index c2601c7826..3ca2976beb 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/de.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/de.json @@ -1,4 +1,6 @@ { + "EditInfo": "Edit Info", + "RemoveFromPlaylist": "Remove from Playlist", "ValueSpecialEpisodeName": "Special - {0}", "Share": "Teilen", "ServerUpdateNeeded": "Dieser Emby Server sollte aktualisiert werden. Um die neueste Version zu laden, besuche bitte {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json b/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json index c89a812496..e694d49f11 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/es-MX.json @@ -1,4 +1,6 @@ { + "EditInfo": "Edit Info", + "RemoveFromPlaylist": "Remove from Playlist", "ValueSpecialEpisodeName": "Especial - {0}", "Share": "Compartir", "ServerUpdateNeeded": "Este Servidor Emby necesita ser actualizado. Para descargar la ultima versi\u00f3n, por favor visite {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json b/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json new file mode 100644 index 0000000000..9bb888d920 --- /dev/null +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/fr.json @@ -0,0 +1,116 @@ +{ + "EditInfo": "Modifier les informations", + "RemoveFromPlaylist": "Supprimer de la liste de lecture", + "ValueSpecialEpisodeName": "Sp\u00e9cial - {0}", + "Share": "Partager", + "ServerUpdateNeeded": "Le serveur Emby doit \u00eatre mis \u00e0 jour. Pour t\u00e9l\u00e9charger la derni\u00e8re version, veuillez visiter {0}", + "LiveTvGuideRequiresUnlock": "Le Guide TV en direct est actuellement limit\u00e9 \u00e0 {0} cha\u00eenes. Cliquez sur le bouton d\u00e9verrouiller pour d\u00e9couvrir comment profiter de l'ensemble.", + "AttributeNew": "Nouveau", + "AttributePremiere": "Premiere", + "AttributeLive": "Direct", + "TrackCount": "{0} pistes", + "ItemCount": "{0} \u00e9l\u00e9ments", + "ValueSeriesYearToPresent": "{0}-Pr\u00e9sent", + "ReleaseYearValue": "Ann\u00e9e de sortie: {0}", + "OriginalAirDateValue": "Date de diffusion originale: {0}", + "EndsAtValue": "Se termine \u00e0 {0}", + "OptionSundayShort": "Dim", + "OptionMondayShort": "Lun", + "OptionTuesdayShort": "Mar", + "OptionWednesdayShort": "Mer", + "OptionThursdayShort": "Jeu", + "OptionFridayShort": "Ven", + "OptionSaturdayShort": "Sam", + "HeaderSelectDate": "S\u00e9lectionnez la date", + "ButtonOk": "Ok", + "ButtonCancel": "Annuler", + "ButtonGotIt": "Compris", + "RecordingCancelled": "Enregistrement annul\u00e9.", + "RecordingScheduled": "Enregistrement planifi\u00e9.", + "SeriesRecordingScheduled": "Enregistrement de la s\u00e9rie pr\u00e9vue.", + "HeaderNewRecording": "Nouvel enregistrement", + "Sunday": "Dimanche", + "Monday": "Lundi", + "Tuesday": "Mardi", + "Wednesday": "Mercredi", + "Thursday": "Jeudi", + "Friday": "Vendredi", + "Saturday": "Samedi", + "Days": "Jours", + "RecordSeries": "Enregistrer s\u00e9ries", + "LabelPrePaddingMinutes": "D\u00e9lai avant l'enregistrement en minutes:", + "LabelPostPaddingMinutes": "D\u00e9lai apr\u00e8s l'enregistrement en minutes:", + "RecordOnAllChannels": "Enregistrer sur toutes les cha\u00eenes", + "RecordAnytime": "Enregistrer \u00e0 n'importe quelle heure\/journ\u00e9e", + "RecordOnlyNewEpisodes": "Enregistrer seulement les nouveaux \u00e9pisodes", + "HeaderBecomeProjectSupporter": "Obtenez Emby Premiere", + "HeaderEnjoyDayTrial": "Profitez d'une p\u00e9riode d'essai de 14 jours", + "MessageActiveSubscriptionRequiredSeriesRecordings": "Une souscription Emby Premiere active est n\u00e9cessaire pour cr\u00e9er des enregistrements automatiques de s\u00e9ries.", + "OptionConvertRecordingsToStreamingFormat": "Convertir automatiquement les enregistrements a un format facilement diffusable.", + "OptionConvertRecordingsToStreamingFormatHelp": "Les enregistrements seront convertis \u00e0 la vol\u00e9e en MP4 afin faciliter la lecture sur tous vos appareils.", + "FeatureRequiresEmbyPremiere": "Cette fonctionnalit\u00e9 requiert un compte Emby Premiere.", + "Record": "Enregistrer", + "Save": "Sauvegarder", + "Edit": "Modifier", + "Download": "T\u00e9l\u00e9chargement", + "Advanced": "Avanc\u00e9", + "Delete": "Supprimer", + "HeaderDeleteItem": "Supprimer l'\u00e9l\u00e9ment", + "ConfirmDeleteItem": "Supprimer cet \u00e9l\u00e9ment l'effacera \u00e0 la fois du syst\u00e8me de fichiers et de votre biblioth\u00e8que de medias. Etes-vous s\u00fbr de vouloir continuer ?", + "Refresh": "Actualiser", + "RefreshQueued": "Demande d'actualisation en file d'attente.", + "AddToCollection": "Ajouter \u00e0 la collection", + "NewCollection": "Nouvelle collection", + "LabelCollection": "Collection:", + "Help": "Aide", + "NewCollectionHelp": "Les Collections vous permettent de cr\u00e9er des groupes personnalis\u00e9s de films et autres contenus.", + "SearchForCollectionInternetMetadata": "Rechercher sur Internet les images et m\u00e9tadonn\u00e9es", + "LabelName": "Nom:", + "NewCollectionNameExample": "Exemple: Collection Star Wars", + "MessageItemsAdded": " \u00c9l\u00e9ments ajout\u00e9s.", + "OptionNew": "Nouveau...", + "LabelPlaylist": "Liste de lecture:", + "AddToPlaylist": "Ajouter \u00e0 la liste de lecture", + "Subtitles": "Sous-titres", + "SearchForSubtitles": "Rechercher des sous-titres", + "LabelLanguage": "Langue:", + "Search": "Recherche", + "NoSubtitleSearchResultsFound": "Aucun appareil trouv\u00e9", + "File": "Fichier", + "MessageAreYouSureDeleteSubtitles": "\u00cates-vous s\u00fbr de vouloir supprimer ce fichier sous-titres ?", + "ConfirmDeletion": "Confirmer la suppression", + "MySubtitles": "Mes Sous-titres", + "MessageDownloadQueued": "T\u00e9l\u00e9charger en file d'attente.", + "EditSubtitles": "Modifier les sous-titres", + "UnlockGuide": "D\u00e9verrouiller le Guide", + "RefreshMetadata": "Actualiser les m\u00e9tadonn\u00e9es", + "ReplaceExistingImages": "Remplacer les images existantes", + "ReplaceAllMetadata": "Remplacer toutes les m\u00e9tadonn\u00e9es", + "SearchForMissingMetadata": "Rechercher les m\u00e9tadonn\u00e9es manquantes", + "LabelRefreshMode": "Mode de rafra\u00eechissement:", + "NoItemsFound": "Aucun \u00e9l\u00e9ment trouv\u00e9.", + "HeaderSaySomethingLike": "Dites quelque chose...", + "ButtonTryAgain": "Veuillez r\u00e9essayer", + "HeaderYouSaid": "Vous avez dit...", + "MessageWeDidntRecognizeCommand": "D\u00e9sol\u00e9, cette commande n'a pas \u00e9t\u00e9 reconnue.", + "MessageIfYouBlockedVoice": "Si vous avez supprim\u00e9 l'acc\u00e8s par commande vocale \u00e0 l'application, vous devrez reconfigurer avant de r\u00e9essayer.", + "ValueDiscNumber": "Disque {0}", + "Unrated": "Non not\u00e9", + "Favorite": "Favoris", + "Like": "J'aime", + "Dislike": "Je n'aime pas", + "Played": "Lu", + "RefreshDialogHelp": "Les m\u00e9tadonn\u00e9es sont actualis\u00e9es en fonction des param\u00e8tres et des services internet qui sont activ\u00e9s dans le tableau de bord Emby Server.", + "Open": "Ouvrir", + "Play": "Lire", + "Queue": "File d'attente", + "Shuffle": "Lecture al\u00e9atoire", + "Identify": "Identifier", + "EditImages": "Modifier les images", + "Sync": "Sync", + "InstantMix": "Mix instantan\u00e9", + "ViewAlbum": "Voir l'album", + "ViewArtist": "Voir l'artiste", + "QueueAllFromHere": "Tout mette en file d'attente \u00e0 partir d'ici", + "PlayAllFromHere": "Tout lire \u00e0 partir d'ici" +} \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json index da34f0b3de..0c31cf5571 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/kk.json @@ -1,4 +1,6 @@ { + "EditInfo": "Edit Info", + "RemoveFromPlaylist": "Remove from Playlist", "ValueSpecialEpisodeName": "\u0410\u0440\u043d\u0430\u0439\u044b - {0}", "Share": "\u041e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443", "ServerUpdateNeeded": "\u041e\u0441\u044b Emby Server \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0443\u044b \u049b\u0430\u0436\u0435\u0442. \u0421\u043e\u04a3\u0493\u044b \u043d\u04b1\u0441\u049b\u0430\u0441\u044b\u043d \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u04af\u0448\u0456\u043d, {0} \u043a\u0456\u0440\u0456\u04a3\u0456\u0437", @@ -92,23 +94,23 @@ "HeaderYouSaid": "\u0421\u0456\u0437 \u0430\u0439\u0442\u049b\u0430\u043d\u044b\u04a3\u044b\u0437...", "MessageWeDidntRecognizeCommand": "\u041e\u0441\u044b\u043d\u0434\u0430\u0439 \u043f\u04d9\u0440\u043c\u0435\u043d\u0434\u0456 \u0442\u0430\u043d\u044b\u043f \u0430\u0439\u044b\u0440\u043c\u0430\u0434\u044b\u049b.", "MessageIfYouBlockedVoice": "\u0415\u0433\u0435\u0440 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u0493\u0430 \u0434\u0430\u0443\u044b\u0441\u0442\u044b\u049b \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u044b\u04a3\u044b\u0437 \u0431\u0430\u0441 \u0442\u0430\u0440\u0442\u044b\u043b\u0441\u0430, \u049b\u0430\u0439\u0442\u0430 \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0435\u043d\u0443\u0456\u04a3\u0456\u0437\u0434\u0435\u043d \u0430\u043b\u0434\u044b\u043d\u0430\u043d \u049b\u0430\u0439\u0442\u0430 \u0442\u0435\u04a3\u0448\u0435\u0443\u0456\u04a3\u0456\u0437 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0430\u0434\u044b.", - "ValueDiscNumber": "Disc {0}", - "Unrated": "Unrated", - "Favorite": "Favorite", - "Like": "Like", - "Dislike": "Dislike", - "Played": "Played", + "ValueDiscNumber": "{0}-\u0434\u0438\u0441\u043a\u0456", + "Unrated": "\u0411\u0430\u0493\u0430\u043b\u0430\u043d\u0431\u0430\u0493\u0430\u043d", + "Favorite": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b", + "Like": "\u04b0\u043d\u0430\u0439\u0434\u044b", + "Dislike": "\u04b0\u043d\u0430\u043c\u0430\u0439\u0434\u044b", + "Played": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d", "RefreshDialogHelp": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440 \u043c\u0435\u043d Emby Server \u0431\u0430\u049b\u044b\u043b\u0430\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b\u043d\u0434\u0430 \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440\u0456 \u043d\u0435\u0433\u0456\u0437\u0456\u043d\u0434\u0435 \u0436\u0430\u04a3\u0493\u044b\u0440\u0442\u044b\u043b\u0430\u0434\u044b.", - "Open": "Open", - "Play": "Play", - "Queue": "Queue", - "Shuffle": "Shuffle", - "Identify": "Identify", - "EditImages": "Edit Images", - "Sync": "Sync", - "InstantMix": "Instant Mix", - "ViewAlbum": "View Album", - "ViewArtist": "View Artist", - "QueueAllFromHere": "Queue All from Here", - "PlayAllFromHere": "Play All from Here" + "Open": "\u0410\u0448\u0443", + "Play": "\u041e\u0439\u043d\u0430\u0442\u0443", + "Queue": "\u041a\u0435\u0437\u0435\u043a", + "Shuffle": "\u0410\u0440\u0430\u043b\u0430\u0441\u0442\u044b\u0440\u0443", + "Identify": "\u0410\u043d\u044b\u049b\u0442\u0430\u0443", + "EditImages": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u04e9\u04a3\u0434\u0435\u0443", + "Sync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", + "InstantMix": "\u041b\u0435\u0437\u0434\u0456\u043a \u049b\u043e\u0441\u043f\u0430", + "ViewAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c\u0434\u044b \u049b\u0430\u0440\u0430\u0443", + "ViewArtist": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043d\u044b \u049b\u0430\u0440\u0430\u0443", + "QueueAllFromHere": "\u0411\u04b1\u043b \u0430\u0440\u0430\u0434\u0430\u043d \u0431\u04d9\u0440\u0456\u043d \u043a\u0435\u0437\u0435\u043a\u043a\u0435", + "PlayAllFromHere": "\u0411\u04b1\u043b \u0430\u0440\u0430\u0434\u0430\u043d \u0431\u04d9\u0440\u0456\u043d \u043e\u0439\u043d\u0430\u0442\u0443" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json b/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json index 4f250fabd7..72f9bc396b 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/nb.json @@ -1,4 +1,6 @@ { + "EditInfo": "Edit Info", + "RemoveFromPlaylist": "Remove from Playlist", "ValueSpecialEpisodeName": "Spesial - {0}", "Share": "Del", "ServerUpdateNeeded": "Denne Emby serveren trenger en oppdatering. For \u00e5 laste ned nyeste versjon, vennligst bes\u00f8k: {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json b/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json index 2724e702d8..4a47303ebd 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/nl.json @@ -1,4 +1,6 @@ { + "EditInfo": "Edit Info", + "RemoveFromPlaylist": "Remove from Playlist", "ValueSpecialEpisodeName": "Speciaal - {0}", "Share": "Delen", "ServerUpdateNeeded": "Deze Emby Server moet worden bijgewerkt. Om de laatste versie te downloaden, gaat u naar {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json index e658df31cc..ba4c52271e 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-BR.json @@ -1,4 +1,6 @@ { + "EditInfo": "Edit Info", + "RemoveFromPlaylist": "Remove from Playlist", "ValueSpecialEpisodeName": "Especial - {0}", "Share": "Compartilhar", "ServerUpdateNeeded": "Este servidor Emby precisa ser atualizado. Para baixar a \u00faltima vers\u00e3o, por favor visite {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json index 96464ac699..1d2dbd5820 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/pt-PT.json @@ -1,4 +1,6 @@ { + "EditInfo": "Edit Info", + "RemoveFromPlaylist": "Remove from Playlist", "ValueSpecialEpisodeName": "Especial - {0}", "Share": "Partilhar", "ServerUpdateNeeded": "Este Servidor Emby precisa ser atualizado. Para fazer download da vers\u00e3o mais recente, por favor visite {0}", diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json index 4c9e62a2c7..7996aa0175 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/ru.json @@ -1,4 +1,6 @@ { + "EditInfo": "Edit Info", + "RemoveFromPlaylist": "Remove from Playlist", "ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u044d\u043f\u0438\u0437\u043e\u0434 - {0}", "Share": "\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f", "ServerUpdateNeeded": "\u0414\u0430\u043d\u043d\u044b\u0439 Emby Server \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c. \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435 {0}", @@ -92,23 +94,23 @@ "HeaderYouSaid": "\u0412\u044b \u0441\u043a\u0430\u0437\u0430\u043b\u0438...", "MessageWeDidntRecognizeCommand": "\u0414\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u0430.", "MessageIfYouBlockedVoice": "\u0415\u0441\u043b\u0438 \u043e\u0442\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e, \u043f\u0435\u0440\u0435\u0434 \u043d\u043e\u0432\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u043e\u0439 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u043f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430.", - "ValueDiscNumber": "Disc {0}", - "Unrated": "Unrated", - "Favorite": "Favorite", - "Like": "Like", - "Dislike": "Dislike", - "Played": "Played", + "ValueDiscNumber": "\u0414\u0438\u0441\u043a {0}", + "Unrated": "\u0411\u0435\u0437 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438", + "Favorite": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", + "Like": "\u041d\u0440\u0430\u0432\u0438\u0442\u0441\u044f", + "Dislike": "\u041d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f", + "Played": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0435", "RefreshDialogHelp": "\u041f\u043e\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u0438\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u0438 Emby Server \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0443\u0441\u043b\u0443\u0433\u0430\u043c\u0438.", - "Open": "Open", - "Play": "Play", - "Queue": "Queue", - "Shuffle": "Shuffle", - "Identify": "Identify", - "EditImages": "Edit Images", - "Sync": "Sync", - "InstantMix": "Instant Mix", - "ViewAlbum": "View Album", - "ViewArtist": "View Artist", - "QueueAllFromHere": "Queue All from Here", - "PlayAllFromHere": "Play All from Here" + "Open": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c", + "Play": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438", + "Queue": "\u041e\u0447\u0435\u0440\u0435\u0434\u044c", + "Shuffle": "\u041f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u0442\u044c", + "Identify": "\u0420\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0442\u044c", + "EditImages": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c \u0440\u0438\u0441\u0443\u043d\u043a\u0438", + "Sync": "\u0421\u0438\u043d\u0445\u0440\u043e", + "InstantMix": "\u0410\u0432\u0442\u043e\u043c\u0438\u043a\u0441", + "ViewAlbum": "\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0430\u043b\u044c\u0431\u043e\u043c", + "ViewArtist": "\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f", + "QueueAllFromHere": "\u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u0441\u0435 \u043e\u0442\u0441\u044e\u0434\u0430", + "PlayAllFromHere": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0432\u0441\u0435 \u043e\u0442\u0441\u044e\u0434\u0430" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json b/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json index 8242707c4c..be0c522e81 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/sv.json @@ -1,4 +1,6 @@ { + "EditInfo": "Edit Info", + "RemoveFromPlaylist": "Remove from Playlist", "ValueSpecialEpisodeName": "Specialavsnitt - {0}", "Share": "Dela", "ServerUpdateNeeded": "Den h\u00e4r Emby servern beh\u00f6ver uppdateras. F\u00f6r att ladda ner senaste versionen, g\u00e5 till {0}", @@ -92,23 +94,23 @@ "HeaderYouSaid": "Du sa...", "MessageWeDidntRecognizeCommand": "Ledsen, men vi k\u00e4nner inte igen det kommandot.", "MessageIfYouBlockedVoice": "Om du nekade tillg\u00e5ng f\u00f6r r\u00f6st\u00e5tkomst till appen s\u00e5 beh\u00f6ver du konfigurera om innan du f\u00f6rs\u00f6ker igen.", - "ValueDiscNumber": "Disc {0}", - "Unrated": "Unrated", - "Favorite": "Favorite", - "Like": "Like", - "Dislike": "Dislike", - "Played": "Played", + "ValueDiscNumber": "Skiva {0}", + "Unrated": "Ej klassad", + "Favorite": "Favorit", + "Like": "Gilla", + "Dislike": "Ogilla", + "Played": "Visad", "RefreshDialogHelp": "Metadata uppdateras baserat p\u00e5 inst\u00e4llningar och internettj\u00e4nster som har aktiverats under Emby servers kontrollpanel.", - "Open": "Open", - "Play": "Play", - "Queue": "Queue", - "Shuffle": "Shuffle", - "Identify": "Identify", - "EditImages": "Edit Images", - "Sync": "Sync", - "InstantMix": "Instant Mix", - "ViewAlbum": "View Album", - "ViewArtist": "View Artist", - "QueueAllFromHere": "Queue All from Here", - "PlayAllFromHere": "Play All from Here" + "Open": "\u00d6ppna", + "Play": "Spela", + "Queue": "K\u00f6a", + "Shuffle": "Blanda", + "Identify": "Identifiera", + "EditImages": "\u00c4ndra bilder", + "Sync": "Synk", + "InstantMix": "Instant mix", + "ViewAlbum": "Bl\u00e4ddra album", + "ViewArtist": "Bl\u00e4ddra artist", + "QueueAllFromHere": "K\u00f6a alla h\u00e4rifr\u00e5n", + "PlayAllFromHere": "Spela upp alla h\u00e4rifr\u00e5n" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json index 2b90b06e19..6db832b5ab 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json +++ b/dashboard-ui/bower_components/emby-webcomponents/strings/zh-TW.json @@ -1,4 +1,6 @@ { + "EditInfo": "Edit Info", + "RemoveFromPlaylist": "Remove from Playlist", "ValueSpecialEpisodeName": "Special - {0}", "Share": "\u5206\u4eab", "ServerUpdateNeeded": "\u6b64Emby\u4f3a\u670d\u5668\u9700\u8981\u66f4\u65b0\uff0c\u8acb\u81f3{0}\u53d6\u5f97\u6700\u65b0\u7248\u672c", diff --git a/dashboard-ui/channelitems.html b/dashboard-ui/channelitems.html index 208f1e5f8b..0627264b30 100644 --- a/dashboard-ui/channelitems.html +++ b/dashboard-ui/channelitems.html @@ -6,6 +6,6 @@
-
+
\ No newline at end of file diff --git a/dashboard-ui/channels.html b/dashboard-ui/channels.html index 8a4bd375f8..77dbcaf665 100644 --- a/dashboard-ui/channels.html +++ b/dashboard-ui/channels.html @@ -10,7 +10,7 @@
-
+
diff --git a/dashboard-ui/components/favoriteitems.js b/dashboard-ui/components/favoriteitems.js index 2da73aeb77..c65c5b8a73 100644 --- a/dashboard-ui/components/favoriteitems.js +++ b/dashboard-ui/components/favoriteitems.js @@ -1,4 +1,4 @@ -define(['libraryBrowser', 'scrollStyles'], function (libraryBrowser) { +define(['libraryBrowser', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser) { function enableScrollX() { return browserInfo.mobile && AppInfo.enableAppLayouts; @@ -83,9 +83,9 @@ html += '
'; if (enableScrollX()) { - html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } html += libraryBrowser.getPosterViewHtml({ @@ -109,7 +109,6 @@ elem.innerHTML = html; ImageLoader.lazyChildren(elem); - libraryBrowser.createCardMenus(elem); }); } diff --git a/dashboard-ui/components/metadataeditor/metadataeditor.js b/dashboard-ui/components/metadataeditor/metadataeditor.js index 3b9a5b0eaf..29f0987149 100644 --- a/dashboard-ui/components/metadataeditor/metadataeditor.js +++ b/dashboard-ui/components/metadataeditor/metadataeditor.js @@ -285,6 +285,8 @@ item: currentItem, positionTo: button, edit: false, + editImages: true, + editSubtitles: true, sync: false, share: false diff --git a/dashboard-ui/components/remotecontrol.js b/dashboard-ui/components/remotecontrol.js index 9f9fff146b..b71c4745a8 100644 --- a/dashboard-ui/components/remotecontrol.js +++ b/dashboard-ui/components/remotecontrol.js @@ -769,9 +769,6 @@ }); Events.on(MediaController, 'playerchange', onPlayerChange); - - libraryBrowser.createCardMenus(context.querySelector('.itemsContainer')); - } function onDialogClosed(e) { diff --git a/dashboard-ui/home.html b/dashboard-ui/home.html index 76edae2586..b98d8b6642 100644 --- a/dashboard-ui/home.html +++ b/dashboard-ui/home.html @@ -25,7 +25,7 @@ ${ButtonSync}
-
+

${NoNextUpItemsMessage}

diff --git a/dashboard-ui/itemdetails.html b/dashboard-ui/itemdetails.html index 77e9e867f5..97ad467dd3 100644 --- a/dashboard-ui/itemdetails.html +++ b/dashboard-ui/itemdetails.html @@ -74,14 +74,14 @@

${HeaderNextUp}

-
+

-
+
diff --git a/dashboard-ui/livetv.html b/dashboard-ui/livetv.html index 579c046347..7657a46757 100644 --- a/dashboard-ui/livetv.html +++ b/dashboard-ui/livetv.html @@ -12,12 +12,12 @@

${HeaderWhatsOnTV}

-
+

${HeaderUpcomingPrograms}

-
+

@@ -25,7 +25,7 @@

${HeaderUpcomingMovies}

-
+

@@ -33,7 +33,7 @@

${HeaderUpcomingSports}

-
+

@@ -41,7 +41,7 @@

${HeaderUpcomingForKids}

-
+

@@ -52,12 +52,12 @@
-
+

${HeaderActiveRecordings}

-
+

@@ -68,7 +68,7 @@ ${ButtonSync}
-
+

diff --git a/dashboard-ui/livetvitems.html b/dashboard-ui/livetvitems.html index 7cf9a2b0b5..342c626d10 100644 --- a/dashboard-ui/livetvitems.html +++ b/dashboard-ui/livetvitems.html @@ -4,7 +4,7 @@
-
+
\ No newline at end of file diff --git a/dashboard-ui/movies.html b/dashboard-ui/movies.html index 29069b1d1d..7710a3ffd2 100644 --- a/dashboard-ui/movies.html +++ b/dashboard-ui/movies.html @@ -20,7 +20,7 @@ -
+
@@ -33,7 +33,7 @@ -
+
@@ -98,14 +98,14 @@
-
+
-
+
diff --git a/dashboard-ui/music.html b/dashboard-ui/music.html index 5cd8b01474..f4eaa2b224 100644 --- a/dashboard-ui/music.html +++ b/dashboard-ui/music.html @@ -15,28 +15,28 @@

${HeaderLatestMusic}

-
+

${HeaderPlaylists}

-
+

${HeaderRecentlyPlayed}

-
+

${HeaderFrequentlyPlayed}

-
+
@@ -108,14 +108,14 @@
-
+
-
+
diff --git a/dashboard-ui/scripts/channelitems.js b/dashboard-ui/scripts/channelitems.js index 7838d3ddfa..7aa2100d1f 100644 --- a/dashboard-ui/scripts/channelitems.js +++ b/dashboard-ui/scripts/channelitems.js @@ -1,4 +1,4 @@ -define(['jQuery'], function ($) { +define(['jQuery', 'emby-itemscontainer'], function ($) { var data = {}; diff --git a/dashboard-ui/scripts/channels.js b/dashboard-ui/scripts/channels.js index 8ecf9cf1b9..6fea82dc1c 100644 --- a/dashboard-ui/scripts/channels.js +++ b/dashboard-ui/scripts/channels.js @@ -1,4 +1,4 @@ -define(['libraryBrowser'], function (libraryBrowser) { +define(['libraryBrowser', 'emby-itemscontainer'], function (libraryBrowser) { // The base query options var query = { diff --git a/dashboard-ui/scripts/homenextup.js b/dashboard-ui/scripts/homenextup.js index 8f0ce8fbed..15884146f4 100644 --- a/dashboard-ui/scripts/homenextup.js +++ b/dashboard-ui/scripts/homenextup.js @@ -1,4 +1,4 @@ -define([], function () { +define(['emby-itemscontainer'], function () { function getNextUpPromise() { diff --git a/dashboard-ui/scripts/homeupcoming.js b/dashboard-ui/scripts/homeupcoming.js index 2dc1873191..e116fa7274 100644 --- a/dashboard-ui/scripts/homeupcoming.js +++ b/dashboard-ui/scripts/homeupcoming.js @@ -1,4 +1,4 @@ -define(['datetime', 'scrollStyles'], function (datetime) { +define(['datetime', 'emby-itemscontainer', 'scrollStyles'], function (datetime) { function getUpcomingPromise() { @@ -100,9 +100,9 @@ html += '

' + group.name + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } html += LibraryBrowser.getPosterViewHtml({ @@ -124,7 +124,6 @@ } elem.innerHTML = html; - LibraryBrowser.createCardMenus(elem); ImageLoader.lazyChildren(elem); } return function (view, params, tabContent) { diff --git a/dashboard-ui/scripts/itembynamedetailpage.js b/dashboard-ui/scripts/itembynamedetailpage.js index 9c71adc774..0a7b4cd029 100644 --- a/dashboard-ui/scripts/itembynamedetailpage.js +++ b/dashboard-ui/scripts/itembynamedetailpage.js @@ -256,7 +256,6 @@ var itemsContainer = element.querySelector('.itemsContainer'); itemsContainer.innerHTML = html; - LibraryBrowser.createCardMenus(itemsContainer); ImageLoader.lazyChildren(itemsContainer); }); } diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js index 810ff0b21d..4115ff9734 100644 --- a/dashboard-ui/scripts/itemdetailpage.js +++ b/dashboard-ui/scripts/itemdetailpage.js @@ -345,7 +345,6 @@ itemsContainer.innerHTML = html; ImageLoader.lazyChildren(itemsContainer); - LibraryBrowser.createCardMenus(itemsContainer); }); } @@ -765,9 +764,9 @@ var html = ''; if (enableScrollX()) { - html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } html += LibraryBrowser.getPosterViewHtml({ items: result.Items, @@ -787,7 +786,6 @@ var similarContent = page.querySelector('#similarContent'); similarContent.innerHTML = html; ImageLoader.lazyChildren(similarContent); - LibraryBrowser.createCardMenus(similarContent); }); } @@ -1006,8 +1004,6 @@ elem.classList.remove('hiddenScrollX'); } - LibraryBrowser.createCardMenus(elem); - if (item.Type == "BoxSet") { var collectionItemTypes = [ @@ -1112,11 +1108,6 @@ if (!items.length) { renderCollectionItemType(page, parentItem, { name: Globalize.translate('HeaderItems') }, items); } - - var containers = page.querySelectorAll('.collectionItems .itemsContainer'); - for (i = 0, length = containers.length; i < length; i++) { - LibraryBrowser.createCardMenus(containers[i]); - } } function renderCollectionItemType(page, parentItem, type, items) { diff --git a/dashboard-ui/scripts/librarybrowser.js b/dashboard-ui/scripts/librarybrowser.js index ba382daa97..85bea7d71c 100644 --- a/dashboard-ui/scripts/librarybrowser.js +++ b/dashboard-ui/scripts/librarybrowser.js @@ -903,7 +903,7 @@ atts.push({ name: 'serverid', - value: item.ServerId + value: item.ServerId || options.serverId }); atts.push({ @@ -1546,7 +1546,7 @@ anchorCssClass += ' mediaItem'; if (options.defaultAction) { - anchorCssClass += ' itemWithAction'; + anchorCssClass += ' itemAction'; } var transition = options.transition === false || !AppInfo.enableSectionTransitions ? '' : ' data-transition="slide"'; diff --git a/dashboard-ui/scripts/librarylist.js b/dashboard-ui/scripts/librarylist.js index 5d3a78a32a..6f8201ceb5 100644 --- a/dashboard-ui/scripts/librarylist.js +++ b/dashboard-ui/scripts/librarylist.js @@ -216,45 +216,6 @@ return false; } - function onContextMenu(e) { - - var card = parentWithClass(e.target, 'card'); - - if (card) { - var itemSelectionPanel = card.querySelector('.itemSelectionPanel'); - - if (!itemSelectionPanel) { - showContextMenu(card, {}); - } - - e.preventDefault(); - return false; - } - } - - function deleteTimer(id, itemsContainer) { - - require(['confirm'], function (confirm) { - - confirm(Globalize.translate('MessageConfirmRecordingCancellation'), Globalize.translate('HeaderConfirmRecordingCancellation')).then(function () { - - Dashboard.showLoadingMsg(); - - ApiClient.cancelLiveTvTimer(id).then(function () { - - require(['toast'], function (toast) { - toast(Globalize.translate('MessageRecordingCancelled')); - }); - - Dashboard.hideLoadingMsg(); - itemsContainer.dispatchEvent(new CustomEvent('timercancelled', { - bubbles: true - })); - }); - }); - }); - } - function showContextMenu(card, options) { var displayContextItem = card; @@ -525,14 +486,7 @@ curr.removeEventListener('click', onCardClick); curr.addEventListener('click', onCardClick); - if (AppInfo.isTouchPreferred) { - - curr.removeEventListener('contextmenu', disableEvent); - curr.addEventListener('contextmenu', disableEvent); - } - else { - curr.removeEventListener('contextmenu', onContextMenu); - curr.addEventListener('contextmenu', onContextMenu); + if (!AppInfo.isTouchPreferred) { curr.removeEventListener('mouseenter', onHoverIn); curr.addEventListener('mouseenter', onHoverIn, true); @@ -544,7 +498,7 @@ curr.addEventListener("touchstart", preventTouchHover); } - initTapHoldMenus(curr); + //initTapHoldMenus(curr); }; function initTapHoldMenus(elem) { @@ -616,12 +570,6 @@ }); } - function disableEvent(e) { - e.preventDefault(); - e.stopPropagation(); - return false; - } - function onTapHold(e) { var card = parentWithClass(e.target, 'card'); @@ -989,80 +937,6 @@ }); } - function onItemWithActionClick(e) { - - var elem = parentWithClass(e.target, 'itemWithAction'); - - if (!elem) { - return; - } - - var action = elem.getAttribute('data-action'); - var elemWithAttributes = elem; - - if (action) { - while (!elemWithAttributes.getAttribute('data-itemid')) { - elemWithAttributes = elemWithAttributes.parentNode; - } - } - - var index; - var itemsContainer; - - var itemId = elemWithAttributes.getAttribute('data-itemid'); - - if (action == 'play') { - MediaController.play(itemId); - } - else if (action == 'playallfromhere') { - - index = elemWithAttributes.getAttribute('data-index'); - - itemsContainer = parentWithClass(elem, 'itemsContainer'); - - playAllFromHere(index, itemsContainer, 'play'); - } - else if (action == 'instantmix') { - - MediaController.instantMix(itemId); - } - - e.stopPropagation(); - e.preventDefault(); - return false; - } - - function playAllFromHere(index, itemsContainer, method) { - - var ids = []; - - var mediaItems = itemsContainer.querySelectorAll('.mediaItem'); - for (var i = 0, length = mediaItems.length; i < length; i++) { - var node = mediaItems[i]; - var id = node.getAttribute('data-itemid'); - while (!id) { - node = node.parentNode; - id = node.getAttribute('data-itemid'); - } - ids.push(id); - } - - ids = ids.slice(index); - - ApiClient.getItems(Dashboard.getCurrentUserId(), { - - Ids: ids.join(','), - Fields: 'MediaSources,Chapters', - Limit: 100 - - }).then(function (result) { - - MediaController[method]({ - items: result.Items - }); - }); - } - function showSyncButtonsPerUser(page) { var apiClient = window.ApiClient; @@ -1106,16 +980,8 @@ var page = this; - page.addEventListener('click', onItemWithActionClick); - - var itemsContainers = page.querySelectorAll('.itemsContainer:not(.noautoinit)'); - var i, length; - for (i = 0, length = itemsContainers.length; i < length; i++) { - LibraryBrowser.createCardMenus(itemsContainers[i]); - } - var categorySyncButtons = page.querySelectorAll('.categorySyncButton'); - for (i = 0, length = categorySyncButtons.length; i < length; i++) { + for (var i = 0, length = categorySyncButtons.length; i < length; i++) { categorySyncButtons[i].addEventListener('click', onCategorySyncButtonClick); } }); diff --git a/dashboard-ui/scripts/livetvchannels.js b/dashboard-ui/scripts/livetvchannels.js index 72da67bad0..50785f9275 100644 --- a/dashboard-ui/scripts/livetvchannels.js +++ b/dashboard-ui/scripts/livetvchannels.js @@ -1,4 +1,4 @@ -define([], function () { +define(['emby-itemscontainer'], function () { return function (view, params, tabContent) { diff --git a/dashboard-ui/scripts/livetvitems.js b/dashboard-ui/scripts/livetvitems.js index 71ce7d3d84..11be75fa0b 100644 --- a/dashboard-ui/scripts/livetvitems.js +++ b/dashboard-ui/scripts/livetvitems.js @@ -1,4 +1,4 @@ -define([], function () { +define(['emby-itemscontainer'], function () { var view = LibraryBrowser.getDefaultItemsView('Poster', 'Poster'); diff --git a/dashboard-ui/scripts/livetvrecordings.js b/dashboard-ui/scripts/livetvrecordings.js index b3b7cfc383..73f0c877c9 100644 --- a/dashboard-ui/scripts/livetvrecordings.js +++ b/dashboard-ui/scripts/livetvrecordings.js @@ -149,7 +149,6 @@ elem.querySelector('.recordingItems').innerHTML = html; ImageLoader.lazyChildren(elem); - LibraryBrowser.createCardMenus(elem); }); } diff --git a/dashboard-ui/scripts/livetvsuggested.js b/dashboard-ui/scripts/livetvsuggested.js index 6fe55a2bec..902d3f536b 100644 --- a/dashboard-ui/scripts/livetvsuggested.js +++ b/dashboard-ui/scripts/livetvsuggested.js @@ -1,4 +1,4 @@ -define(['libraryBrowser', 'scrollStyles'], function (libraryBrowser) { +define(['libraryBrowser', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser) { function enableScrollX() { return browserInfo.mobile && AppInfo.enableAppLayouts; @@ -133,7 +133,6 @@ } else { containers[i].classList.remove('hiddenScrollX'); } - LibraryBrowser.createCardMenus(containers[i]); } }; diff --git a/dashboard-ui/scripts/moviesrecommended.js b/dashboard-ui/scripts/moviesrecommended.js index 9ceba44654..7fc2816eb6 100644 --- a/dashboard-ui/scripts/moviesrecommended.js +++ b/dashboard-ui/scripts/moviesrecommended.js @@ -1,4 +1,4 @@ -define(['libraryBrowser', 'scrollStyles'], function (libraryBrowser) { +define(['libraryBrowser', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser) { function getView() { @@ -167,9 +167,9 @@ html += '

' + title + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } var view = getView(); @@ -247,8 +247,6 @@ } else { containers[i].classList.remove('hiddenScrollX'); } - - libraryBrowser.createCardMenus(containers[i]); } } @@ -281,8 +279,6 @@ loadSuggestionsTab(view, params, tabContent); }; - libraryBrowser.createCardMenus(view.querySelector('.recommendations')); - var mdlTabs = view.querySelector('.libraryViewNav'); var baseUrl = 'movies.html'; diff --git a/dashboard-ui/scripts/musicrecommended.js b/dashboard-ui/scripts/musicrecommended.js index a8a64fa7f6..f6a6d31f35 100644 --- a/dashboard-ui/scripts/musicrecommended.js +++ b/dashboard-ui/scripts/musicrecommended.js @@ -1,4 +1,4 @@ -define(['libraryBrowser', 'scrollStyles'], function (libraryBrowser) { +define(['libraryBrowser', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser) { function itemsPerRow() { @@ -258,8 +258,6 @@ } else { containers[i].classList.remove('hiddenScrollX'); } - - LibraryBrowser.createCardMenus(containers[i]); } }; diff --git a/dashboard-ui/scripts/playlistedit.js b/dashboard-ui/scripts/playlistedit.js index f49376190d..9ed5d0d858 100644 --- a/dashboard-ui/scripts/playlistedit.js +++ b/dashboard-ui/scripts/playlistedit.js @@ -93,7 +93,6 @@ }); }); ImageLoader.lazyChildren(elem); - LibraryBrowser.createCardMenus(elem); $('.btnNextPage', elem).on('click', function () { query.StartIndex += query.Limit; diff --git a/dashboard-ui/scripts/searchpage.js b/dashboard-ui/scripts/searchpage.js index 6df9d0b40d..88ba3d8dee 100644 --- a/dashboard-ui/scripts/searchpage.js +++ b/dashboard-ui/scripts/searchpage.js @@ -1,4 +1,4 @@ -define(['libraryBrowser', 'focusManager', 'embyRouter', 'emby-input', 'paper-icon-button-light', 'material-icons'], function (libraryBrowser, focusManager, embyRouter) { +define(['libraryBrowser', 'focusManager', 'embyRouter', 'emby-input', 'paper-icon-button-light', 'material-icons', 'emby-itemscontainer'], function (libraryBrowser, focusManager, embyRouter) { function loadSuggestions(page) { @@ -121,7 +121,8 @@ centerImage: true, centerText: true, textLines: getAdditionalTextLines, - overlayPlayButton: true + overlayPlayButton: true, + serverId: ApiClient.serverInfo().Id }); var itemsContainer = searchResults; @@ -176,8 +177,6 @@ loadSuggestions(view); } - libraryBrowser.createCardMenus(searchResults); - view.querySelector('.txtSearch').addEventListener('input', function () { onSearchChange(this.value); }); diff --git a/dashboard-ui/scripts/sections.js b/dashboard-ui/scripts/sections.js index 4bf9d791e4..dd18df4131 100644 --- a/dashboard-ui/scripts/sections.js +++ b/dashboard-ui/scripts/sections.js @@ -1,4 +1,4 @@ -define(['libraryBrowser', 'appSettings', 'scrollStyles', 'emby-button', 'paper-icon-button-light'], function (LibraryBrowser, appSettings) { +define(['libraryBrowser', 'appSettings', 'scrollStyles', 'emby-button', 'paper-icon-button-light', 'emby-itemscontainer'], function (LibraryBrowser, appSettings) { function getUserViews(userId) { @@ -302,7 +302,7 @@ html += '
'; - html += '
'; + html += '
'; html += LibraryBrowser.getPosterViewHtml({ items: items, @@ -322,8 +322,6 @@ elem.innerHTML = html; ImageLoader.lazyChildren(elem); - - LibraryBrowser.createCardMenus(elem); }); } @@ -347,9 +345,9 @@ if (items.length) { html += '

' + Globalize.translate('HeaderLatestMovies') + '

'; if (scrollX) { - html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } html += LibraryBrowser.getPosterViewHtml({ items: items, @@ -366,8 +364,6 @@ elem.innerHTML = html; ImageLoader.lazyChildren(elem); - - LibraryBrowser.createCardMenus(elem); }); } @@ -391,9 +387,9 @@ if (items.length) { html += '

' + Globalize.translate('HeaderLatestEpisodes') + '

'; if (scrollX) { - html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } html += LibraryBrowser.getPosterViewHtml({ @@ -411,8 +407,6 @@ elem.innerHTML = html; ImageLoader.lazyChildren(elem); - - LibraryBrowser.createCardMenus(elem); }); } @@ -434,7 +428,7 @@ if (result.Items.length) { html += '

' + Globalize.translate('HeaderLatestChannelMedia') + '

'; - html += '
'; + html += '
'; html += LibraryBrowser.getPosterViewHtml({ items: result.Items, shape: 'auto', @@ -449,8 +443,6 @@ elem.innerHTML = html; ImageLoader.lazyChildren(elem); - - LibraryBrowser.createCardMenus(elem); }); } @@ -478,9 +470,9 @@ var scrollX = enableScrollX() && browserInfo.safari && screenWidth > 800; if (scrollX) { - html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } html += LibraryBrowser.getPosterViewHtml({ items: items, @@ -506,8 +498,6 @@ elem.innerHTML = html + infoHtml; ImageLoader.lazyChildren(elem); - - LibraryBrowser.createCardMenus(elem, { showDetailsMenu: false }); }); }); } @@ -539,9 +529,9 @@ if (result.Items.length) { html += '

' + Globalize.translate('HeaderResume') + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } html += LibraryBrowser.getPosterViewHtml({ items: result.Items, @@ -562,7 +552,6 @@ elem.innerHTML = html; ImageLoader.lazyChildren(elem); - LibraryBrowser.createCardMenus(elem); }); } @@ -584,9 +573,9 @@ if (result.Items.length) { html += '

' + Globalize.translate('HeaderNextUp') + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } html += LibraryBrowser.getPosterViewHtml({ items: result.Items, @@ -606,7 +595,6 @@ elem.innerHTML = html; ImageLoader.lazyChildren(elem); - LibraryBrowser.createCardMenus(elem); }); } @@ -667,7 +655,7 @@ html += ''; html += '
'; - html += '
'; + html += '
'; html += LibraryBrowser.getPosterViewHtml({ items: result.Items, shape: 'autohome', @@ -685,8 +673,6 @@ var elem = page.querySelector('#channel' + channel.Id + ''); elem.innerHTML = html; ImageLoader.lazyChildren(elem); - - LibraryBrowser.createCardMenus(elem); }); } @@ -715,9 +701,9 @@ } if (enableScrollX()) { - html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } html += LibraryBrowser.getPosterViewHtml({ items: result.Items, @@ -734,7 +720,6 @@ elem.innerHTML = html; ImageLoader.lazyChildren(elem); - LibraryBrowser.createCardMenus(elem); }); } diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 1646238cad..570b46e65b 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -2035,6 +2035,9 @@ var AppInfo = {}; }, canPlay: function (item) { return MediaController.canPlay(item); + }, + instantMix: function (item) { + return MediaController.instantMix(item); } }; }); @@ -2287,7 +2290,7 @@ var AppInfo = {}; var baseUrl = 'bower_components/emby-webcomponents/strings/'; - var languages = ['da', 'de', 'en-US', 'es-MX', 'kk', 'nb', 'nl', 'pt-BR', 'pt-PT', 'ru', 'sv', 'zh-TW']; + var languages = ['da', 'de', 'en-US', 'es-MX', 'fr', 'kk', 'nb', 'nl', 'pt-BR', 'pt-PT', 'ru', 'sv', 'zh-TW']; var translations = languages.map(function (i) { return { @@ -3248,7 +3251,7 @@ var AppInfo = {}; } function upgradeLayouts() { - if (!AppInfo.enableAppLayouts && browserInfo.mobile) { + if (!AppInfo.enableAppLayouts) { Dashboard.getPluginSecurityInfo().then(function (info) { if (info.IsMBSupporter) { AppInfo.enableAppLayouts = true; diff --git a/dashboard-ui/scripts/tvrecommended.js b/dashboard-ui/scripts/tvrecommended.js index fa2f231323..605f789eee 100644 --- a/dashboard-ui/scripts/tvrecommended.js +++ b/dashboard-ui/scripts/tvrecommended.js @@ -1,4 +1,4 @@ -define(['libraryBrowser', 'scrollStyles'], function (libraryBrowser) { +define(['libraryBrowser', 'scrollStyles', 'emby-itemscontainer'], function (libraryBrowser) { return function (view, params) { @@ -165,7 +165,6 @@ } else { tabContent.querySelector('#resumableItems').classList.remove('hiddenScrollX'); } - libraryBrowser.createCardMenus(tabContent.querySelector('#resumableItems')); }; self.renderTab = function () { @@ -273,7 +272,6 @@ } else { view.querySelector('#resumableItems').classList.remove('hiddenScrollX'); } - libraryBrowser.createCardMenus(view.querySelector('#resumableItems')); libraryBrowser.configurePaperLibraryTabs(view, mdlTabs, view.querySelectorAll('.pageTabContent'), [0, 1, 2, 4, 5, 6]); mdlTabs.addEventListener('beforetabchange', function (e) { diff --git a/dashboard-ui/scripts/tvupcoming.js b/dashboard-ui/scripts/tvupcoming.js index 6d6d79df2e..b9534c463d 100644 --- a/dashboard-ui/scripts/tvupcoming.js +++ b/dashboard-ui/scripts/tvupcoming.js @@ -1,4 +1,4 @@ -define(['datetime', 'scrollStyles'], function (datetime) { +define(['datetime', 'scrollStyles', 'emby-itemscontainer'], function (datetime) { function getUpcomingPromise(context, params) { @@ -102,9 +102,9 @@ html += '

' + group.name + '

'; if (enableScrollX()) { - html += '
'; + html += '
'; } else { - html += '
'; + html += '
'; } html += LibraryBrowser.getPosterViewHtml({ @@ -125,7 +125,6 @@ } elem.innerHTML = html; - LibraryBrowser.createCardMenus(elem); ImageLoader.lazyChildren(elem); } return function (view, params, tabContent) { diff --git a/dashboard-ui/search.html b/dashboard-ui/search.html index fb60807bf9..071f8ae077 100644 --- a/dashboard-ui/search.html +++ b/dashboard-ui/search.html @@ -43,6 +43,6 @@
-
+
\ No newline at end of file diff --git a/dashboard-ui/tv.html b/dashboard-ui/tv.html index 56c82f2292..443a8d3ab1 100644 --- a/dashboard-ui/tv.html +++ b/dashboard-ui/tv.html @@ -22,7 +22,7 @@
-
+
@@ -34,7 +34,7 @@ ${ButtonSync}
-
+
@@ -48,7 +48,7 @@ ${ButtonSync}
-
+
@@ -96,14 +96,14 @@
-
+
-
+