diff --git a/ApiClient.js b/ApiClient.js
index 29bfb1068f..e9679c3f04 100644
--- a/ApiClient.js
+++ b/ApiClient.js
@@ -910,7 +910,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
* Removes a virtual folder from either the default view or a user view
* @param {String} name
*/
- self.removeVirtualFolder = function (name, userId) {
+ self.removeVirtualFolder = function (name, userId, refreshLibrary) {
if (!name) {
throw new Error("null name");
@@ -919,7 +919,10 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
var url = userId ? "Users/" + userId + "/VirtualFolders" : "Library/VirtualFolders";
url += "/" + name;
- url = self.getUrl(url);
+
+ url = self.getUrl(url, {
+ refreshLibrary: refreshLibrary ? true : false
+ });
return self.ajax({
type: "DELETE",
@@ -931,7 +934,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
* Adds a virtual folder to either the default view or a user view
* @param {String} name
*/
- self.addVirtualFolder = function (name, type, userId) {
+ self.addVirtualFolder = function (name, type, userId, refreshLibrary) {
if (!name) {
throw new Error("null name");
@@ -943,6 +946,8 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
options.collectionType = type;
}
+ options.refreshLibrary = refreshLibrary ? true : false;
+
var url = userId ? "Users/" + userId + "/VirtualFolders" : "Library/VirtualFolders";
url += "/" + name;
@@ -958,7 +963,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
* Renames a virtual folder, within either the default view or a user view
* @param {String} name
*/
- self.renameVirtualFolder = function (name, newName, userId) {
+ self.renameVirtualFolder = function (name, newName, userId, refreshLibrary) {
if (!name) {
throw new Error("null name");
@@ -968,7 +973,10 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
url += "/" + name + "/Name";
- url = self.getUrl(url, { newName: newName });
+ url = self.getUrl(url, {
+ refreshLibrary: refreshLibrary ? true : false,
+ newName: newName
+ });
return self.ajax({
type: "POST",
@@ -980,7 +988,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
* Adds an additional mediaPath to an existing virtual folder, within either the default view or a user view
* @param {String} name
*/
- self.addMediaPath = function (virtualFolderName, mediaPath, userId) {
+ self.addMediaPath = function (virtualFolderName, mediaPath, userId, refreshLibrary) {
if (!virtualFolderName) {
throw new Error("null virtualFolderName");
@@ -994,7 +1002,11 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
url += "/" + virtualFolderName + "/Paths";
- url = self.getUrl(url, { path: mediaPath });
+ url = self.getUrl(url, {
+
+ refreshLibrary: refreshLibrary ? true : false,
+ path: mediaPath
+ });
return self.ajax({
type: "POST",
@@ -1006,7 +1018,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
* Removes a media path from a virtual folder, within either the default view or a user view
* @param {String} name
*/
- self.removeMediaPath = function (virtualFolderName, mediaPath, userId) {
+ self.removeMediaPath = function (virtualFolderName, mediaPath, userId, refreshLibrary) {
if (!virtualFolderName) {
throw new Error("null virtualFolderName");
@@ -1020,7 +1032,11 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
url += "/" + virtualFolderName + "/Paths";
- url = self.getUrl(url, { path: mediaPath });
+ url = self.getUrl(url, {
+
+ refreshLibrary: refreshLibrary ? true : false,
+ path: mediaPath
+ });
return self.ajax({
type: "DELETE",
diff --git a/dashboard-ui/scripts/medialibrarypage.js b/dashboard-ui/scripts/medialibrarypage.js
index 6b795dc53c..1e797cf426 100644
--- a/dashboard-ui/scripts/medialibrarypage.js
+++ b/dashboard-ui/scripts/medialibrarypage.js
@@ -55,6 +55,11 @@
}
},
+ shouldRefreshLibraryAfterChanges: function () {
+
+ return $($.mobile.activePage).is('#mediaLibraryPage');
+ },
+
reloadVirtualFolders: function (page, virtualFolders) {
if (virtualFolders) {
@@ -86,7 +91,7 @@
html += '
' + virtualFolder.Name + '
';
- var typeName = MediaLibraryPage.getCollectionTypeOptions().filter(function(t) {
+ var typeName = MediaLibraryPage.getCollectionTypeOptions().filter(function (t) {
return t.value == virtualFolder.CollectionType;
@@ -151,7 +156,9 @@
MediaLibraryPage.lastVirtualFolderName = name;
- ApiClient.addVirtualFolder(name, type, userId).done(MediaLibraryPage.processOperationResult);
+ var refreshAfterChange = MediaLibraryPage.shouldRefreshLibraryAfterChanges();
+
+ ApiClient.addVirtualFolder(name, type, userId, refreshAfterChange).done(MediaLibraryPage.processOperationResult);
});
},
@@ -168,7 +175,9 @@
var userId = getParameterByName("userId");
- ApiClient.addMediaPath(virtualFolder.Name, path, userId).done(MediaLibraryPage.processOperationResult);
+ var refreshAfterChange = MediaLibraryPage.shouldRefreshLibraryAfterChanges();
+
+ ApiClient.addMediaPath(virtualFolder.Name, path, userId, refreshAfterChange).done(MediaLibraryPage.processOperationResult);
}
});
@@ -269,7 +278,9 @@
var userId = getParameterByName("userId");
- ApiClient.renameVirtualFolder(virtualFolder.Name, newName, userId).done(MediaLibraryPage.processOperationResult);
+ var refreshAfterChange = MediaLibraryPage.shouldRefreshLibraryAfterChanges();
+
+ ApiClient.renameVirtualFolder(virtualFolder.Name, newName, userId, refreshAfterChange).done(MediaLibraryPage.processOperationResult);
}
});
},
@@ -300,7 +311,9 @@
var userId = getParameterByName("userId");
- ApiClient.removeVirtualFolder(virtualFolder.Name, userId).done(MediaLibraryPage.processOperationResult);
+ var refreshAfterChange = MediaLibraryPage.shouldRefreshLibraryAfterChanges();
+
+ ApiClient.removeVirtualFolder(virtualFolder.Name, userId, refreshAfterChange).done(MediaLibraryPage.processOperationResult);
}
});
@@ -323,7 +336,9 @@
var userId = getParameterByName("userId");
- ApiClient.removeMediaPath(virtualFolder.Name, location, userId).done(MediaLibraryPage.processOperationResult);
+ var refreshAfterChange = MediaLibraryPage.shouldRefreshLibraryAfterChanges();
+
+ ApiClient.removeMediaPath(virtualFolder.Name, location, userId, refreshAfterChange).done(MediaLibraryPage.processOperationResult);
}
});
},
diff --git a/dashboard-ui/scripts/userprofilespage.js b/dashboard-ui/scripts/userprofilespage.js
index 7e160987c7..5a8dd869ed 100644
--- a/dashboard-ui/scripts/userprofilespage.js
+++ b/dashboard-ui/scripts/userprofilespage.js
@@ -22,7 +22,7 @@
html += "";
- html += "";
+ html += "";
if (user.PrimaryImageTag) {
diff --git a/dashboard-ui/scripts/wizardsettings.js b/dashboard-ui/scripts/wizardsettings.js
new file mode 100644
index 0000000000..a2ad29e554
--- /dev/null
+++ b/dashboard-ui/scripts/wizardsettings.js
@@ -0,0 +1,56 @@
+(function ($, document) {
+
+ function save(page) {
+
+ Dashboard.showLoadingMsg();
+
+ ApiClient.getScheduledTasks().done(function (tasks) {
+
+ var chapterTask = tasks.filter(function (t) {
+ return t.Name.toLowerCase() == 'chapter image extraction';
+ })[0];
+
+ if (!chapterTask) {
+ throw new Error('Cannot find chapter scheduled task');
+ }
+
+ // First update the chapters scheduled task
+ var triggers = $('#chkChapters', page).checked() ? [{
+ "Type": "DailyTrigger",
+ "TimeOfDayTicks": 144000000000
+ }] : [];
+
+ ApiClient.updateScheduledTaskTriggers(chapterTask.Id, triggers).done(function () {
+
+
+ // After saving chapter task, now save server config
+ ApiClient.getServerConfiguration().done(function (config) {
+
+ config.SaveLocalMeta = $('#chkSaveLocalMetadata', page).checked();
+
+ ApiClient.updateServerConfiguration(config).done(function(result) {
+
+ Dashboard.processServerConfigurationUpdateResult(result);
+
+ Dashboard.navigate('wizardfinish.html');
+
+ });
+ });
+
+
+ });
+ });
+
+ }
+
+ $(document).on('pageinit', "#wizardSettingsPage", function () {
+
+ var page = this;
+
+ $('#btnNextPage', page).on('click', function () {
+
+ save(page);
+ });
+ });
+
+})(jQuery, document, window);
diff --git a/dashboard-ui/wizardlibrary.html b/dashboard-ui/wizardlibrary.html
index 901d0ea7b8..39a0f314e1 100644
--- a/dashboard-ui/wizardlibrary.html
+++ b/dashboard-ui/wizardlibrary.html
@@ -65,7 +65,7 @@
-
+
diff --git a/dashboard-ui/wizardsettings.html b/dashboard-ui/wizardsettings.html
new file mode 100644
index 0000000000..5cd7f05a15
--- /dev/null
+++ b/dashboard-ui/wizardsettings.html
@@ -0,0 +1,37 @@
+
+
+
+ Media Browser
+
+
+
+
+
+
+
+
+
Configure settings
+
+
+
+
+
+
Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited and help reduce the size of the server's data folder.
+
+
+
+
+
+
Extracting chapter images will allow clients to display graphical scene selection menus. The process can be cpu-intensive and on average will require 1-2GB of space. It runs as a nightly scheduled task at 4am, although this is configurable in the scheduled tasks area of the Dashboard once the wizard is completed.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages.config b/packages.config
index 49180aa52e..2e19e0a123 100644
--- a/packages.config
+++ b/packages.config
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file