diff --git a/dashboard-ui/about.html b/dashboard-ui/about.html index ca60e5616b..b9d3a22b43 100644 --- a/dashboard-ui/about.html +++ b/dashboard-ui/about.html @@ -1,59 +1,51 @@ - - - - ${TitleSupport} - - -
- -
-
-
- -

- EMBY -

-
-
-
${VersionNumber}
-
-
${HeaderCredits}
-
-

- ${PismoMessage} -

-

- ${TangibleSoftwareMessage} -

- -
-

${PleaseSupportOtherProduces}

- -

- FanArt.tv -

-

- MusicBrainz -

-

- TheMovieDb.org -

-

- The Open Movie Database -

-

- TheTVDB.com -

-
+
+
+
+
+ +

+ EMBY +

+
+
+
${VersionNumber}
+
+
${HeaderCredits}
+
+

+ ${PismoMessage} +

+

+ ${TangibleSoftwareMessage} +

+ +
+

${PleaseSupportOtherProduces}

+ +

+ FanArt.tv +

+

+ MusicBrainz +

+

+ TheMovieDb.org +

+

+ The Open Movie Database +

+

+ TheTVDB.com +

+
+
- - +
\ No newline at end of file diff --git a/dashboard-ui/addplugin.html b/dashboard-ui/addplugin.html index ed997782fd..5236fdb0e3 100644 --- a/dashboard-ui/addplugin.html +++ b/dashboard-ui/addplugin.html @@ -1,130 +1,122 @@ - - - - ${TitlePlugins} - - -
+
-
-
- - - +
+
+ + + - + -
+
-

-

-

+

+

+

-

+

-
-

${HeaderInstall}

+
+

${HeaderInstall}

-
-
-

-

- - -

+
+ +

+

+ + +

-

- -

-

- +

+ +

+

+ -
+
-
-
-

${HeaderReviews}

-
-
-
-
-
+
+
+

${HeaderReviews}

+
+
+
+
+
-
-

${HeaderDeveloperInfo}

-

- -
+
+

${HeaderDeveloperInfo}

+

+ +
-
-

${HeaderRevisionHistory}

-
-
+
+

${HeaderRevisionHistory}

+
- - +
\ No newline at end of file diff --git a/dashboard-ui/advanced.html b/dashboard-ui/advanced.html index 7db93174a7..50033283c5 100644 --- a/dashboard-ui/advanced.html +++ b/dashboard-ui/advanced.html @@ -1,105 +1,97 @@ - - - - ${TitleAdvanced} - - -
+
-
-
+
+
- -
+ + -
    - -
  • - ${LabelEnableDebugLogging} -
  • -
  • - ${OptionEnableAnonymousUsageReporting} -
    - ${OptionEnableAnonymousUsageReportingHelp} - -
    -
  • -
- - -
-
    -
  • -
    - - -
    -
  • -
  • - - - -
  • - -
-
- - -
-
- ${OptionEnableWebClientResponseCache} -
-
-
- ${OptionEnableWebClientResourceMinification} +
    + +
  • + ${LabelEnableDebugLogging} +
  • +
  • + ${OptionEnableAnonymousUsageReporting}
    - ${OptionDisableForDevelopmentHelp} + ${OptionEnableAnonymousUsageReportingHelp} +
    -

    -
      -
    • - - -
      ${LabelDashboardSourcePathHelp}
      -
    • -
    - +
  • +
+
    -
  • - +
  • +
    + + +
    +
  • +
  • + + + +
  • + -
- -
+
+ + +
+
+ ${OptionEnableWebClientResponseCache} +
+
+
+ ${OptionEnableWebClientResourceMinification} +
+
+ ${OptionDisableForDevelopmentHelp} +
+

+
    +
  • + + +
    ${LabelDashboardSourcePathHelp}
    +
  • +
+
+ +
+
    +
  • + +
  • + +
+
- - +
\ No newline at end of file diff --git a/dashboard-ui/appservices.html b/dashboard-ui/appservices.html index 855076d233..72c2f63630 100644 --- a/dashboard-ui/appservices.html +++ b/dashboard-ui/appservices.html @@ -1,46 +1,38 @@ - - - - Emby - - -
+
-
-
+
+
-
- - +
\ No newline at end of file diff --git a/dashboard-ui/autoorganizelog.html b/dashboard-ui/autoorganizelog.html index 3639141499..638b775582 100644 --- a/dashboard-ui/autoorganizelog.html +++ b/dashboard-ui/autoorganizelog.html @@ -1,57 +1,48 @@ - - - - - ${TitleAutoOrganize} - - -
-
-
+
+
+
-
- ${TabActivityLog} - ${TabTV} - ${TabSmartMatches} + + +
+
-
-
-
- - -
- -
+ - - - - - - - - - - -
${HeaderDate}${HeaderSource}${HeaderDestination}

-
-
- ${LabelCompleted} -
- ${LabelFailed} -
- ${LabelSkipped} -
-
-
+ +
+
+ + + + + + + + + + +
${HeaderDate}${HeaderSource}${HeaderDestination}
+
+
+
+ ${LabelCompleted} +
+ ${LabelFailed} +
+ ${LabelSkipped} +
+
- - +
\ No newline at end of file diff --git a/dashboard-ui/autoorganizesmart.html b/dashboard-ui/autoorganizesmart.html index 31d524feac..badac891c6 100644 --- a/dashboard-ui/autoorganizesmart.html +++ b/dashboard-ui/autoorganizesmart.html @@ -1,26 +1,18 @@ - - - - ${TitleAutoOrganize} - - -
+
-
-
+
+
- + -
-

${TabSmartMatchInfo}

-
-
+
+

${TabSmartMatchInfo}

+
- - +
\ No newline at end of file diff --git a/dashboard-ui/autoorganizetv.html b/dashboard-ui/autoorganizetv.html index 19f87ccc3d..150d8626d4 100644 --- a/dashboard-ui/autoorganizetv.html +++ b/dashboard-ui/autoorganizetv.html @@ -1,177 +1,169 @@ - - - - ${TitleAutoOrganize} - - -
- -
-
- - -
- -

${AutoOrganizeHelp}

- -

${AutoOrganizeTvHelp}

-
    -
  • -
    - ${OptionEnableEpisodeOrganization} -
  • -
  • - - -
    -
    ${LabelWatchFolderHelp}
    -
    -
  • -
  • - -
    ${LabelMinFileSizeForOrganizeHelp}
    -
  • -
  • - -
    -
  • -
  • - -
  • -

- - -
-
- -
-
-
-
- -
-
- -
-

${HeaderSupportedPatterns}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
${HeaderTerm}${HeaderPattern}${HeaderResult}
${LabelSeriesNamePlain}%sn${LabelSeriesNamePlain}
${LabelSeriesNamePlain}%s.n${ValueSeriesNamePeriod}
${LabelSeriesNamePlain}%s_n${ValueSeriesNameUnderscore}
${LabelSeasonNumberPlain}%s1
${LabelSeasonNumberPlain}%0s01
${LabelEpisodeNumberPlain}%e4
${LabelEpisodeNumberPlain}%0e04
${LabelEndingEpisodeNumberPlain}%ed5
${LabelEndingEpisodeNumberPlain}%0ed05
${LabelEpisodeNamePlain}%en${LabelEpisodeNamePlain}
${LabelEpisodeNamePlain}%e.n${ValueEpisodeNamePeriod}
${LabelEpisodeNamePlain}%e_n${ValueEpisodeNameUnderscore}
${FileExtension}%extmkv
-
-

-
    -
  • - - -
    ${LabelTransferMethodHelp}
    -
  • -
  • -
    - ${OptionOverwriteExistingEpisodes} -
  • -
  • - -
    ${LabelDeleteLeftOverFilesHelp}
    -
  • -
  • - ${LabelDeleteEmptyFolders} -
    ${LabelDeleteEmptyFoldersHelp}
    -
  • -
- -
    -
  • - -
  • - -
-
+
+
+
+ + +
+ +

${AutoOrganizeHelp}

+ +

${AutoOrganizeTvHelp}

+
    +
  • +
    + ${OptionEnableEpisodeOrganization} +
  • +
  • + + +
    +
    ${LabelWatchFolderHelp}
    +
    +
  • +
  • + +
    ${LabelMinFileSizeForOrganizeHelp}
    +
  • +
  • + +
    +
  • +
  • + +
  • +

+ + +
+
+ +
+
+
+
+ +
+
+ +
+

${HeaderSupportedPatterns}

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
${HeaderTerm}${HeaderPattern}${HeaderResult}
${LabelSeriesNamePlain}%sn${LabelSeriesNamePlain}
${LabelSeriesNamePlain}%s.n${ValueSeriesNamePeriod}
${LabelSeriesNamePlain}%s_n${ValueSeriesNameUnderscore}
${LabelSeasonNumberPlain}%s1
${LabelSeasonNumberPlain}%0s01
${LabelEpisodeNumberPlain}%e4
${LabelEpisodeNumberPlain}%0e04
${LabelEndingEpisodeNumberPlain}%ed5
${LabelEndingEpisodeNumberPlain}%0ed05
${LabelEpisodeNamePlain}%en${LabelEpisodeNamePlain}
${LabelEpisodeNamePlain}%e.n${ValueEpisodeNamePeriod}
${LabelEpisodeNamePlain}%e_n${ValueEpisodeNameUnderscore}
${FileExtension}%extmkv
+
+

+
    +
  • + + +
    ${LabelTransferMethodHelp}
    +
  • +
  • +
    + ${OptionOverwriteExistingEpisodes} +
  • +
  • + +
    ${LabelDeleteLeftOverFilesHelp}
    +
  • +
  • + ${LabelDeleteEmptyFolders} +
    ${LabelDeleteEmptyFoldersHelp}
    +
  • +
+ +
    +
  • + +
  • + +
+
+
- - \ No newline at end of file +
\ No newline at end of file diff --git a/dashboard-ui/bower_components/emby-webcomponents/.bower.json b/dashboard-ui/bower_components/emby-webcomponents/.bower.json index d38e858a46..1c68493aff 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/.bower.json +++ b/dashboard-ui/bower_components/emby-webcomponents/.bower.json @@ -16,12 +16,12 @@ }, "devDependencies": {}, "ignore": [], - "version": "1.1.64", - "_release": "1.1.64", + "version": "1.1.65", + "_release": "1.1.65", "_resolution": { "type": "version", - "tag": "1.1.64", - "commit": "09ad84b364cc201acfa1c7700142e2043bf23db9" + "tag": "1.1.65", + "commit": "0d838fa5972c686099cf85e830e9c7470972fb2f" }, "_source": "git://github.com/MediaBrowser/emby-webcomponents.git", "_target": "~1.1.5", diff --git a/dashboard-ui/bower_components/emby-webcomponents/router.js b/dashboard-ui/bower_components/emby-webcomponents/router.js index edfec6d717..5d538bd7b0 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/router.js +++ b/dashboard-ui/bower_components/emby-webcomponents/router.js @@ -77,6 +77,7 @@ define(['loading', 'viewManager', 'skinManager', 'pluginManager', 'backdrop', 'b } } + var htmlCache = {}; var cacheParam = new Date().getTime(); function loadContentUrl(ctx, next, route, request) { @@ -93,13 +94,29 @@ define(['loading', 'viewManager', 'skinManager', 'pluginManager', 'backdrop', 'b url = baseUrl() + url; } + if (ctx.querystring && route.enableContentQueryString) { + url += '?' + ctx.querystring; + } + + if (route.enableCache !== false) { + var cachedHtml = htmlCache[url]; + if (cachedHtml) { + loadContent(ctx, route, cachedHtml, request); + return; + } + } + url += url.indexOf('?') == -1 ? '?' : '&'; url += 'v=' + cacheParam; var xhr = new XMLHttpRequest(); xhr.onload = xhr.onerror = function () { if (this.status < 400) { - loadContent(ctx, route, this.response, request); + var html = this.response; + if (route.enableCache !== false) { + htmlCache[url.split('?')[0]] = html; + } + loadContent(ctx, route, html, request); } else { next(); } diff --git a/dashboard-ui/bower_components/emby-webcomponents/viewmanager.js b/dashboard-ui/bower_components/emby-webcomponents/viewmanager.js index ada7b1b571..87011d528c 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/viewmanager.js +++ b/dashboard-ui/bower_components/emby-webcomponents/viewmanager.js @@ -19,7 +19,9 @@ define(['viewcontainer', 'focusManager', 'queryString', 'connectionManager', 'ev // Use controller method var controller = new options.controllerFactory(newView, eventDetail.detail.params); - } else if (dispatchPageEvents) { + } + + if (!options.controllerFactory || dispatchPageEvents) { dispatchViewEvent(newView, 'viewinit'); } } diff --git a/dashboard-ui/bower_components/iron-icon/.bower.json b/dashboard-ui/bower_components/iron-icon/.bower.json index f0167baf13..9784e3a3b7 100644 --- a/dashboard-ui/bower_components/iron-icon/.bower.json +++ b/dashboard-ui/bower_components/iron-icon/.bower.json @@ -32,14 +32,14 @@ "web-component-tester": "^4.0.0", "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" }, - "homepage": "https://github.com/polymerelements/iron-icon", + "homepage": "https://github.com/PolymerElements/iron-icon", "_release": "1.0.8", "_resolution": { "type": "version", "tag": "v1.0.8", "commit": "f36b38928849ef3853db727faa8c9ef104d611eb" }, - "_source": "git://github.com/polymerelements/iron-icon.git", + "_source": "git://github.com/PolymerElements/iron-icon.git", "_target": "^1.0.0", - "_originalSource": "polymerelements/iron-icon" + "_originalSource": "PolymerElements/iron-icon" } \ No newline at end of file diff --git a/dashboard-ui/bower_components/iron-selector/.bower.json b/dashboard-ui/bower_components/iron-selector/.bower.json index 66d7d54b0f..c6b481c2cb 100644 --- a/dashboard-ui/bower_components/iron-selector/.bower.json +++ b/dashboard-ui/bower_components/iron-selector/.bower.json @@ -36,7 +36,7 @@ "tag": "v1.3.0", "commit": "1662093611cda3fd29125cdab94a61d3d88093da" }, - "_source": "git://github.com/PolymerElements/iron-selector.git", + "_source": "git://github.com/polymerelements/iron-selector.git", "_target": "^1.0.0", - "_originalSource": "PolymerElements/iron-selector" + "_originalSource": "polymerelements/iron-selector" } \ No newline at end of file diff --git a/dashboard-ui/channelitems.html b/dashboard-ui/channelitems.html index caabf3a975..83c12d7967 100644 --- a/dashboard-ui/channelitems.html +++ b/dashboard-ui/channelitems.html @@ -1,19 +1,11 @@ - - - - Emby - - -
+
-
-
+
+
-
-
+
-
+
- - +
\ No newline at end of file diff --git a/dashboard-ui/channels.html b/dashboard-ui/channels.html index 98831c3a3a..cedf619082 100644 --- a/dashboard-ui/channels.html +++ b/dashboard-ui/channels.html @@ -1,40 +1,32 @@ - - - - Emby - - -
+
-
- - ${TabLatest} - ${TabChannels} - - -
-
- - -
-
-
-
- -
-
-
-
-
-
-
-
- -
+
+ + ${TabLatest} + ${TabChannels} + +
- - +
+ + +
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
\ No newline at end of file diff --git a/dashboard-ui/channelsettings.html b/dashboard-ui/channelsettings.html index ec5cceb706..c874e84399 100644 --- a/dashboard-ui/channelsettings.html +++ b/dashboard-ui/channelsettings.html @@ -1,45 +1,37 @@ - - - - ${TitlePlugins} - - -
- -
-
- - -
- -
-
    -
  • - - -
    ${LabelChannelStreamQualityHelp}
    -
  • -
-
    -
  • - -
  • -
-
+
+
+
+ + +
+ +
+
    +
  • + + +
    ${LabelChannelStreamQualityHelp}
    +
  • +
+
    +
  • + +
  • +
+
+
- - +
\ No newline at end of file diff --git a/dashboard-ui/cinemamodeconfiguration.html b/dashboard-ui/cinemamodeconfiguration.html index e88fe7c513..a1d212e563 100644 --- a/dashboard-ui/cinemamodeconfiguration.html +++ b/dashboard-ui/cinemamodeconfiguration.html @@ -1,92 +1,84 @@ - - - - ${TitlePlayback} - - -
+
-
-
+
+
- - -
- -

${CinemaModeConfigurationHelp}

-
-

${LabelEnableCinemaModeFor}

-
- ${OptionMovies} - ${OptionEpisodes} -
-
-
-
-

${LabelSelectInternetTrailersForCinemaMode}

-
- ${OptionUpcomingMoviesInTheaters} - ${OptionUpcomingDvdMovies} - ${OptionUpcomingStreamingMovies} - ${OptionOtherTrailers} -
-
${LabelTheseFeaturesRequireSubscriptionHelpAndTrailers}
- -
-
-
- ${OptionTrailersFromMyMovies} -
${OptionTrailersFromMyMoviesHelp}
- -
-
-
- -
-
-
- ${LabelEnableIntroParentalControl} -
${LabelEnableIntroParentalControlHelp}
-
-
-
- ${LabelLimitIntrosToUnwatchedContent} -
-
-
-
- - -
-
${LabelCustomIntrosPathHelp}
-
-
-
-
- - -
-
-
${LabelCodecIntrosPathHelp}
- -
-
-
-
- -

${CinemaModeConfigurationHelp2}

-
+ + +
+ +

${CinemaModeConfigurationHelp}

+
+

${LabelEnableCinemaModeFor}

+
+ ${OptionMovies} + ${OptionEpisodes} +
+
+
+
+

${LabelSelectInternetTrailersForCinemaMode}

+
+ ${OptionUpcomingMoviesInTheaters} + ${OptionUpcomingDvdMovies} + ${OptionUpcomingStreamingMovies} + ${OptionOtherTrailers} +
+
${LabelTheseFeaturesRequireSubscriptionHelpAndTrailers}
+ +
+
+
+ ${OptionTrailersFromMyMovies} +
${OptionTrailersFromMyMoviesHelp}
+ +
+
+
+ +
+
+
+ ${LabelEnableIntroParentalControl} +
${LabelEnableIntroParentalControlHelp}
+
+
+
+ ${LabelLimitIntrosToUnwatchedContent} +
+
+
+
+ + +
+
${LabelCustomIntrosPathHelp}
+
+
+
+
+ + +
+
+
${LabelCodecIntrosPathHelp}
+ +
+
+
+
+ +

${CinemaModeConfigurationHelp2}

+
- - \ No newline at end of file +
\ No newline at end of file diff --git a/dashboard-ui/collections.html b/dashboard-ui/collections.html index ce215efa33..e4d899dce5 100644 --- a/dashboard-ui/collections.html +++ b/dashboard-ui/collections.html @@ -1,25 +1,17 @@ - - - - Emby - - -
+
-
-
+
+
-
-   -
+
+  
-
- - -
+
+ + +
- - +
\ No newline at end of file diff --git a/dashboard-ui/components/viewcontainer-lite.js b/dashboard-ui/components/viewcontainer-lite.js index bb6350c90b..7e4506f40d 100644 --- a/dashboard-ui/components/viewcontainer-lite.js +++ b/dashboard-ui/components/viewcontainer-lite.js @@ -20,7 +20,8 @@ define([], function () { pageIndex = 0; } - var newView = normalizeNewView(options); + var newViewInfo = normalizeNewView(options); + var newView = newViewInfo.elem; var dependencies = typeof (newView) == 'string' ? null : newView.getAttribute('data-require'); dependencies = dependencies ? dependencies.split(',') : []; @@ -62,7 +63,12 @@ define([], function () { animatable.innerHTML = newView; } else { animatable.innerHTML = ''; - animatable.appendChild(newView); + if (newViewInfo.hasScript) { + // TODO: figure this out without jQuery + $(newView).appendTo(animatable); + } else { + animatable.appendChild(newView); + } enhanceNewView(dependencies, newView); } @@ -96,6 +102,13 @@ define([], function () { } } + function parseHtml(html) { + + var wrapper = document.createElement('div'); + wrapper.innerHTML = html; + return wrapper.querySelector('div[data-role="page"]'); + } + function normalizeNewView(options) { if (options.view.indexOf('data-role="page"') == -1) { @@ -105,15 +118,14 @@ define([], function () { return html; } - // TODO: This won't be able to support executing embedded script tags - var wrapper = document.createElement('div'); - wrapper.innerHTML = options.view; - - var elem = wrapper.querySelector('div[data-role="page"]'); + var elem = parseHtml(options.view); elem.classList.add('page-view'); elem.setAttribute('data-type', options.type || ''); elem.setAttribute('data-url', options.url); - return elem; + return { + elem: elem, + hasScript: options.view.indexOf(' - - - ${TitleSignIn} - - -
+
-
+
- +
+

${HeaderNewUsers}

+ + ${ButtonSignUp} + +
+
+


Try the new Emby Theater at tv.emby.media, a remote-friendly app designed for your TV or large screen monitor.
+ - + + ${ButtonCancel} + - + + ${ButtonCancel} + - - - +
\ No newline at end of file diff --git a/dashboard-ui/dashboard.html b/dashboard-ui/dashboard.html index 3294997f99..9a4e421ca4 100644 --- a/dashboard-ui/dashboard.html +++ b/dashboard-ui/dashboard.html @@ -1,136 +1,128 @@ - - - - Emby - - -
+
-
-
+
+
-
- ${TabDashboard} - ${TabSettings} + +
+ -
-