diff --git a/dashboard-ui/scripts/mediacontroller.js b/dashboard-ui/scripts/mediacontroller.js index ea91485b9a..aef4dfeef8 100644 --- a/dashboard-ui/scripts/mediacontroller.js +++ b/dashboard-ui/scripts/mediacontroller.js @@ -476,9 +476,9 @@ $(document.body).append(html); - var elem = $('#playerSelectionPanel').panel({}).trigger('create').panel("open").on("panelafterclose", function () { + var elem = $('#playerSelectionPanel').panel({}).trigger('create').panel("open").on("panelclose", function () { - $(this).off("panelafterclose").remove(); + $(this).off("panelclose").remove(); }); promise.done(function (targets) { diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index b302d783c7..ff5c0507e0 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -522,9 +522,9 @@ var Dashboard = { $(document.body).append(html); - var elem = $('#userFlyout').panel({}).trigger('create').panel("open").on("panelafterclose", function () { + var elem = $('#userFlyout').panel({}).trigger('create').panel("open").on("panelclose", function () { - $(this).off("panelafterclose").remove(); + $(this).off("panelclose").remove(); }); }); }, diff --git a/dashboard-ui/scripts/sync.js b/dashboard-ui/scripts/sync.js index d39f73c176..ed61650a68 100644 --- a/dashboard-ui/scripts/sync.js +++ b/dashboard-ui/scripts/sync.js @@ -1,13 +1,115 @@ (function (window, $) { + function submitJob(userId, items, form) { + + var targets = $('.chkSyncTarget:checked', form).get().map(function (c) { + + return c.getAttribute('data-targetid'); + }); + + if (!targets.length) { + + Dashboard.alert('Please select one or more sync targets.'); + return; + } + + var options = { + + userId: userId, + TargetIds: targets.join(','), + + ItemIds: items.map(function (i) { + return i.Id; + }).join(','), + + Quality: $('.radioSyncQuality', form)[0].getAttribute('data-value') + }; + + ApiClient.ajax({ + + type: "POST", + url: ApiClient.getUrl("Sync/Jobs"), + data: JSON.stringify(options), + contentType: "application/json" + + }).done(function () { + + $('.syncPanel').panel('close'); + }); + } + function showSyncMenu(items) { - Dashboard.alert('Coming soon.'); + var userId = Dashboard.getCurrentUserId(); + ApiClient.getJSON(ApiClient.getUrl('Sync/Targets', { + + UserId: userId + + })).done(function (targets) { + + var html = '
'; + + html += '
'; + html += '

Sync Media

'; + + html += '
'; + + html += '
'; + html += '
'; + html += 'Sync to:'; + + html += targets.map(function (t) { + + var targetHtml = ''; + targetHtml += ''; + + return targetHtml; + + }).join(''); + + html += '
'; + html += '
'; + + html += '
'; + + html += '
'; + html += '
'; + html += 'Quality:'; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += '
'; + html += '
'; + + html += '
'; + html += '

'; + html += ''; + html += '

'; + + html += '
'; + html += '
'; + html += '
'; + + $(document.body).append(html); + + var elem = $('.syncPanel').panel({}).trigger('create').panel("open").on("panelclose", function () { + $(this).off("panelclose").remove(); + }); + + $('form', elem).on('submit', function () { + + submitJob(userId, items, this); + return false; + }); + }); } function isAvailable(item, user) { - return true; + return item.SupportsSync; } window.SyncManager = { diff --git a/dashboard-ui/thirdparty/cast_sender.js b/dashboard-ui/thirdparty/cast_sender.js index 5d5ec38860..fe9303924f 100644 --- a/dashboard-ui/thirdparty/cast_sender.js +++ b/dashboard-ui/thirdparty/cast_sender.js @@ -5,7 +5,7 @@ chrome.cast.ApiBootstrap_ = function() { }; chrome.cast.ApiBootstrap_.EXTENSION_IDS = ["boadgeojelhgndaghljhdicfkmllpafd", "dliochdbjfkdbacpmhlcpmleaejidimm", "hfaagokkkhdbgiakmmlclaapfelnkoah", "fmfcbgogabcbclcofgocippekhfcmgfj", "enhhojjnijigcajfphajepfemndkmdlo"]; chrome.cast.ApiBootstrap_.findInstalledExtension_ = function(callback) { - //chrome.cast.ApiBootstrap_.findInstalledExtensionHelper_(0, callback); + chrome.cast.ApiBootstrap_.findInstalledExtensionHelper_(0, callback); }; chrome.cast.ApiBootstrap_.findInstalledExtensionHelper_ = function(index, callback) { index == chrome.cast.ApiBootstrap_.EXTENSION_IDS.length ? callback(null) : chrome.cast.ApiBootstrap_.isExtensionInstalled_(chrome.cast.ApiBootstrap_.EXTENSION_IDS[index], function(installed) {