[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
Сообщения: 14529
Зарегистрирован: 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

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

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

Сообщение Sheer » 29.04.2019 21:03

Он подключен уже. В коробке, начиная с phpBB 3.1
Изображение
Общие ошибки новичков (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 21:26

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

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

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

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

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

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

Сообщение Пафнутий K » 30.04.2019 1:55

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

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

Сообщение Татьяна5 » 30.04.2019 2:52

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

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

По js, аяксу и прочему могу посоветовать учебники/справочники learn.javascript.ru и jquery.page2page.ru

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

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

Сообщение Пафнутий K » 30.04.2019 4:15

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

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

Сообщение Татьяна5 » 30.04.2019 4:24

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

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

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

Сообщение Пафнутий K » 30.04.2019 4:26

Татьяна5 писал(а):
30.04.2019 4:24
Не, я про создание своего тега с нужными атрибутами в html
Через js их добавлять смысла нет никакого, т.к. они будут для удобства получения чисел в js
Да, точно :facepalm: . Я уже и сам понял :)

static77
phpBB 1.4.4
Сообщения: 177
Зарегистрирован: 25.01.2016 10:29
Благодарил (а): 86 раз
Поблагодарили: 3 раза

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

Сообщение static77 » 30.04.2019 13:29

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.2.8

Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 4184
Зарегистрирован: 11.01.2005 14:29
Откуда: Питер
Благодарил (а): 109 раз
Поблагодарили: 442 раза

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

Сообщение Siava » 30.04.2019 15:10

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

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

{% if S_THANKS %}
<meta name="robots" content="noindex" />
{% endif %}
Еще одно нарушение правил и будете забанены. © Mr. Anderson
https://siava.ru/forum/ (phpbb 2.0.x, 3.1.x 3.2.x)

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

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

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

Татьяна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 %}
    
Вложения
pafnutyUserRating1.0.1.zip
Расширение "Рейтинг пользователя"
(14.91 КБ) 29 скачиваний

Аватара пользователя
megaaxel
phpBB 1.2.0
Сообщения: 16
Зарегистрирован: 15.05.2017 16:26
Благодарил (а): 6 раз

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

Сообщение megaaxel » 03.05.2019 18:14

Здравствуйте.
В своё время стояло 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
phpBB Guru
phpBB Guru
Сообщения: 11489
Зарегистрирован: 18.02.2007 19:01
Откуда: Калининград не Кенигсберг
Благодарил (а): 53 раза
Поблагодарили: 2579 раз

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

Сообщение Sheer » 03.05.2019 18:39

Смотрите модули в 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
Сообщения: 14529
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск
Благодарил (а): 348 раз
Поблагодарили: 1556 раз

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

Сообщение rxu » 03.05.2019 18:44

megaaxel, а как обновлялись? Первый пост внимательно читали?
rxu писал(а):
09.01.2015 15:04
Внимание: начиная с версии 2.0.4, имя расширения изменено
и далее.
Изображение

Аватара пользователя
megaaxel
phpBB 1.2.0
Сообщения: 16
Зарегистрирован: 15.05.2017 16:26
Благодарил (а): 6 раз

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

Сообщение megaaxel » 03.05.2019 19:40

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»