Browse Source

Add 'Reasons to use Nextcloud in your organization' call to action in settings

Signed-off-by: Jan C. Borchardt <hey@jancborchardt.net>
tags/v20.0.0beta4
Jan C. Borchardt 3 years ago
parent
commit
4c48d6bf18
No account linked to committer's email address
74 changed files with 499 additions and 964 deletions
  1. 1
    1
      apps/accessibility/js/accessibility.js
  2. 1
    1
      apps/accessibility/js/accessibility.js.map
  3. 1
    1
      apps/dashboard/js/dashboard.js
  4. 1
    1
      apps/dashboard/js/dashboard.js.map
  5. 1
    1
      apps/files/js/dist/personal-settings.js
  6. 1
    1
      apps/files/js/dist/personal-settings.js.map
  7. 1
    1
      apps/files/js/dist/sidebar.js
  8. 1
    1
      apps/files/js/dist/sidebar.js.map
  9. 1
    1
      apps/files_sharing/js/dist/additionalScripts.js
  10. 1
    1
      apps/files_sharing/js/dist/additionalScripts.js.map
  11. 1
    1
      apps/files_sharing/js/dist/collaboration.js
  12. 1
    1
      apps/files_sharing/js/dist/collaboration.js.map
  13. 1
    1
      apps/files_sharing/js/dist/files_sharing.js
  14. 1
    1
      apps/files_sharing/js/dist/files_sharing.js.map
  15. 1
    1
      apps/files_sharing/js/dist/files_sharing_tab.js
  16. 1
    1
      apps/files_sharing/js/dist/files_sharing_tab.js.map
  17. 1
    1
      apps/files_sharing/js/dist/main.js
  18. 1
    1
      apps/files_sharing/js/dist/main.js.map
  19. 1
    1
      apps/files_sharing/js/dist/personal-settings.js
  20. 1
    1
      apps/files_sharing/js/dist/personal-settings.js.map
  21. 1
    1
      apps/oauth2/js/oauth2.js
  22. 1
    1
      apps/oauth2/js/oauth2.js.map
  23. 2
    0
      apps/settings/appinfo/routes.php
  24. 1
    0
      apps/settings/composer/composer/autoload_classmap.php
  25. 1
    0
      apps/settings/composer/composer/autoload_static.php
  26. 31
    0
      apps/settings/css/settings.scss
  27. BIN
      apps/settings/data/Reasons to use Nextcloud.pdf
  28. 2
    2
      apps/settings/js/vue-0.js
  29. 1
    1
      apps/settings/js/vue-0.js.map
  30. 2
    2
      apps/settings/js/vue-6.js
  31. 1
    1
      apps/settings/js/vue-6.js.map
  32. 2
    2
      apps/settings/js/vue-7.js
  33. 1
    1
      apps/settings/js/vue-7.js.map
  34. 2
    2
      apps/settings/js/vue-8.js
  35. 1
    1
      apps/settings/js/vue-8.js.map
  36. 2
    0
      apps/settings/js/vue-9.js
  37. 1
    0
      apps/settings/js/vue-9.js.map
  38. 2
    2
      apps/settings/js/vue-settings-admin-security.js
  39. 1
    1
      apps/settings/js/vue-settings-admin-security.js.map
  40. 2
    2
      apps/settings/js/vue-settings-apps-users-management.js
  41. 1
    1
      apps/settings/js/vue-settings-apps-users-management.js.map
  42. 2
    0
      apps/settings/js/vue-settings-nextcloud-pdf.js
  43. 1
    0
      apps/settings/js/vue-settings-nextcloud-pdf.js.map
  44. 2
    2
      apps/settings/js/vue-settings-personal-security.js
  45. 1
    1
      apps/settings/js/vue-settings-personal-security.js.map
  46. 2
    2
      apps/settings/js/vue-settings-personal-webauthn.js
  47. 1
    1
      apps/settings/js/vue-settings-personal-webauthn.js.map
  48. 46
    0
      apps/settings/lib/Controller/ReasonsController.php
  49. 50
    2
      apps/settings/lib/Settings/Personal/ServerDevNotice.php
  50. 36
    0
      apps/settings/src/main-nextcloud-pdf.js
  51. 4
    1
      apps/settings/templates/settings/personal/development.notice.php
  52. 2
    4
      apps/settings/tests/Controller/AdminSettingsControllerTest.php
  53. 2
    1
      apps/settings/webpack.js
  54. 1
    1
      apps/twofactor_backupcodes/js/settings.js
  55. 1
    1
      apps/twofactor_backupcodes/js/settings.js.map
  56. 1
    1
      apps/updatenotification/js/updatenotification.js
  57. 1
    1
      apps/updatenotification/js/updatenotification.js.map
  58. 2
    2
      apps/user_status/js/dashboard.js
  59. 1
    1
      apps/user_status/js/dashboard.js.map
  60. 2
    2
      apps/user_status/js/user-status-menu.js
  61. 1
    1
      apps/user_status/js/user-status-menu.js.map
  62. 2
    2
      apps/weather_status/js/weather-status.js
  63. 1
    1
      apps/weather_status/js/weather-status.js.map
  64. 1
    1
      apps/workflowengine/js/workflowengine.js
  65. 1
    1
      apps/workflowengine/js/workflowengine.js.map
  66. 1
    1
      core/js/dist/login.js
  67. 1
    1
      core/js/dist/login.js.map
  68. 1
    1
      core/js/dist/maintenance.js
  69. 1
    1
      core/js/dist/maintenance.js.map
  70. 1
    1
      core/js/dist/recommendedapps.js
  71. 1
    1
      core/js/dist/recommendedapps.js.map
  72. 1
    1
      core/js/dist/unified-search.js
  73. 1
    1
      core/js/dist/unified-search.js.map
  74. 249
    887
      package-lock.json

+ 1
- 1
apps/accessibility/js/accessibility.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/accessibility/js/accessibility.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
apps/dashboard/js/dashboard.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/dashboard/js/dashboard.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
apps/files/js/dist/personal-settings.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/files/js/dist/personal-settings.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
apps/files/js/dist/sidebar.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/files/js/dist/sidebar.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
apps/files_sharing/js/dist/additionalScripts.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/files_sharing/js/dist/additionalScripts.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
apps/files_sharing/js/dist/collaboration.js View File

@@ -1,2 +1,2 @@
!function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="/js/",t(t.s=164)}({164:function(e,n,r){r.p=OC.linkTo("files_sharing","js/dist/"),r.nc=btoa(OC.requestToken),window.OCP.Collaboration.registerType("file",{action:function(){return new Promise((function(e,n){OC.dialogs.filepicker(t("files_sharing","Link to a file"),(function(t){OC.Files.getClient().getFileInfo(t).then((function(n,t){e(t.id)})).fail((function(){n(new Error("Cannot get fileinfo"))}))}),!1,null,!1,OC.dialogs.FILEPICKER_TYPE_CHOOSE,"",{allowDirectoryChooser:!0})}))},typeString:t("files_sharing","Link to a file"),typeIconClass:"icon-files-dark"})}});
!function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="/js/",t(t.s=151)}({151:function(e,n,r){r.p=OC.linkTo("files_sharing","js/dist/"),r.nc=btoa(OC.requestToken),window.OCP.Collaboration.registerType("file",{action:function(){return new Promise((function(e,n){OC.dialogs.filepicker(t("files_sharing","Link to a file"),(function(t){OC.Files.getClient().getFileInfo(t).then((function(n,t){e(t.id)})).fail((function(){n(new Error("Cannot get fileinfo"))}))}),!1,null,!1,OC.dialogs.FILEPICKER_TYPE_CHOOSE,"",{allowDirectoryChooser:!0})}))},typeString:t("files_sharing","Link to a file"),typeIconClass:"icon-files-dark"})}});
//# sourceMappingURL=collaboration.js.map

+ 1
- 1
apps/files_sharing/js/dist/collaboration.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
apps/files_sharing/js/dist/files_sharing.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/files_sharing/js/dist/files_sharing.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
apps/files_sharing/js/dist/files_sharing_tab.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/files_sharing/js/dist/files_sharing_tab.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
apps/files_sharing/js/dist/main.js View File

@@ -1,2 +1,2 @@
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/js/",r(r.s=282)}({282:function(e,t){Object.assign(OC,{Share:{SHARE_TYPE_USER:0,SHARE_TYPE_GROUP:1,SHARE_TYPE_LINK:3,SHARE_TYPE_EMAIL:4,SHARE_TYPE_REMOTE:6,SHARE_TYPE_CIRCLE:7,SHARE_TYPE_GUEST:8,SHARE_TYPE_REMOTE_GROUP:9,SHARE_TYPE_ROOM:10}})}});
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/js/",r(r.s=277)}({277:function(e,t){Object.assign(OC,{Share:{SHARE_TYPE_USER:0,SHARE_TYPE_GROUP:1,SHARE_TYPE_LINK:3,SHARE_TYPE_EMAIL:4,SHARE_TYPE_REMOTE:6,SHARE_TYPE_CIRCLE:7,SHARE_TYPE_GUEST:8,SHARE_TYPE_REMOTE_GROUP:9,SHARE_TYPE_ROOM:10}})}});
//# sourceMappingURL=main.js.map

+ 1
- 1
apps/files_sharing/js/dist/main.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
apps/files_sharing/js/dist/personal-settings.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/files_sharing/js/dist/personal-settings.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
apps/oauth2/js/oauth2.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/oauth2/js/oauth2.js.map
File diff suppressed because it is too large
View File


+ 2
- 0
apps/settings/appinfo/routes.php View File

@@ -79,5 +79,7 @@ return [
['name' => 'WebAuthn#startRegistration', 'url' => '/settings/api/personal/webauthn/registration', 'verb' => 'GET' , 'root' => ''],
['name' => 'WebAuthn#finishRegistration', 'url' => '/settings/api/personal/webauthn/registration', 'verb' => 'POST' , 'root' => ''],
['name' => 'WebAuthn#deleteRegistration', 'url' => '/settings/api/personal/webauthn/registration/{id}', 'verb' => 'DELETE' , 'root' => ''],

['name' => 'Reasons#getPdf', 'url' => '/settings/download/reasons', 'verb' => 'GET', 'root' => ''],
]
];

+ 1
- 0
apps/settings/composer/composer/autoload_classmap.php View File

@@ -25,6 +25,7 @@ return array(
'OCA\\Settings\\Controller\\LogSettingsController' => $baseDir . '/../lib/Controller/LogSettingsController.php',
'OCA\\Settings\\Controller\\MailSettingsController' => $baseDir . '/../lib/Controller/MailSettingsController.php',
'OCA\\Settings\\Controller\\PersonalSettingsController' => $baseDir . '/../lib/Controller/PersonalSettingsController.php',
'OCA\\Settings\\Controller\\ReasonsController' => $baseDir . '/../lib/Controller/ReasonsController.php',
'OCA\\Settings\\Controller\\TwoFactorSettingsController' => $baseDir . '/../lib/Controller/TwoFactorSettingsController.php',
'OCA\\Settings\\Controller\\UsersController' => $baseDir . '/../lib/Controller/UsersController.php',
'OCA\\Settings\\Controller\\WebAuthnController' => $baseDir . '/../lib/Controller/WebAuthnController.php',

+ 1
- 0
apps/settings/composer/composer/autoload_static.php View File

@@ -40,6 +40,7 @@ class ComposerStaticInitSettings
'OCA\\Settings\\Controller\\LogSettingsController' => __DIR__ . '/..' . '/../lib/Controller/LogSettingsController.php',
'OCA\\Settings\\Controller\\MailSettingsController' => __DIR__ . '/..' . '/../lib/Controller/MailSettingsController.php',
'OCA\\Settings\\Controller\\PersonalSettingsController' => __DIR__ . '/..' . '/../lib/Controller/PersonalSettingsController.php',
'OCA\\Settings\\Controller\\ReasonsController' => __DIR__ . '/..' . '/../lib/Controller/ReasonsController.php',
'OCA\\Settings\\Controller\\TwoFactorSettingsController' => __DIR__ . '/..' . '/../lib/Controller/TwoFactorSettingsController.php',
'OCA\\Settings\\Controller\\UsersController' => __DIR__ . '/..' . '/../lib/Controller/UsersController.php',
'OCA\\Settings\\Controller\\WebAuthnController' => __DIR__ . '/..' . '/../lib/Controller/WebAuthnController.php',

+ 31
- 0
apps/settings/css/settings.scss View File

@@ -161,6 +161,37 @@ select {
}


// Button for 'Reasons to use Nextcloud in your organization'
.development-notice {
text-align: center;
}

.link-button {
display: inline-block;
margin: 16px;
padding: 14px 20px;
background-color: var(--color-primary);
color: #fff;
border-radius: var(--border-radius-pill);
border: 1px solid var(--color-primary);
box-shadow: 0 2px 9px var(--color-box-shadow);

&:active,
&:hover,
&:focus {
color: var(--color-primary);
background-color: var(--color-primary-text);
border-color: var(--color-primary) !important;
}

&.icon-file {
padding-left: 48px;
background-position: 24px;
}
}



@media (min-width: 1200px) and (max-width: 1400px) {
#personal-settings {
display: grid;

BIN
apps/settings/data/Reasons to use Nextcloud.pdf View File


+ 2
- 2
apps/settings/js/vue-0.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/settings/js/vue-0.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
apps/settings/js/vue-6.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/settings/js/vue-6.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
apps/settings/js/vue-7.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/settings/js/vue-7.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
apps/settings/js/vue-8.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/settings/js/vue-8.js.map
File diff suppressed because it is too large
View File


+ 2
- 0
apps/settings/js/vue-9.js
File diff suppressed because it is too large
View File


+ 1
- 0
apps/settings/js/vue-9.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
apps/settings/js/vue-settings-admin-security.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/settings/js/vue-settings-admin-security.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
apps/settings/js/vue-settings-apps-users-management.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/settings/js/vue-settings-apps-users-management.js.map
File diff suppressed because it is too large
View File


+ 2
- 0
apps/settings/js/vue-settings-nextcloud-pdf.js
File diff suppressed because it is too large
View File


+ 1
- 0
apps/settings/js/vue-settings-nextcloud-pdf.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
apps/settings/js/vue-settings-personal-security.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/settings/js/vue-settings-personal-security.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
apps/settings/js/vue-settings-personal-webauthn.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/settings/js/vue-settings-personal-webauthn.js.map
File diff suppressed because it is too large
View File


+ 46
- 0
apps/settings/lib/Controller/ReasonsController.php View File

@@ -0,0 +1,46 @@
<?php

declare(strict_types=1);
/**
* @copyright Copyright (c) 2020, Roeland Jago Douma <roeland@famdouma.nl>
*
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @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/>.
*
*/

namespace OCA\Settings\Controller;

use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\DataDisplayResponse;

class ReasonsController extends Controller {

/**
* @NoCSRFRequired
* @NoAdminRequired
* @NoSubAdminRequired
*/
public function getPdf() {
$data = file_get_contents(__DIR__ . '/../../data/Reasons to use Nextcloud.pdf');

$resp = new DataDisplayResponse($data);
$resp->addHeader('Content-Type', 'application/pdf');

return $resp;
}
}

+ 50
- 2
apps/settings/lib/Settings/Personal/ServerDevNotice.php View File

@@ -24,24 +24,72 @@

namespace OCA\Settings\Settings\Personal;

use OCA\Viewer\Event\LoadViewer;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\IRootFolder;
use OCP\IURLGenerator;
use OCP\IUserSession;
use OCP\Settings\ISettings;
use OCP\Support\Subscription\IRegistry;
use OCP\Util;

class ServerDevNotice implements ISettings {

/** @var IRegistry */
private $registry;

public function __construct(IRegistry $registry) {
/** @var IEventDispatcher */
private $eventDispatcher;

/** @var IRootFolder */
private $rootFolder;

/** @var IUserSession */
private $userSession;

/** @var IInitialState */
private $initialState;

/** @var IURLGenerator */
private $urlGenerator;

public function __construct(IRegistry $registry,
IEventDispatcher $eventDispatcher,
IRootFolder $rootFolder,
IUserSession $userSession,
IInitialState $initialState,
IURLGenerator $urlGenerator) {
$this->registry = $registry;
$this->eventDispatcher = $eventDispatcher;
$this->rootFolder = $rootFolder;
$this->userSession = $userSession;
$this->initialState = $initialState;
$this->urlGenerator = $urlGenerator;
}

/**
* @return TemplateResponse
*/
public function getForm() {
return new TemplateResponse('settings', 'settings/personal/development.notice');
$userFolder = $this->rootFolder->getUserFolder($this->userSession->getUser()->getUID());

$hasInitialState = false;

// If the Reasons to use Nextcloud.pdf file is here, let's init Viewer
if ($userFolder->nodeExists('Reasons to use Nextcloud.pdf')) {
$this->eventDispatcher->dispatch(LoadViewer::class, new LoadViewer());
$hasInitialState = true;
}

// Always load the script
Util::addScript('settings', 'vue-settings-nextcloud-pdf');
$this->initialState->provideInitialState('has-reasons-use-nextcloud-pdf', $hasInitialState);

return new TemplateResponse('settings', 'settings/personal/development.notice', [
'reasons-use-nextcloud-pdf-link' => $this->urlGenerator->linkToRoute('settings.Reasons.getPdf')
]);
}

/**

+ 36
- 0
apps/settings/src/main-nextcloud-pdf.js View File

@@ -0,0 +1,36 @@
/**
* @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>
*
* @author John Molakvoæ <skjnldsv@protonmail.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/>.
*
*/
import { loadState } from '@nextcloud/initial-state'

const hasPdf = loadState('settings', 'has-reasons-use-nextcloud-pdf') === true

window.addEventListener('DOMContentLoaded', function() {
const link = document.getElementById('open-reasons-use-nextcloud-pdf')
if (link && hasPdf) {
link.addEventListener('click', function(event) {
event.preventDefault()
OCA.Viewer.open({
path: '/Reasons to use Nextcloud.pdf',
})
})
}
})

+ 4
- 1
apps/settings/templates/settings/personal/development.notice.php View File

@@ -1,4 +1,7 @@
<div class="section">
<div class="section development-notice">
<p>
<a href="<?php p($_['reasons-use-nextcloud-pdf-link']); ?>" id="open-reasons-use-nextcloud-pdf" class="link-button icon-file" target="_blank">Reasons to use Nextcloud in your organization</a>
</p>
<p>
<?php print_unescaped(str_replace(
[

+ 2
- 4
apps/settings/tests/Controller/AdminSettingsControllerTest.php View File

@@ -37,7 +37,6 @@ use OCP\IRequest;
use OCP\IUser;
use OCP\IUserSession;
use OCP\Settings\IManager;
use OCP\Support\Subscription\IRegistry;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;

@@ -87,7 +86,7 @@ class AdminSettingsControllerTest extends TestCase {
$this->subAdmin
);

$user = \OC::$server->getUserManager()->createUser($this->adminUid, 'olo');
$user = \OC::$server->getUserManager()->createUser($this->adminUid, 'mylongrandompassword');
\OC_User::setUserId($user->getUID());
\OC::$server->getGroupManager()->createGroup('admin')->addUser($user);
}
@@ -100,7 +99,6 @@ class AdminSettingsControllerTest extends TestCase {

public function testIndex() {
$user = $this->createMock(IUser::class);
$registry = $this->createMock(IRegistry::class);
$this->userSession
->method('getUser')
->willReturn($user);
@@ -125,7 +123,7 @@ class AdminSettingsControllerTest extends TestCase {
->expects($this->once())
->method('getAdminSettings')
->with('test')
->willReturn([5 => new ServerDevNotice($registry)]);
->willReturn([5 => $this->createMock(ServerDevNotice::class)]);

$idx = $this->adminSettingsController->index('test');


+ 2
- 1
apps/settings/webpack.js View File

@@ -5,7 +5,8 @@ module.exports = {
'settings-apps-users-management': path.join(__dirname, 'src', 'main-apps-users-management'),
'settings-admin-security': path.join(__dirname, 'src', 'main-admin-security'),
'settings-personal-security': path.join(__dirname, 'src', 'main-personal-security'),
'settings-personal-webauthn': path.join(__dirname, 'src', 'main-personal-webauth')
'settings-personal-webauthn': path.join(__dirname, 'src', 'main-personal-webauth'),
'settings-nextcloud-pdf': path.join(__dirname, 'src', 'main-nextcloud-pdf'),
},
output: {
path: path.resolve(__dirname, './js'),

+ 1
- 1
apps/twofactor_backupcodes/js/settings.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/twofactor_backupcodes/js/settings.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
apps/updatenotification/js/updatenotification.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/updatenotification/js/updatenotification.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
apps/user_status/js/dashboard.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/user_status/js/dashboard.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
apps/user_status/js/user-status-menu.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/user_status/js/user-status-menu.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
apps/weather_status/js/weather-status.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/weather_status/js/weather-status.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
apps/workflowengine/js/workflowengine.js
File diff suppressed because it is too large
View File


+ 1
- 1
apps/workflowengine/js/workflowengine.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/login.js
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/login.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/maintenance.js
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/maintenance.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/recommendedapps.js
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/recommendedapps.js.map
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/unified-search.js
File diff suppressed because it is too large
View File


+ 1
- 1
core/js/dist/unified-search.js.map
File diff suppressed because it is too large
View File


+ 249
- 887
package-lock.json
File diff suppressed because it is too large
View File


Loading…
Cancel
Save