Einbindung von ContentPassword

ContentPasword wird durch einen einfachen Plugincode im Beitrag aktiviert. Der Code lautet: {password PARAMETER }. Als Parameter sind folgende Werte möglich:

  • pass="passwort": setzt ein Passwort
  • title="Titel": setzt den Titel des Passwortdialogs
  • desc="Beschreibung": setzt die Beschreibung des Dialogs
  • sql="SQL-Abfrage": setzt eine SQL-Abfrage zum verifizieren des Passworts.
    {password} wird dabei mit dem eingegebenen Passwort ersetzt.
  • group="Gruppenname": ordnet dem Beitrag einer Gruppe zu.
    Wird ein Beitrag mit einem Passwort dieser Gruppe freigeschaltet, sind automatisch alle Beiträge dieser Gruppe erreichbar.
  • allowgroup="Gruppenname": Bei erfolgreicher Passworteingabe werden alle Beiträge der angegebenen Gruppe freigeschaltet.
  • passgroup="Gruppenname": erlaubt die Freischaltung des Beitrags mit den Passwörtern der angegebenen Gruppe. Die anderen Beiträge der Gruppe werden nicht freigeschaltet.

Alle Parameter außer "title" und "desc" können beliebig oft wiederholt und kombiniert werden. Wird das eingegebene Passwort von einem beliebigen Parameter akzeptiert, so wird der Beitrag freigeschaltet.

Hinweis: Leere Passwörter sind nicht erlaubt und führen nie zu einer Freigabe.

Plugins werden in RSS- und Atom-Newsfeeds nicht ausgeführt. Um die Beiträge auch dort zu schützen, bitte folgende Änderungen vornehmen. Diese Änderungen greifen direkt in den Core ein und müssen daher gut dokumentiert werden. Jedes Joomla-Update kann diese Änderungen wieder rückgängig machen!

/libraries/joomla/document/feed/renderer/rss.php
Suchen:

            $feed.= "            <description><![CDATA[".$this->_relToAbs($data->items[$i]->description)."]]></description>\n";
Ersetzen mit:
            if (preg_match('/{password(area)?[^\\}]+}/', $data->items[$i]->description)) {
                $feed.= "            <description><![CDATA[This item is protected with a password.]]></description>\n";
            } else {
                $feed.= "            <description><![CDATA[".$this->_relToAbs($data->items[$i]->description)."]]></description>\n";
            }

/libraries/joomla/document/feed/renderer/atom.php
Suchen:

            if ($data->items[$i]->description!="") {
                $feed.= "        <summary type=\"html\">".htmlspecialchars($data->items[$i]->description, ENT_COMPAT, 'UTF-8')."</summary>\n";
                $feed.= "        <content type=\"html\">".htmlspecialchars($data->items[$i]->description, ENT_COMPAT, 'UTF-8')."</content>\n";
            }
Ersetzen mit:
            if ($data->items[$i]->description!="") {
                if (preg_match('/{password(area)?[^\\}]+}/', $data->items[$i]->description)) {
                    $feed.= "        <summary type=\"html\">This item is protected with a password.</summary>\n";
                    $feed.= "        <content type=\"html\">This item is protected with a password.</content>\n";
                } else {
                    $feed.= "        <summary type=\"html\">".htmlspecialchars($data->items[$i]->description, ENT_COMPAT, 'UTF-8')."</summary>\n";
                    $feed.= "        <content type=\"html\">".htmlspecialchars($data->items[$i]->description, ENT_COMPAT, 'UTF-8')."</content>\n";
                }
            }