[Pkg-owncloud-commits] [owncloud] 03/223: add button for properly uninstalling apps

David Prévot taffit at moszumanska.debian.org
Sun Jun 22 01:53:58 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository owncloud.

commit 020255b4e545413fd724fbd397662f6c4265caa3
Author: Georg Ehrke <developer at georgehrke.com>
Date:   Sat May 31 17:50:39 2014 +0200

    add button for properly uninstalling apps
---
 lib/private/app.php         | 10 ++++------
 lib/private/installer.php   | 18 +++++++++++++-----
 settings/js/apps.js         | 28 ++++++++++++++++++++++++++++
 settings/routes.php         |  2 ++
 settings/templates/apps.php |  1 +
 5 files changed, 48 insertions(+), 11 deletions(-)

diff --git a/lib/private/app.php b/lib/private/app.php
index fe1fa6a..0e2c023 100644
--- a/lib/private/app.php
+++ b/lib/private/app.php
@@ -248,11 +248,6 @@ class OC_App{
 			return false;
 		}
 
-		$disable = self::disable($app);
-		if (!$disable) {
-			return false;
-		}
-
 		return OC_Installer::removeApp($app);
 	}
 
@@ -784,10 +779,12 @@ class OC_App{
 					$info['internal']=true;
 					$info['internallabel']='Internal App';
 					$info['internalclass']='';
+					$info['removable'] = false;
 				} else {
 					$info['internal']=false;
 					$info['internallabel']='3rd Party';
 					$info['internalclass']='externalapp';
+					$info['removable'] = true;
 				}
 
 				$info['update'] = OC_Installer::isUpdateAvailable($app);
@@ -797,7 +794,7 @@ class OC_App{
 				$appList[] = $info;
 			}
 		}
-		$remoteApps = OC_App::getAppstoreApps();
+		$remoteApps = self::getAppstoreApps();
 		if ( $remoteApps ) {
 			// Remove duplicates
 			foreach ( $appList as $app ) {
@@ -876,6 +873,7 @@ class OC_App{
 				$app1[$i]['ocs_id'] = $app['id'];
 				$app1[$i]['internal'] = $app1[$i]['active'] = 0;
 				$app1[$i]['update'] = false;
+				$app1[$i]['removable'] = false;
 				if($app['label']=='recommended') {
 					$app1[$i]['internallabel'] = 'Recommended';
 					$app1[$i]['internalclass'] = 'recommendedapp';
diff --git a/lib/private/installer.php b/lib/private/installer.php
index 6940a1d..c82e19b 100644
--- a/lib/private/installer.php
+++ b/lib/private/installer.php
@@ -366,19 +366,25 @@ class OC_Installer{
 	 * The function will check if the app is already downloaded in the apps repository
 	 */
 	public static function isDownloaded( $name ) {
-
-		$downloaded=false;
 		foreach(OC::$APPSROOTS as $dir) {
-			if(is_dir($dir['path'].'/'.$name)) $downloaded=true;
+			$dirToTest  = $dir['path'];
+			$dirToTest .= '/';
+			$dirToTest .= $name;
+			$dirToTest .= '/';
+
+			if (is_dir($dirToTest)) {
+				return true;
+			}
 		}
-		return($downloaded);
+
+		return false;
 	}
 
 	/**
 	 * Removes an app
 	 * @param string $name name of the application to remove
 	 * @param array $options options
-	 * @return boolean|null
+	 * @return boolean
 	 *
 	 * This function removes an app. $options is an associative array. The
 	 * following keys are optional:ja
@@ -420,9 +426,11 @@ class OC_Installer{
 			$appdir=OC_App::getInstallPath().'/'.$name;
 			OC_Helper::rmdirr($appdir);
 
+			return true;
 		}else{
 			OC_Log::write('core', 'can\'t remove app '.$name.'. It is not installed.', OC_Log::ERROR);
 
+			return false;
 		}
 
 	}
diff --git a/settings/js/apps.js b/settings/js/apps.js
index 05db4c9..5045992 100644
--- a/settings/js/apps.js
+++ b/settings/js/apps.js
@@ -69,6 +69,14 @@ OC.Settings.Apps = OC.Settings.Apps || {
 			page.find('input.update').hide();
 		}
 
+		if (app.removable !== false) {
+			page.find('input.uninstall').show();
+			page.find('input.uninstall').data('appid', app.id);
+			page.find('input.uninstall').attr('value', t('settings', 'Uninstall App'));
+		} else {
+			page.find('input.uninstall').hide();
+		}
+
 		page.find('input.enable').show();
 		page.find('input.enable').val((app.active) ? t('settings', 'Disable') : t('settings', 'Enable'));
 		page.find('input.enable').data('appid', app.id);
@@ -158,6 +166,19 @@ OC.Settings.Apps = OC.Settings.Apps || {
 			}
 		},'json');
 	},
+	uninstallApp:function(appid, element) {
+		console.log('uninstall app:', appid, element);
+		element.val(t('settings','Uninstalling ....'));
+		$.post(OC.filePath('settings','ajax','uninstallapp.php'),{appid:appid},function(result) {
+			if(!result || result.status !== 'success') {
+				OC.Settings.Apps.showErrorMessage(t('settings','Error while uninstalling app'),t('settings','Error'));
+				element.val(t('settings','Uninstall'));
+			} else {
+				OC.Settings.Apps.removeNavigation(appid);
+				appitem.removeClass('active');
+			}
+		},'json');
+	},
 
 	insertApp:function(appdata) {
 		var applist = $('#app-navigation ul li');
@@ -280,6 +301,13 @@ $(document).ready(function(){
 			OC.Settings.Apps.updateApp(appid, element);
 		}
 	});
+	$('#app-content input.uninstall').click(function(){
+		var element = $(this);
+		var appid=$(this).data('appid');
+		if(appid) {
+			OC.Settings.Apps.uninstallApp(appid, element);
+		}
+	});
 
 	if(appid) {
 		var item = $('#app-navigation ul li[data-id="'+appid+'"]');
diff --git a/settings/routes.php b/settings/routes.php
index 0e0f293..433c5d5 100644
--- a/settings/routes.php
+++ b/settings/routes.php
@@ -67,6 +67,8 @@ $this->create('settings_ajax_disableapp', '/settings/ajax/disableapp.php')
 	->actionInclude('settings/ajax/disableapp.php');
 $this->create('settings_ajax_updateapp', '/settings/ajax/updateapp.php')
 	->actionInclude('settings/ajax/updateapp.php');
+$this->create('settings_ajax_uninstallapp', '/settings/ajax/uninstallapp.php')
+	->actionInclude('settings/ajax/uninstallapp.php');
 $this->create('settings_ajax_navigationdetect', '/settings/ajax/navigationdetect.php')
 	->actionInclude('settings/ajax/navigationdetect.php');
 $this->create('apps_custom', '/settings/js/apps-custom.js')
diff --git a/settings/templates/apps.php b/settings/templates/apps.php
index b7f3b61..e2bc78b 100644
--- a/settings/templates/apps.php
+++ b/settings/templates/apps.php
@@ -53,6 +53,7 @@
 		print_unescaped($l->t('<span class="licence"></span>-licensed by <span class="author"></span>'));?></p>
 	<input class="enable hidden" type="submit" />
 	<input class="update hidden" type="submit" value="<?php p($l->t('Update')); ?>" />
+	<input class="uninstall hidden" type="submit" value="<?php p($l->t('Uninstall')); ?>"/>
 	<div class="warning hidden"></div>
 	</div>
 </div>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list