summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorMichael Gapczynski <mtgap@owncloud.com>2013-01-05 09:33:29 -0800
committerMichael Gapczynski <mtgap@owncloud.com>2013-01-05 09:33:29 -0800
commitda7a14e9a6cc5a388ae817a226af7fa262fe6846 (patch)
tree32901cc0472166121c1f1a99c78c41dbb4a7d232 /core
parent0c6213a371059952bc2393563ad93ca74fbdddfc (diff)
parent035d0aa9d5b2768672af89ddd543913ec1f6b657 (diff)
downloadnextcloud-server-da7a14e9a6cc5a388ae817a226af7fa262fe6846.tar.gz
nextcloud-server-da7a14e9a6cc5a388ae817a226af7fa262fe6846.zip
Merge pull request #1079 from owncloud/update-progress
Updater progress feedback
Diffstat (limited to 'core')
-rw-r--r--core/ajax/update.php67
-rw-r--r--core/css/styles.css3
-rw-r--r--core/templates/update.php31
3 files changed, 100 insertions, 1 deletions
diff --git a/core/ajax/update.php b/core/ajax/update.php
new file mode 100644
index 00000000000..20ab045c892
--- /dev/null
+++ b/core/ajax/update.php
@@ -0,0 +1,67 @@
+<?php
+set_time_limit(0);
+$RUNTIME_NOAPPS = true;
+require_once '../../lib/base.php';
+
+if (OC::checkUpgrade(false)) {
+ $updateEventSource = new OC_EventSource();
+ $watcher = new UpdateWatcher($updateEventSource);
+ OC_Hook::connect('update', 'success', $watcher, 'success');
+ OC_Hook::connect('update', 'error', $watcher, 'error');
+ OC_Hook::connect('update', 'error', $watcher, 'failure');
+ $watcher->success('Turned on maintenance mode');
+ try {
+ $result = OC_DB::updateDbFromStructure(OC::$SERVERROOT.'/db_structure.xml');
+ $watcher->success('Updated database');
+ } catch (Exception $exception) {
+ $watcher->failure($exception->getMessage());
+ }
+ $minimizerCSS = new OC_Minimizer_CSS();
+ $minimizerCSS->clearCache();
+ $minimizerJS = new OC_Minimizer_JS();
+ $minimizerJS->clearCache();
+ OC_Config::setValue('version', implode('.', OC_Util::getVersion()));
+ OC_App::checkAppsRequirements();
+ // load all apps to also upgrade enabled apps
+ OC_App::loadApps();
+ OC_Config::setValue('maintenance', false);
+ $watcher->success('Turned off maintenance mode');
+ $watcher->done();
+}
+
+class UpdateWatcher {
+ /**
+ * @var \OC_EventSource $eventSource;
+ */
+ private $eventSource;
+
+ public function __construct($eventSource) {
+ $this->eventSource = $eventSource;
+ }
+
+ public function success($message) {
+ OC_Util::obEnd();
+ $this->eventSource->send('success', $message);
+ ob_start();
+ }
+
+ public function error($message) {
+ OC_Util::obEnd();
+ $this->eventSource->send('error', $message);
+ ob_start();
+ }
+
+ public function failure($message) {
+ OC_Util::obEnd();
+ $this->eventSource->send('failure', $message);
+ $this->eventSource->close();
+ die();
+ }
+
+ public function done() {
+ OC_Util::obEnd();
+ $this->eventSource->send('done', '');
+ $this->eventSource->close();
+ }
+
+} \ No newline at end of file
diff --git a/core/css/styles.css b/core/css/styles.css
index d635916b5ae..6e1cef72eda 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -214,7 +214,8 @@ div.jp-play-bar, div.jp-seek-bar { padding:0; }
.pager { list-style:none; float:right; display:inline; margin:.7em 13em 0 0; }
.pager li { display:inline-block; }
-li.error { width:640px; margin:4em auto; padding:1em 1em 1em 4em; background:#ffe .8em .8em no-repeat; color:#FF3B3B; border:1px solid #ccc; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; }
+li.update, li.error { width:640px; margin:4em auto; padding:1em 1em 1em 4em; background:#ffe .8em .8em no-repeat; border:1px solid #ccc; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; cursor:default; }
+.error { color:#FF3B3B; }
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { overflow:hidden; text-overflow:ellipsis; }
.hint { background-image:url('../img/actions/info.png'); background-repeat:no-repeat; color:#777777; padding-left:25px; background-position:0 0.3em;}
.separator { display:inline; border-left:1px solid #d3d3d3; border-right:1px solid #fff; height:10px; width:0px; margin:4px; }
diff --git a/core/templates/update.php b/core/templates/update.php
new file mode 100644
index 00000000000..c9f3144f257
--- /dev/null
+++ b/core/templates/update.php
@@ -0,0 +1,31 @@
+<ul>
+ <li class='update'>
+ <?php echo $l->t('Updating ownCloud to version %s, this may take a while.', array($_['version'])); ?><br /><br />
+ </li>
+</ul>
+<script>
+ $(document).ready(function () {
+ OC.EventSource.requesttoken = oc_requesttoken;
+ var updateEventSource = new OC.EventSource(OC.webroot+'/core/ajax/update.php');
+ updateEventSource.listen('success', function(message) {
+ $('<span>').append(message).append('<br />').appendTo($('.update'));
+ });
+ updateEventSource.listen('error', function(message) {
+ $('<span>').addClass('error').append(message).append('<br />').appendTo($('.update'));
+ });
+ updateEventSource.listen('failure', function(message) {
+ $('<span>').addClass('error').append(message).append('<br />').appendTo($('.update'));
+ $('<span>')
+ .addClass('error bold')
+ .append('<br />')
+ .append(t('core', 'The update was unsuccessful. Please report this issue to the <a href="https://github.com/owncloud/core/issues" target="_blank">ownCloud community</a>.'))
+ .appendTo($('.update'));
+ });
+ updateEventSource.listen('done', function(message) {
+ $('<span>').addClass('bold').append('<br />').append(t('core', 'The update was successful. Redirecting you to ownCloud now.')).appendTo($('.update'));
+ setTimeout(function () {
+ window.location.href = OC.webroot;
+ }, 3000);
+ });
+ });
+</script> \ No newline at end of file