mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
fixes #519 - Add third wizard page
This commit is contained in:
parent
0a849490b6
commit
3e69d637c4
7 changed files with 142 additions and 18 deletions
34
ApiClient.js
34
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
|
* Removes a virtual folder from either the default view or a user view
|
||||||
* @param {String} name
|
* @param {String} name
|
||||||
*/
|
*/
|
||||||
self.removeVirtualFolder = function (name, userId) {
|
self.removeVirtualFolder = function (name, userId, refreshLibrary) {
|
||||||
|
|
||||||
if (!name) {
|
if (!name) {
|
||||||
throw new Error("null 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";
|
var url = userId ? "Users/" + userId + "/VirtualFolders" : "Library/VirtualFolders";
|
||||||
|
|
||||||
url += "/" + name;
|
url += "/" + name;
|
||||||
url = self.getUrl(url);
|
|
||||||
|
url = self.getUrl(url, {
|
||||||
|
refreshLibrary: refreshLibrary ? true : false
|
||||||
|
});
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: "DELETE",
|
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
|
* Adds a virtual folder to either the default view or a user view
|
||||||
* @param {String} name
|
* @param {String} name
|
||||||
*/
|
*/
|
||||||
self.addVirtualFolder = function (name, type, userId) {
|
self.addVirtualFolder = function (name, type, userId, refreshLibrary) {
|
||||||
|
|
||||||
if (!name) {
|
if (!name) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
|
@ -943,6 +946,8 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
options.collectionType = type;
|
options.collectionType = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
options.refreshLibrary = refreshLibrary ? true : false;
|
||||||
|
|
||||||
var url = userId ? "Users/" + userId + "/VirtualFolders" : "Library/VirtualFolders";
|
var url = userId ? "Users/" + userId + "/VirtualFolders" : "Library/VirtualFolders";
|
||||||
|
|
||||||
url += "/" + name;
|
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
|
* Renames a virtual folder, within either the default view or a user view
|
||||||
* @param {String} name
|
* @param {String} name
|
||||||
*/
|
*/
|
||||||
self.renameVirtualFolder = function (name, newName, userId) {
|
self.renameVirtualFolder = function (name, newName, userId, refreshLibrary) {
|
||||||
|
|
||||||
if (!name) {
|
if (!name) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
|
@ -968,7 +973,10 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
|
|
||||||
url += "/" + name + "/Name";
|
url += "/" + name + "/Name";
|
||||||
|
|
||||||
url = self.getUrl(url, { newName: newName });
|
url = self.getUrl(url, {
|
||||||
|
refreshLibrary: refreshLibrary ? true : false,
|
||||||
|
newName: newName
|
||||||
|
});
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: "POST",
|
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
|
* Adds an additional mediaPath to an existing virtual folder, within either the default view or a user view
|
||||||
* @param {String} name
|
* @param {String} name
|
||||||
*/
|
*/
|
||||||
self.addMediaPath = function (virtualFolderName, mediaPath, userId) {
|
self.addMediaPath = function (virtualFolderName, mediaPath, userId, refreshLibrary) {
|
||||||
|
|
||||||
if (!virtualFolderName) {
|
if (!virtualFolderName) {
|
||||||
throw new Error("null virtualFolderName");
|
throw new Error("null virtualFolderName");
|
||||||
|
@ -994,7 +1002,11 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
|
|
||||||
url += "/" + virtualFolderName + "/Paths";
|
url += "/" + virtualFolderName + "/Paths";
|
||||||
|
|
||||||
url = self.getUrl(url, { path: mediaPath });
|
url = self.getUrl(url, {
|
||||||
|
|
||||||
|
refreshLibrary: refreshLibrary ? true : false,
|
||||||
|
path: mediaPath
|
||||||
|
});
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: "POST",
|
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
|
* Removes a media path from a virtual folder, within either the default view or a user view
|
||||||
* @param {String} name
|
* @param {String} name
|
||||||
*/
|
*/
|
||||||
self.removeMediaPath = function (virtualFolderName, mediaPath, userId) {
|
self.removeMediaPath = function (virtualFolderName, mediaPath, userId, refreshLibrary) {
|
||||||
|
|
||||||
if (!virtualFolderName) {
|
if (!virtualFolderName) {
|
||||||
throw new Error("null virtualFolderName");
|
throw new Error("null virtualFolderName");
|
||||||
|
@ -1020,7 +1032,11 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
|
|
||||||
url += "/" + virtualFolderName + "/Paths";
|
url += "/" + virtualFolderName + "/Paths";
|
||||||
|
|
||||||
url = self.getUrl(url, { path: mediaPath });
|
url = self.getUrl(url, {
|
||||||
|
|
||||||
|
refreshLibrary: refreshLibrary ? true : false,
|
||||||
|
path: mediaPath
|
||||||
|
});
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: "DELETE",
|
type: "DELETE",
|
||||||
|
|
|
@ -55,6 +55,11 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
shouldRefreshLibraryAfterChanges: function () {
|
||||||
|
|
||||||
|
return $($.mobile.activePage).is('#mediaLibraryPage');
|
||||||
|
},
|
||||||
|
|
||||||
reloadVirtualFolders: function (page, virtualFolders) {
|
reloadVirtualFolders: function (page, virtualFolders) {
|
||||||
|
|
||||||
if (virtualFolders) {
|
if (virtualFolders) {
|
||||||
|
@ -86,7 +91,7 @@
|
||||||
|
|
||||||
html += '<h3>' + virtualFolder.Name + '</h3>';
|
html += '<h3>' + virtualFolder.Name + '</h3>';
|
||||||
|
|
||||||
var typeName = MediaLibraryPage.getCollectionTypeOptions().filter(function(t) {
|
var typeName = MediaLibraryPage.getCollectionTypeOptions().filter(function (t) {
|
||||||
|
|
||||||
return t.value == virtualFolder.CollectionType;
|
return t.value == virtualFolder.CollectionType;
|
||||||
|
|
||||||
|
@ -151,7 +156,9 @@
|
||||||
|
|
||||||
MediaLibraryPage.lastVirtualFolderName = name;
|
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");
|
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");
|
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");
|
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");
|
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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
html += "<li>";
|
html += "<li>";
|
||||||
|
|
||||||
html += "<a onclick='Dashboard.navigate(\"edituser.html?userId=" + user.Id + "\");' href='#'>";
|
html += "<a href='edituser.html?userId=" + user.Id + "'>";
|
||||||
|
|
||||||
if (user.PrimaryImageTag) {
|
if (user.PrimaryImageTag) {
|
||||||
|
|
||||||
|
|
56
dashboard-ui/scripts/wizardsettings.js
Normal file
56
dashboard-ui/scripts/wizardsettings.js
Normal file
|
@ -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);
|
|
@ -65,7 +65,7 @@
|
||||||
|
|
||||||
<div class="wizardNavigation">
|
<div class="wizardNavigation">
|
||||||
<button type="button" data-iconpos="left" data-icon="arrow-left" data-inline="true" onclick="history.back();">Previous</button>
|
<button type="button" data-iconpos="left" data-icon="arrow-left" data-inline="true" onclick="history.back();">Previous</button>
|
||||||
<button type="button" data-iconpos="right" data-icon="arrow-right" data-inline="true" onclick="Dashboard.navigate('wizardfinish.html');">Next</button>
|
<button type="button" data-iconpos="right" data-icon="arrow-right" data-inline="true" onclick="Dashboard.navigate('wizardsettings.html');">Next</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
37
dashboard-ui/wizardsettings.html
Normal file
37
dashboard-ui/wizardsettings.html
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Media Browser</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="wizardSettingsPage" data-role="page" class="page standalonePage wizardPage mediaLibraryPage">
|
||||||
|
|
||||||
|
<div data-role="content">
|
||||||
|
|
||||||
|
<div class="ui-corner-all ui-shadow wizardContent">
|
||||||
|
<h2>
|
||||||
|
<img src="css/images/mblogoicon.png" />Configure settings</h2>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<div style="margin: 1em 0;">
|
||||||
|
<label for="chkSaveLocalMetadata">Save metadata into media folders</label>
|
||||||
|
<input id="chkSaveLocalMetadata" name="chkSaveLocalMetadata" type="checkbox" checked="checked" />
|
||||||
|
<div class="fieldDescription">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.</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="margin: 2em 0;">
|
||||||
|
<label for="chkChapters">Enable video chapter image extraction</label>
|
||||||
|
<input id="chkChapters" name="chkChapters" type="checkbox" checked="checked" />
|
||||||
|
<div class="fieldDescription">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.</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="wizardNavigation">
|
||||||
|
<button type="button" data-iconpos="left" data-icon="arrow-left" data-inline="true" onclick="history.back();">Previous</button>
|
||||||
|
<button id="btnNextPage" type="button" data-iconpos="right" data-icon="arrow-right" data-inline="true">Next</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="MediaBrowser.ApiClient.Javascript" version="3.0.168" targetFramework="net45" />
|
<package id="MediaBrowser.ApiClient.Javascript" version="3.0.169" targetFramework="net45" />
|
||||||
<package id="ServiceStack.Common" version="3.9.58" targetFramework="net45" />
|
<package id="ServiceStack.Common" version="3.9.58" targetFramework="net45" />
|
||||||
<package id="ServiceStack.Text" version="3.9.58" targetFramework="net45" />
|
<package id="ServiceStack.Text" version="3.9.58" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
Loading…
Add table
Add a link
Reference in a new issue