diff options
Diffstat (limited to 'apps')
55 files changed, 473 insertions, 244 deletions
diff --git a/apps/accessibility/appinfo/app.php b/apps/accessibility/appinfo/app.php index 7f8e3c3262b..96621a16829 100644 --- a/apps/accessibility/appinfo/app.php +++ b/apps/accessibility/appinfo/app.php @@ -27,4 +27,5 @@ $app = new \OCA\Accessibility\AppInfo\Application(); // Separate from the constructor since the route are not initialized before that // 1. create the app // 2. generate css route and inject -$app->injectCss();
\ No newline at end of file +$app->injectCss(); +$app->injectJavascript();
\ No newline at end of file diff --git a/apps/accessibility/appinfo/routes.php b/apps/accessibility/appinfo/routes.php index ebb845e06a3..52e74918216 100644 --- a/apps/accessibility/appinfo/routes.php +++ b/apps/accessibility/appinfo/routes.php @@ -22,8 +22,9 @@ */ return [ - 'routes' => [ - ['name' => 'accessibility#getCss', 'url' => '/css/user-{md5}.css', 'verb' => 'GET'], + 'routes' => [ + ['name' => 'accessibility#getCss', 'url' => '/css/user-{md5}.css', 'verb' => 'GET'], + ['name' => 'accessibility#getJavascript', 'url' => '/js/accessibility', 'verb' => 'GET'], ], 'ocs' => [ [ diff --git a/apps/accessibility/css/fontdyslexic.scss b/apps/accessibility/css/fontdyslexic.scss index 5df9bfb566c..45638271f90 100644 --- a/apps/accessibility/css/fontdyslexic.scss +++ b/apps/accessibility/css/fontdyslexic.scss @@ -19,4 +19,4 @@ src: url('../fonts/OpenDyslexic-Bold.woff') format('woff'); } -$font-face: OpenDyslexic, 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; +$font-face: OpenDyslexic, 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; diff --git a/apps/accessibility/css/themehighcontrast.scss b/apps/accessibility/css/themehighcontrast.scss index 3d371365d56..ad6f9a5642a 100644 --- a/apps/accessibility/css/themehighcontrast.scss +++ b/apps/accessibility/css/themehighcontrast.scss @@ -1,29 +1,3 @@ -// Fonts -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: normal; - src: local('Open Sans'), local('OpenSans'), - url('../../../core/fonts/OpenSans-Regular.woff') format('woff'); -} - -/* overriding default light */ -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 300; - src: local('Open Sans'), local('OpenSans'), - url('../../../core/fonts/OpenSans-Regular.woff') format('woff'); -} - -@font-face { - font-family: 'Open Sans'; - font-style: normal; - font-weight: 500 700; - src: local('Open Sans Bold'), local('OpenSans-Bold'), - url('../../../core/fonts/OpenSans-Bold.woff') format('woff'); -} - // SCSS variables $color-main-text: #000; $color-main-background: #fff; @@ -43,14 +17,6 @@ $color-box-shadow: $color-main-text; $color-border: darken($color-main-background, 50%); $color-border-dark: darken($color-main-background, 50%); -$font-face: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; - - -// Font weight reset -body { - font-weight: 400; -} - [class^='icon-'], [class*=' icon-'], .action { opacity: 1 !important; diff --git a/apps/accessibility/lib/AppInfo/Application.php b/apps/accessibility/lib/AppInfo/Application.php index 068fcc27b7a..6e3dc789d97 100644 --- a/apps/accessibility/lib/AppInfo/Application.php +++ b/apps/accessibility/lib/AppInfo/Application.php @@ -60,4 +60,22 @@ class Application extends App { } } } + + public function injectJavascript() { + $linkToJs = $this->urlGenerator->linkToRoute( + $this->appName . '.accessibility.getJavascript', + [ + 'v' => \OC::$server->getConfig()->getAppValue('accessibility', 'cachebuster', '0'), + ] + ); + + \OCP\Util::addHeader( + 'script', + [ + 'src' => $linkToJs, + 'nonce' => \OC::$server->getContentSecurityPolicyNonceManager()->getNonce() + ], + '' + ); + } } diff --git a/apps/accessibility/lib/Controller/AccessibilityController.php b/apps/accessibility/lib/Controller/AccessibilityController.php index 8f1ffa452af..a8fba556acb 100644 --- a/apps/accessibility/lib/Controller/AccessibilityController.php +++ b/apps/accessibility/lib/Controller/AccessibilityController.php @@ -28,6 +28,7 @@ use Leafo\ScssPhp\Formatter\Crunched; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataDisplayResponse; +use OCP\AppFramework\Http\DataDownloadResponse; use OCP\AppFramework\Utility\ITimeFactory; use OCP\App\IAppManager; use OCP\IConfig; @@ -185,6 +186,32 @@ class AccessibilityController extends Controller { } /** + * @NoCSRFRequired + * @PublicPage + * + * @return DataDownloadResponse + */ + public function getJavascript(): DataDownloadResponse { + $user = $this->userSession->getUser(); + + if ($user === null) { + $theme = false; + } else { + $theme = $this->config->getUserValue($user->getUID(), $this->appName, 'theme', false); + } + + $responseJS = '(function() { + OCA.Accessibility = { + theme: ' . json_encode($theme) . ', + + }; +})();'; + $response = new DataDownloadResponse($responseJS, 'javascript', 'text/javascript'); + $response->cacheFor(3600); + return $response; + } + + /** * Return an array with the user theme & font settings * * @return array diff --git a/apps/accessibility/package-lock.json b/apps/accessibility/package-lock.json index 6bb667631ac..a412f73adec 100644 --- a/apps/accessibility/package-lock.json +++ b/apps/accessibility/package-lock.json @@ -1317,7 +1317,7 @@ }, "browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { @@ -1354,7 +1354,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { @@ -1721,7 +1721,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { @@ -1734,7 +1734,7 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { @@ -1932,7 +1932,7 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { @@ -1957,9 +1957,9 @@ } }, "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", "dev": true, "requires": { "end-of-stream": "^1.0.0", @@ -2399,8 +2399,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -2815,8 +2814,7 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -2872,7 +2870,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2916,14 +2913,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -3605,13 +3600,14 @@ } }, "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, "requires": { "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "mem": { @@ -3810,9 +3806,9 @@ } }, "neo-async": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz", - "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", "dev": true }, "nice-try": { @@ -4045,7 +4041,7 @@ }, "parse-asn1": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", "dev": true, "requires": { @@ -4279,16 +4275,17 @@ "dev": true }, "public-encrypt": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", - "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", "create-hash": "^1.1.0", "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "pump": { @@ -4631,7 +4628,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { @@ -5346,9 +5343,9 @@ } }, "webpack": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.20.2.tgz", - "integrity": "sha512-75WFUMblcWYcocjSLlXCb71QuGyH7egdBZu50FtBGl2Nso8CK3Ej+J7bTZz2FPFq5l6fzCisD9modB7t30ikuA==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.22.0.tgz", + "integrity": "sha512-2+3EYFqyhPl12buLQ42QPHEEh8BHn3P9ipRvGRHhdfKJ1u9svhZ3QjhIoEdL5SeIhL5gfOZVbBnartYEabkEsg==", "dev": true, "requires": { "@webassemblyjs/ast": "1.7.8", diff --git a/apps/accessibility/package.json b/apps/accessibility/package.json index 1771ceedf50..322f0033c17 100644 --- a/apps/accessibility/package.json +++ b/apps/accessibility/package.json @@ -26,7 +26,7 @@ "file-loader": "^1.1.11", "vue-loader": "^15.4.2", "vue-template-compiler": "^2.5.17", - "webpack": "^4.20.2", + "webpack": "^4.22.0", "webpack-cli": "^3.1.2", "webpack-merge": "^4.1.4" } diff --git a/apps/comments/.l10nignore b/apps/comments/.l10nignore new file mode 100644 index 00000000000..8b832897e3f --- /dev/null +++ b/apps/comments/.l10nignore @@ -0,0 +1,2 @@ +# compiled vue templates +js/templates.js diff --git a/apps/comments/js/commentstabview.js b/apps/comments/js/commentstabview.js index 35e73d3f4a6..8ea4dbc2ff2 100644 --- a/apps/comments/js/commentstabview.js +++ b/apps/comments/js/commentstabview.js @@ -89,6 +89,10 @@ return t('comments', 'Comments'); }, + getIcon: function() { + return 'icon-comment'; + }, + setFileInfo: function(fileInfo) { if (fileInfo) { this.model = fileInfo; diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index 852ab9de971..d296661e8ac 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -5,7 +5,7 @@ <name>WebDAV</name> <summary>WebDAV endpoint</summary> <description>WebDAV endpoint</description> - <version>1.7.0</version> + <version>1.7.1</version> <licence>agpl</licence> <author>owncloud.org</author> <namespace>DAV</namespace> diff --git a/apps/dav/composer/composer/autoload_classmap.php b/apps/dav/composer/composer/autoload_classmap.php index b03e866ab54..fe7557f7e08 100644 --- a/apps/dav/composer/composer/autoload_classmap.php +++ b/apps/dav/composer/composer/autoload_classmap.php @@ -155,6 +155,7 @@ return array( 'OCA\\DAV\\Migration\\Version1005Date20180413093149' => $baseDir . '/../lib/Migration/Version1005Date20180413093149.php', 'OCA\\DAV\\Migration\\Version1005Date20180530124431' => $baseDir . '/../lib/Migration/Version1005Date20180530124431.php', 'OCA\\DAV\\Migration\\Version1006Date20180619154313' => $baseDir . '/../lib/Migration/Version1006Date20180619154313.php', + 'OCA\\DAV\\Migration\\Version1007Date20181007225117' => $baseDir . '/../lib/Migration/Version1007Date20181007225117.php', 'OCA\\DAV\\RootCollection' => $baseDir . '/../lib/RootCollection.php', 'OCA\\DAV\\Server' => $baseDir . '/../lib/Server.php', 'OCA\\DAV\\Settings\\CalDAVSettings' => $baseDir . '/../lib/Settings/CalDAVSettings.php', diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php index 0d4c8801382..1668f1270f5 100644 --- a/apps/dav/composer/composer/autoload_static.php +++ b/apps/dav/composer/composer/autoload_static.php @@ -170,6 +170,7 @@ class ComposerStaticInitDAV 'OCA\\DAV\\Migration\\Version1005Date20180413093149' => __DIR__ . '/..' . '/../lib/Migration/Version1005Date20180413093149.php', 'OCA\\DAV\\Migration\\Version1005Date20180530124431' => __DIR__ . '/..' . '/../lib/Migration/Version1005Date20180530124431.php', 'OCA\\DAV\\Migration\\Version1006Date20180619154313' => __DIR__ . '/..' . '/../lib/Migration/Version1006Date20180619154313.php', + 'OCA\\DAV\\Migration\\Version1007Date20181007225117' => __DIR__ . '/..' . '/../lib/Migration/Version1007Date20181007225117.php', 'OCA\\DAV\\RootCollection' => __DIR__ . '/..' . '/../lib/RootCollection.php', 'OCA\\DAV\\Server' => __DIR__ . '/..' . '/../lib/Server.php', 'OCA\\DAV\\Settings\\CalDAVSettings' => __DIR__ . '/..' . '/../lib/Settings/CalDAVSettings.php', diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php index e46bdcb2984..9e927ff85e5 100644 --- a/apps/dav/lib/Connector/Sabre/File.php +++ b/apps/dav/lib/Connector/Sabre/File.php @@ -140,6 +140,8 @@ class File extends Node implements IFile { list($partStorage) = $this->fileView->resolvePath($this->path); $needsPartFile = $partStorage->needsPartFile() && (strlen($this->path) > 1); + $view = \OC\Files\Filesystem::getView(); + if ($needsPartFile) { // mark file as partial while uploading (ignored by the scanner) $partFilePath = $this->getPartFileBasePath($this->path) . '.ocTransferId' . rand() . '.part'; @@ -147,11 +149,11 @@ class File extends Node implements IFile { // upload file directly as the final path $partFilePath = $this->path; - $this->emitPreHooks($exists); + if ($view && !$this->emitPreHooks($exists)) { + throw new Exception('Could not write to final file, canceled by hook'); + } } - $view = \OC\Files\Filesystem::getView(); - // the part file and target file might be on a different storage in case of a single file storage (e.g. single file share) /** @var \OC\Files\Storage\Storage $partStorage */ list($partStorage, $internalPartPath) = $this->fileView->resolvePath($partFilePath); @@ -159,9 +161,6 @@ class File extends Node implements IFile { list($storage, $internalPath) = $this->fileView->resolvePath($this->path); try { if (!$needsPartFile) { - if ($view && !$this->emitPreHooks($exists)) { - throw new Exception('Could not write to final file, canceled by hook'); - } $this->changeLock(ILockingProvider::LOCK_EXCLUSIVE); } diff --git a/apps/dav/lib/Migration/Version1007Date20181007225117.php b/apps/dav/lib/Migration/Version1007Date20181007225117.php new file mode 100644 index 00000000000..400042f486d --- /dev/null +++ b/apps/dav/lib/Migration/Version1007Date20181007225117.php @@ -0,0 +1,54 @@ +<?php +/** + * @copyright Copyright (c) 2018 Georg Ehrke + * + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +declare(strict_types=1); + +namespace OCA\DAV\Migration; + +use Closure; + +use Doctrine\DBAL\Types\Type; +use OCP\DB\ISchemaWrapper; +use OCP\Migration\SimpleMigrationStep; +use OCP\Migration\IOutput; + +class Version1007Date20181007225117 extends SimpleMigrationStep { + + /** + * @param IOutput $output + * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper` + * @param array $options + * @return null|ISchemaWrapper + */ + public function changeSchema(IOutput $output, Closure $schemaClosure, array $options) { + /** @var ISchemaWrapper $schema */ + $schema = $schemaClosure(); + + $table = $schema->getTable('calendarsubscriptions'); + $column = $table->getColumn('source'); + + $column->setType(Type::getType(Type::TEXT)); + $column->setLength(null); + + return $schema; + } +} diff --git a/apps/dav/lib/Upload/AssemblyStream.php b/apps/dav/lib/Upload/AssemblyStream.php index 24417851f2f..95e324f0468 100644 --- a/apps/dav/lib/Upload/AssemblyStream.php +++ b/apps/dav/lib/Upload/AssemblyStream.php @@ -76,9 +76,6 @@ class AssemblyStream implements \Icewind\Streams\File { return strnatcmp($a->getName(), $b->getName()); }); $this->nodes = array_values($nodes); - if (count($this->nodes) > 0) { - $this->currentStream = $this->getStream($this->nodes[0]); - } $this->size = array_reduce($this->nodes, function ($size, IFile $file) { return $size + $file->getSize(); }, 0); @@ -107,7 +104,11 @@ class AssemblyStream implements \Icewind\Streams\File { */ public function stream_read($count) { if (is_null($this->currentStream)) { - return ''; + if ($this->currentNode < count($this->nodes)) { + $this->currentStream = $this->getStream($this->nodes[$this->currentNode]); + } else { + return ''; + } } do { @@ -191,7 +192,7 @@ class AssemblyStream implements \Icewind\Streams\File { * @return bool */ public function stream_eof() { - return $this->pos >= $this->size || $this->currentStream === null; + return $this->pos >= $this->size || ($this->currentNode >= count($this->nodes) && $this->currentNode === null); } /** diff --git a/apps/federatedfilesharing/js/settings-personal.js b/apps/federatedfilesharing/js/settings-personal.js index c954f74f323..407493640b1 100644 --- a/apps/federatedfilesharing/js/settings-personal.js +++ b/apps/federatedfilesharing/js/settings-personal.js @@ -28,7 +28,7 @@ $(document).ready(function() { // Clipboard! var clipboard = new Clipboard('.clipboardButton'); clipboard.on('success', function(e) { - $input = $(e.trigger); + var $input = $(e.trigger); $input.tooltip('hide') .attr('data-original-title', t('core', 'Copied!')) .tooltip('fixTitle') @@ -41,7 +41,7 @@ $(document).ready(function() { }, 3000); }); clipboard.on('error', function (e) { - $input = $(e.trigger); + var $input = $(e.trigger); var actionMsg = ''; if (/iPhone|iPad/i.test(navigator.userAgent)) { actionMsg = t('core', 'Not supported!'); diff --git a/apps/federation/js/settings-admin.js b/apps/federation/js/settings-admin.js index 9e3ed763168..da3f3c2d1a0 100644 --- a/apps/federation/js/settings-admin.js +++ b/apps/federation/js/settings-admin.js @@ -77,7 +77,7 @@ console.log("typing away"); - url = $(this).val(); + var url = $(this).val(); // toggle add-button visiblity based on input length if ( url.length > 0 ) diff --git a/apps/files/.l10nignore b/apps/files/.l10nignore new file mode 100644 index 00000000000..8b832897e3f --- /dev/null +++ b/apps/files/.l10nignore @@ -0,0 +1,2 @@ +# compiled vue templates +js/templates.js diff --git a/apps/files/css/files.scss b/apps/files/css/files.scss index 30b61266375..cca8585f439 100644 --- a/apps/files/css/files.scss +++ b/apps/files/css/files.scss @@ -698,9 +698,6 @@ table.dragshadow td.size { .app-files .actions .button.new { position: relative; } -.app-files .actions .button.new .icon { - margin-bottom: 2px; -} .breadcrumb .canDrop > a, #filestable tbody tr.canDrop { diff --git a/apps/files/js/detailsview.js b/apps/files/js/detailsview.js index 2a5d589a730..cd602961c0a 100644 --- a/apps/files/js/detailsview.js +++ b/apps/files/js/detailsview.js @@ -102,7 +102,7 @@ this.$el.insertAfter($('#app-content')); } else { if ($appSidebar[0] !== this.el) { - $appSidebar.replaceWith(this.$el) + $appSidebar.replaceWith(this.$el); } } @@ -122,7 +122,8 @@ templateVars.tabHeaders = _.map(this._tabViews, function(tabView, i) { return { tabId: tabView.id, - label: tabView.getLabel() + label: tabView.getLabel(), + tabIcon: tabView.getIcon() }; }); diff --git a/apps/files/js/detailtabview.js b/apps/files/js/detailtabview.js index 0bd34a88188..a66cedbc15d 100644 --- a/apps/files/js/detailtabview.js +++ b/apps/files/js/detailtabview.js @@ -50,6 +50,15 @@ }, /** + * Returns the tab label + * + * @return {String}|{null} icon class + */ + getIcon: function() { + return null + }, + + /** * returns the jQuery object for HTML output * * @returns {jQuery} diff --git a/apps/files/js/favoritesfilelist.js b/apps/files/js/favoritesfilelist.js index 8c9c125d0a1..44adf5d7b5b 100644 --- a/apps/files/js/favoritesfilelist.js +++ b/apps/files/js/favoritesfilelist.js @@ -94,12 +94,6 @@ $(document).ready(function() { return OCA.Files.FileList.prototype.reloadCallback.call(this, status, result); }, - - _onUrlChanged: function (e) { - if (e && _.isString(e.dir)) { - this.changeDirectory(e.dir, false, true); - } - } }); OCA.Files.FavoritesFileList = FavoritesFileList; diff --git a/apps/files/js/favoritesplugin.js b/apps/files/js/favoritesplugin.js index 7294ef9461c..3ceadca826d 100644 --- a/apps/files/js/favoritesplugin.js +++ b/apps/files/js/favoritesplugin.js @@ -67,6 +67,11 @@ return new OCA.Files.FavoritesFileList( $el, { fileActions: fileActions, + // The file list is created when a "show" event is handled, + // so it should be marked as "shown" like it would have been + // done if handling the event with the file list already + // created. + shown: true } ); }, diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 1f4d230cef0..75cef4afece 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -221,6 +221,10 @@ return; } + if (options.shown) { + this.shown = options.shown; + } + if (options.config) { this._filesConfig = options.config; } else if (!_.isUndefined(OCA.Files) && !_.isUndefined(OCA.Files.App)) { @@ -310,10 +314,10 @@ breadcrumbOptions.onDrop = _.bind(this._onDropOnBreadCrumb, this); breadcrumbOptions.onOver = function() { self.$el.find('td.filename.ui-droppable').droppable('disable'); - } + }; breadcrumbOptions.onOut = function() { self.$el.find('td.filename.ui-droppable').droppable('enable'); - } + }; } this.breadcrumb = new OCA.Files.BreadCrumb(breadcrumbOptions); @@ -1409,6 +1413,10 @@ // rgb(118, 118, 118) / #767676 // min. color contrast for normal text on white background according to WCAG AA sizeColor = Math.round(118-Math.pow((fileData.size/(1024*1024)),2)); + + if (OCA.Accessibility && OCA.Accessibility.theme === 'themedark') { + sizeColor = Math.abs(sizeColor); + } } else { simpleSize = t('files', 'Pending'); } @@ -1428,6 +1436,16 @@ if (modifiedColor >= '118') { modifiedColor = 118; } + if (OCA.Accessibility && OCA.Accessibility.theme === 'themedark') { + modifiedColor = Math.abs(modifiedColor); + + // ensure that the dimmest color is still readable + // rgb(130, 130, 130) / #828282 + // min. color contrast for normal text on black background according to WCAG AA + if (modifiedColor < 130) { + modifiedColor = 130; + } + } var formatted; var text; if (mtime > 0) { diff --git a/apps/files/js/newfilemenu.js b/apps/files/js/newfilemenu.js index 01a183a33a7..69450e97c2a 100644 --- a/apps/files/js/newfilemenu.js +++ b/apps/files/js/newfilemenu.js @@ -171,7 +171,7 @@ /* Find the right actionHandler that should be called. * Actions is retrieved by using `actionSpec.id` */ - action = _.filter(self._menuItems, function(item) { + var action = _.filter(self._menuItems, function(item) { return item.id == $target.attr('data-action'); }).pop(); action.actionHandler(newname); diff --git a/apps/files/js/recentplugin.js b/apps/files/js/recentplugin.js index 524b556a517..c1b013ef1b8 100644 --- a/apps/files/js/recentplugin.js +++ b/apps/files/js/recentplugin.js @@ -67,6 +67,11 @@ return new OCA.Files.RecentFileList( $el, { fileActions: fileActions, + // The file list is created when a "show" event is handled, + // so it should be marked as "shown" like it would have been + // done if handling the event with the file list already + // created. + shown: true } ); }, diff --git a/apps/files/js/sidebarpreviewmanager.js b/apps/files/js/sidebarpreviewmanager.js index 27ccd4fc405..69528ce4e43 100644 --- a/apps/files/js/sidebarpreviewmanager.js +++ b/apps/files/js/sidebarpreviewmanager.js @@ -9,7 +9,7 @@ */ (function () { - SidebarPreviewManager = function (fileList) { + var SidebarPreviewManager = function (fileList) { this._fileList = fileList; this._previewHandlers = {}; OC.Plugins.attach('OCA.Files.SidebarPreviewManager', this); diff --git a/apps/files/js/templates.js b/apps/files/js/templates.js index 0511873c8fb..a2bdae5b3c4 100644 --- a/apps/files/js/templates.js +++ b/apps/files/js/templates.js @@ -7,13 +7,21 @@ templates['detailsview'] = template({"1":function(container,depth0,helpers,parti + ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.tabHeaders : depth0),{"name":"each","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "</ul>\n"; },"2":function(container,depth0,helpers,partials,data) { - var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; + var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; return " <li class=\"tabHeader\" data-tabid=\"" + alias4(((helper = (helper = helpers.tabId || (depth0 != null ? depth0.tabId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"tabId","hash":{},"data":data}) : helper))) - + "\" tabindex=\"0\">\n <a href=\"#\" tabindex=\"-1\">" + + "\" tabindex=\"0\">\n " + + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.tabIcon : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + "\n <a href=\"#\" tabindex=\"-1\">" + alias4(((helper = (helper = helpers.label || (depth0 != null ? depth0.label : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"label","hash":{},"data":data}) : helper))) + "</a>\n </li>\n"; +},"3":function(container,depth0,helpers,partials,data) { + var helper; + + return "<span class=\"icon " + + container.escapeExpression(((helper = (helper = helpers.tabIcon || (depth0 != null ? depth0.tabIcon : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"tabIcon","hash":{},"data":data}) : helper))) + + "\"></span>"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}); diff --git a/apps/files/js/templates/detailsview.handlebars b/apps/files/js/templates/detailsview.handlebars index 841a8fe25fe..4d489e4fa0d 100644 --- a/apps/files/js/templates/detailsview.handlebars +++ b/apps/files/js/templates/detailsview.handlebars @@ -3,6 +3,7 @@ <ul class="tabHeaders"> {{#each tabHeaders}} <li class="tabHeader" data-tabid="{{tabId}}" tabindex="0"> + {{#if tabIcon}}<span class="icon {{tabIcon}}"></span>{{/if}} <a href="#" tabindex="-1">{{label}}</a> </li> {{/each}} diff --git a/apps/files_external/.l10nignore b/apps/files_external/.l10nignore new file mode 100644 index 00000000000..3179ed23dd6 --- /dev/null +++ b/apps/files_external/.l10nignore @@ -0,0 +1,2 @@ +# compiled handlebar templates +js/templates.js diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js index b871fe2f743..2d495281527 100644 --- a/apps/files_external/js/settings.js +++ b/apps/files_external/js/settings.js @@ -10,58 +10,6 @@ (function(){ -// TODO: move to a separate file -var MOUNT_OPTIONS_DROPDOWN_TEMPLATE = - '<div class="popovermenu open">'+ - // FIXME: options are hard-coded for now - ' <ul>'+ - ' <li class="optionRow">'+ - ' <span class="menuitem">'+ - ' <input id="mountOptionsEncrypt" class="checkbox" name="encrypt" type="checkbox" value="true" checked="checked"/>'+ - ' <label for="mountOptionsEncrypt">{{t "files_external" "Enable encryption"}}</label>'+ - ' </span>'+ - ' </li>'+ - ' <li class="optionRow">'+ - ' <span class="menuitem">'+ - ' <input id="mountOptionsPreviews" class="checkbox" name="previews" type="checkbox" value="true" checked="checked"/>'+ - ' <label for="mountOptionsPreviews">{{t "files_external" "Enable previews"}}</label>'+ - ' </span>'+ - ' </li>'+ - ' <li class="optionRow">'+ - ' <span class="menuitem">'+ - ' <input id="mountOptionsSharing" class="checkbox" name="enable_sharing" type="checkbox" value="true"/>'+ - ' <label for="mountOptionsSharing">{{t "files_external" "Enable sharing"}}</label>'+ - ' </span>'+ - ' </li>'+ - ' <li class="optionRow">'+ - ' <span class="menuitem icon-search">'+ - ' <label for="mountOptionsFilesystemCheck">{{t "files_external" "Check for changes"}}</label>'+ - ' <select id="mountOptionsFilesystemCheck" name="filesystem_check_changes" data-type="int">'+ - ' <option value="0">{{t "files_external" "Never"}}</option>'+ - ' <option value="1" selected="selected">{{t "files_external" "Once every direct access"}}</option>'+ - ' </select>'+ - ' </span>'+ - ' </li>'+ - ' <li class="optionRow">'+ - ' <span class="menuitem">'+ - ' <input id="mountOptionsEncoding" class="checkbox" name="encoding_compatibility" type="checkbox" value="true"/>'+ - ' <label for="mountOptionsEncoding">{{mountOptionsEncodingLabel}}</label>'+ - ' </span>'+ - ' </li>'+ - ' <li class="optionRow">' + - ' <span class="menuitem">' + - ' <input id="mountOptionsReadOnly" class="checkbox" name="readonly" type="checkbox" value="true"/>' + - ' <label for="mountOptionsReadOnly">{{t "files_external" "Read only"}}</label>' + - ' </span>' + - ' </li>' + - ' <li class="optionRow persistent">' + - ' <a href="#" class="menuitem remove icon-delete">' + - ' <span>{{t "files_external" "Delete"}}</span>' + - ' </a>' + - ' </li>' + - ' </ul>'+ - '</div>'; - /** * Returns the selection of applicable users in the given configuration row * @@ -514,14 +462,16 @@ MountOptionsDropdown.prototype = { MountOptionsDropdown._last.hide(); } - var template = MountOptionsDropdown._template; - if (!template) { - template = Handlebars.compile(MOUNT_OPTIONS_DROPDOWN_TEMPLATE); - MountOptionsDropdown._template = template; - } - - var $el = $(template({ - mountOptionsEncodingLabel: t('files_external', 'Compatibility with Mac NFD encoding (slow)') + var $el = $(OCA.External.Templates.mountOptionsDropDown({ + mountOptionsEncodingLabel: t('files_external', 'Compatibility with Mac NFD encoding (slow)'), + mountOptionsEncryptLabel: t('files_external', 'Enable encryption'), + mountOptionsPreviewsLabel: t('files_external', 'Enable previews'), + mountOptionsSharingLabel: t('files_external', 'Enable sharing'), + mountOptionsFilesystemCheckLabel: t('files_external', 'Check for changes'), + mountOptionsFilesystemCheckOnce: t('files_external', 'Never'), + mountOptionsFilesystemCheckDA: t('files_external', 'Once every direct access'), + mountOptionsReadOnlyLabel: t('files_external', 'Read only'), + deleteLabel: t('files_external', 'Delete') })); this.$el = $el; diff --git a/apps/files_external/js/statusmanager.js b/apps/files_external/js/statusmanager.js index a65988353af..b8b5e1a9364 100644 --- a/apps/files_external/js/statusmanager.js +++ b/apps/files_external/js/statusmanager.js @@ -392,8 +392,7 @@ OCA.External.StatusManager = { * @param mountData */ showCredentialsDialog: function (mountPoint, mountData) { - var template = Handlebars.compile(OCA.External.StatusManager.credentialsDialogTemplate); - var dialog = $(template({ + var dialog = $(OCA.External.Templates.credentialsDialog({ credentials_text: t('files_external', 'Please enter the credentials for the {mount} mount', { 'mount': mountPoint }), diff --git a/apps/files_external/js/templates.js b/apps/files_external/js/templates.js new file mode 100644 index 00000000000..067b3f5f5d7 --- /dev/null +++ b/apps/files_external/js/templates.js @@ -0,0 +1,37 @@ +(function() { + var template = Handlebars.template, templates = OCA.External.Templates = OCA.External.Templates || {}; +templates['credentialsDialog'] = template({"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { + var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; + + return "<div id=\"files_external_div_form\"><div>\n <div>" + + alias4(((helper = (helper = helpers.credentials_text || (depth0 != null ? depth0.credentials_text : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"credentials_text","hash":{},"data":data}) : helper))) + + "</div>\n <form>\n <input type=\"text\" name=\"username\" placeholder=\"" + + alias4(((helper = (helper = helpers.placeholder_username || (depth0 != null ? depth0.placeholder_username : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"placeholder_username","hash":{},"data":data}) : helper))) + + "\"/>\n <input type=\"password\" name=\"password\" placeholder=\"" + + alias4(((helper = (helper = helpers.placeholder_password || (depth0 != null ? depth0.placeholder_password : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"placeholder_password","hash":{},"data":data}) : helper))) + + "\"/>\n </form>\n </div>\n</div>\n"; +},"useData":true}); +templates['mountOptionsDropDown'] = template({"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { + var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; + + return "<div class=\"popovermenu open\">\n <ul>\n <li class=\"optionRow\">\n <span class=\"menuitem\">\n <input id=\"mountOptionsEncrypt\" class=\"checkbox\" name=\"encrypt\" type=\"checkbox\" value=\"true\" checked=\"checked\"/>\n <label for=\"mountOptionsEncrypt\">" + + alias4(((helper = (helper = helpers.mountOptionsEncryptLabel || (depth0 != null ? depth0.mountOptionsEncryptLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsEncryptLabel","hash":{},"data":data}) : helper))) + + "</label>\n </span>\n </li>\n <li class=\"optionRow\">\n <span class=\"menuitem\">\n <input id=\"mountOptionsPreviews\" class=\"checkbox\" name=\"previews\" type=\"checkbox\" value=\"true\" checked=\"checked\"/>\n <label for=\"mountOptionsPreviews\">" + + alias4(((helper = (helper = helpers.mountOptionsPreviewsLabel || (depth0 != null ? depth0.mountOptionsPreviewsLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsPreviewsLabel","hash":{},"data":data}) : helper))) + + "</label>\n </span>\n </li>\n <li class=\"optionRow\">\n <span class=\"menuitem\">\n <input id=\"mountOptionsSharing\" class=\"checkbox\" name=\"enable_sharing\" type=\"checkbox\" value=\"true\"/>\n <label for=\"mountOptionsSharing\">" + + alias4(((helper = (helper = helpers.mountOptionsSharingLabel || (depth0 != null ? depth0.mountOptionsSharingLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsSharingLabel","hash":{},"data":data}) : helper))) + + "</label>\n </span>\n </li>\n <li class=\"optionRow\">\n <span class=\"menuitem icon-search\">\n <label for=\"mountOptionsFilesystemCheck\">" + + alias4(((helper = (helper = helpers.mountOptionsFilesystemCheckLabel || (depth0 != null ? depth0.mountOptionsFilesystemCheckLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsFilesystemCheckLabel","hash":{},"data":data}) : helper))) + + "</label>\n <select id=\"mountOptionsFilesystemCheck\" name=\"filesystem_check_changes\" data-type=\"int\">\n <option value=\"0\">" + + alias4(((helper = (helper = helpers.mountOptionsFilesystemCheckOnce || (depth0 != null ? depth0.mountOptionsFilesystemCheckOnce : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsFilesystemCheckOnce","hash":{},"data":data}) : helper))) + + "</option>\n <option value=\"1\" selected=\"selected\">" + + alias4(((helper = (helper = helpers.mountOptionsFilesystemCheckDA || (depth0 != null ? depth0.mountOptionsFilesystemCheckDA : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsFilesystemCheckDA","hash":{},"data":data}) : helper))) + + "</option>\n </select>\n </span>\n </li>\n <li class=\"optionRow\">\n <span class=\"menuitem\">\n <input id=\"mountOptionsEncoding\" class=\"checkbox\" name=\"encoding_compatibility\" type=\"checkbox\" value=\"true\"/>\n <label for=\"mountOptionsEncoding\">" + + alias4(((helper = (helper = helpers.mountOptionsEncodingLabel || (depth0 != null ? depth0.mountOptionsEncodingLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsEncodingLabel","hash":{},"data":data}) : helper))) + + "</label>\n </span>\n </li>\n <li class=\"optionRow\">\n <span class=\"menuitem\">\n <input id=\"mountOptionsReadOnly\" class=\"checkbox\" name=\"readonly\" type=\"checkbox\" value=\"true\"/>\n <label for=\"mountOptionsReadOnly\">" + + alias4(((helper = (helper = helpers.mountOptionsReadOnlyLabel || (depth0 != null ? depth0.mountOptionsReadOnlyLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"mountOptionsReadOnlyLabel","hash":{},"data":data}) : helper))) + + "</label>\n </span>\n </li>\n <li class=\"optionRow persistent\">\n <a href=\"#\" class=\"menuitem remove icon-delete\">\n <span>" + + alias4(((helper = (helper = helpers.deleteLabel || (depth0 != null ? depth0.deleteLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"deleteLabel","hash":{},"data":data}) : helper))) + + "</span>\n </a>\n </li>\n </ul>\n</div>\n"; +},"useData":true}); +})();
\ No newline at end of file diff --git a/apps/files_external/js/templates/credentialsDialog.handlebars b/apps/files_external/js/templates/credentialsDialog.handlebars new file mode 100644 index 00000000000..c04ceef096b --- /dev/null +++ b/apps/files_external/js/templates/credentialsDialog.handlebars @@ -0,0 +1,8 @@ +<div id="files_external_div_form"><div> + <div>{{credentials_text}}</div> + <form> + <input type="text" name="username" placeholder="{{placeholder_username}}"/> + <input type="password" name="password" placeholder="{{placeholder_password}}"/> + </form> + </div> +</div> diff --git a/apps/files_external/js/templates/mountOptionsDropDown.handlebars b/apps/files_external/js/templates/mountOptionsDropDown.handlebars new file mode 100644 index 00000000000..09b0d708958 --- /dev/null +++ b/apps/files_external/js/templates/mountOptionsDropDown.handlebars @@ -0,0 +1,48 @@ +<div class="popovermenu open"> + <ul> + <li class="optionRow"> + <span class="menuitem"> + <input id="mountOptionsEncrypt" class="checkbox" name="encrypt" type="checkbox" value="true" checked="checked"/> + <label for="mountOptionsEncrypt">{{mountOptionsEncryptLabel}}</label> + </span> + </li> + <li class="optionRow"> + <span class="menuitem"> + <input id="mountOptionsPreviews" class="checkbox" name="previews" type="checkbox" value="true" checked="checked"/> + <label for="mountOptionsPreviews">{{mountOptionsPreviewsLabel}}</label> + </span> + </li> + <li class="optionRow"> + <span class="menuitem"> + <input id="mountOptionsSharing" class="checkbox" name="enable_sharing" type="checkbox" value="true"/> + <label for="mountOptionsSharing">{{mountOptionsSharingLabel}}</label> + </span> + </li> + <li class="optionRow"> + <span class="menuitem icon-search"> + <label for="mountOptionsFilesystemCheck">{{mountOptionsFilesystemCheckLabel}}</label> + <select id="mountOptionsFilesystemCheck" name="filesystem_check_changes" data-type="int"> + <option value="0">{{mountOptionsFilesystemCheckOnce}}</option> + <option value="1" selected="selected">{{mountOptionsFilesystemCheckDA}}</option> + </select> + </span> + </li> + <li class="optionRow"> + <span class="menuitem"> + <input id="mountOptionsEncoding" class="checkbox" name="encoding_compatibility" type="checkbox" value="true"/> + <label for="mountOptionsEncoding">{{mountOptionsEncodingLabel}}</label> + </span> + </li> + <li class="optionRow"> + <span class="menuitem"> + <input id="mountOptionsReadOnly" class="checkbox" name="readonly" type="checkbox" value="true"/> + <label for="mountOptionsReadOnly">{{mountOptionsReadOnlyLabel}}</label> + </span> + </li> + <li class="optionRow persistent"> + <a href="#" class="menuitem remove icon-delete"> + <span>{{deleteLabel}}</span> + </a> + </li> + </ul> +</div> diff --git a/apps/files_external/list.php b/apps/files_external/list.php index bda484d996e..35ad6e60447 100644 --- a/apps/files_external/list.php +++ b/apps/files_external/list.php @@ -28,6 +28,7 @@ $tmpl = new OCP\Template('files_external', 'list', ''); /* Load Status Manager */ \OCP\Util::addStyle('files_external', 'external'); \OCP\Util::addScript('files_external', 'statusmanager'); +\OCP\Util::addScript('files_external', 'templates.js'); \OCP\Util::addScript('files_external', 'rollingqueue'); OCP\Util::addScript('files_external', 'app'); diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php index b3900aaf93d..1d1fcee1d8a 100644 --- a/apps/files_external/templates/settings.php +++ b/apps/files_external/templates/settings.php @@ -14,7 +14,10 @@ $l->t("Once every direct access"); $l->t('Read only'); - script('files_external', 'settings'); + script('files_external', [ + 'settings', + 'templates' + ]); style('files_external', 'settings'); // load custom JS diff --git a/apps/files_sharing/js/app.js b/apps/files_sharing/js/app.js index 750f66236ae..b6ca71e15d1 100644 --- a/apps/files_sharing/js/app.js +++ b/apps/files_sharing/js/app.js @@ -34,7 +34,11 @@ OCA.Sharing.App = { id: 'shares.self', sharedWithUser: true, fileActions: this._createFileActions(), - config: OCA.Files.App.getFilesConfig() + config: OCA.Files.App.getFilesConfig(), + // The file list is created when a "show" event is handled, so + // it should be marked as "shown" like it would have been done + // if handling the event with the file list already created. + shown: true } ); @@ -56,7 +60,11 @@ OCA.Sharing.App = { id: 'shares.others', sharedWithUser: false, fileActions: this._createFileActions(), - config: OCA.Files.App.getFilesConfig() + config: OCA.Files.App.getFilesConfig(), + // The file list is created when a "show" event is handled, so + // it should be marked as "shown" like it would have been done + // if handling the event with the file list already created. + shown: true } ); @@ -78,7 +86,11 @@ OCA.Sharing.App = { id: 'shares.link', linksOnly: true, fileActions: this._createFileActions(), - config: OCA.Files.App.getFilesConfig() + config: OCA.Files.App.getFilesConfig(), + // The file list is created when a "show" event is handled, so + // it should be marked as "shown" like it would have been done + // if handling the event with the file list already created. + shown: true } ); @@ -101,7 +113,11 @@ OCA.Sharing.App = { showDeleted: true, sharedWithUser: true, fileActions: this._restoreShareAction(), - config: OCA.Files.App.getFilesConfig() + config: OCA.Files.App.getFilesConfig(), + // The file list is created when a "show" event is handled, so + // it should be marked as "shown" like it would have been done + // if handling the event with the file list already created. + shown: true } ); @@ -122,7 +138,11 @@ OCA.Sharing.App = { { id: 'shares.overview', config: OCA.Files.App.getFilesConfig(), - isOverview: true + isOverview: true, + // The file list is created when a "show" event is handled, so + // it should be marked as "shown" like it would have been done + // if handling the event with the file list already created. + shown: true } ); diff --git a/apps/files_sharing/js/sharedfilelist.js b/apps/files_sharing/js/sharedfilelist.js index 3a6de0d5012..7fa38a58c59 100644 --- a/apps/files_sharing/js/sharedfilelist.js +++ b/apps/files_sharing/js/sharedfilelist.js @@ -90,7 +90,7 @@ var permission = fileData.permissions; $tr.attr('data-share-permissions', permission); } - + // add row with expiration date for link only shares - influenced by _createRow of filelist if (this._linksOnly) { var expirationTimestamp = 0; @@ -107,6 +107,8 @@ modifiedColor = 160; } + var formatted; + var text; if (expirationTimestamp > 0) { formatted = OC.Util.formatDate(expirationTimestamp); text = OC.Util.relativeModifiedDate(expirationTimestamp); @@ -232,7 +234,7 @@ promises.push($.ajax(remoteShares)); } if (this._isOverview) { - shares.data.shared_with_me = !shares.data.shared_with_me + shares.data.shared_with_me = !shares.data.shared_with_me; promises.push($.ajax(shares)); } } @@ -242,7 +244,7 @@ return this._reloadCall.then(callBack, callBack); }, - reloadCallback: function(shares, remoteShares, additionnalShares) { + reloadCallback: function(shares, remoteShares, additionalShares) { delete this._reloadCall; this.hideMask(); @@ -259,8 +261,8 @@ if (remoteShares && remoteShares[0] && remoteShares[0].ocs) { remoteShares = remoteShares[0]; } - if (additionnalShares && additionnalShares[0] && additionnalShares[0].ocs) { - additionnalShares = additionnalShares[0]; + if (additionalShares && additionalShares[0] && additionalShares[0].ocs) { + additionalShares = additionalShares[0]; } if (shares.ocs && shares.ocs.data) { @@ -271,8 +273,8 @@ files = files.concat(this._makeFilesFromRemoteShares(remoteShares.ocs.data)); } - if (additionnalShares && additionnalShares && additionnalShares.ocs && additionnalShares.ocs.data) { - files = files.concat(this._makeFilesFromShares(additionnalShares.ocs.data, !this._sharedWithUser)); + if (additionalShares && additionalShares.ocs && additionalShares.ocs.data) { + files = files.concat(this._makeFilesFromShares(additionalShares.ocs.data, !this._sharedWithUser)); } @@ -444,12 +446,6 @@ // Sort by expected sort comparator return files.sort(this._sortComparator); }, - - _onUrlChanged: function(e) { - if (e && _.isString(e.dir)) { - this.changeDirectory(e.dir, false, true); - } - } }); /** diff --git a/apps/files_sharing/js/sharetabview.js b/apps/files_sharing/js/sharetabview.js index fc7f2c5f045..3944293d5c1 100644 --- a/apps/files_sharing/js/sharetabview.js +++ b/apps/files_sharing/js/sharetabview.js @@ -32,6 +32,10 @@ return t('files_sharing', 'Sharing'); }, + getIcon: function() { + return 'icon-shared'; + }, + /** * Renders this details view */ diff --git a/apps/files_sharing/lib/Controller/ShareController.php b/apps/files_sharing/lib/Controller/ShareController.php index 8d02cc82fd2..1e3cbb51028 100644 --- a/apps/files_sharing/lib/Controller/ShareController.php +++ b/apps/files_sharing/lib/Controller/ShareController.php @@ -35,6 +35,7 @@ namespace OCA\Files_Sharing\Controller; +use OC\Security\CSP\ContentSecurityPolicy; use OC_Files; use OC_Util; use OCA\FederatedFileSharing\FederatedShareProvider; @@ -158,7 +159,16 @@ class ShareController extends AuthPublicShareController { $event = new GenericEvent(null, $templateParameters); $this->eventDispatcher->dispatch('OCA\Files_Sharing::loadAdditionalScripts::publicShareAuth', $event); - return new TemplateResponse('core', 'publicshareauth', $templateParameters, 'guest'); + $response = new TemplateResponse('core', 'publicshareauth', $templateParameters, 'guest'); + if ($this->share->getSendPasswordByTalk()) { + $csp = new ContentSecurityPolicy(); + $csp->addAllowedConnectDomain('*'); + $csp->addAllowedMediaDomain('blob:'); + $csp->allowEvalScript(true); + $response->setContentSecurityPolicy($csp); + } + + return $response; } /** @@ -170,7 +180,16 @@ class ShareController extends AuthPublicShareController { $event = new GenericEvent(null, $templateParameters); $this->eventDispatcher->dispatch('OCA\Files_Sharing::loadAdditionalScripts::publicShareAuth', $event); - return new TemplateResponse('core', 'publicshareauth', $templateParameters, 'guest'); + $response = new TemplateResponse('core', 'publicshareauth', $templateParameters, 'guest'); + if ($this->share->getSendPasswordByTalk()) { + $csp = new ContentSecurityPolicy(); + $csp->addAllowedConnectDomain('*'); + $csp->addAllowedMediaDomain('blob:'); + $csp->allowEvalScript(true); + $response->setContentSecurityPolicy($csp); + } + + return $response; } protected function verifyPassword(string $password): bool { diff --git a/apps/files_trashbin/js/app.js b/apps/files_trashbin/js/app.js index 82e47d510bf..199cb7d4f84 100644 --- a/apps/files_trashbin/js/app.js +++ b/apps/files_trashbin/js/app.js @@ -51,7 +51,11 @@ OCA.Trashbin.App = { iconClass: 'icon-delete', } ], - client: this.client + client: this.client, + // The file list is created when a "show" event is handled, so + // it should be marked as "shown" like it would have been done + // if handling the event with the file list already created. + shown: true } ); }, diff --git a/apps/files_versions/.l10nignore b/apps/files_versions/.l10nignore new file mode 100644 index 00000000000..8b832897e3f --- /dev/null +++ b/apps/files_versions/.l10nignore @@ -0,0 +1,2 @@ +# compiled vue templates +js/templates.js diff --git a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php index c0fba230a26..5a7212a6522 100644 --- a/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php +++ b/apps/lookup_server_connector/lib/BackgroundJobs/RetryJob.php @@ -50,9 +50,15 @@ class RetryJob extends Job { $this->clientService = $clientService; $this->jobList = $jobList; + if ($config->getSystemValue('has_internet_connection', true) === false) { + return; + } + $this->lookupServer = $config->getSystemValue('lookup_server', 'https://lookup.nextcloud.com'); - $this->lookupServer = rtrim($this->lookupServer, '/'); - $this->lookupServer .= '/users'; + if (!empty($this->lookupServer)) { + $this->lookupServer = rtrim($this->lookupServer, '/'); + $this->lookupServer .= '/users'; + } } /** @@ -69,7 +75,7 @@ class RetryJob extends Job { } protected function run($argument) { - if($argument['retryNo'] === 5) { + if ($argument['retryNo'] === 5 || empty($this->lookupServer)) { return; } diff --git a/apps/lookup_server_connector/lib/UpdateLookupServer.php b/apps/lookup_server_connector/lib/UpdateLookupServer.php index ae8fcbd67ca..7902ede8816 100644 --- a/apps/lookup_server_connector/lib/UpdateLookupServer.php +++ b/apps/lookup_server_connector/lib/UpdateLookupServer.php @@ -64,15 +64,25 @@ class UpdateLookupServer { $this->signer = $signer; $this->jobList = $jobList; + if($config->getSystemValue('has_internet_connection', true) === false) { + return; + } + $this->lookupServer = $config->getSystemValue('lookup_server', 'https://lookup.nextcloud.com'); - $this->lookupServer = rtrim($this->lookupServer, '/'); - $this->lookupServer .= '/users'; + if(!empty($this->lookupServer)) { + $this->lookupServer = rtrim($this->lookupServer, '/'); + $this->lookupServer .= '/users'; + } } /** * @param IUser $user */ public function userUpdated(IUser $user) { + if(empty($this->lookupServer)) { + return; + } + $userData = $this->accountManager->getUser($user); $publicData = []; diff --git a/apps/oauth2/.l10nignore b/apps/oauth2/.l10nignore new file mode 100644 index 00000000000..e440b631755 --- /dev/null +++ b/apps/oauth2/.l10nignore @@ -0,0 +1,2 @@ +# compiled vue templates +js/oauth2.js diff --git a/apps/oauth2/package-lock.json b/apps/oauth2/package-lock.json index afb2f0f8185..b011364dce2 100644 --- a/apps/oauth2/package-lock.json +++ b/apps/oauth2/package-lock.json @@ -1097,9 +1097,9 @@ } }, "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", "dev": true, "requires": { "end-of-stream": "^1.0.0", @@ -1508,8 +1508,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -1924,8 +1923,7 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -1981,7 +1979,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2025,14 +2022,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -2633,13 +2628,14 @@ } }, "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, "requires": { "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "mem": { @@ -2812,9 +2808,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "nan": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", - "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", + "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", "dev": true, "optional": true }, @@ -2838,9 +2834,9 @@ } }, "neo-async": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz", - "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", "dev": true }, "nice-try": { @@ -3270,16 +3266,17 @@ "dev": true }, "public-encrypt": { - "version": "4.0.2", - "resolved": "http://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", - "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", "create-hash": "^1.1.0", "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "pump": { @@ -4247,9 +4244,9 @@ } }, "webpack": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.20.2.tgz", - "integrity": "sha512-75WFUMblcWYcocjSLlXCb71QuGyH7egdBZu50FtBGl2Nso8CK3Ej+J7bTZz2FPFq5l6fzCisD9modB7t30ikuA==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.22.0.tgz", + "integrity": "sha512-2+3EYFqyhPl12buLQ42QPHEEh8BHn3P9ipRvGRHhdfKJ1u9svhZ3QjhIoEdL5SeIhL5gfOZVbBnartYEabkEsg==", "dev": true, "requires": { "@webassemblyjs/ast": "1.7.8", diff --git a/apps/oauth2/package.json b/apps/oauth2/package.json index bb061f36bbc..465427cc66d 100644 --- a/apps/oauth2/package.json +++ b/apps/oauth2/package.json @@ -24,7 +24,7 @@ "file-loader": "^1.1.11", "vue-loader": "^15.4.2", "vue-template-compiler": "^2.5.17", - "webpack": "^4.20.2", + "webpack": "^4.22.0", "webpack-cli": "^3.1.2", "webpack-merge": "^4.1.4" } diff --git a/apps/systemtags/js/app.js b/apps/systemtags/js/app.js index 04ac53d3b32..2ef88564528 100644 --- a/apps/systemtags/js/app.js +++ b/apps/systemtags/js/app.js @@ -28,7 +28,12 @@ { id: 'systemtags', fileActions: this._createFileActions(), - config: OCA.Files.App.getFilesConfig() + config: OCA.Files.App.getFilesConfig(), + // The file list is created when a "show" event is handled, + // so it should be marked as "shown" like it would have been + // done if handling the event with the file list already + // created. + shown: true } ); diff --git a/apps/updatenotification/.l10nignore b/apps/updatenotification/.l10nignore new file mode 100644 index 00000000000..7439adf0658 --- /dev/null +++ b/apps/updatenotification/.l10nignore @@ -0,0 +1,2 @@ +# compiled vue templates +js/updatenotification.js diff --git a/apps/updatenotification/package-lock.json b/apps/updatenotification/package-lock.json index 0683f983a5e..4c40fce75bc 100644 --- a/apps/updatenotification/package-lock.json +++ b/apps/updatenotification/package-lock.json @@ -1130,9 +1130,9 @@ } }, "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", "dev": true, "requires": { "end-of-stream": "^1.0.0", @@ -2645,13 +2645,14 @@ } }, "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, "requires": { "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "mem": { @@ -2843,9 +2844,9 @@ } }, "neo-async": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz", - "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", "dev": true }, "nice-try": { @@ -3275,16 +3276,17 @@ "dev": true }, "public-encrypt": { - "version": "4.0.2", - "resolved": "http://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", - "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", "create-hash": "^1.1.0", "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "pump": { @@ -4243,9 +4245,9 @@ } }, "webpack": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.20.2.tgz", - "integrity": "sha512-75WFUMblcWYcocjSLlXCb71QuGyH7egdBZu50FtBGl2Nso8CK3Ej+J7bTZz2FPFq5l6fzCisD9modB7t30ikuA==", + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.22.0.tgz", + "integrity": "sha512-2+3EYFqyhPl12buLQ42QPHEEh8BHn3P9ipRvGRHhdfKJ1u9svhZ3QjhIoEdL5SeIhL5gfOZVbBnartYEabkEsg==", "dev": true, "requires": { "@webassemblyjs/ast": "1.7.8", diff --git a/apps/updatenotification/package.json b/apps/updatenotification/package.json index a3566af5922..3821cb1b3e2 100644 --- a/apps/updatenotification/package.json +++ b/apps/updatenotification/package.json @@ -32,7 +32,7 @@ "file-loader": "^1.1.11", "vue-loader": "^15.4.2", "vue-template-compiler": "^2.5.17", - "webpack": "^4.20.2", + "webpack": "^4.22.0", "webpack-cli": "^3.1.2", "webpack-merge": "^4.1.4" } diff --git a/apps/user_ldap/css/renewPassword.css b/apps/user_ldap/css/renewPassword.css index 7493789eab0..9f49dc23cae 100644 --- a/apps/user_ldap/css/renewPassword.css +++ b/apps/user_ldap/css/renewPassword.css @@ -22,7 +22,7 @@ .tooltip { position:absolute; display:block; - font-family:'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; + font-family: 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif; font-style:normal; font-weight:400; letter-spacing:normal; diff --git a/apps/user_ldap/js/wizard/wizardTabAbstractFilter.js b/apps/user_ldap/js/wizard/wizardTabAbstractFilter.js index c9c3aeb241d..0131816e4ee 100644 --- a/apps/user_ldap/js/wizard/wizardTabAbstractFilter.js +++ b/apps/user_ldap/js/wizard/wizardTabAbstractFilter.js @@ -302,7 +302,7 @@ OCA = OCA || {}; if( !view.getFilterItem().$element.val() && view.parsedFilterMode === view.configModel.FILTER_MODE_ASSISTED ) { - view.configModel.requestWizard(view.getFilterItem().keyName) + view.configModel.requestWizard(view.getFilterItem().keyName); } } else if (payload.feature === view.getGroupsItem().featureName) { if(view.manyGroupsSupport && payload.data.length > view._groupElementSwitchThreshold) { |