diff --git a/data/interfaces/default/config.html b/data/interfaces/default/config.html index c241fb20..3ba883fb 100644 --- a/data/interfaces/default/config.html +++ b/data/interfaces/default/config.html @@ -9,31 +9,22 @@ <%def name="body()"> - -
-
-
-
-
-
-

Settings

-
- -
-
-
-
-
-
-
- -
+
-
+
+
+

Settings

+
+
+ % if config['check_github']: + + % endif + + +
+
+
@@ -119,6 +110,15 @@

Current API key:
${config['api_key']}

+
+
+

Software Updates

+
+
+ Enable Updates +

If you have Git installed, allow periodic checks for updates.

+
+
@@ -846,6 +846,20 @@ } }); }); + $("#menu_link_shutdown").click(function() { + var r = confirm("Are you sure you want to shutdown PlexPy?"); + if (r == true) { + window.location.href = "shutdown"; + } + }); + + $("#menu_link_restart").click(function() { + window.location.href = "restart"; + }); + + $("#menu_link_update_check").click(function() { + window.location.href = "checkGithub"; + }); $( ".pms-settings" ).change(function() { $("#pms_identifier").val(""); diff --git a/data/interfaces/default/css/dataTables.colVis.css b/data/interfaces/default/css/dataTables.colVis.css new file mode 100644 index 00000000..db3d6c35 --- /dev/null +++ b/data/interfaces/default/css/dataTables.colVis.css @@ -0,0 +1,123 @@ + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * ColVis styles + */ +div.ColVis { + float: right; +} + +button.ColVis_Button, +ul.ColVis_collection li { + position: relative; + float: left; + color: #fff; + margin-right: 3px; + padding: 5px 8px; + cursor: pointer; + *cursor: hand; + font-size: 0.88em; + white-space: nowrap; +} + +.ColVis_Button:hover, +ul.ColVis_collection li:hover { + color: #F9AA03; +} + +button.ColVis_Button { + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + background-color: #444; + border: 1px solid transparent; + border-radius: 14.5px; + outline:0px !important; + -webkit-appearance:none; +} + +button.ColVis_Button::-moz-focus-inner { + border: none !important; + padding: 0; +} + +button.ColVis_Button:active { + outline: none; +} + +div.ColVis_collectionBackground { + position: fixed; + top: 0; + left: 0; + height: 100%; + width: 100%; + background-color: black; + z-index: 1100; +} + +ul.ColVis_collection { + list-style: none; + width: 150px; + padding: 8px 8px 4px 8px; + margin: 10px 0px 0px 0px; + background-color: rgba( 88, 88, 88, 0.8 ); + overflow: hidden; + z-index: 2002; +} + +ul.ColVis_collection li { + position: relative; + height: auto; + left: 0; + right: 0; + display: block; + float: none; +} + +ul.ColVis_collection li { + text-align: left; +} + +ul.ColVis_collection li.ColVis_Button:hover { + border: 1px solid #999; +} + +ul.ColVis_collection li span { + display: inline-block; + padding-left: 0.5em; + line-height: 1em; + cursor: pointer; +} + + +ul.ColVis_collection li.ColVis_Special { +} + +ul.ColVis_collection li.ColVis_Special:hover { +} + +span.ColVis_radio { + display: inline-block; + width: 20px; +} + +div.ColVis_catcher { + position: absolute; + z-index: 1101; +} + +.disabled { + color: #999; +} \ No newline at end of file diff --git a/data/interfaces/default/css/plexwatch-tables.css b/data/interfaces/default/css/plexwatch-tables.css index d4f943ee..0eabcd31 100644 --- a/data/interfaces/default/css/plexwatch-tables.css +++ b/data/interfaces/default/css/plexwatch-tables.css @@ -51,28 +51,42 @@ background-color: rgba(0,0,0,.5); border-radius: 8px; } +@media (min-width: 768px) { + .dataTables_length { + width: 40%; + float: left; + margin-bottom: 20px; + } +} -.dataTables_length { - width: 40%; - float: left; - margin-left: 15px; - margin-bottom: 20px; +@media (max-width: 767px) { + .dataTables_length { + display: none; + } } .dataTables_filter { - float: right; text-align: right; - margin-right: 15px; margin-bottom: 20px; } -.dataTables_info { - width: 60%; - float: left; - margin-top: 12px; - margin-left: 15px; - margin-bottom: 12px; +@media (min-width: 768px) { + .dataTables_info { + width: 60%; + float: left; + margin-top: 12px; + margin-left: 15px; + margin-bottom: 12px; + text-overflow: ellipsis; + overflow: hidden; + } +} + +@media (max-width: 767px) { + .dataTables_info { + display: none; + } } .dataTables_paginate { @@ -649,4 +663,31 @@ div.box { td.no-wrap, th.no-wrap { white-space:nowrap; +} + +div.colVis { + +} + +button.ColVis_Button { + display: inline-block; + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + background-color: #444; + border: 1px solid transparent; + border-radius: 14.5px; } \ No newline at end of file diff --git a/data/interfaces/default/css/plexwatch.css b/data/interfaces/default/css/plexwatch.css index 249ff425..bf9c522d 100644 --- a/data/interfaces/default/css/plexwatch.css +++ b/data/interfaces/default/css/plexwatch.css @@ -1320,7 +1320,6 @@ input[type="color"]:focus, } input[type="radio"], input[type="checkbox"] { - margin: 4px 0 0; *margin-top: 0; /* IE7 */ @@ -8276,4 +8275,32 @@ ol.test >li { .table-card-back td { font-size: 12px; +} + +button.rounded { + padding: 4px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + background-color: #444; + border: 1px solid transparent; + border-radius: 14.5px; + outline:0px !important; + -webkit-appearance:none; +} + +.rounded:hover{ + color: #F9AA03; } \ No newline at end of file diff --git a/data/interfaces/default/history.html b/data/interfaces/default/history.html index a1b9fb81..461d388e 100644 --- a/data/interfaces/default/history.html +++ b/data/interfaces/default/history.html @@ -6,24 +6,22 @@ from plexpy import helpers <%def name="headIncludes()"> + <%def name="body()"> -
-
-
-
-
-

History

-
-
-
-
-
+
+
+

History

+
+
+
+
+
@@ -57,6 +55,7 @@ from plexpy import helpers <%def name="javascriptIncludes()"> + @@ -72,6 +71,9 @@ from plexpy import helpers } history_table = $('#history_table').DataTable(history_table_options); + + var colvis = new $.fn.dataTable.ColVis( history_table ); + $( colvis.button() ).appendTo('div.button-bar'); }); diff --git a/data/interfaces/default/info.html b/data/interfaces/default/info.html index 9ff8e83f..eac486d8 100644 --- a/data/interfaces/default/info.html +++ b/data/interfaces/default/info.html @@ -41,6 +41,7 @@ from plexpy import helpers <%def name="headIncludes()"> + @@ -166,8 +167,12 @@ from plexpy import helpers
- % if data['type'] == 'movie' or data['type'] == 'episode' or data['type'] == 'show': -

Watch history for ${data['title']}

+
+ % if data['type'] == 'movie' or data['type'] == 'episode' or data['type'] == 'show': +

Watch history for ${data['title']}

+
+
+
@@ -220,6 +225,7 @@ from plexpy import helpers <%def name="javascriptIncludes()"> + @@ -250,7 +256,11 @@ from plexpy import helpers history_table = $('#history_table').DataTable(history_table_options); // Hide the title column - history_table.column(5).visible(false); + $("#title").removeClass("min-tablet").addClass("never"); + history_table.column(4).visible(false); + + var colvis = new $.fn.dataTable.ColVis( history_table ); + $( colvis.button() ).appendTo('div.button-bar'); }); @@ -269,6 +279,9 @@ from plexpy import helpers } history_table = $('#history_table').DataTable(history_table_options); + + var colvis = new $.fn.dataTable.ColVis( history_table ); + $( colvis.button() ).appendTo('div.button-bar'); }); diff --git a/data/interfaces/default/js/dataTables.colVis.js b/data/interfaces/default/js/dataTables.colVis.js new file mode 100644 index 00000000..caeff97e --- /dev/null +++ b/data/interfaces/default/js/dataTables.colVis.js @@ -0,0 +1,1122 @@ +/*! ColVis 1.1.2 + * ©2010-2015 SpryMedia Ltd - datatables.net/license + */ + +/** + * @summary ColVis + * @description Controls for column visibility in DataTables + * @version 1.1.2 + * @file dataTables.colReorder.js + * @author SpryMedia Ltd (www.sprymedia.co.uk) + * @contact www.sprymedia.co.uk/contact + * @copyright Copyright 2010-2015 SpryMedia Ltd. + * + * This source file is free software, available under the following license: + * MIT license - http://datatables.net/license/mit + * + * This source file is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. + * + * For details please refer to: http://www.datatables.net + */ + +(function(window, document, undefined) { + + +var factory = function( $, DataTable ) { +"use strict"; + +/** + * ColVis provides column visibility control for DataTables + * + * @class ColVis + * @constructor + * @param {object} DataTables settings object. With DataTables 1.10 this can + * also be and API instance, table node, jQuery collection or jQuery selector. + * @param {object} ColVis configuration options + */ +var ColVis = function( oDTSettings, oInit ) +{ + /* Santiy check that we are a new instance */ + if ( !this.CLASS || this.CLASS != "ColVis" ) + { + alert( "Warning: ColVis must be initialised with the keyword 'new'" ); + } + + if ( typeof oInit == 'undefined' ) + { + oInit = {}; + } + + var camelToHungarian = $.fn.dataTable.camelToHungarian; + if ( camelToHungarian ) { + camelToHungarian( ColVis.defaults, ColVis.defaults, true ); + camelToHungarian( ColVis.defaults, oInit ); + } + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public class variables + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + /** + * @namespace Settings object which contains customisable information for + * ColVis instance. Augmented by ColVis.defaults + */ + this.s = { + /** + * DataTables settings object + * @property dt + * @type Object + * @default null + */ + "dt": null, + + /** + * Customisation object + * @property oInit + * @type Object + * @default passed in + */ + "oInit": oInit, + + /** + * Flag to say if the collection is hidden + * @property hidden + * @type boolean + * @default true + */ + "hidden": true, + + /** + * Store the original visibility settings so they could be restored + * @property abOriginal + * @type Array + * @default [] + */ + "abOriginal": [] + }; + + + /** + * @namespace Common and useful DOM elements for the class instance + */ + this.dom = { + /** + * Wrapper for the button - given back to DataTables as the node to insert + * @property wrapper + * @type Node + * @default null + */ + "wrapper": null, + + /** + * Activation button + * @property button + * @type Node + * @default null + */ + "button": null, + + /** + * Collection list node + * @property collection + * @type Node + * @default null + */ + "collection": null, + + /** + * Background node used for shading the display and event capturing + * @property background + * @type Node + * @default null + */ + "background": null, + + /** + * Element to position over the activation button to catch mouse events when using mouseover + * @property catcher + * @type Node + * @default null + */ + "catcher": null, + + /** + * List of button elements + * @property buttons + * @type Array + * @default [] + */ + "buttons": [], + + /** + * List of group button elements + * @property groupButtons + * @type Array + * @default [] + */ + "groupButtons": [], + + /** + * Restore button + * @property restore + * @type Node + * @default null + */ + "restore": null + }; + + /* Store global reference */ + ColVis.aInstances.push( this ); + + /* Constructor logic */ + this.s.dt = $.fn.dataTable.Api ? + new $.fn.dataTable.Api( oDTSettings ).settings()[0] : + oDTSettings; + + this._fnConstruct( oInit ); + return this; +}; + + + +ColVis.prototype = { + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Public methods + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + /** + * Get the ColVis instance's control button so it can be injected into the + * DOM + * @method button + * @returns {node} ColVis button + */ + button: function () + { + return this.dom.wrapper; + }, + + /** + * Alias of `rebuild` for backwards compatibility + * @method fnRebuild + */ + "fnRebuild": function () + { + this.rebuild(); + }, + + /** + * Rebuild the list of buttons for this instance (i.e. if there is a column + * header update) + * @method fnRebuild + */ + rebuild: function () + { + /* Remove the old buttons */ + for ( var i=this.dom.buttons.length-1 ; i>=0 ; i-- ) { + this.dom.collection.removeChild( this.dom.buttons[i] ); + } + this.dom.buttons.splice( 0, this.dom.buttons.length ); + this.dom.groupButtons.splice(0, this.dom.groupButtons.length); + + if ( this.dom.restore ) { + this.dom.restore.parentNode( this.dom.restore ); + } + + /* Re-add them (this is not the optimal way of doing this, it is fast and effective) */ + this._fnAddGroups(); + this._fnAddButtons(); + + /* Update the checkboxes */ + this._fnDrawCallback(); + }, + + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Private methods (they are of course public in JS, but recommended as private) + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + /** + * Constructor logic + * @method _fnConstruct + * @returns void + * @private + */ + "_fnConstruct": function ( init ) + { + this._fnApplyCustomisation( init ); + + var that = this; + var i, iLen; + this.dom.wrapper = document.createElement('div'); + this.dom.wrapper.className = "ColVis"; + + this.dom.button = $( ' + +