X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Нужна помощь с модулем для DLE
LaMERoK
LaMERoK
Topic Starter сообщение 20.10.2012, 12:13; Ответить: LaMERoK
Сообщение #1


Всем привет!
Когда-то давно использовал модуль "Новый вид рейтинга для DLE"
Вот ссылка на данный модуль: dle-club.net/freemoduls/557-dlepro-Skachat-modul-noviy-vid-reytinga-moduli-dle.html

Но модуль отлично работает только на DLE 8.5
Но в 9-й линейке были такие изменения, что данный модуль перестал корректно работать.
Кто может помочь с адаптацией данного модуля?

Может кому лень качать модуль(а точнее наверное всем лень качать модуль чтобы глянуть), по этому сразу опишу проблему сюда.

Для установки модуля необходимо сделать следующие изменения:
В файле /engine/modules/functions.php

Найти:
function ShowRating($id, $rating, $vote_num, $allow = true) { global $is_logged, $member_id, $config, $lang, $db; if ($rating) $rating = round($rating, 0); else $rating = 0; if (!$allow) { $rated = <<<HTML <div id="ratig-layer">{$rating}</div> HTML; return $rated; } $rated .= <<<HTML <span id="ratig-layer-{$id}"> <div id="ratig-layer"> <a href="#" class="r2-unit" onclick="doRate('1', '{$id}'); return false;"> <img src="/templates/joyfm/dleimages/up.gif" width="16" height="16" align="middle" /> </a> {$rating} <a href="#" class="r1-unit" onclick="doRate('-1', '{$id}'); return false;"> <img src="/templates/joyfm/dleimages/down.gif" width="16" height="16" align="middle" /> </a> </div> </span> HTML; return $rated; } function ShortRating($id, $rating, $vote_num, $allow = true) { global $config, $lang; if ($rating) $rating = round($rating, 0); else $rating = 0; if (!$allow) { $rated = <<<HTML <div id="ratig-layer">{$rating}</div> HTML; return $rated; } $rated = "<span id=\"ratig-layer-" . $id . "\">"; $rated .= <<<HTML <div id="ratig-layer"> <a href="#" class="r2-unit" onclick="dleRate('1', '{$id}'); return false;"> <img src="/templates/joyfm/dleimages/up.gif" width="16" height="16" align="middle" /> </a> {$rating} <a href="#" class="r1-unit" onclick="dleRate('-1', '{$id}'); return false;"> <img src="/templates/joyfm/dleimages/down.gif" width="16" height="16" align="middle" /> </a> </div> HTML; $rated .= "</span>"; return $rated; } function userrating($name) { global $db; $row = $db->super_query("SELECT SUM(rating) as rating, SUM(vote_num) as num FROM " . PREFIX . "_post where autor ='$name'"); if ($row['num']) $rating = round(($row['rating'] / $row['num']), 0); else $rating = 0; $rating = $rating * 17; $rated = <<<HTML {$rating} HTML; return $rated; }

Заменить на:
function ShowRating($id, $rating, $vote_num, $allow = true) {
global $lang;
if ($vote_num == 0)
{ $result = 0; } else
{ $result = $rating / $vote_num; }
if (strlen($result) > 3)
{ $rating = substr($result, 0, 3); }
else
{ $rating = $result; }
if( ! $allow ) {
$rated = <<<HTML <table cellpadding="3" cellspacing="0" width="100%"> <tbody><tr> <td width="120"> <table border="0" cellpadding="3" cellspacing="0" width="100%"> <tbody><tr><td class="td_rate">оценка игре</td></tr> <tr><td class="rate"><span id="rate_count">{$rating}</span><span class="rate2">/5</span></td></tr> <tr><td class="td_rate">голосов: <span id="rate_total">{$vote_num}</span></td></tr> </tbody></table> </td> <td valign="middle"> <div id="rate_indicator" style="display: none;"></div> <div id="rate_result"> <form method="post"> <table align="center" cellpadding="5" cellspacing="0" width="100%"> <tbody><div class="rate_info">Спасибо. Ваш голос принят.</div> </tbody></table> HTML;
return $rated;
}
$rated .= <<<HTML <div id='ratig-layer'> <table cellpadding="3" cellspacing="0" width="100%"> <tbody><tr> <td width="120"> <table border="0" cellpadding="3" cellspacing="0" width="100%"> <tbody><tr><td class="td_rate">оценка игре</td></tr> <tr><td class="rate"><span id="rate_count">{$rating}</span><span class="rate2">/5</span></td></tr> <tr><td class="td_rate">голосов: <span id="rate_total">{$vote_num}</span></td></tr> </tbody></table> </td> <td valign="middle"> <div id="rate_indicator" style="display: none;"></div> <div id="rate_result"> <table align="center" cellpadding="5" cellspacing="0" width="100%"> <tbody><tr> <td colspan="7" class="rate3" align="center"> Ваша оценка игре по пятибальной шкале </td> </tr> </td> <tr bgcolor="#eeeeee"> <td width="15%"> </td> <td align="center" width="14%"><div class="rate_num"><label for="rate1">1</label></div></td> <td align="center" width="14%"><div class="rate_num"><label for="rate2">2</label></div></td> <td align="center" width="14%"><div class="rate_num"><label for="rate3">3</label></div></td> <td align="center" width="14%"><div class="rate_num"><label for="rate4">4</label></div></td> <td align="center" width="14%"><div class="rate_num"><label for="rate5">5</label></div></td> <td width="15%"> </td> </tr> <tr bgcolor="#eeeeee"> <td> </td> <td align="center"><input id="rate1" type="radio" onclick="doRate('1', '{$id}'); return false;"></td> <td align="center"><input id="rate1" type="radio" onclick="doRate('2', '{$id}'); return false;"></td> <td align="center"><input id="rate1" type="radio" onclick="doRate('3', '{$id}'); return false;"></td> <td align="center"><input id="rate1" type="radio" onclick="doRate('4', '{$id}'); return false;"></td> <td align="center"><input id="rate1" type="radio" onclick="doRate('5', '{$id}'); return false;"></td> <td> </td> </tr> </tbody></table></table> </div> HTML;
return $rated;
}
function ShortRating($id, $rating, $vote_num, $allow = true) {
if ($vote_num == 0)
{ $result = 0; }
else
{ $result = $rating / $vote_num; }
if (strlen($result) > 3) { $rated = "<b>". substr($result, 0, 3) ."</b>/<b>5</b>"; }
else
{ $rated = "<b>".$result. "</b>/<b>5</b>"; }
return $rated; }
function userrating($name) {
global $db;
$row = $db->super_query( "SELECT SUM(rating) as rating, SUM(vote_num) as num FROM " . PREFIX . "_post where autor ='$name'" );
if ($row['num'] == 0)
{ $result = 0; }
else
{ $result = $row['rating'] / $row['num']; } if (strlen($result) > 3)
{ $rated = "<b>". substr($result, 0, 3) ."</b>/<b>5</b>"; }
else
{ $rated = "<b>".$result. "</b>/<b>5</b>"; }
return $rated;
}


В файле /engine/modules/show.full.php найти:
if( $row['allow_rate'] ) $tpl->set( '{rating}', ShowRating( $row['id'], $row['rating'], $row['vote_num'],
$user_group[$member_id['user_group']]['allow_rating'] ) );
else $tpl->set( '{rating}', "" );


Ниже добавить:
if ($row['vote_num'] == 0)
{$result = 0;}
else { $result = $row['rating'] / $row['vote_num'];}
if (strlen($result) > 3)
{ $rated = "<b>". substr($result, 0, 3) ."</b>/<b>5</b>"; }
else { $rated = $result;}
$tpl->set( '{Ball}', $rated);
$tpl->set( '{num_rat}', $row['vote_num']);


Я так понимаю что ошибки из-за файла functions.php
Может кто-то сможет подсказать, как эти изменения должны выглядеть для DLE 9.x, а точнее начиная от DLE 9.5 и выше.

Заранее огромное спасибо!

UPDATE СООБЩЕНИЯ

Начал по немногу разбираться сам с этим модулем.
Описываю пока то, что я заметил))

function ShortRating - такой функции в новой линейке движка уже нет. Ну и я от неё отказался и с модуля её не копирую.
Функцию userrating я решил не использовать, потому что при таком рейтинге мне не нужен отдельный рейтинг для каждого пользователя по его новостям.

Выходит ошибка только из-за фукнции ShowRating.

Я уже добился того, что у меня выводится этот блок с рейтингом новости и цифрами для выбора оценки, но при нажатии ничего не происходит.
После обновления страницы я вижу что рейтинг засчитался, но почему оно сразу не пишет сообщение "Спасибо, Ваш голос принят!" я пока что так и не понял.
Подскажите, пожалуйста, кто может.
Заранее всем спасибо!

Кстати выкладываю функцию ShowRating с оригинала движка 9.7 и функцию, на которой пока что остановился я.

ОРИГИНАЛ:
function ShowRating($id, $rating, $vote_num, $allow = true) {
    global $lang;
    
    if( $rating AND $vote_num ) $rating = round( ($rating / $vote_num), 0 );
    else $rating = 0;
    $rating = $rating * 17;
    
    if( !$allow ) {
        
        $rated = <<<HTML
<div class="rating">
        <ul class="unit-rating">
        <li class="current-rating" style="width:{$rating}px;">{$rating}</li>
        </ul>
</div>
HTML;
        
        return $rated;
    }
    
    $rated = <<<HTML
<div id='ratig-layer-{$id}'><div class="rating">
        <ul class="unit-rating">
        <li class="current-rating" style="width:{$rating}px;">{$rating}</li>
        <li><a href="#" title="{$lang['useless']}" class="r1-unit" onclick="doRate('1', '{$id}'); return false;">1</a></li>
        <li><a href="#" title="{$lang['poor']}" class="r2-unit" onclick="doRate('2', '{$id}'); return false;">2</a></li>
        <li><a href="#" title="{$lang['fair']}" class="r3-unit" onclick="doRate('3', '{$id}'); return false;">3</a></li>
        <li><a href="#" title="{$lang['good']}" class="r4-unit" onclick="doRate('4', '{$id}'); return false;">4</a></li>
        <li><a href="#" title="{$lang['excellent']}" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li>
        </ul>
</div></div>
HTML;
    
    return $rated;
}


Моя функция:
function ShowRating($id, $rating, $vote_num, $allow = true) {
global $lang;
if ($vote_num == 0)
{ $result = 0; } else
{ $result = $rating / $vote_num; }
if (strlen($result) > 3)
{ $rating = substr($result, 0, 3); }
else
{ $rating = $result; }
if( ! $allow ) {
$rated = <<<HTML
<table cellpadding="3" cellspacing="0" width="100%"> <tbody><tr> <td width="120"> <table border="0" cellpadding="3" cellspacing="0" width="100%"> <tbody><tr><td class="td_rate">оценка игре</td></tr> <tr><td class="rate"><span id="rate_count">{$rating}</span><span class="rate2">/5</span></td></tr> <tr><td class="td_rate">голосов: <span id="rate_total">{$vote_num}</span></td></tr> </tbody></table> </td> <td valign="middle"> <div id="rate_indicator" style="display: none;"></div> <div id="rate_result"> <form method="post"> <table align="center" cellpadding="5" cellspacing="0" width="100%"> <tbody><div class="rate_info">Спасибо. Ваш голос принят.</div> </tbody></table>
HTML;

return $rated;
}
$rated .= <<<HTML
<div id='ratig-layer'> <table cellpadding="3" cellspacing="0" width="100%"> <tbody><tr> <td width="120"> <table border="0" cellpadding="3" cellspacing="0" width="100%"> <tbody><tr><td class="td_rate">оценка игре</td></tr> <tr><td class="rate"><span id="rate_count">{$rating}</span><span class="rate2">/5</span></td></tr> <tr><td class="td_rate">голосов: <span id="rate_total">{$vote_num}</span></td></tr> </tbody></table> </td> <td valign="middle"> <div id="rate_indicator" style="display: none;"></div> <div id="rate_result"> <table align="center" cellpadding="5" cellspacing="0" width="100%"> <tbody><tr> <td colspan="7" class="rate3" align="center"> Ваша оценка игре по пятибальной шкале </td> </tr> </td> <tr bgcolor="#eeeeee"> <td width="15%"> </td> <td align="center" width="14%"><div class="rate_num"><label for="rate1">1</label></div></td> <td align="center" width="14%"><div class="rate_num"><label for="rate2">2</label></div></td> <td align="center" width="14%"><div class="rate_num"><label for="rate3">3</label></div></td> <td align="center" width="14%"><div class="rate_num"><label for="rate4">4</label></div></td> <td align="center" width="14%"><div class="rate_num"><label for="rate5">5</label></div></td> <td width="15%"> </td> </tr> <tr bgcolor="#eeeeee"> <td> </td> <td align="center"><input id="rate1" type="radio" onclick="doRate('1', '{$id}'); return false;"></td> <td align="center"><input id="rate1" type="radio" onclick="doRate('2', '{$id}'); return false;"></td> <td align="center"><input id="rate1" type="radio" onclick="doRate('3', '{$id}'); return false;"></td> <td align="center"><input id="rate1" type="radio" onclick="doRate('4', '{$id}'); return false;"></td> <td align="center"><input id="rate1" type="radio" onclick="doRate('5', '{$id}'); return false;"></td> <td> </td> </tr> </tbody></table></table> </div>
HTML;
return $rated;
}


Сообщение отредактировал LaMERoK - 20.10.2012, 12:14
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Coppermine
Coppermine
сообщение 20.10.2012, 23:12; Ответить: Coppermine
Сообщение #2


(LaMERoK @ 20.10.2012, 12:13) *
После обновления страницы я вижу что рейтинг засчитался, но почему оно сразу не пишет сообщение "Спасибо, Ваш голос принят!" я пока что так и не понял.

Стандартный рейтинг DLE также подобных сообщений не пишет (точнее, временно появляется надпись "Загрузка. Пожалуйста, подождите", но она появляется и с этой модификацией).

Это не модуль, а скорее хак стандартного рейтинга. Так что уточните, что Вам нужно. Может, обновление значения рейтинга без перезагрузки страницы, как в стандартном? Для этого, по идее, надо объединить вывод переключателей с цифрами (без "include").

Сообщение отредактировал Coppermine - 20.10.2012, 23:13


--------------------
Услуги программирования на PHP
coppermine1000@yahoo.com
+7-915-131-07-82
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
LaMERoK
LaMERoK
Topic Starter сообщение 22.10.2012, 20:49; Ответить: LaMERoK
Сообщение #3


Да, мне именно обновление значения рейтинга без перезагрузки страницы и нужно.
На счёт "надо объединить вывод переключателей с цифрами" не совсем понял.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) ✅ sms.chekons.com - ⭐ Сервис для получения SMS на реальные номера USA "Non-VoIP, безлим SMS, API" ⭐
Сервис для получения SMS на реальные номера USA
13 Chekon 4070 Вчера, 11:48
автор: Chekon
Открытая тема (нет новых ответов) Rebex.io – Ваша инновационная платформа для обмена криптовалюты!
1 Rebex 677 17.4.2024, 11:50
автор: Rebex
Открытая тема (нет новых ответов) Требуется помощь по сайту на "ВордПресс"
Закрылся доступ в панель администратора
15 Tia2 2346 17.4.2024, 0:54
автор: diviner99
Открытая тема (нет новых ответов) Какой % отказов нормален для сайта?
11 Aloof 2811 16.4.2024, 12:48
автор: diviner99
Горячая тема (нет новых ответов) Betatransfer.net - прием платежей для HIGH RISK проектов, интернет эквайринг и мерчант онлайн оплат
54 arendator 34834 15.4.2024, 15:16
автор: arendator


 



RSS Текстовая версия Сейчас: 19.4.2024, 11:46
Дизайн