mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-11 15:56:07 -07:00
fixed conflicts
This commit is contained in:
commit
f2b9984cd6
7 changed files with 651 additions and 477 deletions
|
@ -1,7 +1,8 @@
|
||||||
body {
|
body {
|
||||||
font-family: 'Open Sans', sans-serif;
|
font-family: 'Open Sans', sans-serif;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
padding-top: 50px;
|
margin-top: 50px;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
color: #eee;
|
color: #eee;
|
||||||
|
@ -454,29 +455,10 @@ input[type="color"],
|
||||||
a .poster-face:hover,
|
a .poster-face:hover,
|
||||||
a .cover-face:hover,
|
a .cover-face:hover,
|
||||||
a .users-poster-face:hover {
|
a .users-poster-face:hover {
|
||||||
-webkit-box-shadow: inset 0 0 0 2px #e9a049;
|
webkit-box-shadow: inset 0 0 0 2px #e9a049;
|
||||||
-moz-box-shadow: inset 0 0 0 2px #e9a049;
|
-moz-box-shadow: inset 0 0 0 2px #e9a049;
|
||||||
box-shadow: inset 0 0 0 2px #e9a049;
|
box-shadow: inset 0 0 0 2px #e9a049;
|
||||||
}
|
}
|
||||||
.users-poster-face img {
|
|
||||||
bottom: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
float: left;
|
|
||||||
background-color: #323232;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
-webkit-border-radius: 1000px;
|
|
||||||
-moz-border-radius: 1000px;
|
|
||||||
border-radius: 1000px;
|
|
||||||
-webkit-box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.1);
|
|
||||||
box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.1);
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
}
|
|
||||||
.users-poster-face img:hover{
|
|
||||||
-webkit-box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 2px #F9AA03;
|
|
||||||
box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 2px #F9AA03;
|
|
||||||
}
|
|
||||||
.users-name {
|
.users-name {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
@ -521,6 +503,8 @@ a .users-poster-face:hover {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.dashboard-activity-cover-face-bg {
|
.dashboard-activity-cover-face-bg {
|
||||||
|
}
|
||||||
|
.dashboard-activity-poster-music-bg {
|
||||||
background-position: center;
|
background-position: center;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
|
@ -744,7 +728,7 @@ a .users-poster-face:hover {
|
||||||
min-height: 340px;
|
min-height: 340px;
|
||||||
}
|
}
|
||||||
.dashboard-recent-media-metacontainer {
|
.dashboard-recent-media-metacontainer {
|
||||||
width: 153px;
|
width: 150px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
clear: both;
|
clear: both;
|
||||||
|
@ -759,7 +743,7 @@ a .users-poster-face:hover {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
line-height: 15px;
|
line-height: 15px;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
width: 153px;
|
width: 150px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
clear: both;
|
clear: both;
|
||||||
|
@ -774,184 +758,75 @@ a .users-poster-face:hover {
|
||||||
}
|
}
|
||||||
.art-face {
|
.art-face {
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: 50% 0%;
|
background-position: center center;
|
||||||
background-size: 100%;
|
background-attachment: scroll;
|
||||||
height: 540px;
|
background-size: cover;
|
||||||
overflow: hidden;
|
opacity: 0;
|
||||||
min-width: 280px;
|
position: absolute;
|
||||||
position: relative;
|
top: 0;
|
||||||
-webkit-border-radius: 2px;
|
bottom: 0;
|
||||||
-moz-border-radius: 2px;
|
width: 100%;
|
||||||
border-radius: 2px;
|
|
||||||
-webkit-box-shadow: 0 0 0px rgba(0,0,0,0.75);
|
|
||||||
-moz-box-shadow: 0 0 0px rgba(0,0,0,0.75);
|
|
||||||
box-shadow: 0 0 0px rgba(0,0,0,0.75);
|
|
||||||
-webkit-transform: translateZ(0);
|
|
||||||
-moz-transform: translateZ(0);
|
|
||||||
-ms-transform: translateZ(0);
|
|
||||||
-o-transform: translateZ(0);
|
|
||||||
transform: translateZ(0);
|
|
||||||
-webkit-transform-style: preserve-3d;
|
|
||||||
-moz-transform-style: preserve-3d;
|
|
||||||
-ms-transform-style: preserve-3d;
|
|
||||||
-o-transform-style: preserve-3d;
|
|
||||||
transform-style: preserve-3d;
|
|
||||||
-webkit-perspective: 1000;
|
|
||||||
-moz-perspective: 1000;
|
|
||||||
-ms-perspective: 1000;
|
|
||||||
-o-perspective: 1000;
|
|
||||||
perspective: 1000;
|
|
||||||
-webkit-backface-visibility: hidden;
|
|
||||||
-moz-backface-visibility: hidden;
|
|
||||||
-ms-backface-visibility: hidden;
|
|
||||||
-o-backface-visibility: hidden;
|
|
||||||
backface-visibility: hidden;
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
.art-face img {
|
|
||||||
-webkit-border-radius: 2px;
|
|
||||||
-moz-border-radius: 2px;
|
|
||||||
border-radius: 2px;
|
|
||||||
border-color: #1d1d1d;
|
|
||||||
-webkit-border-radius: 2px;
|
|
||||||
-moz-border-radius: 2px;
|
|
||||||
border-radius: 2px;
|
|
||||||
-webkit-box-shadow: 0 0 10px rgba(0,0,0,0.75);
|
|
||||||
-moz-box-shadow: 0 0 10px rgba(0,0,0,0.75);
|
|
||||||
box-shadow: 0 0 10px rgba(0,0,0,0.75);
|
|
||||||
-webkit-transform: translateZ(0);
|
|
||||||
-moz-transform: translateZ(0);
|
|
||||||
-ms-transform: translateZ(0);
|
|
||||||
-o-transform: translateZ(0);
|
|
||||||
transform: translateZ(0);
|
|
||||||
-webkit-transform-style: preserve-3d;
|
|
||||||
-moz-transform-style: preserve-3d;
|
|
||||||
-ms-transform-style: preserve-3d;
|
|
||||||
-o-transform-style: preserve-3d;
|
|
||||||
transform-style: preserve-3d;
|
|
||||||
-webkit-perspective: 1000;
|
|
||||||
-moz-perspective: 1000;
|
|
||||||
-ms-perspective: 1000;
|
|
||||||
-o-perspective: 1000;
|
|
||||||
perspective: 1000;
|
|
||||||
-webkit-backface-visibility: hidden;
|
|
||||||
-moz-backface-visibility: hidden;
|
|
||||||
-ms-backface-visibility: hidden;
|
|
||||||
-o-backface-visibility: hidden;
|
|
||||||
backface-visibility: hidden;
|
|
||||||
}
|
}
|
||||||
.art-music-face {
|
.art-music-face {
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: 50% 50%;
|
background-position: center;
|
||||||
background-size: 100%;
|
background-size: cover;
|
||||||
width: 250px;
|
width: 250px;
|
||||||
height: 141px;
|
|
||||||
overflow: hidden;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
-webkit-border-radius: 2px;
|
top: 0;
|
||||||
-moz-border-radius: 2px;
|
bottom: 0;
|
||||||
border-radius: 2px;
|
|
||||||
-webkit-box-shadow: 0 0 0px rgba(0,0,0,0.75);
|
|
||||||
-moz-box-shadow: 0 0 0px rgba(0,0,0,0.75);
|
|
||||||
box-shadow: 0 0 0px rgba(0,0,0,0.75);
|
|
||||||
-webkit-transform: translateZ(0);
|
|
||||||
-moz-transform: translateZ(0);
|
|
||||||
-ms-transform: translateZ(0);
|
|
||||||
-o-transform: translateZ(0);
|
|
||||||
transform: translateZ(0);
|
|
||||||
-webkit-transform-style: preserve-3d;
|
|
||||||
-moz-transform-style: preserve-3d;
|
|
||||||
-ms-transform-style: preserve-3d;
|
|
||||||
-o-transform-style: preserve-3d;
|
|
||||||
transform-style: preserve-3d;
|
|
||||||
-webkit-perspective: 1000;
|
|
||||||
-moz-perspective: 1000;
|
|
||||||
-ms-perspective: 1000;
|
|
||||||
-o-perspective: 1000;
|
|
||||||
perspective: 1000;
|
|
||||||
-webkit-backface-visibility: hidden;
|
|
||||||
-moz-backface-visibility: hidden;
|
|
||||||
-ms-backface-visibility: hidden;
|
|
||||||
-o-backface-visibility: hidden;
|
|
||||||
backface-visibility: hidden;
|
|
||||||
clear: both;
|
|
||||||
}
|
}
|
||||||
.summary-wrapper {
|
.summary-container {
|
||||||
height: auto;
|
|
||||||
width: 100%;
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
overflow-x: hidden;
|
||||||
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
.summary-overlay {
|
.summary-container .table-card-header,
|
||||||
background-color: rgba(0,0,0,0.85);
|
.summary-container .table-card-back {
|
||||||
color: #fff;
|
opacity: 0.90;
|
||||||
font-size: 14px;
|
|
||||||
height: auto;
|
|
||||||
position: relative;
|
|
||||||
top: 0px;
|
|
||||||
border-color: #1d1d1d;
|
|
||||||
border: 2px solid #191919;
|
|
||||||
}
|
}
|
||||||
.summary-content-wrapper {
|
.summary-navbar {
|
||||||
margin-left: auto;
|
background-color: rgba(255,255,255,.03);
|
||||||
margin-right: auto;
|
height: 50px;
|
||||||
width: 960px;
|
line-height: 50px;
|
||||||
}
|
max-height: 50px;
|
||||||
.summary-content-poster {
|
|
||||||
position: relative;
|
|
||||||
top: -10px;
|
|
||||||
float: left;
|
|
||||||
margin-left: 25px;
|
|
||||||
width: 150px;
|
|
||||||
height: 225px;
|
|
||||||
}
|
|
||||||
.summary-content-poster img {
|
|
||||||
bottom: 0;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
-webkit-border-radius: 3px;
|
|
||||||
-moz-border-radius: 3px;
|
|
||||||
border-radius: 3px;
|
|
||||||
-webkit-box-shadow: 0 0 10px rgba(0,0,0,0.75);
|
|
||||||
-moz-box-shadow: 0 0 10px rgba(0,0,0,0.75);
|
|
||||||
box-shadow: 0 0 10px rgba(0,0,0,0.75);
|
|
||||||
-webkit-transform: translateZ(0);
|
|
||||||
-moz-transform: translateZ(0);
|
|
||||||
-ms-transform: translateZ(0);
|
|
||||||
-o-transform: translateZ(0);
|
|
||||||
transform: translateZ(0);
|
|
||||||
-webkit-transform-style: preserve-3d;
|
|
||||||
-moz-transform-style: preserve-3d;
|
|
||||||
-ms-transform-style: preserve-3d;
|
|
||||||
-o-transform-style: preserve-3d;
|
|
||||||
transform-style: preserve-3d;
|
|
||||||
-webkit-perspective: 1000;
|
|
||||||
-moz-perspective: 1000;
|
|
||||||
-ms-perspective: 1000;
|
|
||||||
-o-perspective: 1000;
|
|
||||||
perspective: 1000;
|
|
||||||
-webkit-backface-visibility: hidden;
|
|
||||||
-moz-backface-visibility: hidden;
|
|
||||||
-ms-backface-visibility: hidden;
|
|
||||||
-o-backface-visibility: hidden;
|
|
||||||
backface-visibility: hidden;
|
|
||||||
}
|
}
|
||||||
.summary-content {
|
.summary-navbar-list {
|
||||||
position: relative;
|
padding: 0 25px;
|
||||||
top: 0px;
|
|
||||||
left: 20px;
|
|
||||||
color: #999;
|
color: #999;
|
||||||
height: auto;
|
}
|
||||||
overflow: hidden;
|
.summary-navbar-list span {
|
||||||
|
float: left;
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
margin-bottom: 20px;
|
}
|
||||||
|
.summary-navbar-list span a {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
.summary-navbar-list span a:hover {
|
||||||
|
color: #F9AA03;
|
||||||
|
}
|
||||||
|
.summary-content-title-wrapper {
|
||||||
|
height: 150px;
|
||||||
|
padding-top: 50px;
|
||||||
|
}
|
||||||
|
.summary-content-title {
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
max-height: 100px;
|
||||||
}
|
}
|
||||||
.summary-content-title h1 {
|
.summary-content-title h1 {
|
||||||
margin-top: 15px;
|
margin-top: 0;
|
||||||
margin-bottom: 15px;
|
margin-bottom: 10px;
|
||||||
color: #F9AA03;
|
color: #F9AA03;
|
||||||
font-size: 24px;
|
font-size: 28px;
|
||||||
line-height: 32px;
|
line-height: 40px;
|
||||||
float: left;
|
float: left;
|
||||||
|
clear: left;
|
||||||
}
|
}
|
||||||
.summary-content-title h1 a {
|
.summary-content-title h1 a {
|
||||||
color: #F9AA03;
|
color: #F9AA03;
|
||||||
|
@ -960,58 +835,135 @@ a .users-poster-face:hover {
|
||||||
color: #F9AA03;
|
color: #F9AA03;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
.summary-content-title h2 {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 28px;
|
||||||
|
line-height: 40px;
|
||||||
|
float: left;
|
||||||
|
clear: left;
|
||||||
|
}
|
||||||
|
.summary-content-title h3 {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
color: #999;
|
||||||
|
font-size: 28px;
|
||||||
|
line-height: 40px;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.summary-content-title h3 a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.summary-content-title h3 a {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
.summary-content-wrapper {
|
||||||
|
background-image: linear-gradient(rgba(0,0,0,.4),rgba(19,19,19,.4) 50%,rgba(26,26,26,.4));
|
||||||
|
background-clip: content-box;
|
||||||
|
min-height: calc(100% - 200px);
|
||||||
|
position: inherit;
|
||||||
|
}
|
||||||
|
.summary-content-poster {
|
||||||
|
float: left;
|
||||||
|
width: 250px;
|
||||||
|
margin: 0 40px 0 25px;
|
||||||
|
height: 100px;
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
.summary-poster-face {
|
||||||
|
background-position: center;
|
||||||
|
background-size: cover;
|
||||||
|
height: 375px;
|
||||||
|
width: 250px;
|
||||||
|
position: relative;
|
||||||
|
webkit-box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.1);
|
||||||
|
-moz-box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.1);
|
||||||
|
box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.1);
|
||||||
|
overflow: hidden;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.summary-poster-face-episode {
|
||||||
|
background-position: center;
|
||||||
|
background-size: cover;
|
||||||
|
height: 140px;
|
||||||
|
width: 250px;
|
||||||
|
position: relative;
|
||||||
|
webkit-box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.1);
|
||||||
|
-moz-box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.1);
|
||||||
|
box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.1);
|
||||||
|
overflow: hidden;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
a .summary-poster-face:hover,
|
||||||
|
a .summary-poster-face-episode:hover {
|
||||||
|
webkit-box-shadow: inset 0 0 0 2px #e9a049;
|
||||||
|
-moz-box-shadow: inset 0 0 0 2px #e9a049;
|
||||||
|
box-shadow: inset 0 0 0 2px #e9a049;
|
||||||
|
}
|
||||||
|
.summary-content-padding {
|
||||||
|
float: left;
|
||||||
|
width: 250px;
|
||||||
|
height: 1px;
|
||||||
|
margin: 0 40px 20px 25px;
|
||||||
|
}
|
||||||
|
.summary-content {
|
||||||
|
position: relative;
|
||||||
|
color: #999;
|
||||||
|
overflow: hidden;
|
||||||
|
padding-right: 10px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
.summary-content-details-wrapper {
|
.summary-content-details-wrapper {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding-bottom: 15px;
|
padding: 10px 0 15px 0;
|
||||||
margin-top: -10px;
|
|
||||||
clear: both;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -15px;
|
float: left;
|
||||||
}
|
}
|
||||||
.summary-content-director {
|
.summary-content-director {
|
||||||
float: left;
|
float: left;
|
||||||
margin-right: 10px;
|
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
}
|
}
|
||||||
.summary-content-director strong {
|
.summary-content-director strong {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
.summary-content-studio {
|
.summary-content-studio {
|
||||||
float: left;
|
float: left;
|
||||||
margin-right: 10px;
|
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
}
|
}
|
||||||
.summary-content-studio strong {
|
.summary-content-studio strong {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
.summary-content-airdate {
|
.summary-content-airdate {
|
||||||
float: left;
|
float: left;
|
||||||
margin-right: 10px;
|
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
}
|
}
|
||||||
.summary-content-airdate strong {
|
.summary-content-airdate strong {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
.summary-content-duration {
|
.summary-content-duration {
|
||||||
float: left;
|
float: left;
|
||||||
margin-right: 10px;
|
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
}
|
}
|
||||||
.summary-content-duration strong {
|
.summary-content-duration strong {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
.summary-content-content-rating {
|
.summary-content-content-rating {
|
||||||
float: left;
|
float: left;
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
margin-right: 10px;
|
|
||||||
}
|
}
|
||||||
.summary-content-content-rating strong {
|
.summary-content-content-rating strong {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
.summary-content-summary {
|
.summary-content-summary {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
@ -1019,14 +971,12 @@ a .users-poster-face:hover {
|
||||||
float: left;
|
float: left;
|
||||||
position: relative;
|
position: relative;
|
||||||
clear: both;
|
clear: both;
|
||||||
padding-right: 10px;
|
|
||||||
height: auto;
|
height: auto;
|
||||||
max-height: 160px;
|
max-height: 160px;
|
||||||
padding-bottom: 0px;
|
padding-bottom: 0px;
|
||||||
}
|
}
|
||||||
.summary-content-people-wrapper {
|
.summary-content-people-wrapper {
|
||||||
margin-top: 25px;
|
margin-right: 20px;
|
||||||
margin-right: 25px;
|
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
.summary-content-people-wrapper hidden-phone hidden-tablet {
|
.summary-content-people-wrapper hidden-phone hidden-tablet {
|
||||||
|
@ -1035,9 +985,7 @@ a .users-poster-face:hover {
|
||||||
min-height: 0px;
|
min-height: 0px;
|
||||||
}
|
}
|
||||||
.summary-content-actors {
|
.summary-content-actors {
|
||||||
margin-top: 0px;
|
margin-top: 13px;
|
||||||
margin-left: 0px;
|
|
||||||
margin-right: 15px;
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
line-height: 18px;
|
line-height: 18px;
|
||||||
color: #999;
|
color: #999;
|
||||||
|
@ -1045,6 +993,7 @@ a .users-poster-face:hover {
|
||||||
}
|
}
|
||||||
.summary-content-actors ul {
|
.summary-content-actors ul {
|
||||||
padding-left:20px;
|
padding-left:20px;
|
||||||
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
.summary-content-actors li {
|
.summary-content-actors li {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
|
@ -1055,9 +1004,7 @@ a .users-poster-face:hover {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
.summary-content-genres {
|
.summary-content-genres {
|
||||||
margin-top: 0px;
|
margin-top: 13px;
|
||||||
margin-left: 0px;
|
|
||||||
margin-right: 15px;
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
line-height: 18px;
|
line-height: 18px;
|
||||||
color: #999;
|
color: #999;
|
||||||
|
@ -1065,6 +1012,7 @@ a .users-poster-face:hover {
|
||||||
}
|
}
|
||||||
.summary-content-genres ul {
|
.summary-content-genres ul {
|
||||||
padding-left:20px;
|
padding-left:20px;
|
||||||
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
.summary-content-genres li {
|
.summary-content-genres li {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
|
@ -1075,9 +1023,7 @@ a .users-poster-face:hover {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
.summary-content-writers {
|
.summary-content-writers {
|
||||||
margin-top: 0px;
|
margin-top: 13px;
|
||||||
margin-left: 0px;
|
|
||||||
margin-right: 15px;
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
line-height: 18px;
|
line-height: 18px;
|
||||||
color: #999;
|
color: #999;
|
||||||
|
@ -1085,6 +1031,7 @@ a .users-poster-face:hover {
|
||||||
}
|
}
|
||||||
.summary-content-writers ul {
|
.summary-content-writers ul {
|
||||||
padding-left: 20px;
|
padding-left: 20px;
|
||||||
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
.summary-content-writers li {
|
.summary-content-writers li {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
|
@ -1097,7 +1044,6 @@ a .users-poster-face:hover {
|
||||||
.rateit {
|
.rateit {
|
||||||
display: -moz-inline-box;
|
display: -moz-inline-box;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
position: relative;
|
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
-khtml-user-select: none;
|
-khtml-user-select: none;
|
||||||
-moz-user-select: none;
|
-moz-user-select: none;
|
||||||
|
@ -1105,30 +1051,118 @@ a .users-poster-face:hover {
|
||||||
-ms-user-select: none;
|
-ms-user-select: none;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
-webkit-touch-callout: none;
|
-webkit-touch-callout: none;
|
||||||
float: right;
|
|
||||||
margin-top: 23px;
|
|
||||||
margin-right: 20px;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
float: right;
|
||||||
|
margin-top: 3px;
|
||||||
|
height: 21px;
|
||||||
}
|
}
|
||||||
.rateit .rateit-range {
|
.rateit .rateit-range {
|
||||||
background: url(../images/star-gray-16.png);
|
background: url(../images/star-gray-32.png);
|
||||||
|
background-size: contain;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
}
|
}
|
||||||
.rateit .rateit-selected {
|
.rateit .rateit-selected {
|
||||||
background: url(../images/star-16.png);
|
background: url(../images/star-32.png);
|
||||||
|
background-size: contain;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
.show-seasons-wrapper {
|
||||||
|
}
|
||||||
|
.show-seasons-instance {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.show-seasons-instance li {
|
||||||
|
float: left;
|
||||||
|
position: relative;
|
||||||
|
left: 0px;
|
||||||
|
margin-right: 25px;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
}
|
||||||
|
a .show-seasons-card-overlay:hover {
|
||||||
|
webkit-box-shadow: inset 0 0 0 2px #e9a049;
|
||||||
|
-moz-box-shadow: inset 0 0 0 2px #e9a049;
|
||||||
|
box-shadow: inset 0 0 0 2px #e9a049;
|
||||||
|
}
|
||||||
|
.show-seasons-poster {
|
||||||
|
float: left;
|
||||||
|
position: relative;
|
||||||
|
left: 0px;
|
||||||
|
}
|
||||||
|
.show-seasons-card-overlay {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
text-align: left;
|
||||||
|
background: -moz-linear-gradient(top, rgba(0,0,0,0) 30%, rgba(0,0,0,1) 100%);
|
||||||
|
background: -webkit-gradient(linear, left top, left bottom, color-stop(30%,rgba(0,0,0,0)), color-stop(100%,rgba(0,0,0,1)));
|
||||||
|
background: -webkit-linear-gradient(top, rgba(0,0,0,0) 30%,rgba(0,0,0,1) 100%);
|
||||||
|
background: -o-linear-gradient(top, rgba(0,0,0,0) 30%,rgba(0,0,0,1) 100%);
|
||||||
|
background: -ms-linear-gradient(top, rgba(0,0,0,0) 30%,rgba(0,0,0,1) 100%);
|
||||||
|
background: linear-gradient(to bottom, rgba(0,0,0,0) 30%,rgba(0,0,0,1) 100%);
|
||||||
|
height: 225px;
|
||||||
|
}
|
||||||
|
.show-seasons-overlay-text {
|
||||||
|
color: #aaa;
|
||||||
|
font-size: 12px;
|
||||||
|
float: left;
|
||||||
|
position: absolute;
|
||||||
|
left: 8px;
|
||||||
|
bottom: 5px;
|
||||||
|
}
|
||||||
|
.show-seasons-instance-text-wrapper {
|
||||||
|
width: 150px;
|
||||||
|
font-size: 13px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.show-seasons-instance-text-wrapper h3 {
|
||||||
|
padding: 5px 3px 0 3px;
|
||||||
|
color: #fff;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
font-size: 13px;
|
||||||
|
margin: 0;
|
||||||
|
line-height: 15px;
|
||||||
|
font-weight: normal;
|
||||||
|
width: 250px;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: left;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.show-seasons-title a {
|
||||||
|
text-decoration: none;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #fff;
|
||||||
|
float: left;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
white-space: nowrap;
|
||||||
|
width: 205px;
|
||||||
|
margin-top: 2px;
|
||||||
|
margin-left: 0px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.show-seasons a:hover {
|
||||||
|
color: #F9AA03;
|
||||||
}
|
}
|
||||||
.season-episodes-wrapper {
|
.season-episodes-wrapper {
|
||||||
}
|
}
|
||||||
.season-episodes-instance {
|
.season-episodes-instance {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
margin: 0 0 0px 0px;
|
margin: 0;
|
||||||
}
|
}
|
||||||
.season-episodes-instance li {
|
.season-episodes-instance li {
|
||||||
float: left;
|
float: left;
|
||||||
position: relative;
|
position: relative;
|
||||||
left: 0px;
|
left: 0px;
|
||||||
margin-right: 25px;
|
margin-right: 25px;
|
||||||
|
margin-bottom: 25px;
|
||||||
}
|
}
|
||||||
a .season-episodes-card-overlay:hover {
|
a .season-episodes-card-overlay:hover {
|
||||||
-webkit-box-shadow: inset 0 0 0 2px #e9a049;
|
-webkit-box-shadow: inset 0 0 0 2px #e9a049;
|
||||||
|
@ -1180,11 +1214,13 @@ a .season-episodes-card-overlay:hover {
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
text-shadow: 0 1px 5px rgba(0,0,0,0.2);
|
text-shadow: 0 1px 5px rgba(0,0,0,0.2);
|
||||||
}
|
}
|
||||||
.season-episodes-instance-text-wrapper {
|
.season-episodes-overlay-text {
|
||||||
width: 250px;
|
color: #aaa;
|
||||||
font-size: 13px;
|
font-size: 12px;
|
||||||
margin-bottom: 20px;
|
float: left;
|
||||||
clear: both;
|
position: absolute;
|
||||||
|
left: 8px;
|
||||||
|
bottom: 5px;
|
||||||
}
|
}
|
||||||
.season-episodes-instance-text-wrapper h3 {
|
.season-episodes-instance-text-wrapper h3 {
|
||||||
padding: 5px 3px 0 3px;
|
padding: 5px 3px 0 3px;
|
||||||
|
@ -1272,20 +1308,6 @@ a .season-episodes-card-overlay:hover {
|
||||||
-moz-box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.1);
|
-moz-box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.1);
|
||||||
box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.1);
|
box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.1);
|
||||||
}
|
}
|
||||||
.user-info-poster-face img {
|
|
||||||
bottom: 0;
|
|
||||||
margin-right: 15px;
|
|
||||||
overflow: hidden;
|
|
||||||
float: left;
|
|
||||||
background-color: #323232;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
-webkit-border-radius: 1000px;
|
|
||||||
-moz-border-radius: 1000px;
|
|
||||||
border-radius: 1000px;
|
|
||||||
-webkit-box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.1);
|
|
||||||
box-shadow: 0 0 4px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.1);
|
|
||||||
}
|
|
||||||
.user-info-username {
|
.user-info-username {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
|
|
@ -47,47 +47,75 @@ DOCUMENTATION :: END
|
||||||
% if data:
|
% if data:
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div>
|
<div class="art-face" style="background-image:url(pms_image_proxy?img=${data['art']}&width=1920&height=1080)"></div>
|
||||||
<div class="art-face" style="background-image:url(pms_image_proxy?img=${data['art']}&width=1920&height=1080)">
|
<div class="summary-container">
|
||||||
<div class="summary-wrapper">
|
<div class="summary-navbar">
|
||||||
<div class="summary-overlay">
|
<div class="col-md-12">
|
||||||
<div class="row">
|
<div class="summary-navbar-list">
|
||||||
|
% if data['type'] == 'movie':
|
||||||
|
<span>Movies</span>
|
||||||
|
<span><i class="fa fa-chevron-right"></i></span>
|
||||||
|
<span><a href="#">${data['title']}</a></span>
|
||||||
|
% elif data['type'] == 'show':
|
||||||
|
<span>TV Shows</span>
|
||||||
|
<span><i class="fa fa-chevron-right"></i></span>
|
||||||
|
<span><a href="#">${data['title']}</a></span>
|
||||||
|
% elif data['type'] == 'season':
|
||||||
|
<span>TV Shows</span>
|
||||||
|
<span><i class="fa fa-chevron-right"></i></span>
|
||||||
|
<span><a href="info?item_id=${data['parent_rating_key']}">${data['parent_title']}</a></span>
|
||||||
|
<span><i class="fa fa-chevron-right"></i></span>
|
||||||
|
<span><a href="#">Season ${data['index']}</a></span>
|
||||||
|
% elif data['type'] == 'episode':
|
||||||
|
<span>TV Shows</span>
|
||||||
|
<span><i class="fa fa-chevron-right"></i></span>
|
||||||
|
<span><a href="info?item_id=${data['grandparent_rating_key']}">${data['grandparent_title']}</a></span>
|
||||||
|
<span><i class="fa fa-chevron-right"></i></span>
|
||||||
|
<span><a href="info?item_id=${data['parent_rating_key']}">Season ${data['parent_index']}</a></span>
|
||||||
|
<span><i class="fa fa-chevron-right"></i></span>
|
||||||
|
<span><a href="#">${data['title']}</a></span>
|
||||||
|
% endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="summary-content-title-wrapper">
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
<div class="summary-content-poster hidden-xs hidden-sm">
|
<div class="summary-content-poster hidden-xs hidden-sm">
|
||||||
% if data['type'] == 'episode':
|
% if data['type'] == 'episode':
|
||||||
<a href="info?item_id=${data['parent_rating_key']}">
|
<div class="summary-poster-face-episode" style="background-image: url(pms_image_proxy?img=${data['thumb']}&width=500&height=280&fallback=poster);"></div>
|
||||||
% if data['parent_thumb']:
|
|
||||||
<div class="poster-face" style="background-image: url(pms_image_proxy?img=${data['parent_thumb']}&width=300&height=450&fallback=poster);"></div>
|
|
||||||
% else:
|
|
||||||
<div class="poster-face" style="background-image: url(pms_image_proxy?img=${data['grandparent_thumb']}&width=300&height=450&fallback=poster);"></div>
|
|
||||||
%endif
|
|
||||||
</a>
|
|
||||||
% elif data['type'] == 'season':
|
% elif data['type'] == 'season':
|
||||||
<a href="info?item_id=${data['parent_rating_key']}">
|
<div class="summary-poster-face" style="background-image: url(pms_image_proxy?img=${data['thumb']}&width=300&height=450&fallback=poster);"></div>
|
||||||
<div class="poster-face" style="background-image: url(pms_image_proxy?img=${data['thumb']}&width=300&height=450&fallback=poster);"></div>
|
|
||||||
</a>
|
|
||||||
% else:
|
% else:
|
||||||
<div class="poster-face" style="background-image: url(pms_image_proxy?img=${data['thumb']}&width=300&height=450&fallback=poster);"></div>
|
<div class="summary-poster-face" style="background-image: url(pms_image_proxy?img=${data['thumb']}&width=300&height=450&fallback=poster);"></div>
|
||||||
% endif
|
% endif
|
||||||
</div>
|
</div>
|
||||||
<div class="summary-content">
|
|
||||||
<div class="summary-content-title">
|
<div class="summary-content-title">
|
||||||
% if data['type'] == 'movie':
|
% if data['type'] == 'movie' or data['type'] == 'show':
|
||||||
<h1>${data['title']}</h1>
|
<h1> </h1><h1>${data['title']}</h1>
|
||||||
% elif data['type'] == 'season':
|
% elif data['type'] == 'season':
|
||||||
<h1><a href="info?item_id=${data['parent_rating_key']}">${data['parent_title']}</a> (${data['title']})</h1>
|
<h1> </h1><h1><a href="info?item_id=${data['parent_rating_key']}">${data['parent_title']}</a></h1>
|
||||||
|
<h3 class="hidden-xs">S${data['index']}</h3>
|
||||||
% elif data['type'] == 'episode':
|
% elif data['type'] == 'episode':
|
||||||
<h1><a href="info?item_id=${data['grandparent_rating_key']}">${data['grandparent_title']}</a> - ${data['title']}
|
<h1><a href="info?item_id=${data['grandparent_rating_key']}">${data['grandparent_title']}</a></h1>
|
||||||
(<a href="info?item_id=${data['parent_rating_key']}">Season ${data['parent_index']}</a>, Episode ${data['index']})</h1>
|
<h2>${data['title']}</h2>
|
||||||
% else:
|
<h3 class="hidden-xs">S${data['parent_index']} · E${data['index']}</h3>
|
||||||
<h1>${data['title']}</h1>
|
|
||||||
% endif
|
% endif
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="summary-content-wrapper">
|
||||||
|
<div class="col-md-9">
|
||||||
|
% if data['type'] == 'movie' or data['type'] == 'show' or data['type'] == 'season':
|
||||||
|
<div class="summary-content-padding hidden-xs hidden-sm" style="height: 275px;"></div>
|
||||||
|
% else:
|
||||||
|
<div class="summary-content-padding hidden-xs hidden-sm"></div>
|
||||||
|
% endif
|
||||||
|
<div class="summary-content">
|
||||||
|
<div class="summary-content-details-wrapper">
|
||||||
% if (data['type'] == 'movie' or data['type'] == 'show' or data['type'] == 'episode') and data['rating']:
|
% if (data['type'] == 'movie' or data['type'] == 'show' or data['type'] == 'episode') and data['rating']:
|
||||||
<div id="stars" class="rateit hidden-xs hidden-sm" data-rateit-value=""
|
<div id="stars" class="rateit hidden-xs hidden-sm" data-rateit-value=""
|
||||||
data-rateit-ispreset="true" data-rateit-readonly="true"></div>
|
data-rateit-ispreset="true" data-rateit-readonly="true"></div>
|
||||||
% endif
|
% endif
|
||||||
<div class="summary-content-details-wrapper">
|
|
||||||
<div class="summary-content-director">
|
<div class="summary-content-director">
|
||||||
% if (data['type'] == 'episode' or data['type'] == 'movie') and data['directors']:
|
% if (data['type'] == 'episode' or data['type'] == 'movie') and data['directors']:
|
||||||
Directed by <strong> ${data['directors'][0]}</strong>
|
Directed by <strong> ${data['directors'][0]}</strong>
|
||||||
|
@ -169,27 +197,37 @@ DOCUMENTATION :: END
|
||||||
% endif
|
% endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
% if data['type'] == 'show':
|
||||||
|
<div class='col-md-12'>
|
||||||
|
<div class='table-card-header'>
|
||||||
|
<div class="header-bar">
|
||||||
|
<span>Season List for <strong>${data['title']}</strong></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class='table-card-back'>
|
||||||
|
<div id="season-list"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
% elif data['type'] == 'season':
|
||||||
|
<div class='col-md-12'>
|
||||||
|
<div class='table-card-header'>
|
||||||
|
<div class="header-bar">
|
||||||
|
<span>Episode List for <strong>${data['title']}</strong></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class='table-card-back'>
|
||||||
|
<div id="episode-list"></div>
|
||||||
</div>
|
</div>
|
||||||
% if data['type'] == 'movie' or data['type'] == 'episode' or data['type'] == 'show':
|
</div>
|
||||||
<div class='container-fluid'>
|
% endif
|
||||||
<div class='row'>
|
% if data['type'] == 'movie' or data['type'] == 'episode' or data['type'] == 'show' or data['type'] == 'season':
|
||||||
<div class='col-md-12'>
|
<div class='col-md-12'>
|
||||||
<div class='table-card-header'>
|
<div class='table-card-header'>
|
||||||
<div class="header-bar">
|
<div class="header-bar">
|
||||||
<span>Watch History for <strong>${data['title']}</strong></span>
|
<span>Watch History for <strong>${data['title']}</strong></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="button-bar">
|
<div class="button-bar">
|
||||||
<span data-toggle="popover" data-placement="left" data-content="Select rows to delete. Data is deleted upon exiting delete mode." id="delete-message">
|
<button class="btn btn-danger" data-toggle="button" aria-pressed="false" autocomplete="off" id="row-edit-mode"><i class="fa fa-trash-o"></i> Delete mode</button> 
|
||||||
<button class="btn btn-danger" data-toggle="button" aria-pressed="false" autocomplete="off" id="row-edit-mode">
|
|
||||||
<i class="fa fa-trash-o"></i> Delete mode
|
|
||||||
</button> 
|
|
||||||
</span>
|
|
||||||
<div class="colvis-button-bar hidden-xs"></div>
|
<div class="colvis-button-bar hidden-xs"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -210,57 +248,27 @@ DOCUMENTATION :: END
|
||||||
<th align='left' id="percent_complete"></th>
|
<th align='left' id="percent_complete"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody></tbody>
|
||||||
</tbody>
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div id="info-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="info-modal">
|
<div id="info-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="info-modal">
|
||||||
</div>
|
</div>
|
||||||
<div class="modal fade" id="ip-info-modal" tabindex="-1" role="dialog" aria-labelledby="ip-info-modal">
|
<div class="modal fade" id="ip-info-modal" tabindex="-1" role="dialog" aria-labelledby="ip-info-modal">
|
||||||
</div>
|
</div>
|
||||||
<div class="modal fade" id="confirm-modal" tabindex="-1" role="dialog" aria-labelledby="confirm-modal">
|
|
||||||
<div class="modal-dialog">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="fa fa-remove"></i></button>
|
|
||||||
<h4 class="modal-title" id="myModalLabel">Confirm Delete</h4>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body" style="text-align: center;">
|
|
||||||
<p>Are you REALLY sure you want to delete <strong><span id="deleteCount"></span></strong> history item(s)?</p>
|
|
||||||
<p>This is permanent and cannot be undone!</p>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-dark" data-dismiss="modal">Cancel</button>
|
|
||||||
<button type="button" class="btn btn-danger btn-ok" data-dismiss="modal" id="confirm-delete">Delete</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
% elif data['type'] == 'season':
|
|
||||||
<div class='container-fluid'>
|
|
||||||
<div class='row'>
|
|
||||||
<div class='col-md-12'>
|
|
||||||
<div class='table-card-header'>
|
|
||||||
<div class="header-bar">
|
|
||||||
<span>Episode List for <strong>${data['title']}</strong></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class='table-card-back'>
|
|
||||||
<div id="episode-list"></div>
|
|
||||||
</div>
|
</div>
|
||||||
% endif
|
% endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
% else:
|
% else:
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<h3>Error retrieving item data. This media may not be available in the Plex Media Server database
|
<h3>
|
||||||
anymore.</h3>
|
Error retrieving item data. This media may not be available in the Plex Media Server database
|
||||||
|
anymore.
|
||||||
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -292,8 +300,7 @@ DOCUMENTATION :: END
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: function ( d ) {
|
data: function ( d ) {
|
||||||
return { 'json_data': JSON.stringify( d ),
|
return { 'json_data': JSON.stringify( d ),
|
||||||
'rating_key': ${data['rating_key']}
|
'rating_key': ${data['rating_key']} };
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
history_table = $('#history_table').DataTable(history_table_options);
|
history_table = $('#history_table').DataTable(history_table_options);
|
||||||
|
@ -303,36 +310,12 @@ DOCUMENTATION :: END
|
||||||
|
|
||||||
clearSearchButton('history_table', history_table);
|
clearSearchButton('history_table', history_table);
|
||||||
|
|
||||||
$('#row-edit-mode').on('click', function() {
|
$('#row-edit-mode').click(function() {
|
||||||
$('#delete-message').popover();
|
|
||||||
|
|
||||||
if ($(this).hasClass('active')) {
|
if ($(this).hasClass('active')) {
|
||||||
if (history_to_delete.length > 0) {
|
|
||||||
$('#deleteCount').text(history_to_delete.length);
|
|
||||||
$('#confirm-modal').modal();
|
|
||||||
$('#confirm-modal').one('click', '#confirm-delete', function () {
|
|
||||||
for (var i = 0; i < history_to_delete.length; i++) {
|
|
||||||
$.ajax({
|
|
||||||
url: 'delete_history_rows',
|
|
||||||
data: { row_id: history_to_delete[i] },
|
|
||||||
async: true,
|
|
||||||
success: function (data) {
|
|
||||||
var msg = "User history purged";
|
|
||||||
showMsg(msg, false, true, 2000);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
history_table.draw();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$('.delete-control').each(function() {
|
$('.delete-control').each(function() {
|
||||||
$(this).find('button.btn-danger').toggleClass('btn-warning').toggleClass('btn-danger');
|
|
||||||
$(this).addClass('hidden');
|
$(this).addClass('hidden');
|
||||||
});
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
history_to_delete = [];
|
|
||||||
$('.delete-control').each(function() {
|
$('.delete-control').each(function() {
|
||||||
$(this).removeClass('hidden');
|
$(this).removeClass('hidden');
|
||||||
});
|
});
|
||||||
|
@ -349,8 +332,7 @@ DOCUMENTATION :: END
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: function ( d ) {
|
data: function ( d ) {
|
||||||
return { 'json_data': JSON.stringify( d ),
|
return { 'json_data': JSON.stringify( d ),
|
||||||
'grandparent_rating_key': ${data['rating_key']}
|
'grandparent_rating_key': ${data['rating_key']} };
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
history_table = $('#history_table').DataTable(history_table_options);
|
history_table = $('#history_table').DataTable(history_table_options);
|
||||||
|
@ -371,19 +353,54 @@ DOCUMENTATION :: END
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
|
||||||
% endif
|
|
||||||
|
|
||||||
% if data['type'] == 'season':
|
|
||||||
<script>
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'get_children',
|
url: 'get_show_children',
|
||||||
type: "GET",
|
type: "GET",
|
||||||
async: true,
|
async: true,
|
||||||
data: { rating_key : ${data['rating_key']} },
|
data: { rating_key : ${data['rating_key']} },
|
||||||
complete: function(xhr, status) {
|
complete: function(xhr, status) {
|
||||||
$("#episode-list").html(xhr.responseText);
|
$("#season-list").html(xhr.responseText); }
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
% endif
|
||||||
|
% if data['type'] == 'season':
|
||||||
|
<script src="interfaces/default/js/tables/history_table.js"></script>
|
||||||
|
<script>
|
||||||
|
$(document).ready(function () {
|
||||||
|
history_table_options.ajax = {
|
||||||
|
"url": "get_history",
|
||||||
|
type: 'post',
|
||||||
|
data: function ( d ) {
|
||||||
|
return { 'json_data': JSON.stringify( d ),
|
||||||
|
'parent_rating_key': ${data['rating_key']} };
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
history_table = $('#history_table').DataTable(history_table_options);
|
||||||
|
var colvis = new $.fn.dataTable.ColVis(history_table, { buttonText: '<i class="fa fa-columns"></i> Select columns', buttonClass: 'btn btn-dark', exclude: [0, 10] });
|
||||||
|
$(colvis.button()).appendTo('div.colvis-button-bar');
|
||||||
|
|
||||||
|
clearSearchButton('history_table', history_table);
|
||||||
|
|
||||||
|
$('#row-edit-mode').click(function() {
|
||||||
|
if ($(this).hasClass('active')) {
|
||||||
|
$('.delete-control').each(function() {
|
||||||
|
$(this).addClass('hidden');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$('.delete-control').each(function() {
|
||||||
|
$(this).removeClass('hidden');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: 'get_season_children',
|
||||||
|
type: "GET",
|
||||||
|
async: true,
|
||||||
|
data: { rating_key : ${data['rating_key']} },
|
||||||
|
complete: function(xhr, status) {
|
||||||
|
$("#episode-list").html(xhr.responseText); }
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
% endif
|
% endif
|
||||||
|
@ -392,4 +409,7 @@ DOCUMENTATION :: END
|
||||||
$("#runtime").html(millisecondsToMinutes($("#runtime").text(), true));
|
$("#runtime").html(millisecondsToMinutes($("#runtime").text(), true));
|
||||||
</script>
|
</script>
|
||||||
% endif
|
% endif
|
||||||
|
<script>
|
||||||
|
$('div.art-face').animate({ opacity: 0.2 }, { duration: 1000 });
|
||||||
|
</script>
|
||||||
</%def>
|
</%def>
|
||||||
|
|
|
@ -34,7 +34,7 @@ DOCUMENTATION :: END
|
||||||
<div class="season-episodes-poster">
|
<div class="season-episodes-poster">
|
||||||
<div class="season-episodes-poster-face" style="background-image: url(pms_image_proxy?img=${a['thumb']}&width=500&height=280);">
|
<div class="season-episodes-poster-face" style="background-image: url(pms_image_proxy?img=${a['thumb']}&width=500&height=280);">
|
||||||
<div class="season-episodes-card-overlay">
|
<div class="season-episodes-card-overlay">
|
||||||
<div class="season-episodes-season">
|
<div class="season-episodes-overlay-text">
|
||||||
Episode ${a['index']}
|
Episode ${a['index']}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
55
data/interfaces/default/info_season_list.html
Normal file
55
data/interfaces/default/info_season_list.html
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
<%doc>
|
||||||
|
USAGE DOCUMENTATION :: PLEASE LEAVE THIS AT THE TOP OF THIS FILE
|
||||||
|
|
||||||
|
For Mako templating syntax documentation please visit: http://docs.makotemplates.org/en/latest/
|
||||||
|
|
||||||
|
Filename: info_season_list.html
|
||||||
|
Version: 0.1
|
||||||
|
Variable names: data [list]
|
||||||
|
|
||||||
|
data :: Usable parameters
|
||||||
|
|
||||||
|
== Global keys ==
|
||||||
|
season_count Returns the number of seasons in the array.
|
||||||
|
season_list Returns an array of seasons.
|
||||||
|
|
||||||
|
data['season_list'] :: Usable paramaters
|
||||||
|
|
||||||
|
== Global keys ==
|
||||||
|
rating_key Returns the unique identifier for the media item.
|
||||||
|
thumb Returns the location of the item's thumbnail. Use with pms_image_proxy.
|
||||||
|
title Returns the name of the season.
|
||||||
|
index Returns the season number.
|
||||||
|
|
||||||
|
DOCUMENTATION :: END
|
||||||
|
</%doc>
|
||||||
|
|
||||||
|
% if data != None:
|
||||||
|
% if data['season_count'] > 0:
|
||||||
|
<div class="show-seasons-wrapper">
|
||||||
|
<ul class="show-seasons-instance list-unstyled">
|
||||||
|
% for a in data['season_list']:
|
||||||
|
% if a['rating_key']:
|
||||||
|
<li>
|
||||||
|
<a href="info?item_id=${a['rating_key']}">
|
||||||
|
<div class="show-seasons-poster">
|
||||||
|
% if a['thumb']:
|
||||||
|
<div class="poster-face" style="background-image: url(pms_image_proxy?img=${a['thumb']}&width=300&height=450);">
|
||||||
|
% else:
|
||||||
|
<div class="poster-face" style="background-image: url(pms_image_proxy?img=${a['parent_thumb']}&width=300&height=450);">
|
||||||
|
% endif
|
||||||
|
<div class="show-seasons-card-overlay">
|
||||||
|
<div class="show-seasons-overlay-text">
|
||||||
|
Season ${a['index']}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
% endif
|
||||||
|
% endfor
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
% endif
|
||||||
|
% endif
|
|
@ -55,6 +55,7 @@ class DataFactory(object):
|
||||||
(CASE WHEN session_history_metadata.duration IS NULL THEN 1.0 ELSE \
|
(CASE WHEN session_history_metadata.duration IS NULL THEN 1.0 ELSE \
|
||||||
session_history_metadata.duration * 1.0 END) * 100) as percent_complete',
|
session_history_metadata.duration * 1.0 END) * 100) as percent_complete',
|
||||||
'session_history.grandparent_rating_key as grandparent_rating_key',
|
'session_history.grandparent_rating_key as grandparent_rating_key',
|
||||||
|
'session_history.parent_rating_key as parent_rating_key',
|
||||||
'session_history.rating_key as rating_key',
|
'session_history.rating_key as rating_key',
|
||||||
'session_history.user',
|
'session_history.user',
|
||||||
'session_history_metadata.media_type',
|
'session_history_metadata.media_type',
|
||||||
|
@ -112,6 +113,7 @@ class DataFactory(object):
|
||||||
"duration": item["duration"],
|
"duration": item["duration"],
|
||||||
"percent_complete": item["percent_complete"],
|
"percent_complete": item["percent_complete"],
|
||||||
"grandparent_rating_key": item["grandparent_rating_key"],
|
"grandparent_rating_key": item["grandparent_rating_key"],
|
||||||
|
"parent_rating_key": item["parent_rating_key"],
|
||||||
"rating_key": item["rating_key"],
|
"rating_key": item["rating_key"],
|
||||||
"user": item["user"],
|
"user": item["user"],
|
||||||
"media_type": item["media_type"],
|
"media_type": item["media_type"],
|
||||||
|
|
|
@ -89,6 +89,23 @@ class PmsConnect(object):
|
||||||
|
|
||||||
return request
|
return request
|
||||||
|
|
||||||
|
"""
|
||||||
|
Return list of seasons in requested show.
|
||||||
|
|
||||||
|
Parameters required: rating_key { ratingKey of parent }
|
||||||
|
Optional parameters: output_format { dict, json }
|
||||||
|
|
||||||
|
Output: array
|
||||||
|
"""
|
||||||
|
def get_season_list(self, rating_key='', output_format=''):
|
||||||
|
uri = '/library/metadata/' + rating_key + '/children'
|
||||||
|
request = self.request_handler.make_request(uri=uri,
|
||||||
|
proto=self.protocol,
|
||||||
|
request_type='GET',
|
||||||
|
output_format=output_format)
|
||||||
|
|
||||||
|
return request
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Return list of episodes in requested season.
|
Return list of episodes in requested season.
|
||||||
|
|
||||||
|
@ -798,6 +815,49 @@ class PmsConnect(object):
|
||||||
|
|
||||||
return session_output
|
return session_output
|
||||||
|
|
||||||
|
"""
|
||||||
|
Return processed and validated season list.
|
||||||
|
|
||||||
|
Output: array
|
||||||
|
"""
|
||||||
|
def get_show_children(self, rating_key=''):
|
||||||
|
season_data = self.get_season_list(rating_key, output_format='xml')
|
||||||
|
|
||||||
|
try:
|
||||||
|
xml_head = season_data.getElementsByTagName('MediaContainer')
|
||||||
|
except:
|
||||||
|
logger.warn("Unable to parse XML for get_season_list.")
|
||||||
|
return []
|
||||||
|
|
||||||
|
season_list = []
|
||||||
|
|
||||||
|
for a in xml_head:
|
||||||
|
if a.getAttribute('size'):
|
||||||
|
if a.getAttribute('size') == '0':
|
||||||
|
logger.debug(u"No season data.")
|
||||||
|
episode_list = {'season_count': '0',
|
||||||
|
'season_list': []
|
||||||
|
}
|
||||||
|
return season_list
|
||||||
|
|
||||||
|
if a.getElementsByTagName('Directory'):
|
||||||
|
result_data = a.getElementsByTagName('Directory')
|
||||||
|
for result in result_data:
|
||||||
|
season_output = {'rating_key': helpers.get_xml_attr(result, 'ratingKey'),
|
||||||
|
'index': helpers.get_xml_attr(result, 'index'),
|
||||||
|
'title': helpers.get_xml_attr(result, 'title'),
|
||||||
|
'thumb': helpers.get_xml_attr(result, 'thumb'),
|
||||||
|
'parent_thumb': helpers.get_xml_attr(a, 'thumb')
|
||||||
|
}
|
||||||
|
season_list.append(season_output)
|
||||||
|
|
||||||
|
output = {'season_count': helpers.get_xml_attr(xml_head[0], 'size'),
|
||||||
|
'title': helpers.get_xml_attr(xml_head[0], 'title2'),
|
||||||
|
'season_list': season_list
|
||||||
|
}
|
||||||
|
|
||||||
|
return output
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Return processed and validated episode list.
|
Return processed and validated episode list.
|
||||||
|
|
||||||
|
|
|
@ -569,6 +569,9 @@ class WebInterface(object):
|
||||||
if 'rating_key' in kwargs:
|
if 'rating_key' in kwargs:
|
||||||
rating_key = kwargs.get('rating_key', "")
|
rating_key = kwargs.get('rating_key', "")
|
||||||
custom_where = [['rating_key', rating_key]]
|
custom_where = [['rating_key', rating_key]]
|
||||||
|
if 'parent_rating_key' in kwargs:
|
||||||
|
rating_key = kwargs.get('parent_rating_key', "")
|
||||||
|
custom_where = [['parent_rating_key', rating_key]]
|
||||||
if 'grandparent_rating_key' in kwargs:
|
if 'grandparent_rating_key' in kwargs:
|
||||||
rating_key = kwargs.get('grandparent_rating_key', "")
|
rating_key = kwargs.get('grandparent_rating_key', "")
|
||||||
custom_where = [['grandparent_rating_key', rating_key]]
|
custom_where = [['grandparent_rating_key', rating_key]]
|
||||||
|
@ -806,7 +809,19 @@ class WebInterface(object):
|
||||||
return serve_template(templatename="user_platform_stats.html", data=None, title="Platform Stats")
|
return serve_template(templatename="user_platform_stats.html", data=None, title="Platform Stats")
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
def get_children(self, rating_key='', **kwargs):
|
def get_show_children(self, rating_key='', **kwargs):
|
||||||
|
|
||||||
|
pms_connect = pmsconnect.PmsConnect()
|
||||||
|
result = pms_connect.get_show_children(rating_key)
|
||||||
|
|
||||||
|
if result:
|
||||||
|
return serve_template(templatename="info_season_list.html", data=result, title="Season List")
|
||||||
|
else:
|
||||||
|
logger.warn('Unable to retrieve data.')
|
||||||
|
return serve_template(templatename="info_season_list.html", data=None, title="Season List")
|
||||||
|
|
||||||
|
@cherrypy.expose
|
||||||
|
def get_season_children(self, rating_key='', **kwargs):
|
||||||
|
|
||||||
pms_connect = pmsconnect.PmsConnect()
|
pms_connect = pmsconnect.PmsConnect()
|
||||||
result = pms_connect.get_season_children(rating_key)
|
result = pms_connect.get_season_children(rating_key)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue