diff --git a/dashboard-ui/components/fileorganizer/fileorganizer.js b/dashboard-ui/components/fileorganizer/fileorganizer.js index d51e75082b..c26690e5d6 100644 --- a/dashboard-ui/components/fileorganizer/fileorganizer.js +++ b/dashboard-ui/components/fileorganizer/fileorganizer.js @@ -12,6 +12,13 @@ function initEpisodeForm(context, item) { + if (!item.ExtractedName || item.ExtractedName.length < 4) { + context.querySelector('.fldRemember').classList.add('hide'); + } + else { + context.querySelector('.fldRemember').classList.remove('hide'); + } + $('.inputFile', context).html(item.OriginalFileName); $('#txtSeason', context).val(item.ExtractedSeasonNumber); diff --git a/dashboard-ui/components/fileorganizer/fileorganizer.template.html b/dashboard-ui/components/fileorganizer/fileorganizer.template.html index b5e47c978e..5d96ddfd69 100644 --- a/dashboard-ui/components/fileorganizer/fileorganizer.template.html +++ b/dashboard-ui/components/fileorganizer/fileorganizer.template.html @@ -22,7 +22,7 @@
${LabelEndingEpisodeNumberHelp}
-
+

${OptionRememberOrganizeCorrection}
diff --git a/dashboard-ui/devices/windowsphone/wp.css b/dashboard-ui/devices/windowsphone/wp.css index f3842e9d89..448821c8ba 100644 --- a/dashboard-ui/devices/windowsphone/wp.css +++ b/dashboard-ui/devices/windowsphone/wp.css @@ -7,10 +7,10 @@ } .libraryViewNav, .libraryViewNav paper-tabs { - background-color: transparent; + background-color: #161616; box-shadow: none; text-transform: lowercase; - font-size: 240%; + font-size: 220%; } .libraryViewNav a, paper-tab { @@ -20,3 +20,23 @@ .background-theme-b, paper-dialog.background-theme-b { background: #161616; } + +.libraryViewNav #selectionBar { + background-color: transparent !important; +} + +.libraryViewNav .ui-btn-active, .libraryViewNav .iron-selected, .btnActiveCast { + color: #52B54B !important; +} + +.libraryViewNav .ui-btn-active { + border-bottom-color: transparent; +} + +.libraryPage:not(.noSecondaryNavPage) { + padding-top: 105px !important; +} + +.pageWithAbsoluteTabs:not(.noSecondaryNavPage) { + padding-top: 108px !important; +} diff --git a/dashboard-ui/mypreferencesdisplay.html b/dashboard-ui/mypreferencesdisplay.html index 22a9c679f0..5d54a35c60 100644 --- a/dashboard-ui/mypreferencesdisplay.html +++ b/dashboard-ui/mypreferencesdisplay.html @@ -1,6 +1,6 @@  - + Emby diff --git a/dashboard-ui/mypreferenceshome.html b/dashboard-ui/mypreferenceshome.html index df53cbaf98..8bc3b43093 100644 --- a/dashboard-ui/mypreferenceshome.html +++ b/dashboard-ui/mypreferenceshome.html @@ -1,6 +1,6 @@  - + Emby diff --git a/dashboard-ui/mypreferenceslanguages.html b/dashboard-ui/mypreferenceslanguages.html index bd17ad2eee..10d63d78e7 100644 --- a/dashboard-ui/mypreferenceslanguages.html +++ b/dashboard-ui/mypreferenceslanguages.html @@ -1,6 +1,6 @@  - + Emby diff --git a/dashboard-ui/mypreferencesmenu.html b/dashboard-ui/mypreferencesmenu.html index e1e33228ee..de5ad59e7a 100644 --- a/dashboard-ui/mypreferencesmenu.html +++ b/dashboard-ui/mypreferencesmenu.html @@ -1,6 +1,6 @@  - + Emby @@ -73,6 +73,15 @@ + + + + +
${ButtonEnterPinCode}
+
${ButtonEnterPinCodeHelp}
+
+
+
diff --git a/dashboard-ui/mysyncsettings.html b/dashboard-ui/mysyncsettings.html index 6736cb4022..39df8dca74 100644 --- a/dashboard-ui/mysyncsettings.html +++ b/dashboard-ui/mysyncsettings.html @@ -1,6 +1,6 @@  - + Emby diff --git a/dashboard-ui/pin.html b/dashboard-ui/pin.html new file mode 100644 index 0000000000..82e21b623d --- /dev/null +++ b/dashboard-ui/pin.html @@ -0,0 +1,31 @@ + + + + + Emby + + +
+ +
+
+

${HeaderEnterPinCode}

+ +
+

${ButtonEnterPinCodeHelp}

+ + + +
+ + + ${ButtonCancel} +
+
+
+
+
+ + \ No newline at end of file diff --git a/dashboard-ui/scripts/librarymenu.js b/dashboard-ui/scripts/librarymenu.js index 211edb7ef8..82d98a07a5 100644 --- a/dashboard-ui/scripts/librarymenu.js +++ b/dashboard-ui/scripts/librarymenu.js @@ -546,7 +546,7 @@ } function showUserAtTop() { - return AppInfo.isNativeApp; + return false; } var requiresLibraryMenuRefresh = false; diff --git a/dashboard-ui/scripts/pin.js b/dashboard-ui/scripts/pin.js new file mode 100644 index 0000000000..436a93ccbc --- /dev/null +++ b/dashboard-ui/scripts/pin.js @@ -0,0 +1,60 @@ +define([], function () { + + function onSubmit(e) { + + var form = e.target; + + Dashboard.showLoadingMsg(); + + ApiClient.ajax({ + + type: "POST", + url: ApiClient.getUrl('Auth/Pin/Validate'), + data: JSON.stringify({ + Pin: form.querySelector('#txtPin').value + }), + contentType: "application/json", + dataType: 'json' + + }).then(function (result) { + + Dashboard.hideLoadingMsg(); + Dashboard.alert({ + message: Globalize.translate('PinCodeConfirmedMessage', result.AppName), + title: Globalize.translate('HeaderThankYou'), + callback: function () { + Dashboard.navigate('index.html'); + } + }); + + }, function () { + + Dashboard.hideLoadingMsg(); + Dashboard.alert({ + message: Globalize.translate('PinCodeInvalidMessage'), + title: Globalize.translate('PinCodeInvalid') + }); + }); + + // Disable default form submission + e.preventDefault(); + return false; + } + + pageIdOn('pageinit', 'pinEntryPage', function () { + + var page = this; + + page.querySelector('form').addEventListener('submit', onSubmit); + + }); + + pageIdOn('pageshow', 'pinEntryPage', function () { + + var page = this; + + var txtPin = page.querySelector('#txtPin'); + txtPin.focus(); + txtPin.value = ''; + }); +}); \ No newline at end of file diff --git a/dashboard-ui/strings/html/en-US.json b/dashboard-ui/strings/html/en-US.json index 3f6847205b..9b3cd26823 100644 --- a/dashboard-ui/strings/html/en-US.json +++ b/dashboard-ui/strings/html/en-US.json @@ -60,6 +60,8 @@ "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderEnterPinCode": "Enter Pin Code", + "ButtonEnterPinCode": "Enter pin code", "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Cancel", @@ -1531,5 +1533,6 @@ "HeaderNewRecording": "New Recording", "ButtonAdvanced": "Advanced", "LabelCodecIntrosPath": "Codec intros path:", - "LabelCodecIntrosPathHelp": "A folder containing video files. If an intro video file name matches the video codec, audio codec, audio profile, or a tag, then it will be played prior to the main feature." + "LabelCodecIntrosPathHelp": "A folder containing video files. If an intro video file name matches the video codec, audio codec, audio profile, or a tag, then it will be played prior to the main feature.", + "ButtonEnterPinCodeHelp": "Sign in to an Emby TV app by entering the on-screen pin code." } \ No newline at end of file diff --git a/dashboard-ui/strings/html/server.json b/dashboard-ui/strings/html/server.json index 04e698fca2..bc64e798d4 100644 --- a/dashboard-ui/strings/html/server.json +++ b/dashboard-ui/strings/html/server.json @@ -1368,6 +1368,8 @@ "TitleForgotPassword": "Forgot Password", "TitlePasswordReset": "Password Reset", "LabelPasswordRecoveryPinCode": "Pin code:", + "HeaderEnterPinCode": "Enter Pin Code", + "ButtonEnterPinCode": "Enter pin code", "HeaderPasswordReset": "Password Reset", "HeaderParentalRatings": "Parental Ratings", "HeaderVideoTypes": "Video Types", @@ -1539,5 +1541,6 @@ "LabelCodecIntrosPathHelp": "A folder containing video files. If an intro video file name matches the video codec, audio codec, audio profile, or a tag, then it will be played prior to the main feature.", "OptionConvertRecordingsToStreamingFormat": "Automatically convert recordings to a streaming friendly format", "OptionConvertRecordingsToStreamingFormatHelp": "Recordings will be converted on the fly to MP4 for easy playback on your devices.", - "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription." + "FeatureRequiresEmbyPremiere": "This feature requires an active Emby Premiere subscription.", + "ButtonEnterPinCodeHelp": "Sign in to an Emby TV app by entering the on-screen pin code." } diff --git a/dashboard-ui/strings/javascript/en-US.json b/dashboard-ui/strings/javascript/en-US.json index 4a5dc502e7..2cdf53551c 100644 --- a/dashboard-ui/strings/javascript/en-US.json +++ b/dashboard-ui/strings/javascript/en-US.json @@ -958,5 +958,8 @@ "ButtonOff": "Off", "TitleHardwareAcceleration": "Hardware Acceleration", "HardwareAccelerationWarning": "Enabling hardware acceleration may cause instability in some environments. If you have difficulty playing video after enabling this, you'll need to change the setting back to Auto.", - "HeaderSelectCodecIntrosPath": "Select Codec Intros Path" + "HeaderSelectCodecIntrosPath": "Select Codec Intros Path", + "PinCodeInvalid": "Pin Code Error", + "PinCodeInvalidMessage": "Invalid or expired pin code entered. Please try again.", + "PinCodeConfirmedMessage": "Pin code confirmed. {0} will automatically sign you in." } \ No newline at end of file diff --git a/dashboard-ui/strings/javascript/javascript.json b/dashboard-ui/strings/javascript/javascript.json index 4c35aaefab..c1fef12116 100644 --- a/dashboard-ui/strings/javascript/javascript.json +++ b/dashboard-ui/strings/javascript/javascript.json @@ -968,5 +968,8 @@ "HeaderSelectCodecIntrosPath": "Select Codec Intros Path", "ButtonLocalRefresh": "Local refresh", "ButtonAddMissingData": "Add missing data only", - "ButtonFullRefresh": "Full refresh" + "ButtonFullRefresh": "Full refresh", + "PinCodeInvalid": "Pin Code Error", + "PinCodeInvalidMessage": "Invalid or expired pin code entered. Please try again.", + "PinCodeConfirmedMessage": "Pin code confirmed. {0} will automatically login." }