Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[3.2][3.3] Thanks for posts

Все расширения, созданные нашим сообществом для phpBB, как находящиеся в разработке, так и прошедшие валидацию на официальном сайте phpbb.com, будут анонсированы тут. Вся техническая поддержка по этим расширениям оказывается в этом форуме.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

[3.2][3.3] Thanks for posts

Сообщение rxu »

Обсуждаем портирование мода Thanks for post (Rating edition) Палыча в расширение для phpBB 3.1/3.2.
Копировать в папку: /ext/gfksx/ThanksForPosts/, начиная с версии 2.0.4 - в папку ext/gfksx/thanksforposts (все символы имени папки в нижнем регистре) Версия для phpBB 3.2/3.3: https://github.com/rxu/thanks_for_posts ... elop-3.2.x


Внимание: начиная с версии 2.0.4, имя расширения изменено на gfksx/thanksforposts (ранее - gfksx/ThanksForPosts).
Для обновления с расширения gfksx/ThanksForPosts необходимо:
  • Отключить расширение gfksx/ThanksForPosts
  • Создать резервную копию таблицы базы данных phpbb_thanks (префикс phpbb_ дан для примера)
  • Удалить данные расширения gfksx/ThanksForPosts
  • Удалить папку ext/gfksx/ThanksForPosts с сервера
  • Восстановить таблицу базы данных phpbb_thanks из резервной копии (префикс phpbb_ дан для примера)
  • Загрузить файлы нового расширения версии 2.0.4+ в папку ext/gfksx/thanksforposts (все символы имени папки в нижнем регистре)
  • Включить расширение в администраторском разделе
Внимание: нижеследующее дополнение может не работать с основным расширением версии 2.0.4 без следующих правок: Re: [dev] Thanks for posts
Для совместимости с версией 2.0.7 требуются следующие правки:
https://github.com/alg5/addonforthanksf ... l/19/files

AJAX дополнение к данному расширению которое позволяет выдавать благодарности без перезагрузки страницы: Addon for thanks for posts by Алг.
Исходный код: https://github.com/alg5/addonforthanksforposts
Копировать в папку: /ext/alg/addonforthanksforposts/
------------------------
Вопрос-ответ;
Q. Как сделать так чтобы гости видели список поблагодаривших за сообщение при просмотре темы?
W. Разрешить в форумных правах доступа(Или роль "Доступ только для чтения") гостям благодарить за сообщение. Благодарить не смогут, а видеть список поблагодаривших будут.
Вложения
thanks_for_posts-develop-3.2.x.zip
(194.96 КБ) 120 скачиваний
Последний раз редактировалось rxu 28.02.2022 13:11, всего редактировалось 2 раза.
Изображение
Перенесено из форума Бета-версии расширений для phpBB 3.1.x в форум Анонсы и поддержка расширений для phpBB 3.1.x 11.07.2015 12:49 модератором LavIgor

Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2208
Стаж: 16 лет 3 месяца
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 338 раз
Контактная информация:

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение nissin »

Пафнутий K, функция get_user_rank используется для званий.
Нужно писать аналогичную для благодарностей.
Благодарности хранятся в protected свойстве poster_list_count класса helper в пространстве имён gfksx\thanksforposts\core.
Расширения нет.
Всё повторяется. nurlan.info
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение Татьяна5 »

Пафнутий K писал(а): 28.04.2019 9:01 Татьяна сказала, что это легко
Спросите тогда у той Татьяны, раз для неё это легко и быстро
Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Стаж: 5 лет 1 месяц
Благодарил (а): 5 раз
Поблагодарили: 7 раз

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение Пафнутий K »

nissin писал(а): 28.04.2019 12:36 Пафнутий K, функция get_user_rank используется для званий.
Нужно писать аналогичную для благодарностей.
Благодарности хранятся в protected свойстве poster_list_count класса helper в пространстве имён gfksx\thanksforposts\core.
Расширения нет.
Спасибо :D

Татьяна даже подсказала, как эту переменную добыть:

Код: Выделить всё

{% if not postrow.S_POST_ANONYMOUS and postrow.THANKS_COUNTERS_VIEW %}
    <dd class="profile-posts" data-user-give-id="{{ postrow.POSTER_ID }}">{% if postrow.POSTER_GIVE_COUNT %}<strong>{{ lang('GIVEN') }}{{ lang('COLON') }}</strong> <a href="{{ postrow.POSTER_GIVE_COUNT_LINK }}">{{ postrow.POSTER_GIVE_COUNT }}</a>{% endif %}</dd>
    <dd class="profile-posts" data-user-receive-id="{{ postrow.POSTER_ID }}">{% if postrow.POSTER_RECEIVE_COUNT %}<strong>{{ lang('RECEIVED') }}{{ lang('COLON') }}</strong> <a href="{{ postrow.POSTER_RECEIVE_COUNT_LINK }}">{{ postrow.POSTER_RECEIVE_COUNT }}</a>{% endif %}</dd>
{% endif %}

Значит, план такой:
  • Берем расширение "Thanks for post" и изменяем его
  • Копаемся в коде "Thanks for post" и выясняем, какой метод разработчики использовали для вставки благодарностей в минипрофиль
  • Если для вставки использованы события-хуки, то всё резко упрощается. Тогда просто заменяем событие на своё -viewtopic_body_avatar_before, и звездочки вставляются туда, куда нам нужно.
  • А если события-хуки не используются, тогда непонятно, как поместить звездочки над аватарой :(
План Б:
  • Пишем свое расширение
  • Используем событие-хук viewtopic_body_avatar_before для вставки звездочек над аватарой.
  • Проблема: неизвестно как добыть в этом случае количество благодарностей? :( Скорее всего, на момент вызова события переменная postrow.POSTER_RECEIVE_COUNT еще не прописана.
Господа разработчики, подскажите пожалуйста правильный ли у меня ход мыслей, и какой вариант более оптимальный?
Татьяна5 писал(а): 28.04.2019 17:22 Спросите тогда у той Татьяны, раз для неё это легко и быстро
Татьяна - это вы :lol:

Вот вы написали, что у вас уйдет час-полтора на всю работу. --> [3.1][3.2] [dev] Thanks for posts

Так что без вас нам не справиться :D
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение Татьяна5 »

Час-полтора - это ничуть не просто, так что не наговаривайте

Отправлено спустя 1 минуту 54 секунды:
Пафнутий K писал(а): 28.04.2019 19:49 Господа разработчики, подскажите пожалуйста правильный ли у меня ход мыслей, и какой вариант более оптимальный?
Проще 1-й, правильней 2-й
Один адд-он уже существует, можно разобрать его как пример
Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Стаж: 5 лет 1 месяц
Благодарил (а): 5 раз
Поблагодарили: 7 раз

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение Пафнутий K »

Татьяна5 писал(а): 28.04.2019 21:23 Проще 1-й, правильней 2-й
Я тоже считаю, что второй правильней. Давайте с ним попробуем разобраться, правда я не знаю, удастся ли извлечь переменную postrow.POSTER_RECEIVE_COUNT?

Вот у меня допустим есть расширение и я создаю файл события viewtopic_body_avatar_before.html:

Код: Выделить всё


{% if not postrow.S_POST_ANONYMOUS and postrow.THANKS_COUNTERS_VIEW %}

    {% if postrow.POSTER_RECEIVE_COUNT %}<strong>{{ lang('RECEIVED') }}{{ lang('COLON') }}</strong> <a href="{{ postrow.POSTER_RECEIVE_COUNT_LINK }}">{{ postrow.POSTER_RECEIVE_COUNT }}</a>{% endif %}
    
{% endif %}

Это я взял ваш пример, и почистил его немного от хлама, для понятности.

Вопрос:
  1. Выведет ли этот код правильное число поблагодаривших?
  2. Как мне разделить это число на 1000.0 и округлить до целого? И потом использовать это значение в цикле для вывода звездочек?

Татьяна5 писал(а): 28.04.2019 21:23 Один адд-он уже существует, можно разобрать его как пример
Какой аддон, этот? -->
rxu писал(а): 09.01.2015 15:04 Addon for thanks for posts by Алг.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение Татьяна5 »

Пафнутий K писал(а): 28.04.2019 23:03 Выведет ли этот код правильное число поблагодаривших?
Да
Пафнутий K писал(а): 28.04.2019 23:03 Как мне разделить это число на 1000.0 и округлить до целого? И потом использовать это значение в цикле для вывода звездочек?
В переменной содержится не просто число, а строка с текстом. Над ней никаких операций, кроме сравнения (причём только на равенство), проделать нельзя
Без программирования тут не обойтись. А что вы будете использовать, php или javascript, дело уже ваше
Пафнутий K писал(а): 28.04.2019 23:03 Какой аддон, этот
Да
Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Стаж: 5 лет 1 месяц
Благодарил (а): 5 раз
Поблагодарили: 7 раз

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение Пафнутий K »

Татьяна5 писал(а): 28.04.2019 23:10 Без программирования тут не обойтись. А что вы будете использовать, php или javascript, дело уже ваше
То есть я могу разделить и округлить прямо в этом html файле, не отходя от кассы? Извлечь эту переменную и дальше использовать php или javascript для обработки значения?

А пример можете привести, где бы подобные калькуляции использовались? А я по шаблону сам уже всё быстренько доведу. А то я буду оч. долго копаться с этими преобразованиями из одного языка в другой :facepalm: .

Хотя бы как внутри php или javascript вызывать эту переменную?
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение Татьяна5 »

Пример - существующий адд-он. Но никаких шаблонов там нет, так что всё надо понимать

Отправлено спустя 3 минуты 58 секунд:
Пафнутий K писал(а): 28.04.2019 23:20 То есть я могу разделить и округлить прямо в этом html файле, не отходя от кассы?
Татьяна5 писал(а): 28.04.2019 23:10 Над ней никаких операций, кроме сравнения (причём только на равенство), проделать нельзя
Перевожу: средствами шаблонизатора выцепить число нереально
Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Стаж: 5 лет 1 месяц
Благодарил (а): 5 раз
Поблагодарили: 7 раз

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение Пафнутий K »

Татьяна5 писал(а): 28.04.2019 23:35 Пример - существующий адд-он. Но никаких шаблонов там нет, так что всё надо понимать
Можете описать вкратце, что этот аддон делает? А то вы говорите загадками.


Я бы вот так сделал. В html файле вместо Twig конструкций использовал php или javascript, как вы и советовали. В них же есть инструменты по конвертации строк в число. Вот. А затем не отходя от кассы с помощью эха и цикла выводил бы звездочки. Чем не вариант?

Только я не знаю, как затянуть переменную postrow.POSTER_RECEIVE_COUNT в php или javascript?
Татьяна5 писал(а): 28.04.2019 23:35 Перевожу: средствами шаблонизатора выцепить число нереально
Я не знаю, что такое шаблонизатор, к сожалению :cry: . Под шаблоном я имел в виду пример кода, в общечеловеческом понимании, а не то что вы, вероятно, подумали ;) .
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение Татьяна5 »

Пафнутий K писал(а): 29.04.2019 0:11 Можете описать вкратце, что этот аддон делает?
[3.1][3.2] AddonForThanksForPosts
Пафнутий K писал(а): 29.04.2019 0:11 Я не знаю, что такое шаблонизатор
Тут twig
Пафнутий K писал(а): 29.04.2019 0:11 Только я не знаю, как затянуть переменную postrow.POSTER_RECEIVE_COUNT в php или javascript?
В php оно и так есть. Пример подключения функций из другого расширения есть в адд-оне
В js - как обычно, по классам там обращаться, по содержимому искать, или ещё как, на что хватит фантазии (это основы языка, работа с DOM). Т.к. переменная на странице не одна, то номер с просто присвоением не пройдёт
Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Стаж: 5 лет 1 месяц
Благодарил (а): 5 раз
Поблагодарили: 7 раз

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение Пафнутий K »

Татьяна5 писал(а): 29.04.2019 1:13 [3.1][3.2] AddonForThanksForPosts
С аддоном не смог разобраться. Уж больно много там букв, и что в них искать тоже не совсем понятно.
Татьяна5 писал(а): 29.04.2019 1:13 В php оно и так есть. Пример подключения функций из другого расширения есть в адд-оне
В js - как обычно, по классам там обращаться, по содержимому искать, или ещё как, на что хватит фантазии (это основы языка, работа с DOM).
PHP у меня почему-то в шаблоне не работает, а вот javascript работает хорошо.

Опять же лазить по классам, да еще неизвестно по каким, да еще бох знает где их подключать :facepalm: - еще то занятие... В общем я ниасилил.



Пришлось делать тупо. Вот что получилось:

Изображение

Это звездочки.

А вот код:

Код: Выделить всё

<script>
      $MAXVAL = 1000;
      
      $v = parseInt('{{ postrow.POSTER_RECEIVE_COUNT }}', 10);
      
      $v = Math.min($v / $MAXVAL, 1.0);
      $v = Math.floor((1.0 - Math.pow(1.0 - $v, 4)) * 5) * 15;
      
      if(!isNaN($v) && $v) {
        document.write('<div style="margin-bottom: 5px; width: '+ $v + 'px; height: 15px; background: url(http://idcommunity.ru/forum/ext/gfksx/thanksforposts/images/rating/reput_star_back.gif); background-repeat: repeat-x;"> <div style="height: 15px; width: 100%; background: url(http://idcommunity.ru/forum/ext/gfksx/thanksforposts/images/rating/reput_star_gold.gif); background-repeat: repeat-x;"></div></div>');
      }
</script>
Вставляется этот код в чистый документ с таким названием: viewtopic_body_avatar_before.html, и помещается в папку template/event



Пояснение к коду:

$MAXVAL - это предельное количество благодарностей, набрав которые пользователь получает все пять звездочек. Можно этот параметр менять.

Код: Выделить всё

  
      $v = Math.min($v / $MAXVAL, 1.0);
      $v = Math.floor((1.0 - Math.pow(1.0 - $v, 4)) * 5) * 15;

Эта часть кода переводит количество благодарностей в количество звезд.

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

Сейчас тут не линейная зависимость, а 4-й степени. То есть для получения первой звезды достаточно набрать 54 лайка, а для получения последней звезды - уже 660 лайков.

Всем большое спасибо за советы. :D
Последний раз редактировалось Пафнутий K 29.04.2019 9:16, всего редактировалось 1 раз.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение Татьяна5 »

Document.write...
Предупреждаю остальных: эта вещь сломает аякс-листалку и аякс-отправку сообщений из QuickReply Reloaded
Можно использовать только тем, кто не пользуется аяксом из QR
Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Стаж: 5 лет 1 месяц
Благодарил (а): 5 раз
Поблагодарили: 7 раз

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение Пафнутий K »

Татьяна5 писал(а): 29.04.2019 9:04 Document.write...
Предупреждаю остальных: эта вещь сломает аякс-листалку и аякс-отправку сообщений из QuickReply Reloaded
Можно использовать только тем, кто не пользуется аяксом из QR
Думаю, у всех уже визуальные редакторы давно :lol:

Шучу.

Татьяна, есть еще innerHTML. Так что паниковать, мне кажется, рановато ;) Или вы считаете, что он не будет работать?
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 1 месяц
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2752 раза
Контактная информация:

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение Sheer »

Пафнутий K, jQuery наше все.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Стаж: 5 лет 1 месяц
Благодарил (а): 5 раз
Поблагодарили: 7 раз

Re: [3.1][3.2] [dev] Thanks for posts

Сообщение Пафнутий K »

Sheer писал(а): 29.04.2019 11:11 Пафнутий K, jQuery наше все.
Да, точно! Там вроде как есть метод $('this').append( );

Но у меня не работает почему-то :cry: У меня вообще похоже jQuery не работает. Как подключить не знаю
Ответить

Вернуться в «Анонсы и поддержка расширений для phpBB»