<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0">
<channel>
<title> - Die fünf neuesten Artikel:</title>
<description>REDSYS - FAQ for Development and Editors</description>
<link>http://www.redsys.de/faq</link>	<item>
		<title><![CDATA[Wie kann ich Facebook an die RedSYS Community anbinden?]]></title>
		<description><![CDATA[<p>
Um Facebook an die RedSYS Community anzubinden muss erst eine App bei Facebook erstellt werden. Bei der APP müssen mindestens die beiden folgenden Felder befüllt werden. (Beispiel)
</p>
<p>
<strong>Site URL:</strong> http://www.aman.de<br />
<strong>Site Domain: </strong>aman.de
</p>
<p>
<br />
In der Datei kernel/system/conf/postsetup.php.local muss dann die app_id und der app_secret hinterlegt werden und die externe Authentifizierung wird aktiviert. 
</p>
<p>
&lt;?php<br />
$REDSYS_ENV['external-auth']['facebook'] = array(<br />
'default' =&gt; array(<br />
'app_id' =&gt; '123456778',<br />
'app_secret' =&gt;
'123456778123456778222'<br />
),<br />
);<br />
$AdminSession-&gt;activate_external_auth('facebook','default');<br />
$MySession-&gt;activate_external_auth('facebook','default');<br />
?&gt; 
</p>
<p>
 
</p>
<p>
Für das Backend ist somit die Anbindung auch schon umgesetzt. Mit einem klick in RedSYS auf den Facebook Button in der Buttonleiste oben rechts im Backend, öffnet sich nun ein popup und Sie werden dazu aufgefordert der angelegten Facebook APP Zugriff auf Ihre Daten zu gewähren. Beim nächsten Login müssen Sie sich nicht erneut anmelden sondern können einfach den Button "Login with Facebook" verwenden.
</p>
<p>
 
</p>
<p>
<strong>Implementierung im Frontend: </strong>
</p>
<p>
Wenn der User nicht eingeloggt ist, wird Ihm der Button "Login with Facebook" angezeigt. Dazu folgenden Code verwenden welcher mit Javascript ein Fenster öffnet. Die function getFacebookLoginUrl liefert die passende URL um danach auch wieder auf der entsprechenden Seite zu landen. 
</p>
<p>
&lt;?
</p>
<p>
$fblogin = $MySession -&gt; getFacebookLoginUrl($_SERVER['PHP_SELF']);<br />
if ($fblogin !== false) {                        <br />
echo '&lt;a href="#" onClick="openwin(\''.$fblogin.'\',800,600)"&gt;&lt;img src="'.$PATHS["url"].'rsys_acssserv/skins'.$REDSYS_ENV["SKIN"]["name"].'/images/facebook-login.png"/&gt;&lt;/a&gt;'<br />
} 
</p>
<p>
?&gt; 
</p>
<p>
 
</p>
<p>
Wenn der User eingeloggt ist, aber noch bei Ihm noch keine Facebook UID hinterlegt ist, wird ihm durch ein symbol angeboten dies zu tun. Beim Klick auf das Logo wird ein popup geöffnet welches den User darum Bittet der App zugriff auf seine Daten zu gewähren. Wird alles überprüft und dargestellt durch folgenden Code.
</p>
<p>
&lt;?php<br />
$fbconnect_url = '#'<br />
if ($MySession -&gt; hasActiveExternalAuth('facebook')) {<br />
if (!isset($MySession -&gt; UserDataRef['external_auth_facebook_uid']) || !$MySession -&gt; UserDataRef['external_auth_facebook_uid']) {<br />
$fbconnect_alttext = getLocalString('Facebook-Connect ist konfiguriert aber für Ihr Login nicht aktiv. Aktivieren Sie Facebook-Connect durch Klick auf das Icon.');<br />
$fbconnect_url = $MySession -&gt; getFacebookConnectUrl($_SERVER['PHP_SELF']);<br />
?&gt;<br />
&lt;a href="#" onClick="window.open('&lt;?php echo $fbconnect_url ?&gt;','fbconnect','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=800,height=600');"&gt;&lt;img id="fbconnect_view" src="&lt;?php echo $PATHS["url"] ?&gt;rsys_acssserv/skins/&lt;?php echo $REDSYS_ENV["SKIN"]["name"] ?&gt;/images/icons/fbconnect_active.png" alt="&lt;?php echo $fbconnect_alttext ?&gt;" title="&lt;?php echo $fbconnect_alttext ?&gt;" border="0" /&gt;&lt;/a&gt;<br />
&lt;?php<br />
}<br />
}<br />
?&gt;
</p>
<p>
 <em>Natürlich können andere Icons verwendet und der Code Angepasst werden. Die Snippets von oben sind ausschließlich Beispiele. </em>
</p>
<p>
 
</p>
<p>
Um die Daten eines Users von Facebook zu laden und Sie direkt in der RedSYS Community abzulegen empfehle ich einen das Event "onLoginRequired" welches im Plugin Communityuser definiert werden kann. Innerhalb dieser Funktion stehen die Daten des Facebook Users dann über die  Methode $sessionobj-&gt;getFacebookUserprofile(); zur Verfügung und können Beispielsweise mit $communityuser -&gt; registerUser(); in der RedSYS Community abgelegt werden. Natürlich sollten zum ablegen noch die bekannten behaviour und propertys gesetzt werden. 
</p>
<p>
 
</p>
<p>
<em><br />
</em>
</p>
<p>
 
</p>
<p>
 
</p>
]]></description>
		<link>http://www.redsys.de/faq/content/8/239/de/wie-kann-ich-facebook-an-die-redsys-community-anbinden.html</link>
		<pubDate>Fri, 26 Aug 2011 13:20:00 GMT</pubDate>
	</item>
	<item>
		<title><![CDATA[Wie kann ich das aktuelle Template einer Webstrukturseite wechseln? Zum Beispiel um eine Mobile Seite eines Auftritts zu realisieren.]]></title>
		<description><![CDATA[<p>
Dazu muss in der redsys.conf das Array "setTemplateAllow" befüllt werden. Es wird angegeben, von welchem Template auf welche Templates gewechselt werden darf. 
</p>
<p>
 
</p>
<p>
Soll zum Beispiel ein wechsel von "default auf "mobile_default" und "mobile_default_2011" möglich sein, soll das Array wie folgt aussehen. 
</p>
<p>
'setTemplateAllow' =&gt;<br />
array (<br />
"default" =&gt; array("mobile_default","mobile_default_2011"),<br />
),<br />
</p>
<p>
Um das Template zu wechseln soll dann der Parameter "?setTemplate=mobile_default" an der URL übergeben werden.
</p>
<p>
 
</p>
<p>
 Zum einbauen einer Weiche empfehle ich eine Funktion in der redsys.conf.local anzulegen, welche aufgerufen wird sobald die Session initiallisiert wurde. Innerhalb dieser Funktion kann dann ein Wert innerhalb der Session definiert werden und in $_GET["setTemplate"] kann das Template zu welchem gewechselt werden soll übergeben werden. Der Name der Function muss im Pluginsetup Communityuser beim Feld "onSessionInitialized" definiert werden.
</p>
<p>
 
</p>
<p>
 
</p>
]]></description>
		<link>http://www.redsys.de/faq/content/3/238/de/wie-kann-ich-das-aktuelle-template-einer-webstrukturseite-wechseln-zum-beispiel-um-eine-mobile-seite-eines-auftritts-zu-realisieren.html</link>
		<pubDate>Thu, 25 Aug 2011 07:19:00 GMT</pubDate>
	</item>
	<item>
		<title><![CDATA[Wie kann ich das TemplateCaching für Teilbereiche verhindern?]]></title>
		<description><![CDATA[Um einzelne Templates NICHT cachen zu lassen und dennoch für
alles anderen den üblichen Cache zu verwenden,
muss man in die entsprechende Definitions Datei folgendes
einfügen ([templatename] ist durch den RedSYS-Template Namen zu ersetzen:<br />
<br />
[templatename]_definitions.php<br />
<font face="courier new,courier"><br />
</font>
<blockquote>
	<blockquote>
		<font face="courier new,courier">
		$GLOBALS['REDSYS_ENV']['cache']['cacheTemplates'] = false;</font><br />
		<font face="courier new,courier">
		$GLOBALS['cachedisabled'] = true;
		</font>
	</blockquote>
</blockquote>
]]></description>
		<link>http://www.redsys.de/faq/content/12/237/de/wie-kann-ich-das-templatecaching-f%C3%BCr-teilbereiche-verhindern.html</link>
		<pubDate>Fri, 18 Feb 2011 15:06:00 GMT</pubDate>
	</item>
	<item>
		<title><![CDATA[Wie kann ich für verschiedene Zonen oder Länder eigene bzw. spezielle Versandarten definieren?]]></title>
		<description><![CDATA[<p>
Unter
Module-&gt;Commerce-&gt;Stammdaten-&gt;Schlüsselverwaltung-&gt;Lieferzonen
kann man unter Zonen-Verwaltung die einzelnen Bezeichnungen der
Zonen/Gebiete festlegen, für die man spezielle Versandkosten
definieren möchte.
</p>
<p>
<img src="images/Image/zonenverwaltung/bild1.jpg" alt=" " width="779" height="569" />
</p>
<p>
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
</p>
<p style="margin-bottom: 0cm">
Unter Gewichts-Verwaltung bestimmt man
die einzelnen Gewichtsklassen des Versands. Hierbei können Sie
Gewicht, Länge, Breite und Höhe angeben.
</p>
<p style="margin-bottom: 0cm">
<img src="images/Image/zonenverwaltung/bild2.jpg" alt=" " width="794" height="569" />
</p>
<p style="margin-bottom: 0cm">
 
</p>
]]></description>
		<link>http://www.redsys.de/faq/content/7/232/de/wie-kann-ich-f%C3%BCr-verschiedene-zonen-oder-l%C3%A4nder-eigene-bzw-spezielle-versandarten-definieren.html</link>
		<pubDate>Fri, 18 Feb 2011 14:59:00 GMT</pubDate>
	</item>
	<item>
		<title><![CDATA[Welche Arten von HTTP-Statuscodes gibt es?]]></title>
		<description><![CDATA[<p>
Jede HTTP-Anfrage wird vom Server mit einem HTTP-Statuscode beantwortet. Dieser Statuscode gibt Informationen darüber, ob die Anfrage erfolgreich bearbeitet wurde oder teilt im Fehlerfall mit, wo (zum Beispiel Umleitung) bzw. wie (zum Beispiel mit Authentifizierung) man die gewünschte
</p>
<p>
Es gibt 5 Arten von Statuscodes.
</p>
<p>
<font size="2"><strong>1XX - Informationen</strong></font>
</p>
<p>
<strong>Die Bearbeitung der Anfrage dauert noch an.</strong>
</p>
<dl><dt>100 Continue</dt><dd>Die laufende Anfrage an den Server wurde noch nicht zurückgewiesen. (Wird im Zusammenhang mit dem „Expect: 100-continue“-Header-Feld verwendet) Der Client kann nun mit der (potentiell sehr großen) Anfrage fortfahren.</dd><dt>101 Switching Protocols</dt><dd>Wird verwendet, wenn der Server eine Anfrage mit gesetztem „Upgrade“-Header-Feld empfangen hat und mit dem Wechsel zu einem anderen Protokoll einverstanden ist.</dd><dt>102 Processing</dt><dd>Wird verwendet, um ein Timeout zu vermeiden, während der Server eine zeitintensive Anfrage bearbeitet<sup class="reference"><a href="http://de.wikipedia.org/wiki/HTTP-Statuscode#cite_note-RFC_2518-1">[2]</a></sup>.</dd></dl>
<h3><span class="mw-headline"><font size="2">2XX - Erfolgreiche Operation</font></span></h3>
<p>
<strong>Die Bearbeitung der Anfrage kann durchgeführt werden.</strong>
</p>
<dl><dt>200 OK</dt><dd>Die Anfrage wurde erfolgreich bearbeitet und das Ergebnis der Anfrage wird in der Antwort übertragen.</dd><dt>201 Created</dt><dd>Die Anfrage wurde erfolgreich bearbeitet. Die angeforderte Ressource wurde vor dem Senden der Antwort erstellt. Das „Location“-Header-Feld enthält eventuell die Adresse der erstellten Ressource.</dd><dt>202 Accepted</dt><dd>Die Anfrage wurde akzeptiert, wird aber zu einem späteren Zeitpunkt ausgeführt. Das Gelingen der Anfrage kann nicht garantiert werden.</dd><dt>203 Non-Authoritative Information</dt><dd>Die Anfrage wurde bearbeitet, das Ergebnis ist aber nicht unbedingt vollständig und aktuell.</dd><dt>204 No Content</dt><dd>Die Anfrage wurde erfolgreich durchgeführt, die Antwort enthält jedoch bewusst keine Daten.</dd><dt>205 Reset Content</dt><dd>Die Anfrage wurde erfolgreich durchgeführt; der Client soll das Dokument neu aufbauen und Formulareingaben zurücksetzen.</dd><dt>206 Partial Content</dt><dd>Der angeforderte Teil wurde erfolgreich übertragen (wird im Zusammenhang mit einem „Content-Range“-Header-Feld oder dem Content-Type multipart/byteranges verwendet). Kann einen Client über Teil-Downloads informieren (wird zum Beispiel von Wget genutzt, um den Downloadfortschritt zu überwachen oder einen Download in mehrere Streams aufzuteilen).</dd><dt>207 Multi-Status</dt><dd>Die Antwort enthält ein XML-Dokument, das mehrere Statuscodes zu unabhängig voneinander durchgeführten Operationen enthält.</dd></dl>
<h3><span class="mw-headline"><span class="mw-headline"><font size="2">3XX - Umleitung</font></span></span></h3>
<p>
<strong>Um eine erfolgreiche Bearbeitung der Anfrage sicherzustellen, sind weitere Schritte seitens des Clients erforderlich.</strong>
</p>
<dl><dt>300 Multiple Choice</dt><dd>Die angeforderte Ressource steht in verschiedenen Arten zur Verfügung. Die Antwort enthält eine Liste der verfügbaren Arten. Das „Location“-Header-Feld enthält eventuell die Adresse der vom Server bevorzugten Repräsentation.</dd><dt>301 Moved Permanently</dt><dd>Die angeforderte Ressource steht ab sofort unter der im „Location“-Header-Feld angegebenen Adresse bereit. Die alte Adresse ist nicht länger gültig.</dd><dt>302 Found</dt><dd>Die angeforderte Ressource steht vorübergehend unter der im „Location“-Header-Feld angegebenen Adresse bereit. Die alte Adresse bleibt gültig. Wird in HTTP/1.1 je nach Anwendungsfall durch die Statuscodes 301 bzw. 307 ersetzt. 302-Weiterleitung ist aufgrund eines Suchmaschinen-Fehlers, dem URL-Hjiacking, in Kritik geraten. Webmaster sollten von der Verwendung eines solchen Redirects absehen, wenn sie auf fremde Inhalte weiterleiten.</dd><dt>303 See Other</dt><dd>Die Antwort auf die durchgeführte Anfrage lässt sich unter der im „Location“-Header-Feld angegebenen Adresse beziehen.</dd><dt>304 Not Modified</dt><dd>Die durchgeführte Anfrage führt zur selben Antwort wie zur vom Client übermittelten Zeit im „If-Modified-Since“-Header-Feld oder sie passt zu dem im „If-None-Match“-Header-Feld gesendeten Entity-Tag. Sie wurde deshalb nicht mitübertragen.</dd><dt>305 Use Proxy</dt><dd>Die angeforderte Ressource ist nur über einen Proxy erreichbar. Das „Location“-Header-Feld enthält die Adresse des Proxy.</dd><dt>306 (reserviert)</dt><dd>306 wird nicht mehr verwendet ist aber reserviert. Es wurde für „Switch Proxy“ verwendet.</dd><dt>307 Temporary Redirect</dt><dd>Die angeforderte Ressource steht vorübergehend unter der im „Location“-Header-Feld angegebenen Adresse bereit. Die alte Adresse bleibt gültig.</dd></dl>
<h3><span class="mw-headline"><span class="mw-headline"><font size="2">4XX - Client Fehler</font></span></span></h3>
<p>
<strong>Nicht klar von den so genannten Server-Fehlern abzugrenzen. Die Ursache des Scheiterns der Anfrage liegt jedoch eher im Verantwortungsbereich des Clients.</strong>
</p>
<dl><dt>400 Bad Request</dt><dd>Die Anfrage-Nachricht war fehlerhaft aufgebaut.</dd><dt>401 Unauthorized</dt><dd>Die Anfrage kann nicht ohne gültige Authentifizierung durchgeführt werden. Wie die Authentifizierung durchgeführt werden soll, wird im „WWW-Authenticate“-Header-Feld der Antwort übermittelt.</dd><dt>402 Payment Required</dt><dd>(reserviert)</dd><dt>403 Forbidden</dt><dd>Die Anfrage wurde mangels Berechtigung des Clients nicht durchgeführt. Diese Entscheidung wurde – anders als im Fall des Statuscodes 401 – unabhängig von Authentifizierungsinformationen getroffen, auch etwa wenn eine als HTTPS konfigurierte URI nur mit HTTP aufgerufen wurde.</dd><dt>404 Not Found</dt><dd>Die angeforderte Ressource wurde nicht gefunden. Dieser Statuscode kann ebenfalls verwendet werden, um eine Anfrage ohne näheren Grund abzuweisen. Links, welche auf solche Fehlerseiten verweisen, werden auch als <a href="http://de.wikipedia.org/wiki/Toter_Link" title="Toter 
Link">Tote Links</a> bezeichnet.</dd><dt>405 Method Not Allowed</dt><dd>Die Anfrage darf nur mit anderen HTTP-Methoden (zum Beispiel GET statt POST) gestellt werden. Gültige Methoden für die betreffende Ressource werden im „Allow“-Header-Feld der Antwort übermittelt.</dd><dt>406 Not Acceptable</dt><dd>Die angeforderte Ressource steht nicht in der gewünschten Form zur Verfügung. Gültige „Content-Type“-Werte können in der Antwort übermittelt werden.</dd><dt>407 Proxy Authentication Required</dt><dd>Analog zum Statuscode 401 ist hier zunächst eine Authentifizierung des Clients gegenüber dem verwendeten Proxy erforderlich. Wie die Authentifizierung durchgeführt werden soll, wird im „Proxy-Authenticate“-Header-Feld der Antwort übermittelt.</dd><dt>408 Request Time-out</dt><dd>Innerhalb der vom Server erlaubten Zeitspanne wurde keine vollständige Anfrage des Clients empfangen.</dd><dt>409 Conflict</dt><dd>Die Anfrage wurde unter falschen Annahmen gestellt. Im Falle einer PUT-Anfrage kann dies zum Beispiel auf eine zwischenzeitliche Veränderung der Ressource durch Dritte zurückgehen.</dd><dt>410 Gone</dt><dd>Die angeforderte Ressource wird nicht länger bereitgestellt und wurde dauerhaft entfernt.</dd><dt>411 Length Required</dt><dd>Die Anfrage kann ohne ein „Content-Length“-Header-Feld nicht bearbeitet werden.</dd><dt>412 Precondition Failed</dt><dd>Eine in der Anfrage übertragene Voraussetzung, zum Beispiel in Form eines „If-Match“-Header-Felds, traf nicht zu.</dd><dt>413 Request Entity Too Large</dt><dd>Die gestellte Anfrage war zu groß, um vom Server bearbeitet werden zu können. Ein „Retry-After“-Header-Feld in der Antwort kann den Client darauf hinweisen, dass die Anfrage eventuell zu einem späteren Zeitpunkt bearbeitet werden könnte.</dd><dt>414 Request-URI Too Long</dt><dd>Die URI der Anfrage war zu lang. Ursache ist oft eine Endlosschleife aus Redirects.</dd><dt>415 Unsupported Media Type</dt><dd>Der Inhalt der Anfrage wurde mit ungültigem oder nicht erlaubtem Medientyp übermittelt.</dd><dt>416 Requested range not satisfiable</dt><dd>Der angeforderte Teil einer Ressource war ungültig oder steht auf dem Server nicht zur Verfügung.</dd><dt>417 Expectation Failed</dt><dd>Verwendet im Zusammenhang mit einem „Expect“-Header-Feld. Das im „Expect“-Header-Feld geforderte Verhalten des Servers kann nicht erfüllt werden.</dd><dt>421 There are too many connections from your internet address</dt><dd>Verwendet, wenn die Verbindungshöchstzahl überschritten wird</dd><dt>422 Unprocessable Entity</dt><dd>Verwendet, wenn weder die Rückgabe von Statuscode 415 noch 400 gerechtfertigt wäre, eine Verarbeitung der Anfrage jedoch zum Beispiel wegen semantischer Fehler abgelehnt wird.</dd><dt>423 Locked</dt><dd>Die angeforderte Ressource ist zurzeit gesperrt.</dd><dt>424 Failed Dependency</dt><dd>Die Anfrage konnte nicht durchgeführt werden, weil sie das Gelingen einer vorherigen Anfrage voraussetzt.</dd><dt>425 Unordered Collection</dt><dd>In den Entwürfen von WebDav Advanced Collections definiert, aber nicht im „Web Distributed Authoring and Versioning (WebDAV) Ordered Collections Protocol“.</dd><dt>426 Upgrade Required</dt><dd>Der Client sollte auf Transport Layer Security (TLS/1.0) umschalten.</dd></dl>
<h3><span class="mw-headline"><span class="mw-headline"><font size="2">5XX - Serverfehler</font></span></span></h3>
<p>
<strong>Nicht klar von den so genannten Client-Fehlern abzugrenzen. Die Ursache des Scheiterns der Anfrage liegt jedoch eher im Verantwortungsbereich des Servers.</strong>
</p>
<dl><dt>500 Internal Server Error</dt><dd>Dies ist ein „Sammel-Statuscode“ für unerwartete Serverfehler.</dd><dt>501 Not Implemented</dt><dd>Die Funktionalität, um die Anfrage zu bearbeiten, wird von diesem Server nicht bereitgestellt. Ursache ist zum Beispiel eine unbekannte oder nicht unterstützte HTTP-Methode.</dd><dt>502 Bad Gateway</dt><dd>Der Server konnte seine Funktion als Gateway oder Proxy nicht erfüllen, weil er seinerseits eine ungültige Antwort erhalten hat.</dd><dt>503 Service Unavailable</dt><dd>Der Server steht, zum Beispiel wegen Überlast oder Wartungsarbeiten, zurzeit nicht zur Verfügung. Ein „Retry-After“-Header-Feld in der Antwort kann den Client auf einen Zeitpunkt hinweisen, zu dem die Anfrage eventuell bearbeitet werden könnte.</dd><dt>504 Gateway Time-out</dt><dd>Der Server konnte seine Funktion als Gateway oder Proxy nicht erfüllen, weil er innerhalb einer festgelegten Zeitspanne keine Antwort von seinerseits benutzten Servern oder Diensten erhalten hat.</dd><dt>505 HTTP Version not supported</dt><dd>Die benutzte HTTP-Version (gemeint ist die Zahl vor dem Komma) wird vom Server nicht unterstützt oder abgelehnt.</dd><dt>506 Variant Also Negotiates</dt><dd></dd><dt>507 Insufficient Storage</dt><dd>Die Anfrage konnte nicht bearbeitet werden, weil der Speicherplatz des Servers dazu zurzeit nicht mehr ausreicht.</dd><dt>509 Bandwidth Limit Exceeded</dt><dd>Die Anfrage wurde verworfen, weil sonst die verfügbare Bandbreite überschritten werden würde (inoffizielle Erweiterung einiger Server).</dd><dt>510 Not Extended</dt><dd>Die Anfrage enthält nicht alle Informationen, die die angefragte Server-Extension zwingend erwartet</dd></dl>
]]></description>
		<link>http://www.redsys.de/faq/content/14/234/de/welche-arten-von-http_statuscodes-gibt-es.html</link>
		<pubDate>Tue, 18 May 2010 09:26:00 GMT</pubDate>
	</item>
</channel>
</rss>
