Info.ZD

Матеріал з Wiki.Zina
Версія від 08:37, 8 серпня 2023, створена >Zina (→Тема Bootstrap3)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Хранилище доступов к проектам, над которыми работает студия.

https://info.zina.com.ua

Движок - 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 — стажеры, нет доступа ни к чему, но можно руками назначить доступ на чтение к определенной странице

Active Directory (сейчас не используется)

[ред. | ред. код]

У нас может быть 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

[ред. | ред. код]

У страниц с доступами к сайтам имя файла уже содержит имя домена. Настроим автоматическое отображение его вместо заголовка H1.

Тема Bootstrap3

[ред. | ред. код]

В шаблон 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>

Тема Mikio

[ред. | ред. код]

В шаблон 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 страниц

[ред. | ред. код]

Чтобы сделать верхнюю часть типичных 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 -->';

Дальше без изменений.


Starred Plugin

[ред. | ред. код]

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

Установка на Nginx

[ред. | ред. код]

Не доделано — нет настройки ЧПУ, на проде используется дефаултный .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 ./

Ссылки

[ред. | ред. код]