Повідомлень: 1523
З нами з: 14 жовтня 2013, 14:30
mykola78 писав:
POOL писав:Ребята, а можно скриншот тех галочек, которые у вас есть? Так будет проще понимать то, что вы видите.


якось так :


Зображення

У меня так же.
И еще один вопрос, можно сделать спойлер в спойлере?
Визитная карточка

Куплю модели VW и Bond Collection
Повідомлень: 6795
З нами з: 11 жовтня 2010, 19:17
Звідки: Львів
POOL писав:Хм... Тогда это действительно технический вопрос. Постараюсь с ним разобраться в ближайшие дни.

Сьогодні, заради інтересу, на Львівському форумі прикрутив цей мод "перше повідомлення на кожній сторінці теми". Так от. Як пише автор цього моду :

1. Кто имеет право закреплять сообщение?
Тот, кто имеет право закрывать тему.

Тобто по суті - це адміни і модератори, оскільки рядові користувачі права закриття, як правило, на форумах не мають (і це, зрештою, правильно).

Як це виглядає програмно... У файлі posting.php (в корені форуму) є такий блок :

// Show/Unshow first post on every page
if(($mode == 'edit' && $post_id == $post_data['topic_first_post_id']) || $mode == 'post')
{
if($mode == 'post')
{
$topic_id = $data['topic_id'];
}

$perm_show_unshow = ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_user_lock', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster'])) ? true : false;

if($post_data['topic_first_post_show'] != $topic_first_post_show && $perm_show_unshow)
{
$sql = 'UPDATE ' . TOPICS_TABLE . '
SET topic_first_post_show = ' . (($topic_first_post_show) ? 1 : 0) . "
WHERE topic_id = $topic_id";
$db->sql_query($sql);

}
}


Стрічка, виділена червоним, і відповідає за визначення права відображення опції "прикріплення" повідомлення. Зважаючи на свої досить такі поверхові знання в програмуванні php я не ризикнув міняти код. А хто в цьому "шарить" - може подумати :)
Даремно думати, що мудрість - це превілегія старості.
Повідомлень: 6795
З нами з: 11 жовтня 2010, 19:17
Звідки: Львів
Шляхом "мозковивихуючих" операцій вроді як знайшов рішення проблеми...
Треба в вищеописаному блоці рядок :

$auth->acl_get('f_user_lock', $forum_id)

поміняти на

$auth->acl_get('f_post', $forum_id)

(тіпа юзеру, який має право створювати теми)

В мене ніби як рабатає :)
Даремно думати, що мудрість - це превілегія старості.
Повідомлень: 730
З нами з: 28 лютого 2014, 11:47
Звідки: Одесса
mykola78 писав:Шляхом "мозковивихуючих" операцій вроді як знайшов рішення проблеми...
Треба в вищеописаному блоці рядок :

$auth->acl_get('f_user_lock', $forum_id)

поміняти на

$auth->acl_get('f_post', $forum_id)

(тіпа юзеру, який має право створювати теми)

В мене ніби як рабатає :)

Подтверждаю: все работает :beer:
Imagine all the people living life in peace
Повідомлень: 6795
З нами з: 11 жовтня 2010, 19:17
Звідки: Львів
Дмитрий 911

ну це в НАС працює, як буде тут - я не знаю :D Це вже від Олексія залежить.
Даремно думати, що мудрість - це превілегія старості.
Повідомлень: 6795
З нами з: 11 жовтня 2010, 19:17
Звідки: Львів
mykola78 писав:Шляхом "мозковивихуючих" операцій вроді як знайшов рішення проблеми...
Треба в вищеописаному блоці рядок :

$auth->acl_get('f_user_lock', $forum_id)

поміняти на

$auth->acl_get('f_post', $forum_id)

(тіпа юзеру, який має право створювати теми)

В мене ніби як рабатає :)


Виникла проблемка. Пункт відображає і галочку дає поставити - але при виході з редактора зміни не зберігає (галочка "злітає") :(
Даремно думати, що мудрість - це превілегія старості.
Повідомлень: 6795
З нами з: 11 жовтня 2010, 19:17
Звідки: Львів
Тепер я починаю розуміти, чому ця опція доступна тільки модерам. Видать ця функція зачіпає суто "модераторські" операції над темою. Тому і видимість цієї функції в моді доступна тільки модераторам тем.
Даремно думати, що мудрість - це превілегія старості.
Повідомлень: 6795
З нами з: 11 жовтня 2010, 19:17
Звідки: Львів
mykola78 писав:[s]Тепер я починаю розуміти, чому ця опція доступна тільки модерам. Видать ця функція зачіпає суто "модераторські" операції над темою. Тому і видимість цієї функції в моді доступна тільки модераторам тем.[/s]

То всьо фігня :D
Насправді все було просто...

У файлі posting.php треба поміняти блок

// Show/Unshow first post on every page
if(($mode == 'edit' && $post_id == $post_data['topic_first_post_id']) || $mode == 'post')
{
if($mode == 'post')
{
$topic_id = $data['topic_id'];
}

$perm_show_unshow = ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_user_lock', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster'])) ? true : false;

if($post_data['topic_first_post_show'] != $topic_first_post_show && $perm_show_unshow)
{
$sql = 'UPDATE ' . TOPICS_TABLE . '
SET topic_first_post_show = ' . (($topic_first_post_show) ? 1 : 0) . "
WHERE topic_id = $topic_id";
$db->sql_query($sql);

}
}


на

// Show/Unshow first post on every page
if(($mode == 'edit' && $post_id == $post_data['topic_first_post_id']) || $mode == 'post')
{
if($mode == 'post')
{
$topic_id = $data['topic_id'];
}

$perm_show_unshow = ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_post', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster'])) ? true : false;

if($post_data['topic_first_post_show'] != $topic_first_post_show && $perm_show_unshow)
{
$sql = 'UPDATE ' . TOPICS_TABLE . '
SET topic_first_post_show = ' . (($topic_first_post_show) ? 1 : 0) . "
WHERE topic_id = $topic_id";
$db->sql_query($sql);

}
}


та стрічку

'S_FIRST_POST_SHOW_ALLOWED' => ($first_post_show_allowed && ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_user_lock', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster']))) ? true : false,


на

'S_FIRST_POST_SHOW_ALLOWED' => ($first_post_show_allowed && ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_post', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster']))) ? true : false,


(після чого бажано почистити кеш стилю)

І все працює. Протестовано на Львівському форумі. :)
Даремно думати, що мудрість - це превілегія старості.
Повідомлень: 5731
З нами з: 20 вересня 2010, 14:32
Звідки: Горловка
  • Дякував (ла): 1 раз
  • mykola78
    Николай, низкий поклон тебе. :beer:
    Повідомлень: 6795
    З нами з: 11 жовтня 2010, 19:17
    Звідки: Львів
    Та поки нема за шо. Спробуєте тут і получиться - тоді можна і дякувати. :)
    Даремно думати, що мудрість - це превілегія старості.
    Відповісти

    Повернутись до “Правила Форуму”