Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1

Мод форума - описание для тем

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#1
Мод добавляет поддержку описания для тем форума.
Предупреждение - обязательно сохраните бэкап базы данных перед модификацией.
Для подключения необходимо:
1) Исправить структуру таблицы "themes" базы данных, добавив новое поле со следующими параметрами:
- имя "description";
- тип данных: MEDIUMTEXT;
- значение по умолчанию: NULL;
- кодировка (collation): utf8_general_ci;
- нулевое значение (NULL): разрешено.
2) В функции "__parseThemeTable" файла "\modules\forum\index.php" добавить после строки
Code:
$theme_title = h($theme['title']);
строки
Code:
$theme_description = h($theme['description']);
$markets['{DESCRIPTION}'] = $theme_description;
3) В функции "view_theme" файла "\modules\forum\index.php" добавить после строки
Code:
$id_forum = $res[0]['id_forum'];
строку
Code:
$description = $res[0]['description'];
А после строк
Code:
$markets['{NAVIGATION }'] = get_link('Список форумов', '/forum/') . ' &raquo ' . get_link(h($res[0]['title']), 
'/forum/view_forum/' .  $id_forum) . ' &raquo ' . get_link(h($theme), '/forum/view_theme/' . $id_theme);
строки
Code:
if (!empty($description)) {
    $markets['{NAVIGATION }'] .= ' (' . $description . ')';
}
4) В функции "add_theme_form" файла "\modules\forum\index.php" добавить после строки
Code:
$theme   = h( $_SESSION['viewMessage']['theme'] );
строку
Code:
$description = h( $_SESSION['viewMessage']['description'] );
А после строки
Code:
$theme   = h( $_SESSION['addThemeForm']['theme'] );
строку
Code:
$description = h( $_SESSION['addThemeForm']['description'] );
После строки
Code:
$markets['{THEME}'] = (!empty($theme)) ? $theme : '';
строку
Code:
$markets['{DESCRIPTION}'] = (!empty($description)) ? $description : '';
5) В функции "add_theme" файла "\modules\forum\index.php" добавить после строки
Code:
$theme   = trim($theme);
строки
Code:
$description = mb_substr($_POST['description'], 0, 128);
$description = trim($description);
После строки
Code:
$_SESSION['viewMessage']['theme']   = $theme;
строку
Code:
$_SESSION['viewMessage']['description'] = $description;
После строк
Code:
elseif (!$valobj->cha_val($theme, V_TITLE)) 
    $error = $error.'<li>поле "Тема" содержит недопустимые символы</li>'."\n";
строки
Code:
if (!$valobj->cha_val($description, V_TITLE))
    $error = $error.'<li>поле "Описание темы" содержит недопустимые символы</li>'."\n";
После строки
Code:
$_SESSION['addThemeForm']['theme']   = $theme;
строку
Code:
$_SESSION['addThemeForm']['description'] = $description;
Заменить выражение
Code:
$res = $this->DB->save('themes', array(
    'title'          => $theme,
    'id_author'      => $_SESSION['user']['id'],
    'time'           => new Expr('NOW()'),
    'id_last_author' => $_SESSION['user']['id'],
    'last_post'      => new Expr('NOW()'),
    'id_forum'       => $id_forum 
));
на
Code:
$res = $this->DB->save('themes', array(
    'title'          => $theme,
    'description'    => $description,
    'id_author'      => $_SESSION['user']['id'],
    'time'           => new Expr('NOW()'),
    'id_last_author' => $_SESSION['user']['id'],
    'last_post'      => new Expr('NOW()'),
    'id_forum'       => $id_forum
));
6) В функции "edit_theme_form" файла "\modules\forum\index.php" добавить после строки
Code:
$name = h($_SESSION['editThemeForm']['name']);
строку
Code:
$description = h($_SESSION['editThemeForm']['description']);
После строки
Code:
$name = h($theme['title']);
строку
Code:
$description = h($theme['description']);
После строки
Code:
$markets['{NAME}'] = $name;
строку
Code:
$markets['{DESCRIPTION}'] = $description;
7) В функции "update_theme" файла "\modules\forum\index.php" добавить после строки
Code:
$name = trim($name);
строки
Code:
$description = mb_substr($_POST['description'], 0, 128);
$description = trim($description);
После строк
Code:
if (!$valobj->cha_val($name, V_TITLE)) 
    $error = $error.'<li>поле "Тема" содержит недопустимые символы</li>'."\n";
строки
Code:
if (!$valobj->cha_val($description, V_TITLE))
    $error = $error.'<li>поле "Описание темы" содержит недопустимые символы</li>'."\n";
После строки
Code:
$_SESSION['editThemeForm']['name']   = $name;
строку
Code:
$_SESSION['editThemeForm']['description'] = $description;
Заменить выражение
Code:
$this->DB->save('themes', array(
    'title' => $name,
    'id_forum' => $id_forum,
    'id' => $id_theme,
));
на
Code:
$this->DB->save('themes', array(
    'title' => $name,
    'description' => $description,
    'id_forum' => $id_forum,
    'id' => $id_theme,
));
8) Если использовался мод с RSS, то необходимо в функции "rss" файла "\modules\forum\index.php" добавить после строки
Code:
$html .= '<description><![CDATA[Форум: <a href="' . $sitename . 'forum/view_forum/' . $last_post['id_forum'] . '">' . $last_post['forum_title'] . '</a><br />';
строки
Code:
if (!empty($last_post['description'])) {
    $html .= 'Описание темы: ' . $last_post['description'] . '<br />';
}
9) Если использовался мод с отдельными сообщениями, то в функции "view_post" файла "\modules\forum\index.php" заменить выражение
Code:
'fields' => array('a.id', 'a.message', 'a.id_author', 'a.time', 'a.attaches', 'a.locked', 'a.id_theme',
                    "DATE_FORMAT(a.edittime, '%d.%m.%Y') AS edittime", 'a.id_editor', "IFNULL(b.name, '"
                    . Config::read('not_reg_user', 'forum') . "') AS author", 'b.posts', 'b.url',
                    "DATE_FORMAT(b.puttime, '%d.%m.%Y') AS regtime", 'b.status AS status', 'b.state AS state',
                    "IFNULL(b.signature, '') AS signature", "IFNULL(b.locked, 0) AS blocked", "IFNULL(c.name, '') AS editor",
                    "IFNULL(c.status, '') AS editor_status", 'd.title AS theme_title',
                    'd.id_forum AS forum_id', 'e.title AS forum_title'),
на
Code:
'fields' => array('a.id', 'a.message', 'a.id_author', 'a.time', 'a.attaches', 'a.locked', 'a.id_theme',
                    "DATE_FORMAT(a.edittime, '%d.%m.%Y') AS edittime", 'a.id_editor', "IFNULL(b.name, '"
                    . Config::read('not_reg_user', 'forum') . "') AS author", 'b.posts', 'b.url',
                    "DATE_FORMAT(b.puttime, '%d.%m.%Y') AS regtime", 'b.status AS status', 'b.state AS state',
                    "IFNULL(b.signature, '') AS signature", "IFNULL(b.locked, 0) AS blocked", "IFNULL(c.name, '') AS editor",
                    "IFNULL(c.status, '') AS editor_status", 'd.title AS theme_title', 'd.description AS theme_description',
                    'd.id_forum AS forum_id', 'e.title AS forum_title'),
После строки
Code:
$theme_title = $res[0]['theme_title'];
строку
Code:
$theme_description = $res[0]['theme_description'];
После строк
Code:
$markets['{NAVIGATION }'] = get_link('Список форумов', '/forum/') . ' &raquo ' . get_link(h($forum_title),
    '/forum/view_forum/' .  $forum_id) . ' &raquo ' . get_link(h($theme_title), '/forum/view_theme/' . $theme_id);
строки
Code:
if (!empty($theme_description)) {
    $markets['{NAVIGATION }'] .= ' (' . $theme_description . ')';
}
10) Изменить файлы шаблона, расположенные в папке "forum":
- добавить в файлы "vievthemes.html" и "vievlastthemes.html" тег {DESCRIPTION} для вывода описания темы;
- добавить в файлы "addthemeform.html" и "editthemeform.html" поле для редактирования темы:
Code:
<input type="text" name="description" maxlength="128" value="{DESCRIPTION}" />

[color=939494]Добавлено 2011.02.26 11-51


Везде где, в коде используется тег {NAVIGATION } перед использованием необходимо убрать пробел перед закрывающей скобкой (бага форума).

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#2
Ух ты. Ничего так. На досуге потестим.

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#3
Wasja пишет:
Везде где, в коде используется тег {NAVIGATION } перед использованием необходимо убрать пробел перед закрывающей скобкой (бага форума).
Надо как раз посмотреть что за нах))) К стати, описание скорее всего и так будет на форуме в следующем релизе:) Конечно инициатива твоя мне очень нравиться, но лучше бы это как нить согласовывать. Или ты просто модифицируешь свой сайт под себя и заодно другим показываешь?

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#4
Drunya пишет:
Или ты просто модифицируешь свой сайт под себя и заодно другим показываешь?
Именно. Я про это в другой теме отписывался.

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#5
Wasja пишет:
Именно. Я про это в другой теме отписывался.
Ааа, я еще не дошел до нее видимо)) А сайт покажешь?

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#6
Drunya, http://localhost ;)
Покажу когда допилю.

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#7
Wasja пишет:
Drunya, http://localhost [smile]
:D )))) Ну подождемс. Интересно увидеть))

Добавлено 2011.04.15 17-06

Теперь описание для тем есть в стандартной сборке.
Спасибо Wasja.

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)
1
Сейчас online: 47. Зарегистрированных: 1. Гостей: 46.