'use strict'; oml.ui.appDialog = function() { var ui = oml.user.ui, tabs = Ox.getObjectById(oml.config.pages, 'app').parts.map(function(tab) { return { id: tab.id, title: tab.title, selected: tab.id == ui.part.app }; }), $panel = Ox.TabPanel({ content: function(id) { var $content = Ox.Element(), $logo = Ox.Element(), $text = Ox.Element() .addClass('OxTextPage OxSelectable'), title = Ox._(Ox.getObjectById( Ox.getObjectById(oml.config.pages, 'app').parts, id ).title); $('') .attr({ src: '/static/png/oml.png' }) .css({ position: 'absolute', left: '16px', top: '16px', width: '192px', height: '192px' }) .appendTo($logo); if (id == 'update') { var titleHTML = '

' + title + '

' $content.html(titleHTML); oml.api.getVersion(function(response) { if (response.data.update) { if (response.data.current == 'git') { $content.html( titleHTML + '

' + Ox._('A newer version of Open Media Library is available in git.') + '

' + Ox._('To update run:') + ' ./ctl update' ); } else { $content.html( titleHTML + '

' + Ox._('You are running Open Media Library version {0}.', [response.data.current]) + '

' + Ox._('A newer version is available.') + '

' ); Ox.Button({ id: 'update', title: Ox._('Install Now'), width: 128 }).bindEvent({ click: function() { var _this = this; this.options({ disabled: true, title: Ox._('Downloading...') }); oml.isRelaunching = true; oml.api.restart({update: true}, function(response) { if (response.status.code == 200) { _this.options({ title: Ox._('Installing...') }); setTimeout(reload, 500); } else { _this.options({ title: Ox._('Download failed...') }); } }); } }).appendTo($content); } } else { if (response.data.current == 'git') { $content.html( titleHTML + '

' + Ox._('You are up to date.') + '

' ); } else { $content.html( titleHTML + '

' + Ox._('You are running Open Media Library version {0}.', [response.data.current]) + '

' + Ox._('You are up to date.') + '

' ); } } }); } else { $content.html('

' + title + '

' + '

The lazy brown fox jumped over the lazy black fox, but other than that not really much happened here since you last checked.'); } $('

') .css({ position: 'absolute', left: '16px', right: '16px', top: '16px', overflowY: 'auto' }) .append($content) .appendTo($text); return Ox.SplitPanel({ elements: [ { element: $logo, size: 208 }, { element: $text } ], orientation: 'horizontal' }); }, style: 'squared', tabs: tabs }) .bindEvent({ change: function(data) { oml.UI.set({'part.app': data.selected}); } }), that = Ox.Dialog({ buttons: [ Ox.Button({ id: 'update', style: 'squared', title: Ox._('Software Update...') }) .bindEvent({ click: function() { oml.UI.set({page: 'update'}); } }), {}, Ox.Button({ id: 'close', style: 'squared', title: Ox._('Close') }).bindEvent({ click: function() { that.close(); } }) ], closeButton: true, content: $panel, fixedSize: true, height: 384, removeOnClose: true, style: 'squared', title: 'Open Media Library', width: 768 }) .bindEvent({ close: function() { if (ui.page == 'app') { oml.UI.set({page: ''}); } }, 'oml_part.app': function() { if (ui.page == 'app') { that.updateElement(); } } }); that.updateElement = function(section) { $panel.selectTab(section); }; function reload() { var ws = new WebSocket('ws:' + document.location.host + '/ws'); ws.onopen = function(event) { document.location.href = document.location.protocol + '//' + document.location.host; }; ws.onerror = function(event) { ws.close(); }; ws.onclose = function(event) { setTimeout(reload, 500); }; } return that; };