Файловая структура Тикетовой Наны.

Перед установкой данного модуля убедитесь, что версия Nano-CMS у Вас актуальная. Если что-то идёт явно не так, Вы знаете, в чём причина.

Далее предписано совершить четыре простых шага:

1) Перенесите дистрибутив Тикетовой Наны на хост:

В директорию Базовой Нано-CMS Вам необходимо поместить содержимое дистрибутива Тикетовой Наны.

Корневая папка скрипта 755
data 755
content 777
ticket 755
guerilla.php 644 ascii
sha256-hash-generator.php 644 ascii
ticket.php 644 ascii
modules 777
ticket 777
_ticket.php 644 ascii
_ticket_52.php 644 bin
_ticket_53.php 644 bin
_ticket_54.php 644 bin
i 755
ticket 755
pdf.png 644 bin
zip.png 644 bin

Перенос файлов дистрибутива на сервер осуществляется FTP клиентом.
Моду загрузки (ASCII или BINARY) выбирайте согласно этой схеме.

В фолдере ./data/modules/ticket/ будут рождаться папки.
Поэтому непременно ставьте указанному фолдеру права на запись.

2) Дополните файл настроек settings.php

В файл настроек ./data/settings.php внесите запись:

   $_s['ticket']=array(
      
'ticket'    => array(            # Имя данной инсталляции.
         
'admins' => array('master'),  # Список админов, управляющих этой инсталляцией.
         
'crypto' => true,             # Шифрование данных.    true|false
         
'notice' => true,             # Оповещение о тикетах. true|false
         
'mode'   => true,             # true - режим тикетов, false - партизанский.
         
'days'   => 365,              # Удалять тикеты пользователя через год.
         
'max'    => 1000,             # Максимальное количество тикетов на одного пользователя.
         
'pagino' => 10,               # Пагинация, записей на страницу.
         
'text'   => 10,               # Максимальный размер сообщения в килобайтах.
                                       # Помните, что при включенном шифровании 
                                       # множество больших сообщений на странице 
                                       # будут нещадно тормозить. Ибо
                                       # $_s['ticket']['xxx']['pagino']*$_s['ticket']['xxx']['text']
         
'att'    => 256,              # Максимальный размер аттача в килобайтах.
      
),
      
'base'      => '/ticket/',       # Место в папке модулей.
   
);

Как и любой другой модуль, этот должен содержать перечень существующих Администраторов, который в простейшем случае состоит из единственного Администратора, как это показано в примере.

Если Вам требуется ещё одна система тикетов на сайте, создаёте запись для неё, задав другое имя инсталляции. Запись будет выглядеть, например, так:

   $_s['ticket']=array(
      
'ticket'    => array(            # Имя данной инсталляции.
         
'admins' => array('master'),
         
'crypto' => true,
         
'notice' => true,
         
'mode'   => true,             # режим тикетов.
         
'days'   => 365,
         
'max'    => 1000,
         
'pagino' => 10,
         
'text'   => 10,
         
'att'    => 256,
      ),
      
'guerilla'  => array(            # Имя данной инсталляции.
         
'admins' => array('master'),
         
'crypto' => true,
         
'notice' => true,
         
'mode'   => false,            # партизанский режим.
         
'days'   => 365,
         
'max'    => 1000,
         
'pagino' => 10,
         
'text'   => 10,
         
'att'    => 256,
      ),
      
'base'      => '/ticket/',
   );

Тут у нас получилась инсталляция ticket с Тикетовой Наной, и инсталляция guerilla с Партизанской Наной (о чём отдельный разговор).

3) Создайте документ с тикетами.

Совершенно всё равно, где он находится в файловой структуре сайта.
Важно, что у документа внутри.

А внутри у него не много:

<?php /* Выше этой строки в файле ничего не должно быть */

   
$ticket_name='ticket';              # Имя инсталляции.
   
include($_s['loc']['modul'].$_s['ticket']['base'].'_ticket.php');

/* Ниже этой строки в файле ничего не должно быть. */ ?>

Вы должны указать имя инсталляции, оговоренное записями файла настроек. В данном случае это может быть либо ticket, либо guerilla

В этот документ можно добавить задатчик e-mail для оповещения Администратора о новых тикетах пользователя. Это делается в том случае, если Nano-CMS вообще запрещено слать Администратору письма, но в данном случае оповещения всё-таки нужны. Либо если возникает необходимость для оповещений Тикетовой Наны назначить иной адрес электронной почты.

Делается это просто:

<?php /* Выше этой строки в файле ничего не должно быть */

   
$_s['connect']['mail']='e@mail.nu'# Использовать этот адрес.
   
$ticket_name='ticket';              # Имя инсталляции.
   
include($_s['loc']['modul'].$_s['ticket']['base'].'_ticket.php');

/* Ниже этой строки в файле ничего не должно быть. */ ?>

4) Измените интерфейс, дизайн и сообщения под себя.

Для этого есть файл ./data/modules/ticket/_ticket.php
Шаблоны оформления, тексты сообщений и кнопок интерфейса ищите там.
Всё это можно переопределять.

Стили сервиса, как обычно, вынесены в CSS файл движка Базовой Наны.
Соответствующий файл дистрибутива точно их содержит.
Искать нужно фрагмент CSS между вот такими комментариями:

/* Start Ticket */
/* End Ticket */

4a) Режим повышенной безопасности.

В том же самом файле ./data/modules/ticket/_ticket.php есть множество шаблонов, и, в частности, шаблон оповещения Администратора о новом тикете. Вот он:

      $_s['template']['ticket']['notice']='

<div style="text-indent:1em;margin:10px;font-family:verdana,arial,sans-serif;font-size:16px;font-weight:normal;">
   <br>Subject:    ===subject===
   <br>From:       ===from===
   <br>Date:       ===date===
   <br>
   <br>===message===
   <br>
   <br>IP-Adresse: '
.$_s['ip'].'
   <br>Browser:    '
.$_s['agent'].'
   <br>SendPage:   '
.$_s['from'].'
</div>
<hr>'
;

Понимая, что введённая пользователем информация передаётся по e-mail протоколу, к которому в свете последних событий нет никакого доверия, вписывать в письмо с оповещением о новом тикете содержимое самого тикета не самая лучшая идея, верно?

Вместе с тем, просто не посылать такое оповещение - заставлять пользователя ждать ответа на свой вопрос, причём совершенно беспричинно. Наверное, оповещение всё-таки стоит посылать, предварительно изъяв из него чувствительную информацию.

Тут проблем не возникает.
Просто изымите из шаблона лишние макросы.
Например, так:

      $_s['template']['ticket']['notice']='

<div style="text-indent:1em;margin:10px;font-family:verdana,arial,sans-serif;font-size:16px;font-weight:normal;">
   <br>Subject:    [censored]
   <br>From:       ===from===
   <br>Date:       ===date===
   <br>
   <br>Ticket:     [censored]
   <br>
   <br>IP-Adresse: '
.$_s['ip'].'
   <br>Browser:    '
.$_s['agent'].'
   <br>SendPage:   '
.$_s['from'].'
</div>
<hr>'
;

Ну или просто напишите в шаблоне, что на таком-то сайте оставлен тикет.