<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>weppz</title>
	<atom:link href="http://weppz.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://weppz.com</link>
	<description>webbasierte Anwendungen</description>
	<lastBuildDate>Mon, 02 Nov 2009 15:28:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ObjectRouteCollection, column und requirements</title>
		<link>http://weppz.com/tipps/objectroutecollection-column-und-requirements/</link>
		<comments>http://weppz.com/tipps/objectroutecollection-column-und-requirements/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 14:51:25 +0000</pubDate>
		<dc:creator>Marco Todtenhaupt</dc:creator>
				<category><![CDATA[Tipps]]></category>

		<guid isPermaLink="false">http://weppz.com/?p=263</guid>
		<description><![CDATA[Eine nicht-numerische Spalte für eine ObjectRouteCollection zu verwenden führt im ersten Anlauf zu Fehlern, dieser Artikel erklärt warum und wie diese zu beheben sind.]]></description>
			<content:encoded><![CDATA[<p>Bei dem Versuch die durch die <a href="http://www.symfony-project.org/book/1_2/14-Generators">symfony-Generatoren</a> automatisch erstellten Routen anzupassen, stießen wir heute auf ein nicht ganz so offensichtliches Problem.</p>
<p>Sofern man Doctrine verwendet sehen die Einträge in der routing.yml so aus:<br />
<code>user:<br />
  class: sfDoctrineRouteCollection<br />
  options:<br />
    model:                User<br />
    module:               user<br />
    prefix_path:          user<br />
    column:               id<br />
    with_wildcard_routes: true</code></p>
<p>In der Regel wird die komplette Collection ja auch nur im Backend eingesetzt und dort sind diese Routen meist angemessen. Problematisch wird es nur, möchte man den entsprechenden Usern nicht unbedingt die Datenbank-ID in der URL präsentieren.</p>
<p>Eigentlich kein Problem, sollte man denken. Einfach den Wert von column in bspw. username geändert und die IDs sind hier verschwunden. Die Links in der List-View werden auch korrekt umgewandelt. Klickt man nun aber z.B. auf einen Link in folgender Form: &#8220;www.example.com/backend/user/admin/edit&#8221; wird er mit hoher Wahrscheinlichkeit zu folgender Fehlermeldung führen:<br />
<code>404 | Not Found | sfError404Exception<br />
Action "user/admin" does not exist.</code></p>
<p>Symfony erkennt also scheinbar &#8220;admin&#8221; als Action und nicht &#8220;edit&#8221;. Grund hierfür sind die <a href="http://www.symfony-project.org/book/1_2/09-Links-and-the-Routing-System#chapter_09_sub_pattern_constraints">Requirements</a>. Das Standardverhalten der <a href="http://www.symfony-project.org/api/1_2/sfObjectRouteCollection">sfObjectRouteCollection</a> ist es &#8216;\d+&#8217; als requirement für die column (<a href="http://trac.symfony-project.org/browser/branches/1.2/lib/routing/sfObjectRouteCollection.class.php">siehe Zeile 50</a>) vorzugeben. Dieser <a href="http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck">reguläre Ausdruck</a> matcht aber nur auf Ziffern.</p>
<p>Auch wenn man nun in folgender Weise versucht diese Requirements zu ändern, kommt man nicht zum gewünschten Ergebnis:<br />
<code>    ...<br />
    with_wildcard_routes: true<br />
    requirements:         { username: '\w+' }</code></p>
<p>Symfony nimmt die requirements der Route selbst als Vorgabe und überschreibt die übergebenen options der Collection. Die korrekte Fehlerbehebung sieht daher so aus:<br />
<code>user:<br />
  class: sfDoctrineRouteCollection<br />
  options:<br />
    model:                User<br />
    module:               user<br />
    prefix_path:          user<br />
    column:               username<br />
    with_wildcard_routes: true<br />
  requirements:         { username: '\w+' }</code></p>
<p>Hierbei ist die Einrückung, wie generell in YAML-Dateien, entscheidend.</p>
]]></content:encoded>
			<wfw:commentRss>http://weppz.com/tipps/objectroutecollection-column-und-requirements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>”Stem Cell &#8211; Tumor &#8211; Proteomes” Conference</title>
		<link>http://weppz.com/referenzen/stem-cell-tumor-proteomes-conference/</link>
		<comments>http://weppz.com/referenzen/stem-cell-tumor-proteomes-conference/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 08:22:22 +0000</pubDate>
		<dc:creator>Marco Todtenhaupt</dc:creator>
				<category><![CDATA[Internetauftritte (CMS)]]></category>
		<category><![CDATA[Referenzen]]></category>
		<category><![CDATA[XHTML & CSS]]></category>
		<category><![CDATA[barrierefrei]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Formular]]></category>
		<category><![CDATA[iCalendar]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://weppz.com/?p=239</guid>
		<description><![CDATA[<a href="http://weppz.com/referenzen/stem-cell-tumor-proteomes-conference/" title="Artikel anzeigen"><img src="http://weppz.com/uploads/sctp20101.jpg" alt="Stem Cell - Tumor - Proteomes Conference" title="sctp2010" width="200" height="67" class="alignright size-full wp-image-249" /></a>Für die 2010 stattfindende SCTP-Konferenz beauftragte uns das <a href="http://www.uke.de/institute/klinische-chemie/">Institut für Klinische Chemie</a> des <a href="http://www.uke.de">Universitätsklinikums Hamburg-Eppendorf</a> im Namen der <a href="http://www.dgkl.de/">DGKL</a> einen Internetauftritt zu entwerfen. Hauptaugenmerk lag dabei auf dem automatisierten Anmeldeprozess.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sctp2010.com" title="Stem Cell - Tumor - Proteomes Conference ansehen"><img src="http://weppz.com/uploads/sctp20101.jpg" alt="Stem Cell - Tumor - Proteomes Conference" title="sctp2010" width="200" height="67" class="alignright size-full wp-image-249" /></a>Für die 2010 stattfindende <a href="http://www.sctp2010.com" title="Stem Cell - Tumor - Proteomes Conference ansehen">SCTP-Konferenz</a> beauftragte uns das <a href="http://www.uke.de/institute/klinische-chemie/">Institut für Klinische Chemie</a> des <a href="http://www.uke.de">Universitätsklinikums Hamburg-Eppendorf</a> im Namen der <a href="http://www.dgkl.de/">DGKL</a> einen Internetauftritt zu entwerfen. Hauptaugenmerk lag dabei auf dem automatisierten Anmeldeprozess.</p>
<p>Potentielle Interessenten können sich <a href="http://www.sctp2010.com/registration">direkt über die Website anmelden</a> und erhalten sofort Rückmeldung, ob sie einen festen Platz erhalten haben, oder auf der Warteliste platziert wurden.<br />
Wird später in Folge einer Stornierung ein Platz wieder frei, so rückt automatisch eine Anmeldung aus der Warteliste nach und der Teilnehmer wird per E-Mail informiert.<br />
Dieser Prozess entlastet die Verantwortlichen, die ansonsten jeden Teilnehmer manuell auf seinen Status hinweisen müssten.</p>
<p>Die im PDF-Format gelieferte Agenda der Tagung wurde direkt auf der Seite eingebunden und per <a href="http://microformats.org/wiki/hcalendar">microformats</a> ausgezeichnet. Zusätzlich wurde eine <a href="http://de.wikipedia.org/wiki/ICalendar">iCalendar</a> Datei erzeugt und bereitgestellt. Durch dieses Angebot in verschiedenen Formaten ist es jedem Teilnehmer möglich die angesetzten Vorträge in den eigenen Kalender zu importieren. </p>
]]></content:encoded>
			<wfw:commentRss>http://weppz.com/referenzen/stem-cell-tumor-proteomes-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PNG favicon trotz IE</title>
		<link>http://weppz.com/tipps/png-favicon-trotz-ie/</link>
		<comments>http://weppz.com/tipps/png-favicon-trotz-ie/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 17:49:30 +0000</pubDate>
		<dc:creator>Marco Todtenhaupt</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[favicon]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[PNG]]></category>

		<guid isPermaLink="false">http://weppz.com/?p=234</guid>
		<description><![CDATA[Das der Internetexplorer bis einschließlich Version 7 nicht in der Lage ist PNGs als favicon darzustellen kann sich bei manchen Darstellungen als hinderlich herausstellen. Denn Halbtransparenzen im Icon, wie beispielsweise bei dieser Seite, sind optisch ein wenig schöner als pixelige Verläufe oder einfarbige Füllungen im Hintergrund.
Um trotz dieser Einschränkung zumindest in anderen Browsern das PNG [...]]]></description>
			<content:encoded><![CDATA[<p>Das der Internetexplorer bis einschließlich Version 7 nicht in der Lage ist PNGs als favicon darzustellen kann sich bei manchen Darstellungen als hinderlich herausstellen. Denn Halbtransparenzen im Icon, wie beispielsweise bei dieser Seite, sind optisch ein wenig schöner als pixelige Verläufe oder einfarbige Füllungen im Hintergrund.</p>
<p>Um trotz dieser Einschränkung zumindest in anderen Browsern das PNG zu verwenden ohne auf ein favicon im Internetexplorer zu verzichten, lässt sich mit Hilfe der <a href="http://de.wikipedia.org/wiki/Conditional_Comments">Conditional Comments</a> eine Umgehung verwirklichen:</p>
<p><code>&lt;!--[if !IE]&gt;&lt;!--&gt;&lt;link rel="shortcut icon" href="/favicon.png" /&gt;&lt;!--&lt;![endif]--&gt;<br />
&lt;!--[if IE]&gt;&lt;link rel="shortcut icon" href="/favicon.ico" /&gt;&lt;![endif]--&gt;</code></p>
<p>Die zweite Zeile wird nur durch Internetexplorer interpretiert, die erste von allen anderen Browsern. So erreicht man ohne große Umstände eine alternative Darstellungsweise.</p>
]]></content:encoded>
			<wfw:commentRss>http://weppz.com/tipps/png-favicon-trotz-ie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Relevance Magazin</title>
		<link>http://weppz.com/referenzen/internetauftritte-cms/relevance-magazin/</link>
		<comments>http://weppz.com/referenzen/internetauftritte-cms/relevance-magazin/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 16:53:39 +0000</pubDate>
		<dc:creator>Marco Todtenhaupt</dc:creator>
				<category><![CDATA[Internetauftritte (CMS)]]></category>
		<category><![CDATA[SEO (Onsite)]]></category>
		<category><![CDATA[XHTML & CSS]]></category>
		<category><![CDATA[barrierefrei]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Flowplayer]]></category>
		<category><![CDATA[Formular]]></category>
		<category><![CDATA[Page-Flip]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://weppz.com/?p=224</guid>
		<description><![CDATA[<a href="http://weppz.com/referenzen/internetauftritte-cms/relevance-magazin/" title="Artikel anzeigen"><img src="http://weppz.com/uploads/relevance.gif" alt="Relevance-Mag" title="relevance" width="92" height="110" class="alignright size-full wp-image-225" /></a>Pünktlich zur Auslieferung des ersten <a href="http://www.relevance-mag.com/">Relevance-Mag</a>s bat uns der <a href="http://drdccmedia.com/">Content-Dienstleister DRDCC MEDIA</a> um die Erstellung einer passenden Internetpräsenz, um die Vorzüge der Medien Print &#038; Web gemeinsam zu nutzen.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.relevance-mag.com" title="Zum Auftritt des Relevance-Magazins"><img src="http://weppz.com/uploads/relevance.gif" alt="Relevance-Mag" title="relevance" width="92" height="110" class="alignright size-full wp-image-225" /></a>Pünktlich zur Auslieferung des ersten <a href="http://www.relevance-mag.com/">Relevance-Mag</a>s bat uns der <a href="http://drdccmedia.com/">Content-Dienstleister DRDCC MEDIA</a> um die Erstellung einer passenden Internetpräsenz, um die Vorzüge der Medien Print &#038; Web gemeinsam zu nutzen. So soll beispielsweise versucht werden das Thema des ersten Heftes &#8211; <strong>Mut</strong> &#8211; mit Hilfe der Leser und einer <a href="http://www.relevance-mag.com/umfrage">Online-Umfrage</a> stärker nachzuzeichnen, indem man auf die Definitionen vieler Individuen zurückgreift. Hierzu bietet sich in diesem Falle das Internet als anonymes und unkompliziertes Medium an.</p>
<p>Entstanden ist aus einer inhaltlichen und gestalterischen Vorlage, die selbstverständlich dem Heft nachempfunden ist, ein Auftritt, der das Magazin in multimedialer Hinsicht ergänzt. Zur <a href="http://www.relevance-mag.com/quick-look">Veranschaulichung des Magazins</a> wurde auf die intuitive <a href="http://www.flashpageflip.com/">Page-Flip Technologie</a> zurückgegriffen, ein Bestellformular integriert und die ganze Seite durch ein <a href="http://www.relevance-mag.com/relevance-tv">Video-Editorial</a> abgerundet. Hierbei wurde explizit auf barrierearme Ersatzinhalte wert gelegt, die gleichzeitig mit weiteren gängigen Maßnahmen in diesem Bereich den Grundstein für eine erfolgreiche Suchmaschinenindizierung bilden.</p>
]]></content:encoded>
			<wfw:commentRss>http://weppz.com/referenzen/internetauftritte-cms/relevance-magazin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Doctrine_Search_Analyzer für die deutsche Sprache</title>
		<link>http://weppz.com/tipps/doctrine_search_analyzer-fur-die-deutsche-sprache/</link>
		<comments>http://weppz.com/tipps/doctrine_search_analyzer-fur-die-deutsche-sprache/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 11:14:37 +0000</pubDate>
		<dc:creator>Marco Todtenhaupt</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[Behavior]]></category>
		<category><![CDATA[Doctrine]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://weppz.com/?p=209</guid>
		<description><![CDATA[Der Doctrine_Search_Analyzer_Standard ist eine feine Sache, solange die analysierten Texte auf englisch verfasst sind. Um auch deutsche Texte sinnvoll zu indizieren, bieten wir den Doctrine_Search_Analyzer_German zum Download an.]]></description>
			<content:encoded><![CDATA[<p>Das &#8220;<a href="http://www.doctrine-project.org/documentation/manual/1_1/en/behaviors#core-behaviors:searchable">Searchable</a>&#8220;-Verhalten, das <a href="http://www.doctrine-project.org">Doctrine</a> neben <a href="http://weppz.com/tipps/doctrine-sluggable-bzw-inflector-und-umlaute/">anderen</a> mitliefert, ist eine hervorragende Möglichkeit ganze Tabellen für eine effiziente Suche zu indizieren. Dazu werden alle Wörter eines Textes mit ihren Positionen in einer seperaten, völlig automatisch verwalteten Tabelle gespiechert.</p>
<p>Um Wörter, die keinen bedeutenden Inhalt tragen, zu entfernen, dazu zählen <a href="http://de.wikipedia.org/wiki/Stoppwort">stopwords bzw. Stoppwörter</a> wie bspw. &#8220;ein&#8221;, &#8220;das&#8221; und &#8220;für&#8221;, verwendet Doctrine einen sogenannten &#8220;<a href="http://www.doctrine-project.org/documentation/manual/1_1/en/searching#text-analyzers">Text Analyzer</a>&#8220;. Jedoch entfernt der Doctrine_Search_Analyzer_Standard nur englische stopwords und wandelt Umlaute und weitere Buchstaben wie bereits in <a href="http://weppz.com/tipps/doctrine-sluggable-bzw-inflector-und-umlaute/">einem früheren Artikel</a> beschrieben falsch um, obwohl diese für die Suche in deutscher Sprache einen Unterschied ausmachen ( Äpfel != Apfel ).</p>
<p>Wir haben einen &#8220;Doctrine_Search_Analyzer_German&#8221; geschrieben, der die oben genannten Mankos behebt. In diesem Zuge bedanken wir uns für eine Liste von <a href="http://solariz.de/">solariz.de</a>, die <a href="http://solariz.de/tool-box/deutsche-stopwords.htm">deutsche stopwords</a> enthält.</p>
<p>Zusätzlich zu diesem Analyzer haben wir noch die Möglichkeit integriert, mittels <a href="http://de2.php.net/manual/en/function.strip-tags.php">strip_tags</a> HTML-Tags zu entfernen, da diese für die Suche ebenfalls nicht relevant wären. Dafür muss statt des Doctrine_Search_Analyzer_German der Doctrine_Search_Analyzer_StriptagsGerman verwendet werden.</p>
<p>Das ganze ist wieder als symfony-Plugin verpackt, kann jedoch auch problemlos in anderen Anwendungen verwendet werden:<br />
<a href='http://weppz.com/uploads/wpDoctrineSearchAnalyzersPlugin.zip' class="download">wpDoctrineSearchAnalyzersPlugin</a></p>
<p>Eingebunden in symfony wird das ganze, sofern es unter Plugins installiert und der Cache geleert wurde, wie folgt:<br />
<code>Artikel:<br />
  actAs:<br />
    Searchable:<br />
      fields:       [beitrag]<br />
      analyzer:     Doctrine_Search_Analyzer_German<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://weppz.com/tipps/doctrine_search_analyzer-fur-die-deutsche-sprache/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>preg_replace, UTF-8 und Umlaute</title>
		<link>http://weppz.com/tipps/preg_replace-utf-8-und-umlaute/</link>
		<comments>http://weppz.com/tipps/preg_replace-utf-8-und-umlaute/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 19:43:15 +0000</pubDate>
		<dc:creator>Marco Todtenhaupt</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Umlaute]]></category>
		<category><![CDATA[UTF-8]]></category>

		<guid isPermaLink="false">http://weppz.com/?p=202</guid>
		<description><![CDATA[UTF-8 codierte Umlaute in PHP, es gibt kaum ein leidigeres Thema. Dieser Beitrag erklärt knapp den in diesem Zusammenhang korrekten Umgang mit preg_replace, so dass Umlaute als Buchstaben gelten.]]></description>
			<content:encoded><![CDATA[<p>Wer schon einmal versucht hat, Sonderzeichen in UTF-8 codierte Texten mit PHP zu ersetzen kann unter Umständen auf das Problem gestoßen sein, das mich heute eine glatte dreiviertel Stunde beschäftigt hat.</p>
<p>Vorab ein Beispiel:<br />
Angenommen es sollen alle Sonderzeichen aus dem Satz &#8220;Grüß mich, sonst gibt&#8217;s Ärger!&#8221; entfernt und durch Leerzeichen ersetzt werden. Hat man ein wenig Erfahrung mit regulären Ausdrücken, so ist diese Aufgabe mittels preg_replace einfach zu bewerkstelligen. <code>preg_replace('/\W/', ' ', "Grüß mich, sonst gibt's Ärger!" )</code><br />
Bei ANSI codierten Texten mag dies noch funktionieren, bei UTF-8 führt dieser Ausdruck allerdings zu falschen Zeichendarstellungen.</p>
<p>Dieser Umstand lässt sich durch den <a href="http://de2.php.net/manual/en/reference.pcre.pattern.modifiers.php">&#8216;u&#8217;-modifier</a> beseitigen:<br />
<code>preg_replace('/\W/u', ' ', "Grüß mich, sonst gibt's Ärger!" );</code></p>
<p>Wer jetzt, so wie ich, einen Windows-PC als Entwicklerrechner hat, wird sich schon über das Ergebnis freuen. Zu früh gefreut! Einmal auf den eigenen Webspace hochgeladen offenbart sich, dass trotz korrekter Zeichenzuordnung das dort installierte Betriebssystem, der Webserver oder PHP offenbar nichts davon hält Umlaute auf die Zeichenklasse <a href="http://de2.php.net/manual/en/regexp.reference.backslash.php">&#8220;\W&#8221;</a> zu &#8220;matchen&#8221; und diese somit rausschmeißt. <code>echo preg_replace('/\W/u', ' ', "Grüß mich, sonst gibt's Ärger!" );</code> ergibt in der Ausgabe: <code>Gr mich sonst gibt s rger</code></p>
<p>Dies kann unter anderem auch mit <a href="http://de2.php.net/manual/en/regexp.reference.backslash.php">der gesetzten &#8220;locale&#8221; Einstellung</a> zusammenhängen.</p>
<p>Abhilfe schafft nun die extra eingeführte Escape-Sequenz <a href="http://de2.php.net/manual/en/regexp.reference.unicode.php">&#8220;\pL&#8221;</a> die für einen Buchstaben in beliebiger Sprache steht. Dies führt zum korrekten Ergebnis: <code>echo preg_replace('/\[^\pL]/u', ' ', "Grüß mich, sonst gibt's Ärger!" );</code> ergibt in der Ausgabe: <code>Grüß mich sonst gibt s Ärger </code></p>
<p>Und da es thematisch passt und es sich nicht lohnt einen eigenen Beitrag zu verfassen: Wer die korrekte Umwandlung eines UTF-8-Strings mit Umlauten in Kleinbuchstaben möchte, sollte statt <code>strtolower($string);</code> lieber <code><a href="http://de2.php.net/manual/en/function.mb-strtolower.php">mb_strtolower</a>($string,"UTF-8");</code> verwenden. Ansonsten werden die Umlaute durch Fragezeichen ersetzt.</p>
]]></content:encoded>
			<wfw:commentRss>http://weppz.com/tipps/preg_replace-utf-8-und-umlaute/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Doctrine Sluggable bzw. Inflector und Umlaute</title>
		<link>http://weppz.com/tipps/doctrine-sluggable-bzw-inflector-und-umlaute/</link>
		<comments>http://weppz.com/tipps/doctrine-sluggable-bzw-inflector-und-umlaute/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 10:18:13 +0000</pubDate>
		<dc:creator>Marco Todtenhaupt</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[Behavior]]></category>
		<category><![CDATA[Doctrine]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[Umlaute]]></category>

		<guid isPermaLink="false">http://weppz.com/?p=192</guid>
		<description><![CDATA[Doctrine_Inflector ersetzt die deutschen Umlaute falsch, daher stellen wir in diesem Artikel eine Klasse vor, die diese Mängel korrigiert. Somit wird 'oe' aus 'ö' anstatt 'o'.]]></description>
			<content:encoded><![CDATA[<p>Zu den großartigen <a href="http://www.doctrine-project.org/documentation/manual/1_1/en/behaviors">Behaviors</a> die von Doctrine mitgeliefert werden zählt unter anderen das <a href="http://www.doctrine-project.org/documentation/manual/1_1/en/behaviors:core-behaviors:sluggable">Sluggable</a>-Verhalten. Es sorgt dafür, dass beispielsweise die Titel der Artikel eines Blogs in eine Form gebracht werden, die man in URLs verwenden kann. Der <a href="http://codex.wordpress.org/Glossary#Slug">Slug</a> für diesen Artikel lautet beispielsweise &#8220;doctrine-sluggable-bzw-inflector-und-umlaute&#8221;.</p>
<p>Diese Funktionalität wird in Doctrine ( und wenn man Doctrine in symfony verwendet auch dort ) von der Klasse Doctrine_Template_Sluggable bzw., da diese sie delegiert, von Doctrine_Inflector übernommen. Der einzige Nachteil der Implementation ist, dass die Methode &#8220;unaccent&#8221; deutsche Umlaute durch einzelne Buchstaben ersetzt. Das bedeutet aus &#8216;ö&#8217; wird &#8216;o&#8217; und aus &#8216;Ä&#8217; wird &#8216;A&#8217;. Korrekt wäre jedoch eine Ersetzung in folgender Form:</p>
<pre>
  Ä => Ae      ä => ae
  Ö => Oe      ö => oe
  Ü => Ue      ü => ue
  ß => ss
</pre>
<p>Dadurch können die Besucher, aber auch die Suchmaschinen, die URL besser verstehen.</p>
<p>Um diesen Mangel zu korrigieren, haben wir für symfony ein Plugin geschrieben und hier zum Download bereitgestellt:<br />
<a href='http://weppz.com/uploads/wpDoctrineUmlautinflectorPlugin.zip' class="download">wpDoctrineUmlautinflectorPlugin</a></p>
<p>Zur Installation wird einfach der Plug-In-Ordner in das Verzeichnis &#8220;plugins&#8221; des entsprechenden Projekts kopiert und der Cache geleert. Anschließend muss in der schema.yml lediglich der sog. &#8220;builder&#8221;, d.h. die Klasse die den Slug erstellt, festgelegt werden. Hier ein Beispiel: <code>Artikel:<br />
  actAs:<br />
    Sluggable:<br />
      fields:       [titel]<br />
      builder:      [Doctrine_Umlautinflector, urlize]</code></p>
<p>Wer Doctrine ohne symfony verwendet kann jedoch die darin enthaltene Klasse Umlautinflector einfach adaptieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://weppz.com/tipps/doctrine-sluggable-bzw-inflector-und-umlaute/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>symfony backend ohne PHP-Endung</title>
		<link>http://weppz.com/tipps/symfony-backend-ohne-php-endung/</link>
		<comments>http://weppz.com/tipps/symfony-backend-ohne-php-endung/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 13:45:24 +0000</pubDate>
		<dc:creator>Marco Todtenhaupt</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://weppz.com/?p=170</guid>
		<description><![CDATA[Erstellt man ein reguläres symfony Projekt, so ist lediglich die Hauptseite unter der Haupt-URL erreichbar. Alle weiteren apps, wie beispielsweise das Backend, sind nur über 'backend.php/module/action' erreichbar. Dies kann zu Verwirrungen führen. Dieser Artikel beschreibt wie aus 'backend.php/' in der URL 'backend/' wird.]]></description>
			<content:encoded><![CDATA[<p>Erstellt man ein reguläres symfony Projekt, so ist die Hauptseite, also die erste erstellte app unter der Haupt-URL erreichbar. Alle weiteren apps, wie beispielsweise das Backend, sind aus dem Grund das es nur eine index.php je Verzeichnis geben kann nur über folgendes URL-Schema erreichbar:<br />
<code>http://url.de/app.php/module/action<br />
bzw.<br />
http://url.de/backend.php/module/action</code></p>
<p>Dies mag beim Backend noch vertretbar sein, kann jedoch bei öffentlichen apps zu Verwirrungen führen. Außerdem mag der ein oder andere aus SEO-technischen Gründen etwas gegen diese URLs haben.</p>
<p>Möchte man nun &#8216;backend/&#8217; statt &#8216;backend.php/&#8217; anzeigen lassen, lässt sich eine Möglichkeit, die bisher für uns bestens funktioniert hat, durch folgende Schritte realisieren:</p>
<ol>
<li>Ordner &#8216;backend/&#8217; direkt im Ordner &#8216;web/&#8217; erstellen.</li>
<li>Datei &#8216;backend.php&#8217; aus &#8216;web/&#8217; in &#8216;backend/&#8217; <em>verschieben</em>.</li>
<li>Datei &#8216;.htaccess&#8217; aus &#8216;web/&#8217; in &#8216;backend/&#8217; <em>kopieren</em>.</li>
<li>In der &#8216;.htaccess&#8217; folgende Veränderungen durchführen:<br />
<code>RewriteRule ^(.*)$ index.php [QSA,L]</code> ändern in <code>RewriteRule ^(.*)$ backend.php [QSA,L]</code> und direkt darüber folgende Zeilen einfügen: <code>RewriteRule ^(.*)$ ../$1 [QSA]<br />
RewriteCond %{REQUEST_FILENAME} !-f</code> Diese sorgen dafür, dass weiterhin alle Bilder und CSS-Dateien korrekt geroutet werden.
</li>
<li>In der Datei &#8216;backend.php&#8217; folgende Veränderungen durchführen:<br />
<code>require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');</code> ändern in <code>require_once(dirname(__FILE__).'/../../config/ProjectConfiguration.class.php');</code> damit die Projektkonfiguration noch gefunden wird.
</li>
<li>In der &#8216;apps/backend/config/settings.yml&#8217; bei prod no_script_name auf on setzen.<br />
<code>prod:<br />
  .settings:<br />
    no_script_name:         on</code></li>
</ol>
<p>Das war es soweit schon. Wir haben es uns angewöhnt in der gleichen Weise auch die &#8216;_dev.php&#8217; Dateien zu behandeln. So ergibt sich folgende Dateistruktur:</p>
<pre>
web/
  backend/
    .htaccess
    backend.php
  dev/
    backend/
      .htaccess
      backend_dev.php
    .htaccess
    frontend_dev.php
  .htaccess
  index.php
</pre>
<p>Natürlich sind hier ebenfalls die &#8216;.htaccess&#8217; und der Pfad zur Konfiguration sowie der &#8216;no_script_name&#8217; der jeweiligen &#8216;environments&#8217; anzupassen.</p>
]]></content:encoded>
			<wfw:commentRss>http://weppz.com/tipps/symfony-backend-ohne-php-endung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lieferinformationssystem</title>
		<link>http://weppz.com/referenzen/lieferinformationssystem/</link>
		<comments>http://weppz.com/referenzen/lieferinformationssystem/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 14:45:47 +0000</pubDate>
		<dc:creator>Marco Todtenhaupt</dc:creator>
				<category><![CDATA[Intranetanwendungen]]></category>
		<category><![CDATA[PHP-Frameworks]]></category>
		<category><![CDATA[Referenzen]]></category>
		<category><![CDATA[Intranet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://weppz.com/?p=141</guid>
		<description><![CDATA[<a href="http://weppz.com/referenzen/lieferinformationssystem/" title="Artikel anzeigen"><img class="alignright size-full wp-image-140" title="uld" src="http://weppz.com/uploads/uld.jpg" alt="uld" width="150" height="131" /></a> Die United Logistics &#038; Distribution GmbH beauftragte weppz mit der Umsetzung eines Systems, was die telefonische Rückmeldung von Lieferterminen ablösen und weitgehend automatisieren sollte.]]></description>
			<content:encoded><![CDATA[<p><a title="Zum Auftritt der ULD" href="http://www.uld-hamburg.de/"><img class="alignright size-full wp-image-140" title="uld" src="http://weppz.com/uploads/uld.jpg" alt="uld" width="150" height="131" /></a>Die <a title="Zum Auftritt der ULD" href="http://www.uld-hamburg.de/">United Logistics &amp; Distribution GmbH</a> beauftragte weppz mit der Umsetzung eines Systems, was die telefonische Rückmeldung von Lieferterminen ablösen und weitgehend automatisieren sollte.</p>
<p>Bisher wurden Lieferunternehmen und Kunden von mehreren Mitarbeitern per Telefon kontaktiert, um die die Anliefertermine an verschiedenen Lägern europaweit zu erfragen bzw. weiterzugeben. Dass dieser Prozess eine hohe Kapazitätenbindung erforderte ist selbsterklärend.</p>
<p>Mit Hilfe von PHP und dem Zend Framework wurde ein webbasiertes Lieferinformationssystem geschaffen, dass allen Beteiligten einen seperaten Zugang gewährt. Somit haben die Lieferunternehmen zentrale Anlaufstelle um Ihre Termine einzutragen. Die Kunden der ULD GmbH können sich Ihre Lieferberichte wahlweise täglich oder wöchentlich per E-Mail zuschicken lassen.</p>
<p>Das Ergebnis ist eine erhebliche Zeiteinsparung auf Seiten der United Logistics &amp; Distribution GmbH ohne zusätzliche Belastung Ihrer Partner.</p>
<ul class="attachments">
<li><div id="attachment_150" class="wp-caption alignnone" style="width: 160px"><a href="http://weppz.com/uploads/uld-admin.png"><img class="size-thumbnail wp-image-150" title="uld-admin" src="http://weppz.com/uploads/uld-admin-150x150.png" alt="Ausschnitt aus dem Adminbereich" width="150" height="150" /></a><p class="wp-caption-text">Ausschnitt aus dem Adminbereich</p></div></li>
<li><div id="attachment_152" class="wp-caption alignnone" style="width: 160px"><a href="http://weppz.com/uploads/uld-kunde.png"><img class="size-thumbnail wp-image-152" title="uld-kunde" src="http://weppz.com/uploads/uld-kunde-150x150.png" alt="Exemplarischer Lieferbericht" width="150" height="150" /></a><p class="wp-caption-text">Exemplarischer Lieferbericht</p></div></li>
<li><div id="attachment_153" class="wp-caption alignnone" style="width: 160px"><a href="http://weppz.com/uploads/uld-lieferant.png"><img class="size-thumbnail wp-image-153" title="uld-lieferant" src="http://weppz.com/uploads/uld-lieferant-150x150.png" alt="Eintragung der Liefertermine" width="150" height="150" /></a><p class="wp-caption-text">Eintragung der Liefertermine</p></div></li>
</ul>
<p><small>Aus vertragsrechtlichen Gründen können wir leider keinen direkten Einblick in das Projekt gewähren.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://weppz.com/referenzen/lieferinformationssystem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OTTO (GmbH &amp; Co KG)</title>
		<link>http://weppz.com/referenzen/otto-gmbh-co-kg/</link>
		<comments>http://weppz.com/referenzen/otto-gmbh-co-kg/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 13:20:01 +0000</pubDate>
		<dc:creator>Marco Todtenhaupt</dc:creator>
				<category><![CDATA[Intranetanwendungen]]></category>
		<category><![CDATA[PHP-Frameworks]]></category>
		<category><![CDATA[Referenzen]]></category>
		<category><![CDATA[Intranet]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://weppz.com/?p=37</guid>
		<description><![CDATA[<a href="http://weppz.com/referenzen/otto-gmbh-co-kg/" title="Artikel anzeigen"><img class="alignright size-full wp-image-52" src="http://weppz.com/uploads/otto.jpg" alt="" width="150" height="55" /></a> Im Rahmen des Projekts "Umstrukturierung der Kostensystemlandschaft" unterstützte weppz den Bereich "Neue Medien" bei der Konzeption und Umsetzung.]]></description>
			<content:encoded><![CDATA[<p><a title="Zum Auftritt von OTTO" href="http://otto.com/"><img class="alignright size-full wp-image-52" src="http://weppz.com/uploads/otto.jpg" alt="" width="150" height="55" /></a> Im Rahmen des Projekts &#8220;Umstrukturierung der Kostensystemlandschaft&#8221; unterstützte weppz den Bereich &#8220;Neue Medien&#8221; bei der Konzeption und Umsetzung.</p>
<p>Ein modularer Systementwurf basierend auf Internet-Technologie in Verbindung mit aktuellen Frameworks erhöht die Flexibilität und Verteilung der daraus entstehenden Anwendung.</p>
<p>Um einen einfachen Einsteig für spätere Entwickler zu erleichtern wurde PHP in Verbindung mit symfony gewählt.</p>
<p>Das Resultat ist eine Sammlung vielseitiger und ineinander greifender Controllingwerkzeuge die dezentral organisierte und in unterschiedlichen Erscheinungsformen vorkommende Tools ablöst.</p>
<p><small>Aus vertragsrechtlichen Gründen können wir leider keinen Einblick in das Projekt gewähren.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://weppz.com/referenzen/otto-gmbh-co-kg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

