Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions apps/settings/css/help.css
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,32 @@
border: 0;
overflow: auto;
}

.help-wrapper {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
width: 100%;
}

.help-content__heading {
text-align: center;
padding: 20px;
}

.help-content {
display: block;
padding: 20px;
}

.help-content__body {
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
}

.help-content__body > .button {
margin: 20px;
}
16 changes: 15 additions & 1 deletion apps/settings/lib/Controller/HelpController.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
use OCP\INavigationManager;
use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IConfig;

#[IgnoreOpenAPI]
class HelpController extends Controller {
Expand All @@ -55,21 +56,26 @@ class HelpController extends Controller {
/** @var string */
private $userId;

/** @var IConfig */
private $config;

public function __construct(
string $appName,
IRequest $request,
INavigationManager $navigationManager,
IURLGenerator $urlGenerator,
?string $userId,
IGroupManager $groupManager,
IL10N $l10n
IL10N $l10n,
IConfig $config,
) {
parent::__construct($appName, $request);
$this->navigationManager = $navigationManager;
$this->urlGenerator = $urlGenerator;
$this->userId = $userId;
$this->groupManager = $groupManager;
$this->l10n = $l10n;
$this->config = $config;
}

/**
Expand All @@ -94,13 +100,21 @@ public function help(string $mode = 'user'): TemplateResponse {
$urlUserDocs = $this->urlGenerator->linkToRoute('settings.Help.help', ['mode' => 'user']);
$urlAdminDocs = $this->urlGenerator->linkToRoute('settings.Help.help', ['mode' => '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\'');
Expand Down
113 changes: 70 additions & 43 deletions apps/settings/templates/help.php
Original file line number Diff line number Diff line change
@@ -1,48 +1,75 @@
<?php
\OC_Util::addStyle('settings', 'help');
?>
<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 } ?>
<?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 } ?>

<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>
<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>
<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 resources')); ?>
</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>
<?php endif; ?>
6 changes: 6 additions & 0 deletions config/config.sample.php
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,12 @@
*/
'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.
Expand Down