]> source.dussan.org Git - nextcloud-server.git/commitdiff
Added update overview page
authorVincent Petry <pvince81@owncloud.com>
Mon, 26 May 2014 16:43:26 +0000 (18:43 +0200)
committerVincent Petry <pvince81@owncloud.com>
Tue, 27 May 2014 12:53:08 +0000 (14:53 +0200)
core/js/js.js
core/js/update.js
core/templates/update.admin.php
lib/base.php

index 38b97590430d26fe27154693387a9164738e40f7..80cd0104fec328ece3a357cf775d19200b7618c8 100644 (file)
@@ -175,9 +175,13 @@ var OC={
        PERMISSION_DELETE:8,
        PERMISSION_SHARE:16,
        PERMISSION_ALL:31,
+       /* jshint camelcase: false */
        webroot:oc_webroot,
        appswebroots:(typeof oc_appswebroots !== 'undefined') ? oc_appswebroots:false,
        currentUser:(typeof oc_current_user!=='undefined')?oc_current_user:false,
+       config: oc_config,
+       appConfig: oc_appconfig || {},
+       theme: oc_defaults || {},
        coreApps:['', 'admin','log','search','settings','core','3rdparty'],
        
        /**
index b1b7f6e37e81293f3932ca286b207169cbe879cc..abf2d6ae6db80e21efdde05b8030ae0d34f1d570 100644 (file)
@@ -1,26 +1,84 @@
-$(document).ready(function () {
-       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'));
-               message = t('core', 'Please reload the page.');
-               $('<span>').addClass('error').append(message).append('<br />').appendTo($('.update'));
-               updateEventSource.close();
-       });
-       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);
+/*
+ * Copyright (c) 2014
+ *
+ * This file is licensed under the Affero General Public License version 3
+ * or later.
+ *
+ * See the COPYING-README file.
+ *
+ */
+
+(function() {
+       OC.Update = {
+               _started : false,
+
+               /**
+                * Start the upgrade process.
+                *
+                * @param $el progress list element
+                */
+               start: function($el) {
+                       var self = this;
+                       if (this._started) {
+                               return;
+                       }
+
+                       this.$el = $el;
+
+                       this._started = true;
+                       this.addMessage(t(
+                               'core',
+                               'Updating {productName} to version {version}, this may take a while.', {
+                                       productName: OC.theme.name,
+                                       version: OC.config.versionstring
+                               }),
+                               'bold'
+                       ).append('<br />'); // FIXME: these should be ul/li with CSS paddings!
+
+                       var updateEventSource = new OC.EventSource(OC.webroot+'/core/ajax/update.php');
+                       updateEventSource.listen('success', function(message) {
+                               $('<span>').append(message).append('<br />').appendTo($el);
+                       });
+                       updateEventSource.listen('error', function(message) {
+                               $('<span>').addClass('error').append(message).append('<br />').appendTo($el);
+                               message = t('core', 'Please reload the page.');
+                               $('<span>').addClass('error').append(message).append('<br />').appendTo($el);
+                               updateEventSource.close();
+                       });
+                       updateEventSource.listen('failure', function(message) {
+                               $('<span>').addClass('error').append(message).append('<br />').appendTo($el);
+                               $('<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($el);
+                       });
+                       updateEventSource.listen('done', function(message) {
+                               // FIXME: use product name
+                               $('<span>').addClass('bold').append('<br />').append(t('core', 'The update was successful. Redirecting you to ownCloud now.')).appendTo($el);
+                               setTimeout(function () {
+                                       OC.redirect(OC.webroot);
+                               }, 3000);
+                       });
+               },
+
+               addMessage: function(message, className) {
+                       var $span = $('<span>');
+                       $span.addClass(className).append(message).append('<br />').appendTo(this.$el);
+                       return $span;
+               }
+       };
+
+})();
+
+$(document).ready(function() {
+       $('.updateForm').on('submit', function(ev) {
+               ev.preventDefault();
+               var $progressEl = $('.updateProgress');
+               $progressEl.removeClass('hidden');
+               $('.updateForm').addClass('hidden');
+               OC.Update.start($progressEl);
+               return false;
        });
 });
index a652d5f195a4830651c291f20a8fbad036d5048d..0b1ae7854decb23d63410c8487a20b22502a1046 100644 (file)
@@ -1,6 +1,32 @@
-<ul>
-       <li class='update'>
-               <?php p($l->t('Updating ownCloud to version %s, this may take a while.',
-                       array($_['version']))); ?><br /><br />
-       </li>
-</ul>
+<div class="update">
+       <form name="updateForm" class="updateForm">
+               <h2 class="title bold">
+               <?php p($l->t('%s will be updated to version %s.',
+                       array($_['productName'], $_['version']))); ?>
+               </h2>
+               <?php if (!empty($_['appList'])) { ?>
+               <div class="section">
+                       <div class="title bold"><?php p($l->t('The following apps will be disabled during the upgrade:')) ?></div>
+                       <ul class="content appList">
+                       <?php foreach ($_['appList'] as $appName) { ?>
+                       <li><?php p($appName) ?></li>
+                       <?php } ?>
+                       </ul>
+               </div>
+               <?php } ?>
+               <?php if (!empty($_['oldTheme'])) { ?>
+               <div class="section">
+                       <div class="title bold"><?php p($l->t('The theme %s has been disabled.', array($_['oldTheme']))) ?></div>
+               </div>
+               <?php } ?>
+               <div class="section">
+                       <div class="title bold"><?php p($l->t('Please make sure that the database and the data folder have been backed up before proceeding.')) ?></div>
+               </div>
+               <div class="section">
+                       <input type="submit" value="<?php p($l->t('Start upgrade')) ?>"></input>
+               </div>
+       </form>
+
+       <div class="updateProgress hidden">
+       </div>
+</div>
index a022b9d005b0d90ca0212aba78732ac0e263c483..455e8ad461333a91aa30069e84b244f4dc792f23 100644 (file)
@@ -284,11 +284,26 @@ class OC {
        public static function checkUpgrade($showTemplate = true) {
                if (self::needUpgrade()) {
                        if ($showTemplate && !OC_Config::getValue('maintenance', false)) {
+                               $version = OC_Util::getVersion();
+                               $oldTheme = OC_Config::getValue('theme');
                                OC_Config::setValue('theme', '');
                                OC_Util::addScript('config'); // needed for web root
                                OC_Util::addScript('update');
                                $tmpl = new OC_Template('', 'update.admin', 'guest');
                                $tmpl->assign('version', OC_Util::getVersionString());
+
+                               // get third party apps
+                               $apps = OC_App::getEnabledApps();
+                               $incompatibleApps = array();
+                               foreach ($apps as $appId) {
+                                       $info = OC_App::getAppInfo($appId);
+                                       if(!OC_App::isAppCompatible($version, $info)) {
+                                               $incompatibleApps[] = $info['name'];
+                                       }
+                               }
+                               $tmpl->assign('appList', $incompatibleApps);
+                               $tmpl->assign('productName', 'ownCloud'); // for now
+                               $tmpl->assign('oldTheme', $oldTheme);
                                $tmpl->printPage();
                                exit();
                        } else {