[Pkg-owncloud-commits] [owncloud] 360/457: Load the update information asyncroniously to fix the page load speed

David Prévot taffit at moszumanska.debian.org
Sun Jun 28 20:06:44 UTC 2015


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

taffit pushed a commit to branch stable8
in repository owncloud.

commit 580155abe716dd9fb385823819c473313c4e3dd1
Author: Joas Schilling <nickvergessen at owncloud.com>
Date:   Wed Jun 10 12:01:54 2015 +0200

    Load the update information asyncroniously to fix the page load speed
---
 lib/private/app.php                           |  6 ++++--
 settings/controller/appsettingscontroller.php | 16 ++++++++++------
 settings/js/apps.js                           | 16 +++++++++++++++-
 settings/templates/apps.php                   |  4 +---
 4 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/lib/private/app.php b/lib/private/app.php
index a4dd513..4814561 100644
--- a/lib/private/app.php
+++ b/lib/private/app.php
@@ -797,9 +797,11 @@ class OC_App {
 	 * List all apps, this is used in apps.php
 	 *
 	 * @param bool $onlyLocal
+	 * @param bool $includeUpdateInfo Should we check whether there is an update
+	 *                                in the app store?
 	 * @return array
 	 */
-	public static function listAllApps($onlyLocal = false) {
+	public static function listAllApps($onlyLocal = false, $includeUpdateInfo = true) {
 		$installedApps = OC_App::getAllApps();
 
 		//TODO which apps do we want to blacklist and how do we integrate
@@ -841,7 +843,7 @@ class OC_App {
 					$info['removable'] = true;
 				}
 
-				$info['update'] = OC_Installer::isUpdateAvailable($app);
+				$info['update'] = ($includeUpdateInfo) ? OC_Installer::isUpdateAvailable($app) : null;
 
 				$appIcon = self::getAppPath($app) . '/img/' . $app . '.svg';
 				if (file_exists($appIcon)) {
diff --git a/settings/controller/appsettingscontroller.php b/settings/controller/appsettingscontroller.php
index f1b62bb..a98d297 100644
--- a/settings/controller/appsettingscontroller.php
+++ b/settings/controller/appsettingscontroller.php
@@ -147,16 +147,18 @@ class AppSettingsController extends Controller {
 	 * Get all available apps in a category
 	 *
 	 * @param int $category
+	 * @param bool $includeUpdateInfo Should we check whether there is an update
+	 *                                in the app store?
 	 * @return array
 	 */
-	public function listApps($category = 0) {
+	public function listApps($category = 0, $includeUpdateInfo = true) {
 		if(!is_null($this->cache->get('listApps-'.$category))) {
 			$apps = $this->cache->get('listApps-'.$category);
 		} else {
 			switch ($category) {
 				// installed apps
 				case 0:
-					$apps = $this->getInstalledApps();
+					$apps = $this->getInstalledApps($includeUpdateInfo);
 					usort($apps, function ($a, $b) {
 						$a = (string)$a['name'];
 						$b = (string)$b['name'];
@@ -168,7 +170,7 @@ class AppSettingsController extends Controller {
 					break;
 				// not-installed apps
 				case 1:
-					$apps = \OC_App::listAllApps(true);
+					$apps = \OC_App::listAllApps(true, $includeUpdateInfo);
 					$apps = array_filter($apps, function ($app) {
 						return !$app['active'];
 					});
@@ -189,7 +191,7 @@ class AppSettingsController extends Controller {
 						$apps = array();
 					} else {
 						// don't list installed apps
-						$installedApps = $this->getInstalledApps();
+						$installedApps = $this->getInstalledApps(false);
 						$installedApps = array_map(function ($app) {
 							if (isset($app['ocsid'])) {
 								return $app['ocsid'];
@@ -245,10 +247,12 @@ class AppSettingsController extends Controller {
 	}
 
 	/**
+	 * @param bool $includeUpdateInfo Should we check whether there is an update
+	 *                                in the app store?
 	 * @return array
 	 */
-	private function getInstalledApps() {
-		$apps = \OC_App::listAllApps(true);
+	private function getInstalledApps($includeUpdateInfo = true) {
+		$apps = \OC_App::listAllApps(true, $includeUpdateInfo);
 		$apps = array_filter($apps, function ($app) {
 			return $app['active'];
 		});
diff --git a/settings/js/apps.js b/settings/js/apps.js
index 1d115eb..2863e86 100644
--- a/settings/js/apps.js
+++ b/settings/js/apps.js
@@ -81,7 +81,7 @@ OC.Settings.Apps = OC.Settings.Apps || {
 		$('#app-category-' + categoryId).addClass('active');
 		OC.Settings.Apps.State.currentCategory = categoryId;
 
-		this._loadCategoryCall = $.ajax(OC.generateUrl('settings/apps/list?category={categoryId}', {
+		this._loadCategoryCall = $.ajax(OC.generateUrl('settings/apps/list?category={categoryId}&includeUpdateInfo=0', {
 			categoryId: categoryId
 		}), {
 			type:'GET',
@@ -123,6 +123,20 @@ OC.Settings.Apps = OC.Settings.Apps || {
 			},
 			complete: function() {
 				$('#apps-list').removeClass('icon-loading');
+				$.ajax(OC.generateUrl('settings/apps/list?category={categoryId}&includeUpdateInfo=1', {
+					categoryId: categoryId
+				}), {
+					type: 'GET',
+					success: function (apps) {
+						_.each(apps.apps, function(app) {
+							if (app.update) {
+								var $update = $('#app-' + app.id + ' .update');
+								$update.removeClass('hidden');
+								$update.val(t('settings', 'Update to %s').replace(/%s/g, app.update));
+							}
+						})
+					}
+				});
 			}
 		});
 	},
diff --git a/settings/templates/apps.php b/settings/templates/apps.php
index 0904f31..c88efb8 100644
--- a/settings/templates/apps.php
+++ b/settings/templates/apps.php
@@ -108,9 +108,7 @@ script(
 	</div>
 	{{/unless}}
 
-	{{#if update}}
-	<input class="update" type="submit" value="<?php p($l->t('Update to %s', array('{{update}}'))); ?>" data-appid="{{id}}" />
-	{{/if}}
+	<input class="update hidden" type="submit" value="<?php p($l->t('Update to %s', array('{{update}}'))); ?>" data-appid="{{id}}" />
 	{{#if active}}
 	<input class="enable" type="submit" data-appid="{{id}}" data-active="true" value="<?php p($l->t("Disable"));?>"/>
 	<input type="checkbox" class="groups-enable" id="groups_enable-{{id}}"/>

-- 
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