Мод сворачивания категории

Список разделов phpBBex 1.x (поддерживается) Мастерская 1.x

Описание: Только готовые решения! Статьи, заметки, моды и другие полезности для phpBBex 1.x и phpBB 3.0.x.
Модератор: Поддержка

Сообщение #1 lepag » 09.09.2012, 15:52

Мод позволяет сворачивать категории форума, с возможностью сохранения состояния в куках пользователя, а так-же в опции каждой из категорий указывать начальное состояние категории (свёрнута/развёрнута).

Работает на версии phpBBex 1.4.0.

Инструкция по установке.

В phpmyadmin выполнить
Код: Выделить всё
ALTER TABLE phpbb_forums ADD default_display tinyint(1) NOT NULL DEFAULT 1;


adm/style/acp_forums.html после
Код: Выделить всё
<label><input type="radio" class="radio" name="display_active" value="0"<!-- IF not S_DISPLAY_ACTIVE_TOPICS --> id="display_active" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
      </dl>
добавить
Код: Выделить всё
<dl>
         <dt><label for="forum_style">{L_DEFAULT_DISPLAY}:</label><br /><span>{L_DEFAULT_DISPLAY_EXPLAIN}</span></dt>
         <dd><label><input type="radio" class="radio" name="default_display" value="1"<!-- IF S_DEFAULT_DISPLAY --> id="default_display" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
            <label><input type="radio" class="radio" name="default_display" value="0"<!-- IF not S_DEFAULT_DISPLAY --> id="default_display" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
      </dl>


includes/acp/acp_forums.php после
Код: Выделить всё
'forum_password_unset'   => request_var('forum_password_unset', false),
добавить
Код: Выделить всё
'default_display'      => request_var('default_display', true),
после
Код: Выделить всё
'forum_password_confirm'=> '',
добавить
Код: Выделить всё
'default_display'      => true,
после
Код: Выделить всё
'S_CAN_COPY_PERMISSIONS'   => ($action != 'edit' || empty($forum_id) || ($auth->acl_get('a_fauth') && $auth->acl_get('a_authusers') && $auth->acl_get('a_authgroups') && $auth->acl_get('a_mauth'))) ? true : false,
добавить
Код: Выделить всё
'S_DEFAULT_DISPLAY'         => ($forum_data['default_display']) ? true : false,


includes/functions_display.php после
Код: Выделить всё
// Empty category
      if ($row['parent_id'] == $root_data['forum_id'] && $row['forum_type'] == FORUM_CAT)
      {
добавить
Код: Выделить всё
$cat_aff_stat = request_var($config['cookie_name'].'_cat_'.$row['forum_id'].'_aff_stat', intval($row['default_display']),false,true);
после
Код: Выделить всё
'S_IS_CAT'            => true,
добавить
Код: Выделить всё
'DISPLAY_CAT'         => ($cat_aff_stat) ? 'block' : 'none',
            'DISPLAY_CAT_LINK'      => ($cat_aff_stat) ? '<a href="javascriptshow_details(\'cat_'.$row['forum_id'].'\');" title="'.$user->lang['EXPAND_CAT_HIDE'].'">-</a>' : '<a href="javascriptshow_details(\'cat_'.$row['forum_id'].'\');" title="'.$user->lang['EXPAND_CAT_DISPLAY'].'">+</a>',


index.php после
Код: Выделить всё
'TOTAL_POSTS'   => sprintf($user->lang[$l_total_post_s], $total_posts),
добавить
Код: Выделить всё
'COOKIE_NAME'      => $config['cookie_name'],


language/ru/acp/forums.php перед
Код: Выделить всё
));

?>
добавить
Код: Выделить всё
'DEFAULT_DISPLAY'         => 'Expand this category by default',
   'DEFAULT_DISPLAY_EXPLAIN'   => 'Expand categories MOD\'s configuration',


language/ru/common.php перед
Код: Выделить всё
?>
добавить
Код: Выделить всё
$lang = array_merge($lang, array(
   'EXPAND_CAT_DISPLAY'   => 'Expand this category',
   'EXPAND_CAT_HIDE'      => 'Hide this category',
));


styles/prosilver/template/forumlist_body.html перед
Код: Выделить всё
<!-- BEGIN forumrow -->
добавить
Код: Выделить всё
<script type="text/javascript">
function show_details(id)
{
   if(document.getElementById(id).style.display == 'none')
   {
      //Display
      document.getElementById(id).style.display = 'block';
      //Change link
      document.getElementById('phpbb_'+id).innerHTML = '<a href="javascriptshow_details(\''+id+'\');" title="{L_EXPAND_CAT_HIDE}">-</a>';
      //Delete cookie
      document.cookie = '{COOKIE_NAME}_'+id+'_aff_stat=1;';
   }
   else
   {
      //Don't display
      document.getElementById(id).style.display = 'none';
      //Change link
      document.getElementById('phpbb_'+id).innerHTML = '<a href="javascriptshow_details(\''+id+'\');" title="{L_EXPAND_CAT_DISPLAY}">+</a>';      
      //Create cookie
      document.cookie = '{COOKIE_NAME}_'+id+'_aff_stat=0;';
   }
}
</script>
после
Код: Выделить всё
<!-- BEGIN forumrow -->
   <!-- IF (forumrow.S_IS_CAT and not forumrow.S_FIRST_ROW) or forumrow.S_NO_CAT  -->
         </ul>
добавить
Код: Выделить всё
</div>
заменить
Код: Выделить всё
<dt><!-- IF forumrow.S_IS_CAT --><a href="{forumrow.U_VIEWFORUM}">{forumrow.FORUM_NAME}</a><!-- ELSE -->{L_FORUM}<!-- ENDIF --></dt>
на
Код: Выделить всё
<dt><!-- IF forumrow.S_IS_CAT --><span id="phpbb_cat_{forumrow.FORUM_ID}" style="font-size:18px;margin-right:8px;">{forumrow.DISPLAY_CAT_LINK}</span><a href="{forumrow.U_VIEWFORUM}">{forumrow.FORUM_NAME}</a><!-- ELSE -->{L_FORUM}<!-- ENDIF --></dt>
перед
Код: Выделить всё
<ul class="topiclist forums">
добавить
Код: Выделить всё
<div id="cat_{forumrow.FORUM_ID}" style="display:{forumrow.DISPLAY_CAT};">
после
Код: Выделить всё
<!-- IF forumrow.S_LAST_ROW -->
         </ul>
добавить
Код: Выделить всё
</div>
После правки на забываем очищать кеш.
lepag
Автор темы
Репутация: 16
С нами: 11 лет 7 месяцев

Сообщение #2 KDit » 09.09.2012, 21:00

lepag:с возможностью сохранения состояния в куках пользователя
работает?
KDit
Репутация: 67
С нами: 11 лет 9 месяцев

Сообщение #3 lepag » 09.09.2012, 21:03

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

Добавлено спустя 14 минут 53 секунды:
Если у вас не работает, то по пробуйте такой вариант скрипта
Код: Выделить всё
<script type="text/javascript">
function show_details(id)
{
   if(document.getElementById(id).style.display == 'none')
   {
      //Display
      document.getElementById(id).style.display = 'block';
      //Change link
      document.getElementById('phpbb_'+id).innerHTML = '<a href="javascriptshow_details(\''+id+'\');" title="{L_EXPAND_CAT_HIDE}">-</a>';
      //Delete cookie
      document.cookie = '{COOKIE_NAME}_'+id+'_aff_stat=1;';
      createCookie('{COOKIE_NAME}_'+id+'_aff_stat', 1, 365);
   }
   else
   {
      //Don't display
      document.getElementById(id).style.display = 'none';
      //Change link
      document.getElementById('phpbb_'+id).innerHTML = '<a href="javascriptshow_details(\''+id+'\');" title="{L_EXPAND_CAT_DISPLAY}">+</a>';      
      //Create cookie
      document.cookie = '{COOKIE_NAME}_'+id+'_aff_stat=0;';
      createCookie('{COOKIE_NAME}_'+id+'_aff_stat', 0, 365);
   }
}
</script>
т.е. добавить команды createCookie

Добавлено спустя 32 минуты 9 секунд:
могу попробовать мод Collapsible Categories. Там положение закрыто-открыто сохраняется не в куках, а в дополнительном скрытом поле профиля каждого пользователя. Дополнительные поля видны только модераторам и админам....
lepag
Автор темы
Репутация: 16
С нами: 11 лет 7 месяцев

Сообщение #4 assa » 09.09.2012, 21:58

Крайне редко встречал на форумах данный функционал, со сворачиванием категорий. А когда встречался, то мне даже в голову не приходило сворачавать и разворачивать какие-то категории. Зачем это надо? Вряли это будет востребовано широкой аудиторией.
assa
Репутация: 6
С нами: 11 лет 11 месяцев

Сообщение #5 lepag » 09.09.2012, 22:10

ну меня попросили :smile:
lepag
Автор темы
Репутация: 16
С нами: 11 лет 7 месяцев

Сообщение #6 KDit » 10.09.2012, 08:50

lepag, да, работает...
KDit
Репутация: 67
С нами: 11 лет 9 месяцев

Сообщение #7 sergeyterr » 25.10.2012, 14:53

На 1.5 работает?
sergeyterr
Репутация: 1
С нами: 11 лет 7 месяцев

Сообщение #8 sergeyterr » 26.10.2012, 09:26

Ответьте, пожалуйста кто нибудь.
sergeyterr
Репутация: 1
С нами: 11 лет 7 месяцев

Сообщение #9 JoteRuso » 26.10.2012, 12:13

Видимо, практически никто этим модом не пользуется. Специфичная вещь.
JoteRuso M
Аватара
Откуда: Москва, Россия
Репутация: 541
С нами: 11 лет 11 месяцев

Сообщение #10 sergeyterr » 26.10.2012, 15:23

Да, но когда несколько категорий, а в каждой по много форумов - крайне необходимая.
sergeyterr
Репутация: 1
С нами: 11 лет 7 месяцев

Сообщение #11 JoteRuso » 26.10.2012, 15:30

Тогда не дожидайтесь ответа. Создайте своему форуму резервную копию и установите этот мод.
Если что-то не понравится, сделаете откат :smile:
JoteRuso M
Аватара
Откуда: Москва, Россия
Репутация: 541
С нами: 11 лет 11 месяцев

Сообщение #12 VEG » 26.10.2012, 15:38

Как показывает практика, пользователи редко заходят в отдельные форумы, если их слишком много. Пользуются активными темами и всё (собирал статистику через Яндекс.Метрику).
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 12 лет

Сообщение #13 sergeyterr » 26.10.2012, 15:49

ОК
sergeyterr
Репутация: 1
С нами: 11 лет 7 месяцев


Вернуться в Мастерская 1.x