Category Archives: Programmierung

DOM innerHTML Bug

Vor Kurzem bin ich über ein sehr nerviges Problem gestossen. Die DOM-Methode innerHTML() ist nicht in der Lage korrektes XHTML auszuwählen. D.h. wenn man Folgendes hat:

<p id="hook">Test<br/>Test</p>

und ein

document.getElementById("hook").innerHTML()

macht, bekommt man

Test<br>Test

und nicht wie erwartet

Test<br/>Test

Es ist auch egal welchen Typ das HTML-Dokument hat. Das Verhalten ist bei allen “selbstschließenden” Tags, wie z.B. br, hr, img usw. dasselbe. Man muss hier leider selbst Hand anlegen.

Wordpress Plugins – Felder verstecken

Normalerweise erscheinen alle Meta Daten unter “Benutzerdefinierte Felder”. Möchte man das nicht, weil man eine eigene Meta Box angelegt hat, stellt man dem Paramter ein Unterstrich “_” voraus.

Siehe Wordpress Beispiel Function Reference – Making a hidden custom field

<?php add_post_meta(68, '_color', 'red', true); ?>

Wordpress und der add_meta_box callback

Heute bin ich durch Zufall über einen zweiten Parameter der Callback Funktion von add_meta_box gestolpert, denn ich irgendwie so noch in keinem Manual oder Tutorial gesehen hab. Folgender Callback

add_meta_box( 'box_name', 'My Meta Box', 'addMyMetaBoxCallback');
function addMyMetaBoxCallback ($post, $meta_box) {
     print_r($metaBox);
}

…liefert als zweiten Parameter immer ein assoziatives Array mit den Schlüsseln

id (String), title (String), callback (Array), args (Array)

Array
(
    [id] => box_name
    [title] => My Meta Box
    [callback] => Array
        (
            [0] => SitePress Object
                ([...])
        )
    [args] =>
)

Möchte man jetzt noch ein paar Parameter übergeben braucht man nur ein paar default Parameter ($context = ‘advanced’, $priority = ‘default’) hinzufügen, um als letztes ein Array mit den gewünschten Übergabeparameter setzen zu können.

add_meta_box('box_name', 'My Meta Box', 'addMyMetaBoxCallback', 'page', 'advanced','default', array('foo', 'bar'));

Lustiges beim Typo3 Upgrade 3.8.x auf 4.3.x

Nachdem ich grade die ehrenvolle Aufgabe habe eine Typo3 Version 3.8.1 (ja sowas gibt es wirklich noch im Netz mit PHP 4.4.8(!) ) zu Grabe zu tragen, indem das System auf die Version 4.3.2 angehoben wird, springen mir ab und an allerlei lustige Kuriositäten mitten ins Gesicht!

Send-A-Card

Da ist zB die lustige Extension Send-A-Card (sr_sendcard 2.2.0), die einen gleich mal mit einem herzhaftem “cannot access empty property in [...]/class.tx_srsendcard_pi1.php” begrüßt. Problem ist hier, dass in PHP4 aus unerfindlichen Gründen folgendes mit einer nicht initialisierten Variable funktioniert… in PHP5 (Gott sei Dank) nicht mehr

[..]$this->$subpart[..] #FALSCH
[..]$this->subpart[..] #RICHTIG

Ersetz man das geht auch die Extension wieder…

Indexed Search Engine

Hier waren gleich 2 Sachen schief. Weder die Anzahl der Suchergebnisse war korrekt, noch der Pagebrowser schaffte es die richtigen Links zu generieren. Die korrekten URLs konnten wir mit einem Patch und einem TS Parameter korrigieren, der in das TS Setup jedes Root Templates geschrieben wird

plugin.tx_indexedsearch.browseLinks_setUrl = 1

dann muss noch der Patch bug-1347_03.patch von http://bugs.typo3.org/view.php?id=1347 ins System einspielt werden.

$ patch -p1 -i bug-1347_03.patch // mit --dry-run vorher testen!

Die richtige Anzahl der Suchtreffer zeigte das System als im Root Template Setup folgender Parameter gesetzt wurde

plugin.tx_indexedsearch.search.exactCount = 1

Hallo? Also bei dem Parameternamen hab mich schon gefragt, was das Gschmarre soll… naja nicht ärgern nur wundern…. Typo3 halt…

to be continued

PHP 5.3 und xDebug unter Mac OS X 10.6

Ich habe gerade versucht unter PHP 5.3 mal schnell xDebug zu installieren. Am einfachsten natürlich per PECL. Allerdings kam hier folgende Meldung bei PHP:

Failed loading /Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/
no-debug-non-zts-20090626/xdebug.so:  dlopen(/Applications/XAMPP/xamppfiles/
lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/xdebug.so, 9):
no suitable image found.  Did find:
/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/
no-debug-non-zts-20090626/xdebug.so: mach-o, but wrong architecture

Um xDebug unter OS X 10.6 zu Laufen zu bekommen, muss man folgende Schritte durchführen:

  1. Sourcen herunterladen und enpacken (http://xdebug.org)
  2. In das entpackte Verzeichnis wechseln und folgenden configure-Befehl ausführen:
    ./configure MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS="-arch i386 -g -Os -pipe \\
     -no-cpp-precomp" CCFLAGS="-arch i386 -g -Os -pipe" CXXFLAGS="-arch i386 -g \\
    -Os -pipe" LDFLAGS="-arch i386 -bind_at_load"
  3. Dann noch ein make machen.
  4. Anschließend ddie .so-Datei unter modules an den gewünschten Platz kopieren.
  5. xDebug in der php.ini als zend_extension eintragen.

via Some notes on Zend Server CE for Mac OS X – Rob Allen’s DevNotes.

WPML 1.7.0 und die Tag Cloud

Hatte gestern ein noch nicht nachvollziehbares Problem mit WPML und der Standard Wordpress Tag Cloud. Sobald ich das WPML Plugin benutzt hab. Wurden die Linknamen und der zugehörige HREF scheinbar willkürlich zusammengewürfelt

[...]
<a href="/wordpress/tag/1995/">1988</a>
<a href="/wordpress/tag/langweid/">1989</a>
[...]

Lösen bzw. abstellen konnte ich dieses Verhalten erstmal nur durch das Deaktivieren folgender WPML CMS Option

Make themes work multilingual
Adjust IDs for multilingual functionality
This feature turns themes into multilingual, without having to edit their PHP files.

Was und warum das passiert habe ich mir nicht genauer angeschaut, da ich es vorallem wegen der CMS Navigation nutzen wollte.

Aufgetreten ist das Problem mit folgenden Versionen

  • WordPress 2.9.1.
  • WPML Multilingual CMS Version 1.7.0

Weblinks
WordPressWPML Multilingual CMS « WordPress Plugins

Firefox 3: Überschreiben der contenteditable.css

Beim Einbinden von einem eigenen CSS in den CKEditor ist mir aufgefallen, dass er alle Styles übernimmt, außer die Farbe für den Link. Ich dachte, da macht der CKEditor aus irgendeinem Grund irgendwas.

Per Firebug hab ich dann rausgefunden, dass es eine contenteditable.css zu sein scheint. Die ist vom Firefox (per resource://gre… geladen) und erlaubt User-CSS Einbindung (scheinbar). Den Style kann man allerdings (zum Glück) mit !important überschreiben.

via: SELFHTML Forumsarchiv / 2009 / Februar / FF: Überschreiben der contenteditable.css.

Zend Framework – Zend_Application autoload bzw. registerNamespaces

In aller Kürze… Wenn man in der application.ini (oder wie auch immer genannt) Properties setzt, sollte man auf Folgendes achten:

schlecht:

autoloaderNamespaces.myns = 'MyNs_'

gut:

autoloaderNamespaces.myns = MyNs_

Gilt stark vermutlich für alle ini-Settings.

Eclipse – Entfernen von Workspace-Pfaden aus dem Auswahldialog

Wer in Eclipse verschiedene Workspaces verwendet, benutzt sicherlich auf den Auswahldialog beim Start.

Während Eclipse bis zu diesem Dialog kommt, dauert es manchmal etwas, was dazu führt (bei mir zumindest), dass man während des Splashscreens noch schnell chattet oder andere Faxen macht.

Allerdings krallt sich der Dialog zur Workspace den Fokus, woraus dann auch mal ein neuer Workspace mit dem Namen “argl… honk ^^” oder Ähnlichem entsteht. Diesen zu löschen ist nicht weiter schlimm, aber in der Auswahlliste ist dann immer dieser Zombie-Workspace vorhanden.

Um diese Liste aus obigem oder anderem Grund zu ändern, muss man im Eclipse-Verzeichnis in der Datei “org.eclipse.ui.ide.prefs” Hand anlegen. Zu finden ist diese unter “ECLIPSE_HOME/configuration/.settings/”.

via Software Engineering: How To Remove An Obsolet Workspace From Eclipse 3.1.

PHPUnit mittels PTI in Eclipse einbinden

Gerade gefunden und klingt hervorragend:

PHPUnit mittels PTI in Eclipse einbinden | PHP hates me – Der PHP Blog.