diff --git a/data/interfaces/default/current_activity_instance.html b/data/interfaces/default/current_activity_instance.html
index 115d796e..261b7fa5 100644
--- a/data/interfaces/default/current_activity_instance.html
+++ b/data/interfaces/default/current_activity_instance.html
@@ -73,7 +73,7 @@ DOCUMENTATION :: END
href = page('info', data['rating_key'])
parent_href = page('info', data['parent_rating_key'])
grandparent_href = page('info', data['grandparent_rating_key'])
- user_href = 'user?user_id={}'.format(data['user_id']) if data['user_id'] else '#'
+ user_href = page('user', data['user_id']) if data['user_id'] else '#'
%>
diff --git a/data/interfaces/default/home_stats.html b/data/interfaces/default/home_stats.html
index f64e4267..d82b120b 100644
--- a/data/interfaces/default/home_stats.html
+++ b/data/interfaces/default/home_stats.html
@@ -93,16 +93,17 @@ DOCUMENTATION :: END
href = '#'
if row0['rating_key']:
- href = 'info?rating_key={}'.format(row0['rating_key'])
if row0['live']:
- href += '&source=history'
+ href = page('info', row0['rating_key'], row0['guid'], history=True, live=row0['live'])
+ else:
+ href = page('info', row0['rating_key'])
%>
% elif stat_id == 'top_users':
- <% user_href = 'user?user_id={}'.format(row0['user_id']) if row0['user_id'] else '#' %>
+ <% user_href = page('user', row0['user_id']) if row0['user_id'] else '#' %>
@@ -130,7 +131,8 @@ DOCUMENTATION :: END
% for row in top_stat['rows']:
- -
@@ -140,15 +142,16 @@ DOCUMENTATION :: END
<%
href = '#'
if row['rating_key']:
- href = 'info?rating_key={}'.format(row['rating_key'])
- if row0['live']:
- href += '&source=history'
+ if row['live']:
+ href = page('info', row['rating_key'], row['guid'], history=True, live=row['live'])
+ else:
+ href = page('info', row['rating_key'])
%>
${row['title']}
% elif stat_id == 'top_users':
- <% user_href = 'user?user_id={}'.format(row['user_id']) if row['user_id'] else '#' %>
+ <% user_href = page('user', row['user_id']) if row['user_id'] else '#' %>
${row['friendly_name']}
@@ -190,6 +193,7 @@ DOCUMENTATION :: END
var user_id = $(elem).data('user_id');
var user_thumb = $(elem).data('user_thumb');
var rating_key = $(elem).data('rating_key');
+ var guid = $(elem).data('guid');
var live = $(elem).data('live');
var [height, fallback_poster, fallback_art] = [450, 'poster', 'art'];
if ($.inArray(stat_id, ['top_music', 'popular_music']) > -1) {
@@ -204,7 +208,7 @@ DOCUMENTATION :: END
} else if (stat_id === 'top_users') {
$('#stats-thumb-' + stat_id).css('background-image', 'url(' + (user_thumb || 'images/gravatar-default.png') + ')');
if (user_id) {
- href = 'user?user_id=' + user_id;
+ href = page('user', user_id);
}
$('#stats-thumb-url-' + stat_id).attr('href', href).prop('title', $(elem).data('friendly_name'));
} else if (stat_id === 'top_platforms') {
@@ -216,9 +220,10 @@ DOCUMENTATION :: END
}).addClass('platform-' + $(elem).data('platform') + '-rgba');
} else {
if (rating_key) {
- href = 'info?rating_key=' + rating_key;
if (live) {
- href += '&source=history';
+ href = page('info', rating_key, guid, true, live);
+ } else {
+ href = page('info', rating_key);
}
}
$('#stats-thumb-url-' + stat_id).attr('href', href).prop('title', $(elem).data('title'));
diff --git a/data/interfaces/default/index.html b/data/interfaces/default/index.html
index 6c3c98b9..09e1ba61 100644
--- a/data/interfaces/default/index.html
+++ b/data/interfaces/default/index.html
@@ -386,7 +386,7 @@
if (s.grandparent_rating_key !== instance.data('grandparent_rating_key').toString()) {
$('#background-' + key).css('background-image', 'url(' + page('pms_image_proxy', s.art, s.rating_key, 500, 280, 40, '282828', 3, 'art', true) + ')');
$('#metadata-grandparent_title-' + key)
- .attr('href', 'info?rating_key=' + s.grandparent_rating_key)
+ .attr('href', page('info', s.grandparent_rating_key))
.attr('title', s.original_title || s.grandparent_title)
.text(s.original_title || s.grandparent_title);
}
@@ -395,21 +395,21 @@
$('#poster-' + key).css('background-image', 'url(' + page('pms_image_proxy', s.parent_thumb, s.parent_rating_key, 300, 300, null, null, null, 'poster', true) + ')');
$('#poster-' + key + '-bg').css('background-image', 'url(' + page('pms_image_proxy', s.parent_thumb, s.parent_rating_key, 300, 300, 60, '282828', 3, 'poster', true) + ')');
$('#poster-url-' + key)
- .attr('href', 'info?rating_key=' + s.parent_rating_key)
+ .attr('href', page('info', s.parent_rating_key))
.attr('title', s.parent_title);
$('#metadata-parent_title-' + key)
- .attr('href', 'info?rating_key=' + s.parent_rating_key)
+ .attr('href', page('info', s.parent_rating_key))
.attr('title', s.parent_title)
.text(s.parent_title);
}
// Update cover if track changed
if (s.rating_key !== instance.data('rating_key').toString()) {
$('#metadata-grandparent_title-' + key)
- .attr('href', 'info?rating_key=' + s.grandparent_rating_key)
+ .attr('href', page('info', s.grandparent_rating_key))
.attr('title', s.original_title || s.grandparent_title)
.text(s.original_title || s.grandparent_title);
$('#metadata-title-' + key)
- .attr('href', 'info?rating_key=' + s.rating_key)
+ .attr('href', page('info', s.rating_key))
.attr('title', s.title)
.text(s.title);
}
diff --git a/data/interfaces/default/info.html b/data/interfaces/default/info.html
index a07a9fb4..e203e489 100644
--- a/data/interfaces/default/info.html
+++ b/data/interfaces/default/info.html
@@ -103,21 +103,21 @@ DOCUMENTATION :: END
% endif
% endif
% elif data['media_type'] in ('movie', 'collection'):
-
- ${data['library_name']}
+ - ${data['library_name']}
- ${data['title']}
% elif data['media_type'] == 'show':
- - ${data['library_name']}
+ - ${data['library_name']}
- ${data['title']}
% elif data['media_type'] == 'season':
- - ${data['library_name']}
+ - ${data['library_name']}
- ${data['parent_title']}
- Season ${data['media_index']}
% elif data['media_type'] == 'episode':
- - ${data['library_name']}
+ - ${data['library_name']}
- ${data['grandparent_title']}
@@ -125,17 +125,17 @@ DOCUMENTATION :: END
- Episode ${data['media_index']} - ${data['title']}
% elif data['media_type'] == 'artist':
- - ${data['library_name']}
+ - ${data['library_name']}
- ${data['title']}
% elif data['media_type'] == 'album':
- - ${data['library_name']}
+ - ${data['library_name']}
- ${data['parent_title']}
- ${data['title']}
% elif data['media_type'] == 'track':
- - ${data['library_name']}
+ - ${data['library_name']}
- ${data['grandparent_title']}
diff --git a/data/interfaces/default/js/script.js b/data/interfaces/default/js/script.js
index 93f78eb4..77f100d1 100644
--- a/data/interfaces/default/js/script.js
+++ b/data/interfaces/default/js/script.js
@@ -721,7 +721,9 @@ function encodeData(data) {
function page(endpoint, ...args) {
let endpoints = {
'pms_image_proxy': pms_image_proxy,
- 'info': info_page
+ 'info': info_page,
+ 'library': library_page,
+ 'user': user_page
};
var params = {};
@@ -764,3 +766,20 @@ function info_page(rating_key, guid, history, live) {
return params;
}
+
+function library_page(section_id) {
+ var params = {};
+
+ if (section_id != null) { params.section_id = section_id; }
+
+ return params;
+}
+
+function user_page(user_id, user) {
+ var params = {};
+
+ if (user_id != null) { params.user_id = user_id; }
+ if (user != null) { params.user = user; }
+
+ return params;
+}
diff --git a/data/interfaces/default/js/tables/history_table.js b/data/interfaces/default/js/tables/history_table.js
index 8fa770d6..a9552dab 100644
--- a/data/interfaces/default/js/tables/history_table.js
+++ b/data/interfaces/default/js/tables/history_table.js
@@ -81,9 +81,9 @@ history_table_options = {
"createdCell": function (td, cellData, rowData, row, col) {
if (cellData !== '') {
if (rowData['user_id']) {
- $(td).html('' + cellData + '');
+ $(td).html('' + cellData + '');
} else {
- $(td).html('' + cellData + '');
+ $(td).html('' + cellData + '');
}
} else {
$(td).html(cellData);
@@ -186,7 +186,7 @@ history_table_options = {
} else if (rowData['media_type'] === 'clip') {
$(td).html(cellData);
} else {
- $(td).html('' + cellData + '');
+ $(td).html('' + cellData + '');
}
}
},
diff --git a/data/interfaces/default/js/tables/history_table_modal.js b/data/interfaces/default/js/tables/history_table_modal.js
index 3cc752e7..575e91cd 100644
--- a/data/interfaces/default/js/tables/history_table_modal.js
+++ b/data/interfaces/default/js/tables/history_table_modal.js
@@ -63,9 +63,9 @@ history_table_modal_options = {
"createdCell": function (td, cellData, rowData, row, col) {
if (cellData !== '') {
if (rowData['user_id']) {
- $(td).html('' + cellData + '');
+ $(td).html('' + cellData + '');
} else {
- $(td).html('' + cellData + '');
+ $(td).html('' + cellData + '');
}
} else {
$(td).html(cellData);
@@ -125,7 +125,7 @@ history_table_modal_options = {
thumb_popover = '' + cellData + parent_info + '';
$(td).html('');
} else {
- $(td).html('' + cellData + '');
+ $(td).html('' + cellData + '');
}
}
},
diff --git a/data/interfaces/default/js/tables/libraries.js b/data/interfaces/default/js/tables/libraries.js
index fa44b7ac..240670cc 100644
--- a/data/interfaces/default/js/tables/libraries.js
+++ b/data/interfaces/default/js/tables/libraries.js
@@ -164,7 +164,7 @@ libraries_list_table_options = {
thumb_popover = '' + cellData + parent_info + '';
$(td).html('');
} else if (rowData['media_type']) {
- $(td).html('' + cellData + '');
+ $(td).html('' + cellData + '');
}
} else {
$(td).html('n/a');
diff --git a/data/interfaces/default/js/tables/media_info_table.js b/data/interfaces/default/js/tables/media_info_table.js
index 2263eeac..0636dd82 100644
--- a/data/interfaces/default/js/tables/media_info_table.js
+++ b/data/interfaces/default/js/tables/media_info_table.js
@@ -79,31 +79,31 @@ media_info_table_options = {
if (rowData['year']) { parent_info = ' (' + rowData['year'] + ')'; }
media_type = '';
thumb_popover = '' + rowData['title'] + parent_info + '';
- $(td).html('');
+ $(td).html('');
} else if (rowData['media_type'] === 'show') {
media_type = '';
thumb_popover = '' + rowData['title'] + '';
- $(td).html('');
+ $(td).html('');
} else if (rowData['media_type'] === 'season') {
media_type = '';
thumb_popover = '' + rowData['title'] + '';
- $(td).html('');
+ $(td).html('');
} else if (rowData['media_type'] === 'episode') {
media_type = '';
thumb_popover = 'E' + rowData['media_index'] + ' - ' + rowData['title'] + '';
- $(td).html('');
+ $(td).html('');
} else if (rowData['media_type'] === 'artist') {
media_type = '';
thumb_popover = '' + rowData['title'] + '';
- $(td).html('');
+ $(td).html('');
} else if (rowData['media_type'] === 'album') {
media_type = '';
thumb_popover = '' + rowData['title'] + '';
- $(td).html('');
+ $(td).html('');
} else if (rowData['media_type'] === 'track') {
media_type = '';
thumb_popover = 'T' + rowData['media_index'] + ' - ' + rowData['title'] + '';
- $(td).html('');
+ $(td).html('');
} else if (rowData['media_type'] === 'photo_album') {
media_type = '';
thumb_popover = '' + rowData['title'] + '';
diff --git a/data/interfaces/default/js/tables/sync_table.js b/data/interfaces/default/js/tables/sync_table.js
index 8ca4d517..0a004a5b 100644
--- a/data/interfaces/default/js/tables/sync_table.js
+++ b/data/interfaces/default/js/tables/sync_table.js
@@ -51,9 +51,9 @@ sync_table_options = {
"createdCell": function (td, cellData, rowData, row, col) {
if (cellData !== '') {
if (rowData['user_id']) {
- $(td).html('' + cellData + '');
+ $(td).html('' + cellData + '');
+ $(td).html('' + cellData + '');
}
} else {
$(td).html(cellData);
@@ -67,7 +67,7 @@ sync_table_options = {
"createdCell": function (td, cellData, rowData, row, col) {
if (cellData !== '') {
if (rowData['rating_key']) {
- $(td).html('' + cellData + '');
+ $(td).html('' + cellData + '');
} else {
$(td).html(cellData);
}
diff --git a/data/interfaces/default/js/tables/user_ips.js b/data/interfaces/default/js/tables/user_ips.js
index 71a10382..e73c7635 100644
--- a/data/interfaces/default/js/tables/user_ips.js
+++ b/data/interfaces/default/js/tables/user_ips.js
@@ -109,7 +109,7 @@ user_ip_table_options = {
thumb_popover = '' + cellData + parent_info + '';
$(td).html('');
} else if (rowData['media_type']) {
- $(td).html('' + cellData + '');
+ $(td).html('' + cellData + '');
}
} else {
$(td).html('n/a');
diff --git a/data/interfaces/default/js/tables/users.js b/data/interfaces/default/js/tables/users.js
index bde178d5..fdbc0449 100644
--- a/data/interfaces/default/js/tables/users.js
+++ b/data/interfaces/default/js/tables/users.js
@@ -60,9 +60,9 @@ users_list_table_options = {
"data": "user_thumb",
"createdCell": function (td, cellData, rowData, row, col) {
if (cellData === '') {
- $(td).html('');
+ $(td).html('');
} else {
- $(td).html('');
+ $(td).html('');
}
},
"orderable": false,
@@ -76,7 +76,7 @@ users_list_table_options = {
"createdCell": function (td, cellData, rowData, row, col) {
if (cellData !== null && cellData !== '') {
$(td).html('');
} else {
@@ -184,7 +184,7 @@ users_list_table_options = {
thumb_popover = '' + cellData + parent_info + '';
$(td).html('');
} else if (rowData['media_type']) {
- $(td).html('' + cellData + '');
+ $(td).html('' + cellData + '');
}
} else {
$(td).html('n/a');
diff --git a/data/interfaces/default/library_stats.html b/data/interfaces/default/library_stats.html
index e0521450..c70b39ec 100644
--- a/data/interfaces/default/library_stats.html
+++ b/data/interfaces/default/library_stats.html
@@ -51,7 +51,7 @@ DOCUMENTATION :: END
-
${loop.index + 1}
diff --git a/data/interfaces/default/library_user_stats.html b/data/interfaces/default/library_user_stats.html
index 6120b5c3..cd6ccc7e 100644
--- a/data/interfaces/default/library_user_stats.html
+++ b/data/interfaces/default/library_user_stats.html
@@ -19,16 +19,17 @@ DOCUMENTATION :: END
%doc>
% if data:
+<% from plexpy.helpers import page %>
% for a in data:
-
% if a['user_id']:
-
+
% else:
diff --git a/plexpy/helpers.py b/plexpy/helpers.py
index e960be7b..f1dc9d40 100644
--- a/plexpy/helpers.py
+++ b/plexpy/helpers.py
@@ -1263,7 +1263,9 @@ def mask_config_passwords(config):
def page(endpoint, *args, **kwargs):
endpoints = {
'pms_image_proxy': pms_image_proxy,
- 'info': info_page
+ 'info': info_page,
+ 'library': library_page,
+ 'user': user_page
}
params = {}
@@ -1317,3 +1319,23 @@ def info_page(rating_key=None, guid=None, history=None, live=None):
params['source'] = 'history'
return params
+
+
+def library_page(section_id=None):
+ params = {}
+
+ if section_id is not None:
+ params['section_id'] = section_id
+
+ return params
+
+
+def user_page(user_id=None, user=None):
+ params = {}
+
+ if user_id is not None:
+ params['user_id'] = user_id
+ if user is not None:
+ params['user'] = user
+
+ return params