Re: [TopFirstPost] - Мод закрепления сообщения

Автор Loac, 21 марта 2007, 01:22:53

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

deadbead

Офтоп! Какое это имеет отношение к моду?

Mavn почисти ветку....
Это же самый страшный разум во вселенной. Высылайте беспилотный модуль.

Shvonder

Цитата: deadbead от 23 июля 2007, 11:53:00
Офтоп! Какое это имеет отношение к моду?

Mavn почисти ветку....
Как какое отношение? мод не меняет нормально настройки темы которая стоит по умолчанию... надо исправить наверное как вы считаете?


Mavn

Мод изменяет только тему оформления default как и большинство модов smf на все остальные темы оформления моды устанавливаются вручную!
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Shvonder

Жаль... наверное придётся мне его удалять...
я не знаю как исправить этот недочёт((( все равно спасибо что ответили )


deadbead

Удаляйте. Данный мод не изменяет шаблон в котором у Вас "ошибка".
Это же самый страшный разум во вселенной. Высылайте беспилотный модуль.

Loac

#55
TopFirstPost не задевает страницу со списком топиков и использует только свой стилик.

Для выделенных ячеек закрепленных топиков, в теме по умолчанию используется стиль .windowbg3
Попробуй его потискать.

Или оставь линку на свой форум, скажу точно. Залез тебе на форум, точно он (.windowbg3) все портит.

Shvonder



Loac

Интересно, а что за манипуляции ты тогда проводил с .TopFirstPost_spacer? :)

Открываешь файльик со стилями в папке с твоей темой и в нем ищешь, правишь

\Themes\default\style.css

вместо default, естественно, тема, которую ты используешь

Shvonder

спасибо... но теперь по ходу смогу править через месяц.... я щас в море 3й месяц и нам перекрыли инет.... не работают чаты форумы и все такое...половина сайтов не грузится... хорошо ваш работает )) я не могу на сайте своем щас что либо делать.... надо ждать..... спасибо за ответ )))


mixman

у меня стоит    Hide Post... так вот, когда закрепляешь первое сообщение, хайд пост выключается... Можно как-нить подправить это?

Loac

В файле Sources\Display.php

Найди:
$context['TopFirstPost_tmp'] = $messages_request;
$messages_request = db_query("
SELECT
ID_MSG, icon, subject, posterTime, posterIP, ID_MEMBER, modifiedTime, modifiedName, body,


Добавь после:
hiddenOption, hiddenValue, ID_BOARD,

Юран

Подскажите как можно вручную его поставить в любую из тем:?

Loac

Очень просто. Мод будет работать на любой теме, просто надо добавить кнопочку для прикрепления сообщений и разделитель на второй и далее страницах.

В файле Display.template.php (в папке с твоей темой)

// Нащупай где создаются кнопочки. Должно быть что-то вроде этого:
$reply_button = create_button('quote.gif', 145, 'smf240', 'align="middle"');

// и добавь ниже:
if($context['TopFirstPost_isSticky']){
$sticky_button = create_button('sticky.gif', 'TopFirstPost_unsticky_note', 'TopFirstPost_unsticky', 'align="middle"');
} else {
$sticky_button = create_button('sticky.gif', 'TopFirstPost_sticky_note', 'TopFirstPost_sticky', 'align="middle"');
}

// Найди:
empty($message['counter'])

// и замени на:
($message['id'] == $context['topic_first_message'])

// Предпоследний штрих. Найди (или там где расположен вывод кнопок):
Can they reply? Have they turned on quick reply?

И добавь перед:
if (($context['can_sticky']) && ($message['id'] == $context['topic_first_message']))
echo '
<a href="', $scripturl, '?action=stickypost;topic=', $context['current_topic'], '.', $context['start'], ';sesc=', $context['session_id'], '">', $sticky_button, '</a>';

// И самое сложное, нащупать где кончается табличка с сообщением. В теме по умолчанию это выглядит так:
echo '
</td>
</tr>
</table>
</td></tr>
</table>
</td></tr>

// Ниже надо добавить разделить, хотя и не обязательно:
if (($message['id'] == $context['topic_first_message']) && (($_REQUEST['start'] <> 0) || !empty($options['view_newest_first'])) && ($context['TopFirstPost_isSticky'])) {
echo '<tr><td>
<div class="TopFirstPost_spacer">'. $txt['TopFirstPost_continue']. '&nbsp;</div>
</td></tr>';
}

В файле style.css в любое место добавь:
.TopFirstPost_spacer {
font-size: x-small;
font-family: verdana, sans-serif;
background-color: #e5e5e8;
border-top: 1px solid #adadad;
padding: 0px 0px 7px 7px;
}




Юран


Molodost.net

Отлично. А можно кнопку закрепления дать каждому посту, а не только первому?

Вопрос. Если, допусти, я создаю тему. а затем переношу в нее посты БОЛЕЕ ранние. Останется ли прикрепленным ТОТ самый пост?

Loac

Цитата: Molodost.net от 20 января 2008, 12:32:23
Отлично. А можно кнопку закрепления дать каждому посту, а не только первому?
В смысле, чтобы можно было прикрепить любое сообщение?

ЦитироватьВопрос. Если, допусти, я создаю тему. а затем переношу в нее посты БОЛЕЕ ранние. Останется ли прикрепленным ТОТ самый пост?
Нет. На сколько я помню, скрипт берет первое сообщение в топике.

Molodost.net

Цитата: Loac от 20 января 2008, 17:25:46
В смысле, чтобы можно было прикрепить любое сообщение?
Именно.

Loac


KoT-nn

#68
Всё сделал по инструкции, нифига не появляются кнопка :(

Всё разобрался.

hc2hunter

Вот UFT-8 версия этого мода v1.1.1
От себя мы добавили только новую кнопку "Открепить сообщение", - с нашей красивее ;)

Шаннар

Цитата: hc2hunter от 07 февраля 2008, 01:16:21
Вот UFT-8 версия этого мода v1.1.1
От себя мы добавили только новую кнопку "Открепить сообщение", - с нашей красивее ;)
А ещё добавили изменение некого файла

./Themes/default/languages/Modifications.english-utf8.php

(-,

Nemo000

Поставил мод TopFirstPost 1.1.1 все отлично шапки в темах есть. Но нужно сделать вот такое дополнение. Что бы я мог задавать редактирование этой шапки участникам набравшим определенное количество постов. Скажем пользователям в группе пользователей ветеран. Желательно сделать это опционально т.е. что бы я сам мог включать такую возможность в шапке, а в некторых не включать. Сам я в пхп не силен, если кто-то сделает доработку буду очень признателен.

Даже если за плату кто-то сделает, давайте договоримся очень надо.

Loac

Не понял. Нужно, чтобы была возможность дать группе права на редактирование первого сообщения?

Nemo000

Цитата: Loac от 06 марта 2008, 12:23:09
Не понял. Нужно, чтобы была возможность дать группе права на редактирование первого сообщения?
Да ОЧЕНЬ нужно.

Nemo000

Но при условии определенного количества постов на форуме. Например, пользователи набравшие 100 и больше постов получают права для редактирования первого поста.

Ну так что? Возьмется ли кто-хто это реализовать?

Loac

Да я понял. Могу попробовать, но не обещаю, что результат будет быстро :)

Nemo000

Попробуйте,  я на Вас надеюсь и конечно готов подождать.

Loac

Тек, мод собирать не буду, так как задача весьма специфическая :)
Сделай резервные копии файлов Sources\Display.php и Sources\Post.php

В файле Display.php найди строчки

// Compose the memory eat- I mean message array.
$output = array(

Добавь перед ними

$can_modify_first_msg = (array_intersect ($user_info['groups'], array(4, 10)) && $context['topic_first_message'] == $message['ID_MSG']);

В этой строке есть цифры: (4, 10) — это индексы групп, которым можно править первые сообщения. Вписывай свои.

Найди строку (чуть ниже)

'can_modify' => (!$context['is_locked'] || allowedTo('moderate_board')) && (allowedTo('modify_any') || (allowedTo('modify_replies') && $context['user']['started']) || (allowedTo('modify_own') && $message['ID_MEMBER'] == $ID_MEMBER && (empty($modSettings['edit_disable_time']) || $message['posterTime'] + $modSettings['edit_disable_time'] * 60 > time()))),

и добавь в конце, перед запятой

|| $can_modify_first_msg


Открой файл Post.php

Найди строку. Там их три.

if ($row['ID_MEMBER'] == $ID_MEMBER && !allowedTo('modify_any'))

Замени все на

if ($row['ID_MEMBER'] == $ID_MEMBER && !allowedTo('modify_any') || $can_modify_first_msg)

Добавь перед первой

$can_modify_first_msg = ($_REQUEST['msg'] == $ID_FIRST_MSG) && array_intersect ($user_info['groups'], array(4, 10));

Перед второй и третей

$can_modify_first_msg = ($_REQUEST['msg'] == $row['ID_FIRST_MSG']) && array_intersect ($user_info['groups'], array(4, 10));

Не забудь везде поменять (4, 10) на свои индексы.


Если что, стучись в асю :)

Nemo000

Спасибо Вы меня просто спасли.
Проверил на локалке все работает!

А можно ли сделать, что бы не все первые посты имели эту фичу, а только прикрепленные?

Loac

В смысле, прикрепленных с помощью TopFirstPost?

Nemo000


Loac

В Display.php найди строку (которую добавлял)

$can_modify_first_msg = (array_intersect ($user_info['groups'], array(4, 10)) && $context['topic_first_message'] == $message['ID_MSG']);

Допиши перед точкой с запятой

&& in_array($topic, explode(",", $modSettings['TopFirstPost']))


В Post.php

Ко всем строчкам

$can_modify_first_msg = ...

Перед (;) добавь тоже самое

&& in_array($topic, explode(",", $modSettings['TopFirstPost']))


зы. Может и правда добавить фичу в мод?  :)

Nemo000

Конечно добавь в качестве аддона к моду, Прикольная фича.

Loac

Ну это я так.. Если будет совсем нечего делать :)

Shneider

Версия 1.1.0 подойдет для версии форума 1.1.4?

Loac



Loac


Mavn

SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Loac

Бетку-то уже пощупал. Но есть ли смысл сейчас для нее писать моды?

Mavn

А все зависит от того сколько народа пользоваться будет самим модом. Единственное с точки зрения разработчика чтобы не возится с переделкой под каждую бету проще подождать хотя бы RC релиз но если будет достаточно много народа кто будет использовать данный мод то стоит задуматься о том чтобы написать под данную бета версию.
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.


deadbead

Лок, я смотрю популярную штуку мы замутили)) Я вот про "права на прикрепление тем пользователям по количеству сообщений" не очень понял. Я помню, что права на кнопку я давал в купе с правами на прикрепление тем. (тот кому можно прикреплять темы - тому и сообщения можно) Т.е. можно было бы сделать группу с одним единственным правом "прикреплять темы" и настроить ее на кол-во сообщений... Тогда бы и возможность прикрепления сообщение бы появилась автоматически)
Это же самый страшный разум во вселенной. Высылайте беспилотный модуль.

marazmus

Спасибо за мод, очень в тему, и работает как надо :)

Только теперь один затык - есть несколько тем, которые начинали не админы/модераторы. Соответственно, править эти посты не очень хорошо. А как сделать какое-нибудь сообщение первым  в конкретной теме - тут затык :( Я пробовал обьединение темы с новым постом админа, но обьединение сортирует посты по дате, и сообщение админа оказывается в конце, а не в начале обьединенной темы. Могу ковырнуть БД, не вопрос, но пока не могу врубиться в то, как именно форум выводит посты конкретного топика - вернее, по какому критерию сортирует, и какое сообщение считает первым. Спасибо, если кто сможет помочь.

deadbead

Ну... эта задача пожалуй к этому моду имеет лишь косвенное отношение.... Ибо в итоге у тебя задача создать сообщение в теме с датой меньшей чем первое сообщение в этой ветке...

Вероятно тут необходима модификация с помошью которой можно бы было дать права админам/модерам создавать темы с возможностью указания даты "создания" сообщения...
Это же самый страшный разум во вселенной. Высылайте беспилотный модуль.

marazmus

Да, пригодилась бы местами такая модификация :)

Кстати, прямая правка в БД даты сообщения тоже не прокатывает :( Нужен спец по API SMF, короче.

Спасибо тем не менее за отличный мод, и за отзывчивость :)

P.s. Модераторам - наверное, посты "не по теме" можно отделить в другую ветку.

deadbead

Тогда надо отловить запрос на вывод сообщений в ветке и посмотреть по какому полю он сортирует записи (честно говоря всегда думал, что это поле ДАТА, но не проверял на практике...) Ну и соответственно при постинге "первого" сообщения устанавливать это поле таким образом чтобы по правилу сортировки оно оказалось первым...
Это же самый страшный разум во вселенной. Высылайте беспилотный модуль.

Mavn

Цитата: deadbead от 08 апреля 2008, 15:22:46
Вероятно тут необходима модификация с помошью которой можно бы было дать права админам/модерам создавать темы с возможностью указания даты "создания" сообщения...
Хех сортировка сообщений в теме происходит не по дате написания сообщения а по id. Сам лично проверял. Если у тебя есть тема с сообщение от 21.01.01 и при объединении тем с сообщением от 22 числа даже после исправления даты на 20 порядок сортировки сообщений в теме будет использоваться согласно ID сообщения если id сообщения от 21 будет меньше чем от 22 то оно будет первым!
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

marazmus

Где бы еще этот ID посмотреть? Вернее, догадываюсь, что в таблице messages, но как идет сборка мессаг в топик, пока не пойму. Еще проблема в том, что ID-шники похоже на основе автоинкремента. А это значит, что тупо менять ID прямо в БД низя, во избежание всяких проблем...

M[e]D1uM

так, как я понял, этот мод может прикрепить только первые посты в теме? а можно ли любой пост? и как?