@@ -77,7 +77,7 @@ return [ | |||
['name' => 'TwoFactorSettings#update', 'url' => '/settings/api/admin/twofactorauth', 'verb' => 'PUT' , 'root' => ''], | |||
['name' => 'AISettings#update', 'url' => '/settings/api/admin/ai', 'verb' => 'PUT' , 'root' => ''], | |||
['name' => 'Help#help', 'url' => '/settings/help', 'verb' => 'GET', 'root' => ''], | |||
['name' => 'Help#help', 'url' => '/settings/help/{mode}', 'verb' => 'GET', 'defaults' => ['mode' => ''] , 'root' => ''], | |||
['name' => 'WebAuthn#startRegistration', 'url' => '/settings/api/personal/webauthn/registration', 'verb' => 'GET' , 'root' => ''], | |||
['name' => 'WebAuthn#finishRegistration', 'url' => '/settings/api/personal/webauthn/registration', 'verb' => 'POST' , 'root' => ''], |
@@ -1,7 +1,20 @@ | |||
.help-includes { | |||
overflow: hidden !important; | |||
} | |||
.help-list__text { | |||
margin-left: 24px; | |||
} | |||
.help-iframe { | |||
width: 100%; | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
border: 0; | |||
overflow: auto; | |||
} | |||
.help-wrapper { | |||
display: flex; | |||
justify-content: center; |
@@ -39,6 +39,7 @@ use OCP\IL10N; | |||
use OCP\INavigationManager; | |||
use OCP\IRequest; | |||
use OCP\IURLGenerator; | |||
use OCP\IConfig; | |||
#[IgnoreOpenAPI] | |||
class HelpController extends Controller { | |||
@@ -55,6 +56,9 @@ class HelpController extends Controller { | |||
/** @var string */ | |||
private $userId; | |||
/** @var IConfig */ | |||
private $config; | |||
public function __construct( | |||
string $appName, | |||
IRequest $request, | |||
@@ -62,7 +66,8 @@ class HelpController extends Controller { | |||
IURLGenerator $urlGenerator, | |||
?string $userId, | |||
IGroupManager $groupManager, | |||
IL10N $l10n | |||
IL10N $l10n, | |||
IConfig $config, | |||
) { | |||
parent::__construct($appName, $request); | |||
$this->navigationManager = $navigationManager; | |||
@@ -70,6 +75,7 @@ class HelpController extends Controller { | |||
$this->userId = $userId; | |||
$this->groupManager = $groupManager; | |||
$this->l10n = $l10n; | |||
$this->config = $config; | |||
} | |||
/** | |||
@@ -79,19 +85,40 @@ class HelpController extends Controller { | |||
* @NoAdminRequired | |||
* @NoSubAdminRequired | |||
*/ | |||
public function help(): TemplateResponse { | |||
public function help(string $mode = 'user'): TemplateResponse { | |||
$this->navigationManager->setActiveEntry('help'); | |||
$pageTitle = $this->l10n->t('Nextcloud help overview'); | |||
$pageTitle = $this->l10n->t('Administrator documentation'); | |||
if ($mode !== 'admin') { | |||
$pageTitle = $this->l10n->t('User documentation'); | |||
$mode = 'user'; | |||
} | |||
$documentationUrl = $this->urlGenerator->getAbsoluteURL( | |||
$this->urlGenerator->linkTo('', 'core/doc/' . $mode . '/index.html') | |||
); | |||
$urlUserDocs = $this->urlGenerator->linkToRoute('settings.Help.help', ['mode' => 'user']); | |||
$urlAdminDocs = $this->urlGenerator->linkToRoute('settings.Help.help', ['mode' => 'admin']); | |||
$urlUserDocs = $this->urlGenerator->linkToDocs('user'); | |||
$urlAdminDocs = $this->urlGenerator->linkToDocs('admin'); | |||
$knowledgebaseEmbedded = $this->config->getSystemValueBool('knowledgebase.embedded', false); | |||
if (!$knowledgebaseEmbedded) { | |||
$pageTitle = $this->l10n->t('Nextcloud help overview'); | |||
$urlUserDocs = $this->urlGenerator->linkToDocs('user'); | |||
$urlAdminDocs = $this->urlGenerator->linkToDocs('admin'); | |||
} | |||
$response = new TemplateResponse('settings', 'help', [ | |||
'admin' => $this->groupManager->isAdmin($this->userId), | |||
'url' => $documentationUrl, | |||
'urlUserDocs' => $urlUserDocs, | |||
'urlAdminDocs' => $urlAdminDocs, | |||
'mode' => $mode, | |||
'pageTitle' => $pageTitle, | |||
'knowledgebaseEmbedded' => $knowledgebaseEmbedded, | |||
]); | |||
$policy = new ContentSecurityPolicy(); | |||
$policy->addAllowedFrameDomain('\'self\''); | |||
$response->setContentSecurityPolicy($policy); | |||
return $response; | |||
} | |||
} |
@@ -1,28 +1,75 @@ | |||
<?php | |||
\OC_Util::addStyle('settings', 'help'); | |||
?> | |||
<?php if ($_['knowledgebaseEmbedded'] === true) : ?> | |||
<div id="app-navigation" role="navigation" tabindex="0"> | |||
<ul> | |||
<li> | |||
<a class="icon-user <?php if ($_['mode'] === 'user') { | |||
p('active'); | |||
} ?>" <?php if ($_['mode'] === 'user') { print_unescaped('aria-current="page"'); } ?> | |||
href="<?php print_unescaped($_['urlUserDocs']); ?>"> | |||
<span class="help-list__text"> | |||
<?php p($l->t('User documentation')); ?> | |||
</span> | |||
</a> | |||
</li> | |||
<?php if ($_['admin']) { ?> | |||
<li> | |||
<a class="icon-user-admin <?php if ($_['mode'] === 'admin') { | |||
p('active'); | |||
} ?>" <?php if ($_['mode'] === 'admin') { print_unescaped('aria-current="page"'); } ?> | |||
href="<?php print_unescaped($_['urlAdminDocs']); ?>"> | |||
<span class="help-list__text"> | |||
<?php p($l->t('Administrator documentation')); ?> | |||
</span> | |||
</a> | |||
</li> | |||
<?php } ?> | |||
<div id="app-content"> | |||
<div class="help-wrapper"> | |||
<div class="help-content"> | |||
<h2 class="help-content__heading"> | |||
<?php p($l->t('Nextcloud help overview')); ?> | |||
</h2> | |||
<div class="help-content__body"> | |||
<a class="button" target="_blank" rel="noreferrer noopener" | |||
href="<?php print_unescaped($_['urlAdminDocs']); ?>"> | |||
<?php p($l->t('Administration documentation')); ?> ↗ | |||
</a> | |||
<a class="button" target="_blank" rel="noreferrer noopener" | |||
href="<?php print_unescaped($_['urlUserDocs']); ?>"> | |||
<?php p($l->t('Account documentation')); ?> ↗ | |||
</a> | |||
<a href="https://docs.nextcloud.com" class="button" target="_blank" rel="noreferrer noopener"> | |||
<?php p($l->t('General documentation')); ?> ↗ | |||
</a> | |||
<a href="https://help.nextcloud.com" class="button" target="_blank" rel="noreferrer noopener"> | |||
<?php p($l->t('Forum')); ?> ↗ | |||
</a> | |||
<li> | |||
<a href="https://docs.nextcloud.com" class="icon-category-office" target="_blank" rel="noreferrer noopener"> | |||
<span class="help-list__text"> | |||
<?php p($l->t('Documentation')); ?> ↗ | |||
</span> | |||
</a> | |||
</li> | |||
<li> | |||
<a href="https://help.nextcloud.com" class="icon-comment" target="_blank" rel="noreferrer noopener"> | |||
<span class="help-list__text"> | |||
<?php p($l->t('Forum')); ?> ↗ | |||
</span> | |||
</a> | |||
</li> | |||
</div> | |||
<div id="app-content" class="help-includes"> | |||
<iframe src="<?php print_unescaped($_['url']); ?>" class="help-iframe" tabindex="0"> | |||
</iframe> | |||
</div> | |||
<?php else: ?> | |||
<div id="app-content"> | |||
<div class="help-wrapper"> | |||
<div class="help-content"> | |||
<h2 class="help-content__heading"> | |||
<?php p($l->t('Nextcloud help overview')); ?> | |||
</h2> | |||
<div class="help-content__body"> | |||
<a class="button" target="_blank" rel="noreferrer noopener" | |||
href="<?php print_unescaped($_['urlUserDocs']); ?>"> | |||
<?php p($l->t('Account documentation')); ?> ↗ | |||
</a> | |||
<a class="button" target="_blank" rel="noreferrer noopener" | |||
href="<?php print_unescaped($_['urlAdminDocs']); ?>"> | |||
<?php p($l->t('Administration documentation')); ?> ↗ | |||
</a> | |||
<a href="https://docs.nextcloud.com" class="button" target="_blank" rel="noreferrer noopener"> | |||
<?php p($l->t('General documentation')); ?> ↗ | |||
</a> | |||
<a href="https://help.nextcloud.com" class="button" target="_blank" rel="noreferrer noopener"> | |||
<?php p($l->t('Forum')); ?> ↗ | |||
</a> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
<?php endif; ?> |
@@ -234,6 +234,12 @@ $CONFIG = [ | |||
*/ | |||
'knowledgebaseenabled' => true, | |||
/** | |||
* ``true`` embeds the documentation in an iframe inside Nextcloud. | |||
* ``false`` only shows buttons to the online documentation. | |||
*/ | |||
'knowledgebase.embedded' => false, | |||
/** | |||
* ``true`` allows users to change their display names (on their Personal | |||
* pages), and ``false`` prevents them from changing their display names. |
@@ -0,0 +1,2 @@ | |||
Here goes the admin documentation. | |||
In the meantime go to <a href="https://nextcloud.com/support/" target="_blank">nextcloud.com/support/</a> |
@@ -0,0 +1,2 @@ | |||
Here goes the user documentation | |||
In the meantime go to <a href="https://nextcloud.com/support/" target="_blank">nextcloud.com/support/</a> |