diff options
-rwxr-xr-x | autotest-external.sh | 2 | ||||
-rw-r--r-- | core/js/setupchecks.js | 2 | ||||
-rw-r--r-- | core/js/tests/specs/setupchecksSpec.js | 8 | ||||
-rw-r--r-- | lib/private/share/share.php | 2 | ||||
-rw-r--r-- | settings/Controller/AppSettingsController.php | 25 | ||||
-rw-r--r-- | settings/js/apps.js | 2 | ||||
-rw-r--r-- | settings/js/users/groups.js | 2 | ||||
-rw-r--r-- | settings/templates/apps.php | 2 | ||||
-rw-r--r-- | tests/core/command/encryption/changekeystorageroottest.php | 4 |
9 files changed, 38 insertions, 11 deletions
diff --git a/autotest-external.sh b/autotest-external.sh index 643153bb064..ef6516c0721 100755 --- a/autotest-external.sh +++ b/autotest-external.sh @@ -218,7 +218,7 @@ EOF stopFile=`echo "$startFile" | sed 's/start/stop/'` echo "stop: $stopFile" if [ -f $FILES_EXTERNAL_BACKEND_ENV_PATH/$stopFile ]; then - # execute stop file if existant + # execute stop file if existent ./$FILES_EXTERNAL_BACKEND_ENV_PATH/$stopFile fi if [ "$DOEXIT" ]; then diff --git a/core/js/setupchecks.js b/core/js/setupchecks.js index 025cdb0fcd6..4cc50e51ae6 100644 --- a/core/js/setupchecks.js +++ b/core/js/setupchecks.js @@ -273,7 +273,7 @@ } } - var minimumSeconds = 15768000; + var minimumSeconds = 15552000; if(isNaN(transportSecurityValidity) || transportSecurityValidity <= (minimumSeconds - 1)) { messages.push({ msg: t('core', 'The "Strict-Transport-Security" HTTP header is not configured to at least "{seconds}" seconds. For enhanced security we recommend enabling HSTS as described in our <a href="{docUrl}" rel="noreferrer">security tips</a>.', {'seconds': minimumSeconds, docUrl: '#admin-tips'}), diff --git a/core/js/tests/specs/setupchecksSpec.js b/core/js/tests/specs/setupchecksSpec.js index 6dd8657a077..4931ca990da 100644 --- a/core/js/tests/specs/setupchecksSpec.js +++ b/core/js/tests/specs/setupchecksSpec.js @@ -542,7 +542,7 @@ describe('OC.SetupChecks tests', function() { async.done(function( data, s, x ){ expect(data).toEqual([{ - msg: 'The "Strict-Transport-Security" HTTP header is not configured to at least "15768000" seconds. For enhanced security we recommend enabling HSTS as described in our <a href="#admin-tips" rel="noreferrer">security tips</a>.', + msg: 'The "Strict-Transport-Security" HTTP header is not configured to at least "15552000" seconds. For enhanced security we recommend enabling HSTS as described in our <a href="#admin-tips" rel="noreferrer">security tips</a>.', type: OC.SetupChecks.MESSAGE_TYPE_WARNING }]); done(); @@ -555,7 +555,7 @@ describe('OC.SetupChecks tests', function() { suite.server.requests[0].respond(200, { - 'Strict-Transport-Security': 'max-age=15767999', + 'Strict-Transport-Security': 'max-age=15551999', 'X-XSS-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosniff', 'X-Robots-Tag': 'none', @@ -567,7 +567,7 @@ describe('OC.SetupChecks tests', function() { async.done(function( data, s, x ){ expect(data).toEqual([{ - msg: 'The "Strict-Transport-Security" HTTP header is not configured to at least "15768000" seconds. For enhanced security we recommend enabling HSTS as described in our <a href="#admin-tips" rel="noreferrer">security tips</a>.', + msg: 'The "Strict-Transport-Security" HTTP header is not configured to at least "15552000" seconds. For enhanced security we recommend enabling HSTS as described in our <a href="#admin-tips" rel="noreferrer">security tips</a>.', type: OC.SetupChecks.MESSAGE_TYPE_WARNING }]); done(); @@ -592,7 +592,7 @@ describe('OC.SetupChecks tests', function() { async.done(function( data, s, x ){ expect(data).toEqual([{ - msg: 'The "Strict-Transport-Security" HTTP header is not configured to at least "15768000" seconds. For enhanced security we recommend enabling HSTS as described in our <a href="#admin-tips" rel="noreferrer">security tips</a>.', + msg: 'The "Strict-Transport-Security" HTTP header is not configured to at least "15552000" seconds. For enhanced security we recommend enabling HSTS as described in our <a href="#admin-tips" rel="noreferrer">security tips</a>.', type: OC.SetupChecks.MESSAGE_TYPE_WARNING }]); done(); diff --git a/lib/private/share/share.php b/lib/private/share/share.php index 3dcfa14079b..c6f7258c536 100644 --- a/lib/private/share/share.php +++ b/lib/private/share/share.php @@ -1265,7 +1265,7 @@ class Share extends Constants { /** * validate expiration date if it meets all constraints * - * @param string $expireDate well formate date string, e.g. "DD-MM-YYYY" + * @param string $expireDate well formatted date string, e.g. "DD-MM-YYYY" * @param string $shareTime timestamp when the file was shared * @param string $itemType * @param string $itemSource diff --git a/settings/Controller/AppSettingsController.php b/settings/Controller/AppSettingsController.php index cc69d3130d9..6c86cbf2cd3 100644 --- a/settings/Controller/AppSettingsController.php +++ b/settings/Controller/AppSettingsController.php @@ -259,6 +259,12 @@ class AppSettingsController extends Controller { $apps = array_filter($apps, function ($app) use ($installedApps) { return !in_array($app['id'], $installedApps); }); + + // show tooltip if app is downloaded from remote server + $inactiveApps = $this->getInactiveApps(); + foreach ($apps as &$app) { + $app['needsDownload'] = !in_array($app['id'], $inactiveApps); + } } // sort by score @@ -319,4 +325,23 @@ class AppSettingsController extends Controller { }); return $apps; } + + /** + * @return array + */ + private function getInactiveApps() { + $inactiveApps = \OC_App::listAllApps(true, false, $this->ocsClient); + $inactiveApps = array_filter($inactiveApps, + function ($app) { + return !$app['active']; + }); + $inactiveApps = array_map(function($app) { + if (isset($app['ocsid'])) { + return $app['ocsid']; + } + return $app['id']; + }, $inactiveApps); + return $inactiveApps; + } + } diff --git a/settings/js/apps.js b/settings/js/apps.js index e052a9ee9d3..1b687012815 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -119,6 +119,8 @@ OC.Settings.Apps = OC.Settings.Apps || { $('#apps-list-empty').removeClass('hidden').find('h2').text(t('settings', 'No apps found for your version')); } + $('.enable.needs-download').tipsy({fallback: t('settings', 'The app will be downloaded from the app store')}); + $('.app-level .official').tipsy({fallback: t('settings', 'Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use.')}); $('.app-level .approved').tipsy({fallback: t('settings', 'Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use.')}); $('.app-level .experimental').tipsy({fallback: t('settings', 'This app is not checked for security issues and is new or known to be unstable. Install at your own risk.')}); diff --git a/settings/js/users/groups.js b/settings/js/users/groups.js index 27c41884504..36ebbd2fa6e 100644 --- a/settings/js/users/groups.js +++ b/settings/js/users/groups.js @@ -31,7 +31,7 @@ GroupList = { setUserCount: function (groupLiElement, usercount) { if ($sortGroupBy !== 1) { - // If we don't sort by group count we dont display them either + // If we don't sort by group count we don't display them either return; } diff --git a/settings/templates/apps.php b/settings/templates/apps.php index 47d1eff463e..ce6dcef842c 100644 --- a/settings/templates/apps.php +++ b/settings/templates/apps.php @@ -134,7 +134,7 @@ script( <br /> <input type="hidden" id="group_select" title="<?php p($l->t('All')); ?>" style="width: 200px"> {{else}} - <input class="enable" type="submit" data-appid="{{id}}" data-active="false" {{#unless canInstall}}disabled="disabled"{{/unless}} value="<?php p($l->t("Enable"));?>"/> + <input class="enable{{#if needsDownload}} needs-download{{/if}}" type="submit" data-appid="{{id}}" data-active="false" {{#unless canInstall}}disabled="disabled"{{/unless}} value="<?php p($l->t("Enable"));?>"/> {{/if}} {{#if canUnInstall}} <input class="uninstall" type="submit" value="<?php p($l->t('Uninstall App')); ?>" data-appid="{{id}}" /> diff --git a/tests/core/command/encryption/changekeystorageroottest.php b/tests/core/command/encryption/changekeystorageroottest.php index 6cb52cdea99..2a1f48983f1 100644 --- a/tests/core/command/encryption/changekeystorageroottest.php +++ b/tests/core/command/encryption/changekeystorageroottest.php @@ -74,9 +74,9 @@ class ChangeKeyStorageRootTest extends TestCase { $this->outputInterface = $this->getMock('Symfony\Component\Console\Output\OutputInterface'); $this->userInterface = $this->getMock('\OCP\UserInterface'); - $outputFormaterInterface = $this->getMock('Symfony\Component\Console\Formatter\OutputFormatterInterface'); + $outputFormatterInterface = $this->getMock('Symfony\Component\Console\Formatter\OutputFormatterInterface'); $this->outputInterface->expects($this->any())->method('getFormatter') - ->willReturn($outputFormaterInterface); + ->willReturn($outputFormatterInterface); $this->changeKeyStorageRoot = new ChangeKeyStorageRoot( $this->view, |