WackoWiki: Вам запрещён доступDev/PatchesHacks/RatePage ...

Home Page | Изменения | Новые Комменты | Пользователи | Каталог | Регистрация | Вход:  Пароль:  

Action: RatePage

http://mitglied.lycos.de/lappsack/wakka/Erweiterungen.htmlCooperFreak


{{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(10NOT NULL default '0',
  `user` varchar(80NOT NULL default '',
  `page` varchar(250NOT NULL default '',
  `number` tinyint(4NOT NULL default '0',
  `art` varchar(50NOT 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>");
?>

How to

Localization

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())

  1. Diese Seite wurde im Schnitt mit 
  2. votes => Stimmen
  3. Diese Seite wurde noch nicht bewertet, warum machst Du nicht den Anfang?
  4. Du hast diese Seite bereits mit einer
  5. bewertet
  6. Bewertung zurücknehmen / widerrufen
  7. Bewerte diese Seite
  8. Bevor Du hier eine Bewertung abgeben kannst, musst Du dich erst anmelden.
  9. Bewertung nach: Allgemein
  10. Bewertung nach:
  11. Platz
  12. Seite
  13. Bewertung

[fr]
[ru]


To Do

  1. singular / plural
  2. description in English -> German in German section; rename table in English name and adapt actions accordingly
  3. localization
  4. single-line form for bookmark border or footer
  5. no break in hitlist
  6. rmd: Durchschnitt: 4 (bisher abgegebene Stimmen: 1) Bevor Du hier eine Bewertung abgeben kannst, musst Du dich erst anmelden.

 
Файлов нет. [Показать файлы/форму]
Много комментариев (2). [Показать комментарии/форму]
Donate
Время работы: 5.829 s
Использовано памяти: 2.737 Mb