[3.2][3.3] Thanks for posts

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

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

[3.2][3.3] Thanks for posts

Сообщение rxu »

Обсуждаем портирование мода Thanks for post (Rating edition) Палыча в расширение для phpBB 3.2/3.3.
Копировать в папку: ext/gfksx/thanksforposts (все символы имени папки в нижнем регистре).

Страница на официальном сайте (версия 2.1.1, прошла валидацию): https://www.phpbb.com/customise/db/exte ... r_posts_2/
Версия для phpBB 3.3 в репозитории: https://github.com/rxu/thanks_for_posts ... elop-3.3.x

Внимание: начиная с версии 2.1.0, AJAX внедрен в ядро расширения, дополнение Addon for thanks for posts не требуется и может привести к его неработоспособности. При обновлении с предыдущих версий дополнение Addon for thanks for posts необходимо предварительно отключить.

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

Q. Как сделать так чтобы гости смогли благодарить за сообщение?
W. В этом нет практического смысла. В phpBB гость - это один пользователь. Соответственно, если любой один гость поблагодарит, следующий только сможет отозвать благодарность, и так по кругу.

Последний раз редактировалось rxu 20.02.2025 16:29, всего редактировалось 2 раза.
Изображение
Перенесено из форума Бета-версии расширений для phpBB 3.1.x в форум Анонсы и поддержка расширений для phpBB 3.1.x 11.07.2015 12:49 модератором LavIgor

Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 18 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 36 раз
Поблагодарили: 1526 раз

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

Сообщение Sheer »

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

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

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

Sheer писал(а): 29.04.2019 21:03 Он подключен уже. В коробке, начиная с phpBB 3.1
Ну вот такая конструкция (в файле viewtopic_body_avatar_before.html) у меня не работает :cry: :

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

<script>
    var p = jQuery('#wrap').prop('id');
    document.write('Debug: ' + p);
</script>
Не выводит ничего, даже 'Debug:'
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12752
Стаж: 13 лет 8 месяцев
Благодарил (а): 159 раз
Поблагодарили: 2276 раз

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

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

Пафнутий K, не считаю, знаю что не будет работать. Любые изменения DOM из подгружаемой области будут мешать аяксу. Чтобы работало надо переносить код в подвал и переписывать
Пафнутий K писал(а): 29.04.2019 21:26 Не выводит ничего
Логично. Вы вызываете jQuery до его подключения. Плюс не задали саму функцию jQuery (её в библиотеке нет)
Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Стаж: 6 лет 3 месяца
Благодарил (а): 3 раза
Поблагодарили: 6 раз

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

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

Татьяна5 писал(а): 29.04.2019 21:54 Пафнутий K, не считаю, знаю что не будет работать. Любые изменения DOM из подгружаемой области будут мешать аяксу. Чтобы работало надо переносить код в подвал и переписывать

Логично. Вы вызываете jQuery до его подключения. Плюс не задали саму функцию jQuery (её в библиотеке нет)
Ну вот я вынес основной код в функцию:

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

<script>

function thanksUserRating(thanks, postid) {
      var MAXVAL = 500;
      
      var v = parseInt(thanks, 10);
      
      v = Math.min(v / MAXVAL, 1.0);
      v = Math.ceil((1.0 - Math.pow(1.0 - v, 4))*5) * 15;
      
      if(!isNaN(v) && v) {
        var d = document.querySelector('#profile'+ postid + ' .avatar-container');
        d.insertAdjacentHTML('afterBegin', '<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>
Если помещаем этот код в шапку - overall_header_head_append.html, то все работает нормально.

А если подгружаем в подвал - overall_footer_after.html, то не работает :cry:

Саму функцию вызываем из viewtopic_body_avatar_before.html:

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

<script>

    thanksUserRating('{{ postrow.POSTER_RECEIVE_COUNT }}', '{{ postrow.POST_ID }}');

</script>
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12752
Стаж: 13 лет 8 месяцев
Благодарил (а): 159 раз
Поблагодарили: 2276 раз

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

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

Порядок подключения очень важен. На момент вызова фунции из сообщений она не объявлена
Плюс при аякс-запросе функция окажется не объявлена, т.к. в подгружаемом куске её нет, а поместить её туда в то же время нельзя. Это сломает практичести все js-функции на странице

Вывод: надо ещё переписывать для вызова функции полностью из подвала (плюс продублировать вызов для аякс-запросов, но то уже будет мелочь)
К примеру, нужные параметры можно записать в атрибутах data-* в html, а при загрузке страницы собрать их все и обработать циклом

По js, аяксу и прочему могу посоветовать учебники/справочники learn.javascript.ru и jquery.page2page.ru
Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Стаж: 6 лет 3 месяца
Благодарил (а): 3 раза
Поблагодарили: 6 раз

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

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

Татьяна5 писал(а): 30.04.2019 2:52 Вывод: надо ещё переписывать для вызова функции полностью из подвала (плюс продублировать вызов для аякс-запросов, но то уже будет мелочь)
Ну вообще-то меня устраивал и первый вариант с document.write :lol: . У меня визуальный редактор установлен и QuickReply мне не нужен. Так что никаких проблем с аяксом.

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

В общем если кто захочет "допилить" - пусть тогда уже сам доводит, у меня и без этого всё отлично работает. Направление обозначено.
Татьяна5 писал(а): 30.04.2019 2:52 К примеру, нужные параметры можно записать в атрибутах data-* в html, а при загрузке страницы собрать их все и обработать циклом
А при записи атрибутов разве аякс не будет глючить? Их же (атрибуты), я так понимаю, из того же файла придется писать - viewtopic_body_avatar_before.html, и примерно теми же самыми методами, при помощи javascript.

То есть вы предлагаете создать атрибуты data-*, скажем, на контейнерах с аватарками <div class="avatar-container"> и потом их кучей обработать в подвале? Это хорошая идея. Но как записать эти атрибуты, чтобы ваш аякс не глючило? В этом же вроде была вся проблема?
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12752
Стаж: 13 лет 8 месяцев
Благодарил (а): 159 раз
Поблагодарили: 2276 раз

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

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

Пафнутий K писал(а): 30.04.2019 4:15 при помощи javascript
Не, я про создание своего тега с нужными атрибутами в html
Через js их добавлять смысла нет никакого, т.к. они будут для удобства получения чисел в js
Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Стаж: 6 лет 3 месяца
Благодарил (а): 3 раза
Поблагодарили: 6 раз

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

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

Татьяна5 писал(а): 30.04.2019 4:24 Не, я про создание своего тега с нужными атрибутами в html
Через js их добавлять смысла нет никакого, т.к. они будут для удобства получения чисел в js
Да, точно :facepalm: . Я уже и сам понял :)
static77
phpBB 2.0.0
Сообщения: 232
Стаж: 9 лет 3 месяца
Благодарил (а): 95 раз
Поблагодарили: 7 раз

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

Сообщение static77 »

Siava писал(а): 25.04.2019 13:05 Разберитесь в своём robots.txt. Всё отлично блокируется с его помощью.
еще раз об индексации.
Файл robots.txt не предназначен для блокировки показа веб-страниц в результатах поиска Google. Если на других сайтах есть ссылки на вашу страницу, содержащие ее описание, то она все равно может быть проиндексирована, даже если роботу Googlebot запрещено ее посещать. Чтобы исключить страницу из результатов поиска, следует использовать другой метод, например защиту паролем или директиву noindex.
Если файл robots.txt запрещает роботу Googlebot обрабатывать веб-страницу, она все равно может демонстрироваться в Google, но связанный с ней результат поиска может не содержать описания
источник: https://support.google.com/webmasters/a ... 2608?hl=ru
Помогите, пожалуйста, избавиться от треклятой проблемы. Хотя бы подскажите в каком файле расширения прописывать noindex на ссылки.
Версия phpBB: 3.3.11
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5426
Стаж: 20 лет 3 месяца
Откуда: Питер
Благодарил (а): 177 раз
Поблагодарили: 749 раз

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

Сообщение Siava »

static77, откройте файл ext/gfksx/thanksforposts/styles/prosilver/template/event/overall_header_head_append.html
и добавьте в него

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

{% if S_THANKS %}
<meta name="robots" content="noindex" />
{% endif %}
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Пафнутий K
phpBB 1.4.2
Сообщения: 55
Стаж: 6 лет 3 месяца
Благодарил (а): 3 раза
Поблагодарили: 6 раз

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

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

Татьяна5 писал(а): 30.04.2019 2:52 Вывод: надо ещё переписывать для вызова функции полностью из подвала (плюс продублировать вызов для аякс-запросов, но то уже будет мелочь)
Из подвала звездочки срабатывают с сильным опозданием. Это некрасиво. И такое ощущение, что страница загружается намного медленней обычного. В общем, я отказался от этого варианта (хоть он в целом и рабочий).

Переписал расширение с помощью хук-события core.viewtopic_modify_post_row.

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Расширение "Рейтинг пользователя" от Пафнутия (см. вложение) при расчете количества звезд учитывает два показателя:
  • Количество сообщений пользователя
  • Количество поблагодаривших пользователя
Шкала логарифмическая - чем больше рейтинг, тем труднее получить очередную звезду. В коде можно прописать предельные значения, при которых пользователь получает 5 звезд. По умолчанию: 1000 благодарностей и 10000 сообщений. Всего можно заработать 5+5=10 звезд.

Изображение

Расширение может работать как аддон к "Thanks for posts", так и самостоятельно. В последнем случае количество благодарностей принимается равным нулю.


Основные файлы:
  1. listener.php

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

    //...
    	static public function getSubscribedEvents()
    	{
    		return array(
    			'core.viewtopic_modify_post_row'		=> 'modify_post_row',
    		);
    	}
    
    	
    	public function modify_post_row($event)
    	{
    	    $MAX_T = 1000;
            $MAX_P = 10000;
            
            //thanks - string to int conversion
    	    $t = (int)$event['post_row']['POSTER_RECEIVE_COUNT'];
    	    //posts
    	    $p = (int)$event['post_row']['POSTER_POSTS'];
    	    //bonusstars
    	    $b = (int)0;
    	    
    	    //rating - output
    	    $r = 0;
    
            if($p>0) {
                if($t===0) {
                    $t = 0.5;
                } else {
                    $t = min($t * 9.0 / $MAX_T + 1, 10.0);
                    $t = 1 + log10($t) * 4;
                }
    
                $p = min($p * 9.0 / $MAX_P + 1, 10.0);
                $p = log10($p) * 5;
                
                //stars to width
                $r = min($t + $p + $b, 10) * 15; 
            }
    	   
    	    $event['post_row'] = array_merge($event['post_row'], array(
    			'POSTER_USER_RATING'	=> $r,
    		));
    	}
    //...
    
  2. viewtopic_body_avatar_before.html

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

    {% if not postrow.S_POST_ANONYMOUS %}
          <div style="margin-bottom: 5px; width: {{ postrow.POSTER_USER_RATING }}px; height: 15px; background: url(./ext/pafnuty/userRating/images/rating/reput_star_back.gif); background-repeat: repeat-x;"> <div style="height: 15px; width: 100%; background: url(./ext/pafnuty/userRating/images/rating/reput_star_gold.gif); background-repeat: repeat-x;"></div></div>
    {% endif %}
    
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
megaaxel
phpBB 1.2.1
Сообщения: 29
Стаж: 7 лет 11 месяцев
Благодарил (а): 11 раз

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

Сообщение megaaxel »

Здравствуйте.
В своё время стояло Thanks for posts 2.0.3-dev, всё работало.
Потом однажды обновил на Thanks for posts 2.0.7-dev.
Всё работает, но в админке в разделе настройки расширений нет вкладок настройки данного расширения.
Если обратно включить 2.0.3-dev, вкладки появляются.
Где чинить?

phpBB 3.2.6, то же самое было на 3.2.2.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 18 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 36 раз
Поблагодарили: 1526 раз

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

Сообщение Sheer »

Смотрите модули в ACP -> СИСТЕМА -> УПРАВЛЕНИЕ МОДУЛЯМИ -> Администраторский раздел --> Настройка расширений
Может модули отключены или скрыты, или вообще в другом месте.
Может нарушилась древовидная структура значений ID - Проверьте [3.1][3.2] [dev] STK for phpBB 3.2.x & 3.1.x --> Исправление границ значений ID всей конференции - Восстановление древовидной структуры форумов и модулей
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

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

Сообщение rxu »

megaaxel, а как обновлялись? Первый пост внимательно читали?
rxu писал(а): 09.01.2015 15:04 Внимание: начиная с версии 2.0.4, имя расширения изменено
и далее.
Изображение
Аватара пользователя
megaaxel
phpBB 1.2.1
Сообщения: 29
Стаж: 7 лет 11 месяцев
Благодарил (а): 11 раз

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

Сообщение megaaxel »

rxu писал(а): 03.05.2019 18:44 а как обновлялись? Первый пост внимательно читали?
по этой инструкции и обновлялся.
причём сейчас эти обе версии лежат рядом (т.к. в *nix ФС регистр букв имеет значение), переключаю по очереди.

Отправлено спустя 17 минут 50 секунд:
Sheer писал(а): 03.05.2019 18:39 Смотрите модули в ACP -> СИСТЕМА -> УПРАВЛЕНИЕ МОДУЛЯМИ -> Администраторский раздел --> Настройка расширений
Может модули отключены или скрыты, или вообще в другом месте.
там расширение есть и включено.
Sheer писал(а): 03.05.2019 18:39 Может нарушилась древовидная структура значений ID - Проверьте [3.1][3.2] [dev] STK for phpBB 3.2.x & 3.1.x --> Исправление границ значений ID всей конференции - Восстановление древовидной структуры форумов и модулей
это не помогло.

Отправлено спустя 1 минуту 55 секунд:
пробовал переключаться на другой язык (английский) - не помогает.

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