From e4227658d9d80725620ab33b68de5c26c8ed67ad Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Wed, 15 Oct 2014 21:59:16 +0200 Subject: [PATCH] Migrate new app settings to AppFramework Let's migrate those two new files. --- settings/ajax/apps/categories.php | 30 ---- settings/ajax/apps/index.php | 65 --------- settings/application.php | 10 +- settings/controller/appsettingscontroller.php | 132 ++++++++++++++++++ settings/routes.php | 6 +- 5 files changed, 143 insertions(+), 100 deletions(-) delete mode 100644 settings/ajax/apps/categories.php delete mode 100644 settings/ajax/apps/index.php create mode 100644 settings/controller/appsettingscontroller.php diff --git a/settings/ajax/apps/categories.php b/settings/ajax/apps/categories.php deleted file mode 100644 index 3bde28be99..0000000000 --- a/settings/ajax/apps/categories.php +++ /dev/null @@ -1,30 +0,0 @@ - - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -OC_JSON::checkAdminUser(); - -$l = OC_L10N::get('settings'); - -$categories = array( - array('id' => 0, 'displayName' => (string)$l->t('Enabled') ), - array('id' => 1, 'displayName' => (string)$l->t('Not enabled') ), -); - -if(OC_Config::getValue('appstoreenabled', true)) { - $categories[] = array('id' => 2, 'displayName' => (string)$l->t('Recommended') ); - // apps from external repo via OCS - $ocs = OC_OCSClient::getCategories(); - foreach($ocs as $k => $v) { - $categories[] = array( - 'id' => $k, - 'displayName' => str_replace('ownCloud ', '', $v) - ); - } -} - -OCP\JSON::success($categories); diff --git a/settings/ajax/apps/index.php b/settings/ajax/apps/index.php deleted file mode 100644 index 24fba8be31..0000000000 --- a/settings/ajax/apps/index.php +++ /dev/null @@ -1,65 +0,0 @@ - - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. - */ - -OC_JSON::checkAdminUser(); - -$l = OC_L10N::get('settings'); - -$category = intval($_GET['category']); -$apps = array(); - -switch($category) { - // installed apps - case 0: - $apps = \OC_App::listAllApps(true); - $apps = array_filter($apps, function($app) { - return $app['active']; - }); - break; - // not-installed apps - case 1: - $apps = \OC_App::listAllApps(true); - $apps = array_filter($apps, function($app) { - return !$app['active']; - }); - break; - default: - if ($category === 2) { - $apps = \OC_App::getAppstoreApps('approved'); - $apps = array_filter($apps, function($app) { - return isset($app['internalclass']) && $app['internalclass'] === 'recommendedapp'; - }); - } else { - $apps = \OC_App::getAppstoreApps('approved', $category); - } - if (!$apps) { - $apps = array(); - } - usort($apps, function ($a, $b) { - $a = (int)$a['score']; - $b = (int)$b['score']; - if ($a === $b) { - return 0; - } - return ($a > $b) ? -1 : 1; - }); - break; -} - -// fix groups to be an array -$apps = array_map(function($app){ - $groups = array(); - if (is_string($app['groups'])) { - $groups = json_decode($app['groups']); - } - $app['groups'] = $groups; - $app['canUnInstall'] = !$app['active'] && $app['removable']; - return $app; -}, $apps); - -OCP\JSON::success(array("apps" => $apps)); diff --git a/settings/application.php b/settings/application.php index b17ca01c2f..99d78aff2c 100644 --- a/settings/application.php +++ b/settings/application.php @@ -11,6 +11,7 @@ namespace OC\Settings; use OC\AppFramework\Utility\SimpleContainer; +use OC\Settings\Controller\AppSettingsController; use OC\Settings\Controller\MailSettingsController; use \OCP\AppFramework\App; use \OCP\Util; @@ -44,7 +45,14 @@ class Application extends App { $c->query('DefaultMailAddress') ); }); - + $container->registerService('AppSettingsController', function(SimpleContainer $c) { + return new AppSettingsController( + $c->query('AppName'), + $c->query('Request'), + $c->query('L10N'), + $c->query('Config') + ); + }); /** * Core class wrappers */ diff --git a/settings/controller/appsettingscontroller.php b/settings/controller/appsettingscontroller.php new file mode 100644 index 0000000000..27205400af --- /dev/null +++ b/settings/controller/appsettingscontroller.php @@ -0,0 +1,132 @@ +l10n = $l10n; + $this->config = $config; + } + + /** + * Get all available categories + * @return array + */ + public function listCategories() { + + $categories = array( + array('id' => 0, 'displayName' => (string)$this->l10n->t('Enabled') ), + array('id' => 1, 'displayName' => (string)$this->l10n->t('Not enabled') ), + ); + + if($this->config->getSystemValue('appstoreenabled', true)) { + $categories[] = array('id' => 2, 'displayName' => (string)$this->l10n->t('Recommended') ); + // apps from external repo via OCS + $ocs = \OC_OCSClient::getCategories(); + foreach($ocs as $k => $v) { + $categories[] = array( + 'id' => $k, + 'displayName' => str_replace('ownCloud ', '', $v) + ); + } + } + + $categories['status'] = 'success'; + + return $categories; + } + + /** + * Get all available categories + * @param int $category + * @return array + */ + public function listApps($category = 0) { + $apps = array(); + + switch($category) { + // installed apps + case 0: + $apps = \OC_App::listAllApps(true); + $apps = array_filter($apps, function($app) { + return $app['active']; + }); + break; + // not-installed apps + case 1: + $apps = \OC_App::listAllApps(true); + $apps = array_filter($apps, function($app) { + return !$app['active']; + }); + break; + default: + if ($category === 2) { + $apps = \OC_App::getAppstoreApps('approved'); + $apps = array_filter($apps, function($app) { + return isset($app['internalclass']) && $app['internalclass'] === 'recommendedapp'; + }); + } else { + $apps = \OC_App::getAppstoreApps('approved', $category); + } + if (!$apps) { + $apps = array(); + } + usort($apps, function ($a, $b) { + $a = (int)$a['score']; + $b = (int)$b['score']; + if ($a === $b) { + return 0; + } + return ($a > $b) ? -1 : 1; + }); + break; + } + + // fix groups to be an array + $apps = array_map(function($app){ + $groups = array(); + if (is_string($app['groups'])) { + $groups = json_decode($app['groups']); + } + $app['groups'] = $groups; + $app['canUnInstall'] = !$app['active'] && $app['removable']; + return $app; + }, $apps); + + return array('apps' => $apps, 'status' => 'success'); + } + +} diff --git a/settings/routes.php b/settings/routes.php index b91b085f3a..82167ea639 100644 --- a/settings/routes.php +++ b/settings/routes.php @@ -13,6 +13,8 @@ $application->registerRoutes($this, array('routes' =>array( array('name' => 'MailSettings#setMailSettings', 'url' => '/settings/admin/mailsettings', 'verb' => 'POST'), array('name' => 'MailSettings#storeCredentials', 'url' => '/settings/admin/mailsettings/credentials', 'verb' => 'POST'), array('name' => 'MailSettings#sendTestMail', 'url' => '/settings/admin/mailtest', 'verb' => 'POST'), + array('name' => 'AppSettings#listCategories', 'url' => '/settings/apps/categories', 'verb' => 'GET'), + array('name' => 'AppSettings#listApps', 'url' => '/settings/apps/list', 'verb' => 'GET') ))); /** @var $this \OCP\Route\IRouter */ @@ -80,10 +82,6 @@ $this->create('settings_cert_remove', '/settings/ajax/removeRootCertificate') // apps $this->create('settings_ajax_enableapp', '/settings/ajax/enableapp.php') ->actionInclude('settings/ajax/enableapp.php'); -$this->create('settings_ajax_load_app_categories', '/settings/apps/categories') - ->actionInclude('settings/ajax/apps/categories.php'); -$this->create('settings_ajax_load_apps', '/settings/apps/list') - ->actionInclude('settings/ajax/apps/index.php'); $this->create('settings_ajax_disableapp', '/settings/ajax/disableapp.php') ->actionInclude('settings/ajax/disableapp.php'); $this->create('settings_ajax_updateapp', '/settings/ajax/updateapp.php')