http://mitglied.lycos.de/lappsack/wakka/Erweiterungen.html – CooperFreak
{{RatePage}}
Bewertungssystem:
die Bewertungsbox für die jeweilige Seite: {{RatePage [text="text"] [art="kind"]}}
Mit text kann man einen der Box einen individuellen Titel verpassen
Mit art kann man verschiedene Bewertungen machen (bei beste Bewertungen einzeln aufgeführt) ""->"allgemein"
Bewertung -> Evaluate / Rate ?
/actions/ratepage.php
<?php
// written by Robert Schlieder mail: cooperfreak@gmx.de
// Diese Skript ist nur für meine Seite angepasst (www.lapppedia.de.vu)
// daher sollte man einen Grossteil der Strings bearbeiten.
// der Einfachheit halber habe ich auch auf verschiedene Sprachen ($this->GetResourceValue()) verzichtet
// wer Lust hat kann dies natürlich implementieren.
if (!$text)
$text="Seite bewerten nach";
if ($_POST["action"]=="loeschen")
$this->Query("delete from ".$this->config["table_prefix"]."bewertung where user='".$this->GetUserName()."' and page='".$this->getPageTag()."' and art='".$art."'");
elseif ($_POST["action"]=="bewerten")
{
if (!($number = $this->LoadAll("select number from ".$this->config["table_prefix"]."bewertung where user='".$this->GetUserName()."' and page='".$this->getPageTag()."' and art='".$art."'")))
{
$votes = $this->LoadAll("select id from ".$this->config["table_prefix"]."bewertung order by id");
$this->Query("insert into ".$this->config["table_prefix"]."bewertung set id = '".($votes[sizeof($votes)-1]["id"]+1)."', user = '".$this->GetUserName()."', page = '".$this->getPageTag()."', number = '".intval($_POST["bewertung"])."', art='".$art."'");
}
}
print("<fieldset><legend><strong> ".$text.": ".$art." </strong></legend><div>");
if ($votes = $this->LoadAll("select number from ".$this->config["table_prefix"]."bewertung where page='".$this->getPageTag()."' and art='".$art."'"))
{
$summe=0;
$anzahl=sizeof($votes);
foreach ($votes as $vote)
$summe+=$vote["number"];
$durchschnitt=round($summe/$anzahl,3);
print('Diese Seite wurde im Schnitt mit <b>'.$durchschnitt.'</b><small> ('.$anzahl.' Stimmen)</small> bewertet.<p/>');
}
else
print('Diese Seite wurde noch nicht bewertet, warum machst Du nicht den Anfang?<p/>');
if ($user = $this->GetUser())
{
if ($number = $this->LoadAll("select number from ".$this->config["table_prefix"]."bewertung where user='".$this->GetUserName()."' and page='".$this->getPageTag()."' and art='".$art."'"))
{
print("Du hast diese Seite bereits mit einer ".$number[0]["number"]." bewertet. <p/>");
print($this->FormOpen());
print('<input type="hidden" name="action" value="loeschen" />');
print('<input type="submit" value="Bewertung widerrufen">');
print($this->FormClose());
}
else
{
print("Bewerte diese Seite:<p/>");
print($this->FormOpen());
print('<input type="hidden" name="action" value="bewerten" />');
for ($i=1;$i<=9;$i++)
// if ((($this->GetUserName()=="KieT")||($this->GetUserName()=="TobseR"))&&($i<5))
// print($i.' ');
// else
print('<label for="'.$i.'"><input type="radio" name="bewertung" value="'.$i.'" id="'.$i.'">'.$i.' </label>');
print('<label for="'.$i.'"><input type="radio" name="bewertung" value="'.$i.'" id="'.$i.'" checked>'.$i.' </label>');
print('<input type="submit" value="bewerten">');
print($this->FormClose());
}
}
else
print("Bevor Du hier eine Bewertung abgeben kannst, musst Du dich erst anmelden.");
print("</div></fieldset>");
?>
{{TopRated}}
in eine leere Seite (TopRated bietet sich da an :-> ) einfügen, um die Top-Bewertungen zu sehen
Bestenliste -> TopRated ?
/actions/toprated.php
<?php
// written by Robert Schlieder mail: cooperfreak@gmx.de
// Diese Skript ist nur für meine Seite angepasst (www.lapppedia.de.vu)
// daher sollte man einen Grossteil der Strings bearbeiten.
// der Einfachheit halber habe ich auch auf verschiedene Sprachen ($this->GetResourceValue()) verzichtet
// wer Lust hat kann dies natürlich implementieren.
//print($_POST["action"]."<br/>");
//print($_POST["bewertung"]."<br/>");
$arten=$this->LoadAll("select distinct art from ".$this->config["table_prefix"]."bewertung");
function sortiere($a, $b) {
return strcasecmp($a["art"],$b["art"]);
}
uasort($arten,"sortiere");
foreach($arten as $art)
{
if (!$art["art"])
print("<fieldset><legend><strong> Bewertung nach: Allgemein </strong></legend>");
else
print("<fieldset><legend><strong> Bewertung nach: ".$art["art"]."</strong></legend>");
$pages=$this->LoadAll("select distinct page from ".$this->config["table_prefix"]."bewertung where art='".$art["art"]."'");
$result=array();
$menge=array();
foreach($pages as $page)
{
if ($votes = $this->LoadAll("select number from ".$this->config["table_prefix"]."bewertung where page='".$page["page"]."' and art='".$art["art"]."'"))
{
$summe=0;
$anzahl=sizeof($votes);
foreach ($votes as $vote)
$summe+=$vote["number"];
$durchschnitt=round($summe/$anzahl,3);
$add=array($page["page"]=>$durchschnitt);
$addm=array($page["page"]=>$anzahl);
}
else
{
$add=array($page["page"]=>0);
$addm=array($page["page"]=>0);
}
$result=array_merge($result,$add);
$menge=array_merge($menge,$addm);
}
arsort($result);
$num = 0;
print("<table>");
print("<thead><tr><th width='5%'><div align='center'>Platz</div></th><th width='60%'><div align='left'>Seite </div></th><th width='35%'><div align='center'>Bewertung</div></th></tr></thead>");
while(list($key, $val) = each($result))
{
if ($this->config["hide_locked"])
$access = $this->HasAccess("read",$key);
else
$access = true;
if ($access)
{
$num++;
if (strrpos($key,"/")) $short=substr($key,strrpos($key,"/")+1);
else $short=$key;
// if ($num==1)
// $size=3;
// elseif ($num<=5)
// $size=2;
// elseif ($num<=20)
// $size=1;
// elseif ($num=50)
// break;
print("<tr><td><div align='center'>".$num."</div></td><td><div align='left'>".$this->Link("/".$key,"",$short." (".$key.")")."</div></td><td><div align='center'><b>".$val."</b><small> (".$menge[$key]." Stimmen)</small></div></td><td>\n");
}
}
print("</table>");
print("</fieldset>");
}
?>
hier noch die sql-Datei für die DaBa:
create extra table:
--
-- Tabellenstruktur für Tabelle `wakka_bewertung`
--
CREATE TABLE `wakka_bewertung` (
`id` int(10) NOT NULL default '0',
`user` varchar(80) NOT NULL default '',
`page` varchar(250) NOT NULL default '',
`number` tinyint(4) NOT NULL default '0',
`art` varchar(50) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM;
My Light variant. In my installation I include this action into show.php. So, here is only 2 differenses:
1. check for page owner – I don't want to rate special pages
2. disable rate agreement
it works:
http://www.openstory.ru
/actions/ratepage.php
<?php
//{{ratepage text="text" art="art"}}
if ($this->GetPageOwner()=="WikiAdmin")
print("<b>This page is not for rate</b>");
else
{
if ($_POST["action"]=="loeschen")
$this->Query("delete from ".$this->config["table_prefix"].
"bewertung where user='".$this->GetUserName()."'
and page='".$this->getPageTag()."' and art='".$art."'");
elseif ($_POST["action"]=="bewerten")
{
if (!($number = $this->LoadAll("select number from ".$this->config["table_prefix"].
"bewertung where user='".$this->GetUserName()."'
and page='".$this->getPageTag()."' and art='".$art."'")))
{
$votes = $this->LoadAll("select id from ".$this->config["table_prefix"].
"bewertung order by id");
$this->Query("insert into ".$this->config["table_prefix"].
"bewertung set id = '".($votes[sizeof($votes)-1]["id"]+1)."',
user = '".$this->GetUserName()."',
page = '".$this->getPageTag()."', number = '".intval($_POST["bewertung"])."', art='".$art."'");
}
}
//print("<div>");
if ($votes = $this->LoadAll("select number from ".$this->config["table_prefix"].
"bewertung where page='".$this->getPageTag()."' and art='".$art."'"))
{
$summe=0;
$anzahl=sizeof($votes);
foreach ($votes as $vote)
$summe+=$vote["number"];
$durchschnitt=round($summe/$anzahl,3);
print('<b>Page rating is: </b>'.$durchschnitt.'<small> ( votes: '.$anzahl.')</small>');
}
else
print('<b>There are no rates of this page</b>');
if ($user = $this->GetUser())
{
print($this->FormOpen());
// if ($this->GetPageOwner()=="WikiAdmin")
// print($this->FormClose());
// else
// {
print('<input type="hidden" name="action" value="bewerten" />');
for ($i=1;$i<=9;$i++)
print('<label for="'.$i.'">
<input type="radio" name="bewertung" value="'.$i.'" id="'.$i.'">'.$i.' </label>');
print('<label for="'.$i.'">
<input type="radio" name="bewertung" value="'.$i.'" id="'.$i.'" checked>'.$i.' </label>');
print('<input type="submit" value="Ok">');
print($this->FormClose());
// }
}
else
{
echo '</br>';
print("<b>You mast be registred to rate.</b>");
print($this->FormClose());
}
}
//print("</div>");
?>
put this at the end of your language file
/lang/wakka.xyz.php
pls. notice that this entry will not survive an Wacko upgrade, so you have to redo this
[xyz] proposed translations
[de]
($this->GetResourceValue())
[fr]
[ru]