Mit dem Download ist woh in diesem Forum etwas foul. Also paste ich das ganze mal direkt hier rein:
______________________________________________________________
Anpassungen in:
typo3conf/ext/kb_nescefe/class.tx_kbnescefe_layout.php
------------------------------------------------------
Die Buttons für Kopieren und Ausschneiden fehlen.
Als ich noch PHP 5.2 im Einsatz hatte, fehlten auch die Up- und Down-Buttons.
Bug 1:
------
In der Methode insertIntoArray() steht:
list($afterKey) = array_intersect($position, $currentKeys);
Das array_intersect() klappt, aber list() nicht.
Grund: In der Doku von PHP 5.2 steht:
"list() funktioniert nur bei numerischen Arrays und basiert auf der ANNAHME, DASS DIE NUMERISCHEN INDIZES BEI 0 BEGINNEN.
Letzteres ist nicht der Fall, da array_intersect() Indizes aus den Original-Arrays benutzt!
Daher ergibt list() NULL und wir landen bei if($arrayKey) immer im else-Zweig.
Lösung:
$afterKey = array_shift(array_intersect($position, $currentKeys));
Bug2:
-----
In der Methode insertIntoArray() steht:
$post = array_slice($array, $pos+$addOffset, NULL, true);
$post ist danach aber leer. Darin sollten die Buttons sein, die ich vermisse. Grund ist der NULL-Parameter. (BTW: Das verhalten von array_slice() zeigt zumindest in PHP 5.2 sogar unterschiedliches Verhalten bei +0 und -0).
Lösung 1:
$post = array_slice($array, $pos+$addOffset, count($array), true);
Lösung 2:
$post = array_diff($array, $pre);
Lösung 1 ist dabei wegen der Lesbarkeit zu bevorzugen, da es den eigentlichen Sinn der Anweisung besser dokumentiert. Diese Lösung wurde auch vom Entwickler, Bernhard Kraft, als offizielles Bugfix in forge eingestellt.
DIFF:
--------------------------------------------------------------
diff class.tx_kbnescefe_layout.php.orig class.tx_kbnescefe_layout.php
102c102
< list($afterKey) = array_intersect($position, $currentKeys);
---
> $afterKey = array_shift(array_intersect($position, $currentKeys));
107c107
< $post = array_slice($array, $pos+$addOffset, NULL, true);
---
> $post = array_slice($array, $pos+$addOffset, count($array), true);