Info.ZD
Хранилище доступов к проектам, над которыми работает студия.
Движок - https://www.dokuwiki.org/
На Synology ЧПУ работает на Apache 2.2 и не работает на Apache 2.4.
Создание нового пользователя: Управление → Управление пользователями
Наши группы:
@ALL— неавторизованные пользователи, нет доступа ни к чему@user— зарегистрированный пользователь, доступ на чтение к корневомуinfo, кsnippets:и на редактирование кplayground:. Можно руками назначить доступ на чтение к определенной странице@adm— администраторы, создание и редактированиеadm:— главные доступы к серверам@dev— разработчики, создание и редактированиеdev:@seo— SEO-специалисты, создание и редактированиеseo:
Новым пользователям при создании автоматически назначается группа @user. Если при создании пользователя прописывается руками одна из специализированных групп — @dev, @seo, @adm, то нужно проследить, чтобы группа @user тоже была добавлена, т.е. указать группы через запятую: @user,@dev
Добавление новой группы: Управление → Управление списками контроля доступа
Устарело
@trainee— стажеры, нет доступа ни к чему, но можно руками назначить доступ на чтение к определенной странице
У нас может быть 2 режима авторизации:
authplain— обычный режим (по умолчанию)authad— авторизация через домен Active Directory
Из соображений безопасности режим авторизации меняется не через веб-интерфейс, а в файле conf\local.protected.php в строке:
$conf['authtype'] = 'authplain';
Если Active Directory поломается, то авторизоваться можно, переключив в файле local.protected.php эту строку.
В local.protected.php нужно добавить соответствие групп DokuWiki (слева) группам в Active Directory (справа):
$conf['superuser'] = '@DokuWiki_Admins';
$conf['dev_admins'] = '@Dev_Admins';
$conf['manager'] = '@Project_Managers';
$conf['developers'] = '@Developers';
$conf['seo'] = '@SEO';
$conf['trainee'] = '@Trainee';
$conf['crm'] = '@CRM';
У страниц с доступами к сайтам имя файла уже содержит имя домена. Настроим автоматическое отображение его вместо заголовка H1.
В шаблон lib/tpl/bootstrap3/main.php районе строки 130, после echo '<div class="dw-content">'; добавить:
echo '<div class="dw-content">';
// Авто-заголовок H1
$namespaces = array('dev','seo','adm');
if (in_array($INFO['namespace'], $namespaces)) {
$page_title = strtr(noNS($ID),'_',' ');
if ($page_title != 'info') {
echo '<h1 style="margin-top: 0;">'.$page_title.'</h1>';
}
}
echo $content;
В шаблон lib/tpl/bootstrap3/navbar.php районе строки 71, после <div class="navbar-right" id="dw__navbar_items"> добавить:
<div class="navbar-right" id="dw__navbar_items">
<!-- Password Generator links -->
<ul class="nav navbar-nav">
<li><a target="_blank" style="padding-top: 11px; padding-bottom: 8px; line-height: 16px; font-size: 13px;" href="https://www.webfx.com/tools/new-password-generator/show.php?length=8&lowercase=1&uppercase=1&numbers=1&type=ordinary">Password<br>Secure</a></li>
<li><a target="_blank" style="padding-top: 11px; padding-bottom: 8px; line-height: 16px; font-size: 13px;" href="https://www.webfx.com/tools/new-password-generator/show.php?length=8&digits=2&type=easy-to-remember">Password<br>Mnemonic</a></li>
</ul>
В шаблон lib/tpl/mikio/mikio.php в районе 1412 строки добавить:
public function includeHero(bool $print = true)
{
// 1) Чтобы можно было использовать $INFO и $ID:
global $INFO, $ID;
$html = '';
// ...
$html .= '<h1 class="mikio-hero-title">';
// Авто-заголовок H1
$namespaces = array('dev','seo','adm');
if (in_array($INFO['namespace'], $namespaces)) {
$page_title = strtr(noNS($ID),'_',' ');
if ($page_title == 'info') {
$html .= '<span style="text-transform: uppercase;">'.$INFO['namespace'].'</span>';
} else {
$html .= $page_title;
}
} else {
$html .= $this->parsePageTitle(); // No idea why this requires a blank space afterwards to work?
}
$html .= '</h1>';
Чтобы сократить количество спецсимволов только до необходимых, используем плагин charpicker.
Настройка:
- plugin»charpicker»chars:
→,↑,←,↓,•,✔,«,»,‹,›,—,…,© - plugin»charpicker»del_chars: пусто
- plugin»charpicker»del_all: [✔]
Альтернативный вариант: в файле \\nas\web\dokuwiki\inc\toolbar.php в блоке 'title' => $lang['qb_chars'],:
'list' => explode(' ','→ ↑ ← ↓ • ✔ « » ‹ › — … ©'),
После сохранения нужно или сохранить настройки, или выполнить touch conf/local.php
1) Зайти по SSH:
ssh -p851 zina@37.53.93.49 cd /home/zina/web/info.zina.com.ua/
2) Бэкап файлов:
zip -r info-zd_`date +%Y-%m-%d_%H-%M`_pages.zip public_html/data/pages zip -r info-zd_`date +%Y-%m-%d_%H-%M`_full.zip public_html
3) Скопировать на NAS (пароль rsync здесь: https://info.zina.com.ua/adm/nas#rsync):
rsync -av --progress /home/zina/web/info.zina.com.ua/info-zd_`date +%Y-%m-%d`* rsync@192.168.1.102::backup/info/
Чтобы сделать верхнюю часть типичных info страниц более компактной и информативной, сделаны изменения в файле темы Bootstrap 3:
\\nas\web\dokuwiki\lib\tpl\bootstrap3\main.php
примерно со строки 94:
<?php
// Page icons (print, email, share link, etc.)
// require_once(template('tpl/page-icons.php'));
tpl_flush(); /* flush the output buffer */
// Page-Header DokuWiki page
tpl_includeFile('pageheader.html');
// Page-Header DokuWiki page
if ($ACT == 'show') $TEMPLATE->includePage('pageheader');
// render the content into buffer for later use
ob_start();
tpl_content(false);
$content = ob_get_clean();
$toc = $TEMPLATE->getTOC(true);
$content_classes = array();
if ($toc) echo '<div class="dw-toc hidden-print">' . $toc . '</div>';
if ($TEMPLATE->getConf('tocCollapsed')) $content_classes[] = 'dw-toc-closed';
//Starred
if (strpos($_SERVER['REQUEST_URI'], '/info') === false) {
$starred = plugin_load('action','starred');
if ($starred) $starred->tpl_starred();
// авто-заголовок H1
$namespaces = array('dev','seo','adm');
if (in_array($INFO['namespace'], $namespaces)) {
echo '<h1 style="margin-top: 0;">'.strtr(noNS($ID),'_',' ').'</h1>';
}
}
echo '<div class="dw-content-page '. implode(' ', $content_classes) .'">';
echo '<!-- content -->';
Дальше без изменений.
https://www.dokuwiki.org/plugin:starred
Позволяет звездочкой делать закладки на страницы.
Помимо самого плагина и требуемого плагина https://www.dokuwiki.org/plugin:sqlite добавлен код в файл шаблона lib\tpl\bootstrap3\main.php (со строки 96 ):
//Starred
if (strpos($_SERVER['REQUEST_URI'], '/info') === false) {
$starred = plugin_load('action','starred');
if ($starred) $starred->tpl_starred();
}
lib\plugins\favoris\action.php
строка 37:
- // function register(&$contr) {
+ function register(Doku_Event_Handler $contr) {
lib\plugins\favoris\syntax.php
строка 42:
- // function handle($match, $state, $pos, &$handler) {
+ function handle($match, $state, $pos, Doku_Handler $handler) {
строка 47:
- // function render($mode, &$renderer, $data) {
+ function render($mode, Doku_Renderer $renderer, $data) {
Папка с текстовыми файлами страниц /volume1/web/dokuwiki/data/pages смонтирована (типа сделана ссылка) в шаред папку /volume1/Info/pages, которая доступна как \\nas\info\pages.
Можно прямо там редактировать файлы страниц DokuWiki, заходя по сети обычным файловым менеджером.
Через веб-интерфейс https://nas.zina.com.ua:5001/ почему-то не работает — не сохраняются изменения.
Временное монтирование, до перезагрузки:
sudo mount --bind /volume1/web/dokuwiki/data/pages /volume1/Info/pages
Постоянное монтирование:
Control Panel — Task Scheduler — Create — Triggered Task — Task Settings — Run command:
sudo mount --bind /volume1/web/dokuwiki/data/pages /volume1/Info/pages
Не доделано — нет настройки ЧПУ, на проде используется дефаултный .htaccess для Apache.
Действовать по инструкции:
На форуме говорят, что внутри архива права на файлы и директории корректные, менять не стоит.
Если возникает ошибка DokuWiki Setup Error The datadir ('pages') at ./data/pages is not found, isn't accessible or writable:
cd /var/www/dokuwiki.test chown -R www-data:www-data ./
