mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
better encoding
This commit is contained in:
parent
5f27709a03
commit
ea917e5348
4 changed files with 41 additions and 45 deletions
58
ApiClient.js
58
ApiClient.js
|
@ -95,9 +95,11 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
return name;
|
return name;
|
||||||
}());
|
}());
|
||||||
|
|
||||||
function encodeName(name) {
|
self.encodeName = function (name) {
|
||||||
return encodeURIComponent(name).replace("'", '%27');
|
|
||||||
}
|
var val = $.param({ name: name });
|
||||||
|
return val.substring(val.indexOf('=') + 1).replace("'", '%27');
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wraps around jQuery ajax methods to add additional info to the request.
|
* Wraps around jQuery ajax methods to add additional info to the request.
|
||||||
|
@ -874,7 +876,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
options.userId = userId;
|
options.userId = userId;
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Studios/" + encodeName(name), options);
|
var url = self.getUrl("Studios/" + self.encodeName(name), options);
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
|
@ -898,7 +900,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
options.userId = userId;
|
options.userId = userId;
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Genres/" + encodeName(name), options);
|
var url = self.getUrl("Genres/" + self.encodeName(name), options);
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
|
@ -922,7 +924,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
options.userId = userId;
|
options.userId = userId;
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Artists/" + encodeName(name), options);
|
var url = self.getUrl("Artists/" + self.encodeName(name), options);
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
|
@ -946,7 +948,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
options.userId = userId;
|
options.userId = userId;
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Years/" + encodeName(name), options);
|
var url = self.getUrl("Years/" + self.encodeName(name), options);
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
|
@ -970,7 +972,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
options.userId = userId;
|
options.userId = userId;
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Persons/" + encodeName(name), options);
|
var url = self.getUrl("Persons/" + self.encodeName(name), options);
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
|
@ -1096,7 +1098,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var url = "Persons/" + encodeName(name) + "/Images/" + options.type;
|
var url = "Persons/" + self.encodeName(name) + "/Images/" + options.type;
|
||||||
|
|
||||||
if (options.index != null) {
|
if (options.index != null) {
|
||||||
url += "/" + options.index;
|
url += "/" + options.index;
|
||||||
|
@ -1166,7 +1168,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var url = "Genres/" + encodeName(name) + "/Images/" + options.type;
|
var url = "Genres/" + self.encodeName(name) + "/Images/" + options.type;
|
||||||
|
|
||||||
if (options.index != null) {
|
if (options.index != null) {
|
||||||
url += "/" + options.index;
|
url += "/" + options.index;
|
||||||
|
@ -1201,7 +1203,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var url = "Artists/" + encodeName(name) + "/Images/" + options.type;
|
var url = "Artists/" + self.encodeName(name) + "/Images/" + options.type;
|
||||||
|
|
||||||
if (options.index != null) {
|
if (options.index != null) {
|
||||||
url += "/" + options.index;
|
url += "/" + options.index;
|
||||||
|
@ -1236,7 +1238,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var url = "Studios/" + encodeName(name) + "/Images/" + options.type;
|
var url = "Studios/" + self.encodeName(name) + "/Images/" + options.type;
|
||||||
|
|
||||||
if (options.index != null) {
|
if (options.index != null) {
|
||||||
url += "/" + options.index;
|
url += "/" + options.index;
|
||||||
|
@ -1880,7 +1882,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/Favorites/Artists/" + encodeName(name));
|
var url = self.getUrl("Users/" + userId + "/Favorites/Artists/" + self.encodeName(name));
|
||||||
|
|
||||||
var method = isFavorite ? "POST" : "DELETE";
|
var method = isFavorite ? "POST" : "DELETE";
|
||||||
|
|
||||||
|
@ -1900,7 +1902,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/Favorites/Persons/" + encodeName(name));
|
var url = self.getUrl("Users/" + userId + "/Favorites/Persons/" + self.encodeName(name));
|
||||||
|
|
||||||
var method = isFavorite ? "POST" : "DELETE";
|
var method = isFavorite ? "POST" : "DELETE";
|
||||||
|
|
||||||
|
@ -1920,7 +1922,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/Favorites/Studios/" + encodeName(name));
|
var url = self.getUrl("Users/" + userId + "/Favorites/Studios/" + self.encodeName(name));
|
||||||
|
|
||||||
var method = isFavorite ? "POST" : "DELETE";
|
var method = isFavorite ? "POST" : "DELETE";
|
||||||
|
|
||||||
|
@ -1940,7 +1942,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/Favorites/Genres/" + encodeName(name));
|
var url = self.getUrl("Users/" + userId + "/Favorites/Genres/" + self.encodeName(name));
|
||||||
|
|
||||||
var method = isFavorite ? "POST" : "DELETE";
|
var method = isFavorite ? "POST" : "DELETE";
|
||||||
|
|
||||||
|
@ -1966,7 +1968,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/Ratings/Artists/" + encodeName(name), {
|
var url = self.getUrl("Users/" + userId + "/Ratings/Artists/" + self.encodeName(name), {
|
||||||
likes: likes
|
likes: likes
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1986,7 +1988,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/Ratings/Persons/" + encodeName(name), {
|
var url = self.getUrl("Users/" + userId + "/Ratings/Persons/" + self.encodeName(name), {
|
||||||
likes: likes
|
likes: likes
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -2006,7 +2008,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/Ratings/Studios/" + encodeName(name), {
|
var url = self.getUrl("Users/" + userId + "/Ratings/Studios/" + self.encodeName(name), {
|
||||||
likes: likes
|
likes: likes
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -2026,7 +2028,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/Ratings/Genres/" + encodeName(name), {
|
var url = self.getUrl("Users/" + userId + "/Ratings/Genres/" + self.encodeName(name), {
|
||||||
likes: likes
|
likes: likes
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -2051,7 +2053,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/Ratings/Artists/" + encodeName(name));
|
var url = self.getUrl("Users/" + userId + "/Ratings/Artists/" + self.encodeName(name));
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: "DELETE",
|
type: "DELETE",
|
||||||
|
@ -2069,7 +2071,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/Ratings/Persons/" + encodeName(name));
|
var url = self.getUrl("Users/" + userId + "/Ratings/Persons/" + self.encodeName(name));
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: "DELETE",
|
type: "DELETE",
|
||||||
|
@ -2087,7 +2089,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/Ratings/Studios/" + encodeName(name));
|
var url = self.getUrl("Users/" + userId + "/Ratings/Studios/" + self.encodeName(name));
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: "DELETE",
|
type: "DELETE",
|
||||||
|
@ -2105,7 +2107,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Users/" + userId + "/Ratings/Genres/" + encodeName(name));
|
var url = self.getUrl("Users/" + userId + "/Ratings/Genres/" + self.encodeName(name));
|
||||||
|
|
||||||
return self.ajax({
|
return self.ajax({
|
||||||
type: "DELETE",
|
type: "DELETE",
|
||||||
|
@ -2126,7 +2128,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Persons/" + encodeName(name) + "/Counts", {
|
var url = self.getUrl("Persons/" + self.encodeName(name) + "/Counts", {
|
||||||
userId: userId
|
userId: userId
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -2150,7 +2152,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Genres/" + encodeName(name) + "/Counts", {
|
var url = self.getUrl("Genres/" + self.encodeName(name) + "/Counts", {
|
||||||
userId: userId
|
userId: userId
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -2174,7 +2176,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Artists/" + encodeName(name) + "/Counts", {
|
var url = self.getUrl("Artists/" + self.encodeName(name) + "/Counts", {
|
||||||
userId: userId
|
userId: userId
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -2198,7 +2200,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) {
|
||||||
throw new Error("null name");
|
throw new Error("null name");
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = self.getUrl("Studios/" + encodeName(name) + "/Counts", {
|
var url = self.getUrl("Studios/" + self.encodeName(name) + "/Counts", {
|
||||||
userId: userId
|
userId: userId
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
$('#itemName', page).html(name);
|
$('#itemName', page).html(name);
|
||||||
|
|
||||||
if (item.AlbumArtist && item.Type == "Audio") {
|
if (item.AlbumArtist && item.Type == "Audio") {
|
||||||
$('#albumArtist', page).html('<a class="detailPageParentLink" href="itembynamedetails.html?context=music&artist=' + item.AlbumArtist + '">' + item.AlbumArtist + '</a>').show().trigger('create');
|
$('#albumArtist', page).html('<a class="detailPageParentLink" href="itembynamedetails.html?context=music&artist=' + ApiClient.encodeName(item.AlbumArtist) + '">' + item.AlbumArtist + '</a>').show().trigger('create');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$('#albumArtist', page).hide();
|
$('#albumArtist', page).hide();
|
||||||
|
@ -45,7 +45,7 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (item.AlbumArtist && item.Type == "MusicAlbum") {
|
else if (item.AlbumArtist && item.Type == "MusicAlbum") {
|
||||||
$('#seriesName', page).html('<a class="detailPageParentLink" href="itembynamedetails.html?context=music&artist=' + item.AlbumArtist + '">' + item.AlbumArtist + '</a>').show().trigger('create');
|
$('#albumArtist', page).html('<a class="detailPageParentLink" href="itembynamedetails.html?context=music&artist=' + ApiClient.encodeName(item.AlbumArtist) + '">' + item.AlbumArtist + '</a>').show().trigger('create');
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (item.Album) {
|
else if (item.Album) {
|
||||||
|
|
|
@ -1,11 +1,5 @@
|
||||||
var LibraryBrowser = (function (window, $) {
|
var LibraryBrowser = (function (window, $) {
|
||||||
|
|
||||||
function encodeName(name) {
|
|
||||||
|
|
||||||
var val = $.param({ name: name });
|
|
||||||
return val.substring(val.indexOf('=') + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
var defaultBackground = "#999;";
|
var defaultBackground = "#999;";
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -265,7 +259,7 @@
|
||||||
|
|
||||||
var artist = item.Artists[0];
|
var artist = item.Artists[0];
|
||||||
|
|
||||||
html += '<td><a href="itembynamedetails.html?context=music&artist=' + artist + '">' + artist + '</a></td>';
|
html += '<td><a href="itembynamedetails.html?context=music&artist=' + ApiClient.encodeName(artist) + '">' + artist + '</a></td>';
|
||||||
} else {
|
} else {
|
||||||
html += '<td></td>';
|
html += '<td></td>';
|
||||||
}
|
}
|
||||||
|
@ -314,16 +308,16 @@
|
||||||
return "itemdetails.html?id=" + id;
|
return "itemdetails.html?id=" + id;
|
||||||
}
|
}
|
||||||
if (item.Type == "Genre") {
|
if (item.Type == "Genre") {
|
||||||
return "itembynamedetails.html?genre=" + encodeName(item.Name) + "&context=" + itemByNameContext;
|
return "itembynamedetails.html?genre=" + ApiClient.encodeName(item.Name) + "&context=" + itemByNameContext;
|
||||||
}
|
}
|
||||||
if (item.Type == "Studio") {
|
if (item.Type == "Studio") {
|
||||||
return "itembynamedetails.html?studio=" + encodeName(item.Name) + "&context=" + itemByNameContext;
|
return "itembynamedetails.html?studio=" + ApiClient.encodeName(item.Name) + "&context=" + itemByNameContext;
|
||||||
}
|
}
|
||||||
if (item.Type == "Person") {
|
if (item.Type == "Person") {
|
||||||
return "itembynamedetails.html?person=" + encodeName(item.Name) + "&context=" + itemByNameContext;
|
return "itembynamedetails.html?person=" + ApiClient.encodeName(item.Name) + "&context=" + itemByNameContext;
|
||||||
}
|
}
|
||||||
if (item.Type == "Artist") {
|
if (item.Type == "Artist") {
|
||||||
return "itembynamedetails.html?artist=" + encodeName(item.Name) + "&context=" + (itemByNameContext || "music");
|
return "itembynamedetails.html?artist=" + ApiClient.encodeName(item.Name) + "&context=" + (itemByNameContext || "music");
|
||||||
}
|
}
|
||||||
|
|
||||||
return item.IsFolder ? (id ? "itemList.html?parentId=" + id : "#") : "itemdetails.html?id=" + id;
|
return item.IsFolder ? (id ? "itemList.html?parentId=" + id : "#") : "itemdetails.html?id=" + id;
|
||||||
|
@ -1236,7 +1230,7 @@
|
||||||
html += ' / ';
|
html += ' / ';
|
||||||
}
|
}
|
||||||
|
|
||||||
html += '<a href="itembynamedetails.html?context=' + context + '&studio=' + encodeName(item.Studios[i]) + '">' + item.Studios[i] + '</a>';
|
html += '<a href="itembynamedetails.html?context=' + context + '&studio=' + ApiClient.encodeName(item.Studios[i]) + '">' + item.Studios[i] + '</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
elem.show().html(html).trigger('create');
|
elem.show().html(html).trigger('create');
|
||||||
|
@ -1258,7 +1252,7 @@
|
||||||
html += ' / ';
|
html += ' / ';
|
||||||
}
|
}
|
||||||
|
|
||||||
html += '<a href="itembynamedetails.html?context=' + context + '&genre=' + encodeName(item.Genres[i]) + '">' + item.Genres[i] + '</a>';
|
html += '<a href="itembynamedetails.html?context=' + context + '&genre=' + ApiClient.encodeName(item.Genres[i]) + '">' + item.Genres[i] + '</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
elem.show().html(html).trigger('create');
|
elem.show().html(html).trigger('create');
|
||||||
|
@ -1450,7 +1444,7 @@
|
||||||
|
|
||||||
var role = cast.Role || cast.Type;
|
var role = cast.Role || cast.Type;
|
||||||
|
|
||||||
html += '<a href="itembynamedetails.html?context=' + context + '&person=' + encodeName(cast.Name) + '">';
|
html += '<a href="itembynamedetails.html?context=' + context + '&person=' + ApiClient.encodeName(cast.Name) + '">';
|
||||||
html += '<div class="posterViewItem posterViewItemWithDualText">';
|
html += '<div class="posterViewItem posterViewItemWithDualText">';
|
||||||
|
|
||||||
if (cast.PrimaryImageTag) {
|
if (cast.PrimaryImageTag) {
|
||||||
|
|
|
@ -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.88" targetFramework="net45" />
|
<package id="MediaBrowser.ApiClient.Javascript" version="3.0.91" targetFramework="net45" />
|
||||||
<package id="ServiceStack.Common" version="3.9.43" targetFramework="net45" />
|
<package id="ServiceStack.Common" version="3.9.43" targetFramework="net45" />
|
||||||
<package id="ServiceStack.Text" version="3.9.43" targetFramework="net45" />
|
<package id="ServiceStack.Text" version="3.9.43" targetFramework="net45" />
|
||||||
</packages>
|
</packages>
|
Loading…
Add table
Add a link
Reference in a new issue