diff --git a/UI/Content/base.less b/UI/Content/base.less
index cbf257618..36d9a26d6 100644
--- a/UI/Content/base.less
+++ b/UI/Content/base.less
@@ -114,3 +114,9 @@ th {
margin : 50px auto 0px auto;
display : block;
}
+
+a {
+ i {
+ cursor: pointer;
+ }
+}
\ No newline at end of file
diff --git a/UI/Controller.js b/UI/Controller.js
index 4302dc339..a457e420a 100644
--- a/UI/Controller.js
+++ b/UI/Controller.js
@@ -13,16 +13,18 @@ define(
'Calendar/CalendarLayout',
'Logs/Layout',
'Release/Layout',
+ 'System/Layout',
'Shared/NotFoundView',
'Shared/Modal/Region'
], function (App, Marionette, HistoryLayout, SettingsLayout, AddSeriesLayout, SeriesIndexLayout, SeriesDetailsLayout, MissingLayout, SeriesModel, CalendarLayout,
- LogsLayout, ReleaseLayout, NotFoundView) {
+ LogsLayout, ReleaseLayout, SystemLayout, NotFoundView) {
return Marionette.Controller.extend({
series : function () {
this._setTitle('NzbDrone');
App.mainRegion.show(new SeriesIndexLayout());
},
+
seriesDetails: function (query) {
var self = this;
@@ -74,12 +76,16 @@ define(
App.mainRegion.show(new LogsLayout());
},
+ system: function () {
+ this._setTitle('system');
+ App.mainRegion.show(new SystemLayout());
+ },
+
notFound: function () {
this._setTitle('Not Found');
App.mainRegion.show(new NotFoundView(this));
},
-
_setTitle: function (title) {
//$('#title-region').html(title);
diff --git a/UI/Router.js b/UI/Router.js
index 8ca2af07a..87e51b16d 100644
--- a/UI/Router.js
+++ b/UI/Router.js
@@ -23,6 +23,7 @@ require(
'history' : 'history',
'logs' : 'logs',
'rss' : 'rss',
+ 'system' : 'system',
':whatever' : 'notFound'
}
});
diff --git a/UI/System/About/View.js b/UI/System/About/View.js
new file mode 100644
index 000000000..d737002f2
--- /dev/null
+++ b/UI/System/About/View.js
@@ -0,0 +1,9 @@
+'use strict';
+define(
+ [
+ 'marionette'
+ ], function (Marionette) {
+ return Marionette.ItemView.extend({
+ template: 'System/About/ViewTemplate'
+ });
+ });
diff --git a/UI/System/About/ViewTemplate.html b/UI/System/About/ViewTemplate.html
new file mode 100644
index 000000000..efe394569
--- /dev/null
+++ b/UI/System/About/ViewTemplate.html
@@ -0,0 +1,8 @@
+
+ - Version
+ - {{version}}
+ - AppData directory
+ - {{appData}}
+ - Startup directory
+ - {{startupPath}}
+
diff --git a/UI/System/Layout.js b/UI/System/Layout.js
new file mode 100644
index 000000000..1f392a6b8
--- /dev/null
+++ b/UI/System/Layout.js
@@ -0,0 +1,74 @@
+'use strict';
+define(
+ [
+ 'app',
+ 'marionette',
+ 'System/StatusModel',
+ 'System/About/View',
+ 'Logs/Layout',
+ 'Shared/Toolbar/ToolbarLayout',
+ 'Shared/LoadingView'
+ ], function (App,
+ Marionette,
+ StatusModel,
+ AboutView,
+ LogsLayout,
+ ToolbarLayout,
+ LoadingView) {
+ return Marionette.Layout.extend({
+ template: 'System/LayoutTemplate',
+
+ regions: {
+ toolbar : '#toolbar',
+ about : '#about',
+ loading : '#loading'
+ },
+
+ leftSideButtons: {
+ type : 'default',
+ storeState: false,
+ items :
+ [
+ {
+ title: 'Logs',
+ icon : 'icon-book',
+ route: 'logs'
+ },
+// {
+// title : 'Restart',
+// icon : 'icon-repeat',
+// command : 'restart',
+// successMessage: 'NzbDrone restart has been triggered',
+// errorMessage : 'Failed to restart NzbDrone'
+// },
+// {
+// title : 'Shutdown',
+// icon : 'icon-power-off',
+// command : 'shutdown',
+// successMessage: 'NzbDrone shutdown has started',
+// errorMessage : 'Failed to shutdown NzbDrone'
+// }
+ ]
+ },
+
+ initialize: function () {
+ this.statusModel = StatusModel;
+ },
+
+ onRender: function () {
+ this._showToolbar();
+ this.about.show(new AboutView({ model: this.statusModel }));
+ },
+
+ _showToolbar: function () {
+ this.toolbar.show(new ToolbarLayout({
+ left :
+ [
+ this.leftSideButtons
+ ],
+ context: this
+ }));
+ }
+ });
+ });
+
diff --git a/UI/System/LayoutTemplate.html b/UI/System/LayoutTemplate.html
new file mode 100644
index 000000000..3760f7c46
--- /dev/null
+++ b/UI/System/LayoutTemplate.html
@@ -0,0 +1,17 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/UI/System/StatusModel.js b/UI/System/StatusModel.js
index d8859d601..8fabd1e55 100644
--- a/UI/System/StatusModel.js
+++ b/UI/System/StatusModel.js
@@ -1,12 +1,11 @@
'use strict';
define(
[
- 'backbone',
- 'constants'
+ 'backbone'
], function (Backbone) {
var model = Backbone.Model.extend({
- url: Constants.ApiRoot + '/system/status'
+ url: window.ApiRoot + '/system/status'
});
diff --git a/UI/Index.html b/UI/index.html
similarity index 94%
rename from UI/Index.html
rename to UI/index.html
index 983b806ea..b689f4518 100644
--- a/UI/Index.html
+++ b/UI/index.html
@@ -66,6 +66,13 @@
Settings
+
+
+
+
+ System
+
+