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

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 14535
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 348 раз
Поблагодарили: 1556 раз

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

Сообщение rxu » 09.01.2015 15:04

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

Внимание: начиная с версии 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
AJAX дополнение к данному расширению которое позволяет выдавать благодарности без перезагрузки страницы: Addon for thanks for posts by Алг.
Исходный код: https://github.com/alg5/addonforthanksforposts
Копировать в папку: /ext/alg/addonforthanksforposts/
------------------------
Вопрос-ответ;
Q. Как сделать так чтобы гости видели список поблагодаривших за сообщение при просмотре темы?
W. Разрешить в форумных правах доступа(Или роль "Доступ только для чтения") гостям благодарить за сообщение. Благодарить не смогут, а видеть список поблагодаривших будут.
Последний раз редактировалось rxu 04.05.2019 21:11, всего редактировалось 2 раза.
Изображение

Перенесено из форума Бета-версии расширений для phpBB 3.1.x в форум Анонсы и поддержка расширений для phpBB 3.1.x 11.07.2015 12:49 модератором LavIgor

Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2181
Зарегистрирован: 16.12.2007 14:01
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 338 раз

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

Сообщение nissin » 28.04.2019 12:36

Пафнутий K, функция get_user_rank используется для званий.
Нужно писать аналогичную для благодарностей.
Благодарности хранятся в protected свойстве poster_list_count класса helper в пространстве имён gfksx\thanksforposts\core.
Расширения нет.
Всё повторяется. nurlan.info

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9768
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2721 раз

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

Сообщение Татьяна5 » 28.04.2019 17:22

Пафнутий K писал(а):
28.04.2019 9:01
Татьяна сказала, что это легко
Спросите тогда у той Татьяны, раз для неё это легко и быстро

Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Зарегистрирован: 30.01.2019 23:13
Благодарил (а): 5 раз
Поблагодарили: 7 раз

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

Сообщение Пафнутий K » 28.04.2019 19:49

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
Поддержка
Поддержка
Сообщения: 9768
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2721 раз

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

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

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

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

Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Зарегистрирован: 30.01.2019 23:13
Благодарил (а): 5 раз
Поблагодарили: 7 раз

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

Сообщение Пафнутий K » 28.04.2019 23:03

Татьяна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
Поддержка
Поддержка
Сообщения: 9768
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2721 раз

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

Сообщение Татьяна5 » 28.04.2019 23:10

Пафнутий 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
Зарегистрирован: 30.01.2019 23:13
Благодарил (а): 5 раз
Поблагодарили: 7 раз

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

Сообщение Пафнутий K » 28.04.2019 23:20

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

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

Хотя бы как внутри php или javascript вызывать эту переменную?

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9768
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2721 раз

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

Сообщение Татьяна5 » 28.04.2019 23:31

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

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

Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Зарегистрирован: 30.01.2019 23:13
Благодарил (а): 5 раз
Поблагодарили: 7 раз

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

Сообщение Пафнутий K » 29.04.2019 0:11

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


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

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

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9768
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2721 раз

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

Сообщение Татьяна5 » 29.04.2019 1:13

Пафнутий 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
Зарегистрирован: 30.01.2019 23:13
Благодарил (а): 5 раз
Поблагодарили: 7 раз

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

Сообщение Пафнутий K » 29.04.2019 8:52

Татьяна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
Поддержка
Поддержка
Сообщения: 9768
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2721 раз

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

Сообщение Татьяна5 » 29.04.2019 9:04

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

Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Зарегистрирован: 30.01.2019 23:13
Благодарил (а): 5 раз
Поблагодарили: 7 раз

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

Сообщение Пафнутий K » 29.04.2019 10:29

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

Шучу.

Татьяна, есть еще innerHTML. Так что паниковать, мне кажется, рановато ;) Или вы считаете, что он не будет работать?

Аватара пользователя
Sheer
phpBB Guru
phpBB Guru
Сообщения: 11499
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2580 раз

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

Сообщение Sheer » 29.04.2019 11:11

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

Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Зарегистрирован: 30.01.2019 23:13
Благодарил (а): 5 раз
Поблагодарили: 7 раз

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

Сообщение Пафнутий K » 29.04.2019 20:46

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

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

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