Комментирование оценки за карму

+65
3.34K
Для 1.10.2 здесь!

Мне кажется, что это очень важная и полезная вещь для многих сайтов, в частности для этого, где на основе кармы например, сортируются исполнители в каталоге, да и просто любопытно за что некоторые личности) постоянно плюсуют в карму. Хм, наверное всё таки главное, что по комментариям за те или иные оценки действительно можно оценить отношение к человеку и выстроить своё к нему доверие.
Демо тут, пароли: 123456

Установка

1. Выполним запрос к БД:
  1. ALTER TABLE `cms_user_karma` ADD `reason` TEXT NOT NULL
2. Файл /core/classes/user.class.php
Найти:
  1. 341 public static function changeKarmaUser($to_user_id, $points, $from_user_id=0){
Заменить:
  1. public static function changeKarmaUser($to_user_id, $points, $from_user_id=0, $reason=''){
Найти:
  1. 347 $inDB->query("INSERT INTO cms_user_karma (user_id, sender_id, points, senddate) VALUES ('$to_user_id', '$from_user_id', '$points', NOW())");
Заменить:
  1. $inDB->query("INSERT INTO cms_user_karma (user_id, sender_id, points, senddate, reason) VALUES ('$to_user_id', '$from_user_id', '$points', NOW(), '$reason')");
3. Файл /components/users/frontend.php
Найти:
  1. 1075 $points = (cmsCore::request('sign', 'str', 'plus')=='plus' ? 1 : -1);
  2. $to = cmsCore::request('to', 'int', 0);
После вставить:
  1. $reason = cmsCore::request('reason', 'str');
  2. if(strlen($reason) < 6)cmsCore::jsonOutput(array('error' => true));
Найти:
  1. 1086 cmsCore::halt(cmsUser::changeKarmaUser($to, $points));
Заменить:
  1. cmsCore::jsonOutput(array('error' => false, 'data' => cmsUser::changeKarmaUser($to, $points, false, $reason)));
4. Файл /components/users/js/profile.js
Найти:
  1. 120 changeKarma: function(to_user_id, sign) {
  2. $.post('/users/karma/'+sign+'/'+to_user_id, { }, function(data) {
  3. $("#u_karma_cont").removeClass();
  4. $(".sign_link a").hide();
  5. if(data >= 0) {
  6. $("#u_karma_cont").addClass('value-positive');
  7. } else {
  8. $("#u_karma_cont").addClass('value-negative');
  9. }
  10. $("#u_karma").html(data).fadeOut().fadeIn();
  11. });
  12. }
Заменить:
  1. changeKarma: function(to_user_id, sign) {
  2. $('.sess_messages').fadeOut();
  3. core.prompt('', '', 'Комментарий:', function(msg) {
  4. if($('#error_mess').length < 1)$("#popup_message").append('<div style="margin:6px 0;display:none" class="sess_messages"><div class="message_info" id="error_mess">Ваш комментарий не может быть короче 5 символов!</div></div>');
  5. if (msg.length > 4) {
  6. $.post('/users/karma/'+sign+'/'+to_user_id, {reason: msg}, function(result){
  7. if(result.error == false){
  8. core.box_close();
  9. $("#u_karma_cont").removeClass();
  10. $(".sign_link a").hide();
  11. if(result.data >= 0)$("#u_karma_cont").addClass('value-positive');
  12. else $("#u_karma_cont").addClass('value-negative');
  13. $("#u_karma").html(result.data).fadeOut().fadeIn();
  14. }else{
  15. $('.sess_messages').fadeIn();
  16. $('#popup_prompt').focus();
  17. }
  18. }, 'json');
  19. }else{
  20. $('.sess_messages').fadeIn();
  21. $('#popup_prompt').focus();
  22. }
  23. });
  24. }
5. Залить файлик из архива в папки "components" шаблонов.

Готово!

P.S.: будет очень приятно, если сейчас кликните тут зелёную стрелочку, я хоть буду знать за что))
+5
StaryiSV StaryiSV 11 лет назад #
lokanaft:
P.S.: будет очень приятно, если сейчас кликните тут зелёную стрелочку, я хоть буду знать за что))
кликнул и профиль и пост.
+2
eoleg eoleg 11 лет назад #
+
Сокращаю отставание от Ленивого )
+1
Ne OS Ne OS 11 лет назад #
+
А как это аватарка у Fedora такая большая?
+1
lokanaft lokanaft 11 лет назад #
Она не большая - она высокая =)
0
Ne OS Ne OS 11 лет назад #
Ну как то так))
Можно код где и что изменено?
0
lokanaft lokanaft 11 лет назад #
Вот пост.
+1
Def Def 11 лет назад #
было бы хорошо иметь настройку в адинке, чтобы вкл или выкл) о это скорее было бы полезно, если бы разработчики включили данную наработку в дистрибутив?
0
xxuuu xxuuu 11 лет назад #
Хорошая доработка! Нажал стрелочку вверх)
А для какой версии доработка?
0
lokanaft lokanaft 11 лет назад #
Для версии 1.10, в 1.9 вы просто не найдёте этих строк)
+2
xxuuu xxuuu 11 лет назад #
Ну и конечно ожидаемый вопрос. Для версии 1.9 не планируется, тяжело переделать?
0
lokanaft lokanaft 11 лет назад #
Не планируется, не смотрел.
+1
xxuuu xxuuu 11 лет назад #
За что минусы то? За заданный вопрос чтоль?
0
Роман Роман 11 лет назад #
А в виде плагина можно это реализовать?
0
lokanaft lokanaft 11 лет назад #
Мне нравятся такие вопросы, вы заказчик - я исполнитель? Распространяется как есть!
Олег Васильевич я Олег Васильевич я 11 лет назад #
Комментарий удален
+1
lokanaft lokanaft 11 лет назад #
В посылочках не нуждаюсь, а вот от хотя бы маленькой тележки не отказался laugh
+1
Igor Igor 11 лет назад #
Верно Олег!
очень полезная штука - как только дойдут руки до 1.10 обязательно поюзаю, так что + однозначтно
ну а ставить минусы за то что человек сделал - это не правильно, убрал минусы просто потому что реально это не правильно...
-1
Роман Роман 11 лет назад #
я же не вас прошу это делать
мне интересно чисто в техническом плане, в виде плагина это можно сделать или нет?
0
lokanaft lokanaft 11 лет назад #
Повторю ещё раз: это не wp, где свободного места нету без вызова плагинов, здесь плагины обрабатывают массивы с контентом и ещё в совсем специфичных местах, всё.
0
Dost Dost 11 лет назад #
Плюсую, думаю многим понравится у себя на сайте видеть такое дополнение.
0
IRATE IRATE 11 лет назад #
Спасибо! +
0
reload reload 11 лет назад #
Для увеличения социальности, это однозначно плюс)
Оценивать в разы интересней как и следить за личной кармой - так ведь можно хоть узнать "за что" если правду напишут)
В любом случае для юзеров многих порталов будет приятное дополнение)
Олег Васильевич я Олег Васильевич я 11 лет назад #
Комментарий удален
Олег Васильевич я Олег Васильевич я 11 лет назад #
Комментарий удален
0
PrimHunter PrimHunter 11 лет назад #
Дополнение, несомненно, хорошее. Но я нигде не увидел экранирования текста до записи в базу. Этак можно и запросик какой-нить в это текстовое поле написать, который лехко что-нить сломает... Хотя, я, если честно, не очень хорошо знаю внутренности движка, может на этом уровне экранируется?
0
lokanaft lokanaft 11 лет назад #
На этом:
Код PHP:
  1. // SECURITY /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  3. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  4. public static function strClear($input, $strip_tags=true){
  5. if(is_array($input)){
  6. foreach ($input as $key=>$string) {
  7. $value[$key] = self::strClear($string, $strip_tags);
  8. }
  9. return $value;
  10. }
  11. $string = trim($input);
  12. //Если magic_quotes_gpc = On, сначала убираем экранирование
  13. $string = (@get_magic_quotes_gpc()) ? stripslashes($string) : $string;
  14. $string = rtrim($string, ' \\');
  15. if ($strip_tags) {
  16. $string = mysql_real_escape_string(strip_tags($string));
  17. }
  18. return $string;
  19. }
0
VonKruger VonKruger 11 лет назад #
классное дополнение! плюсанул, между прочим 40-ой мой голос :)
+1
Игорь Игорь 11 лет назад #
Отличное дополнение. Предлагаю реализовать возможность запрета пользователям с кармой меньше N (N- устанавливается а админке) тыкать в карму.
+2
FlaZa FlaZa 11 лет назад #
Это действительно то чего не хватало. К примеру проекты определенной тематики где карма является показателем авторитета, а не просто циферками. К примеру на сайте человек предоставляет услуги по разработке сайтов или шаблонов, или тексты пишет, он исполнил заказа, ему поставили + в карму, и сказали, мол за такой-то исполненный заказ. И потом потенциальный заказчик видит по карме насколько ответственный работник. Комментарии в профиле это конечно тоже вариант, но не честные ведь можно удалять, а тут если напортачил, то все будет знать об этом, и причину...
0
Azura Azura 11 лет назад #
Ура, товарищи! Шикарный хак, очень полезный! Спасибо вам огромное. =)))
0
Сергей Сергей 11 лет назад #
Отлично.
То что нужно, как раз то что искал.
Огромное спасибо
:)
0
Сергей Сергей 11 лет назад #

Помогите новичку разобраться!



Какие конкретно действия я должен сделать, чтобы выполнить этот пункт.
Спасибо.
+1
lokanaft lokanaft 11 лет назад #
Зайти в phpMyAdmin, выбрать базу данных, в которую установлена система и выполнить этот запрос.
0
Сергей Сергей 11 лет назад #
Спасибо - заработало.
С Новым 2013 годом, новых успехов и свершений.
0
Ратмир Ратмир 11 лет назад #
Всё поставил, прекрасно работает, благодарю + :)
0
Кишля Раду Кишля Раду 11 лет назад #
А как быть если у меня нет этой строки?
Код PHP:
  1. 341 public static function changeKarmaUser($to_user_id, $points, $from_user_id=0){
0
lokanaft lokanaft 11 лет назад #
341 - это просто номер строки, чтобы вам проще было найти. На 1.10 и 1.10.1 точно есть.
0
Таня Таня 11 лет назад #
так обрадовалась когда увидела этот пост, но как оказалось рано радовалась. Мои сайты на 1,9. Жаль что нет для этой версии.
Но все равно вам конечно же плюс, очень полезная вещь, мне ее очень не хватает на сайте.
0
Батосай Батосай 11 лет назад #
И тут, и в профиле кликнул плюс, так как разработка полезная, хоть и не сразу у меня получилось её без проблем поставить, но скорее из-за собственной невнимательности...

Имеется небольшая проблема, при клике на кнопку "Отправить" при добавлении комментария к карме ничего не происходит, т оесть на кнопку нужно нажимать дважды, что бы действие произвелось. Это так и должно быть, или я что-то не так сделал?
0
lokanaft lokanaft 11 лет назад #
Нет, так не было задумано, а работает у всех при первом клике.

Еще от автора

Ajax подгрузка контента для двойки
Ну что, товарищи, сегодня вы своими руками сможете сделать ajax подгрузку записей контента.
AJAX подгрузка комментов для двойки
Как следует из названия, дополнение ограничивает полный вывод всех комментов записи и позволяет пользователю при необходимости посмотреть следующие.
ContentWatch - проверка уникальности добавляемого контента для icms2
Компонент позволяет проверять уникальность текста с помощью сервиса Content-Watch.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.