2014-05-26 20:43:26 +04:00
/ *
* 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
* /
2015-01-14 13:31:42 +03:00
start : function ( $el , options ) {
2014-05-26 20:43:26 +04:00
if ( this . _started ) {
return ;
}
2015-07-07 14:38:24 +03:00
var hasWarnings = false ;
2014-05-26 20:43:26 +04:00
this . $el = $el ;
this . _started = true ;
2015-10-13 18:34:13 +03:00
$ ( window ) . on ( 'beforeunload.inprogress' , function ( ) {
return t ( 'core' , 'The upgrade is in progress, leaving this page might interrupt the process in some environments.' ) ;
} ) ;
2014-05-26 20:43:26 +04:00
this . addMessage ( t (
'core' ,
'Updating {productName} to version {version}, this may take a while.' , {
2015-01-14 13:31:42 +03:00
productName : options . productName || 'ownCloud' ,
version : options . version
2014-05-26 20:43:26 +04:00
} ) ,
'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 ) ;
} ) ;
2015-02-17 14:00:39 +03:00
updateEventSource . listen ( 'notice' , function ( message ) {
$ ( '<span>' ) . addClass ( 'error' ) . append ( message ) . append ( '<br />' ) . appendTo ( $el ) ;
2015-07-07 14:38:24 +03:00
hasWarnings = true ;
2015-02-17 14:00:39 +03:00
} ) ;
2014-05-26 20:43:26 +04:00
updateEventSource . listen ( 'error' , function ( message ) {
2015-10-14 09:17:52 +03:00
message = message || t ( 'core' , 'An error occurred.' ) ;
2015-10-14 11:04:20 +03:00
$ ( window ) . off ( 'beforeunload.inprogress' ) ;
2014-05-26 20:43:26 +04:00
$ ( '<span>' ) . addClass ( 'error' ) . append ( message ) . append ( '<br />' ) . appendTo ( $el ) ;
message = t ( 'core' , 'Please reload the page.' ) ;
2015-10-10 21:14:01 +03:00
$ ( '<span>' ) . addClass ( 'error' ) . append ( '<a href=".">' + message + '</a><br />' ) . appendTo ( $el ) ;
2014-05-26 20:43:26 +04:00
updateEventSource . close ( ) ;
} ) ;
updateEventSource . listen ( 'failure' , function ( message ) {
2015-10-14 11:04:20 +03:00
$ ( window ) . off ( 'beforeunload.inprogress' ) ;
2014-05-26 20:43:26 +04:00
$ ( '<span>' ) . addClass ( 'error' ) . append ( message ) . append ( '<br />' ) . appendTo ( $el ) ;
2016-02-08 11:19:16 +03:00
var span = $ ( '<span>' )
. addClass ( 'bold' ) ;
if ( message === 'Exception: Updates between multiple major versions and downgrades are unsupported.' ) {
2016-02-08 12:28:20 +03:00
span . append ( t ( 'core' , 'The update was unsuccessful. For more information <a href="{url}">check our forum post</a> covering this issue.' , { 'url' : 'https://forum.owncloud.org/viewtopic.php?f=17&t=32087' } ) ) ;
2016-02-08 11:19:16 +03:00
} else {
span . 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>.' ) ) ;
}
span . appendTo ( $el ) ;
2014-05-26 20:43:26 +04:00
} ) ;
2014-05-28 13:29:22 +04:00
updateEventSource . listen ( 'done' , function ( ) {
2015-10-13 18:34:13 +03:00
$ ( window ) . off ( 'beforeunload.inprogress' ) ;
2015-07-07 14:38:24 +03:00
if ( hasWarnings ) {
$ ( '<span>' ) . addClass ( 'bold' )
. append ( '<br />' )
. append ( t ( 'core' , 'The update was successful. There were warnings.' ) )
. appendTo ( $el ) ;
var message = t ( 'core' , 'Please reload the page.' ) ;
$ ( '<span>' ) . append ( '<br />' ) . append ( message ) . append ( '<br />' ) . appendTo ( $el ) ;
} else {
// 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 ( ) {
2015-12-07 20:08:00 +03:00
OC . redirect ( OC . webroot + '/' ) ;
2015-07-07 14:38:24 +03:00
} , 3000 ) ;
}
2014-05-26 20:43:26 +04:00
} ) ;
} ,
addMessage : function ( message , className ) {
var $span = $ ( '<span>' ) ;
$span . addClass ( className ) . append ( message ) . append ( '<br />' ) . appendTo ( this . $el ) ;
return $span ;
}
} ;
} ) ( ) ;
$ ( document ) . ready ( function ( ) {
2014-05-28 13:29:22 +04:00
$ ( '.updateButton' ) . on ( 'click' , function ( ) {
2015-01-14 13:31:42 +03:00
var $updateEl = $ ( '.update' ) ;
2014-05-26 20:43:26 +04:00
var $progressEl = $ ( '.updateProgress' ) ;
$progressEl . removeClass ( 'hidden' ) ;
2014-05-28 13:29:22 +04:00
$ ( '.updateOverview' ) . addClass ( 'hidden' ) ;
2015-01-14 13:31:42 +03:00
OC . Update . start ( $progressEl , {
productName : $updateEl . attr ( 'data-productname' ) ,
version : $updateEl . attr ( 'data-version' ) ,
} ) ;
2014-05-26 20:43:26 +04:00
return false ;
2013-01-25 22:18:16 +04:00
} ) ;
2013-07-11 02:00:01 +04:00
} ) ;