Hallo,
da die Komponente Peoplebook keine Spalte zum Speichern der Reihenfolge hat, habe ich mir den Code dafür von anderen Komponenten abgeguckt und dann - entsprechend angepasst - in Peoplebook implementiert (s. Screenshot).
Ich bin jetzt soweit, dass die Spalte angezeigt wird und sogar die Reihenfolge richtig ausgelesen wird. Es fehlt nur noch die Speicherfunktion.
Und genau da ist der Haken: Beim Klicken des Speichern-Icons erhalte ich nur ein "Invalid Token". Leider weiß ich nicht, woher ich dieses Token herbekommen soll oder wie es funktioniert...
Der Code:
Die Datei admin.peoplebook.html.php enthält folgende relevanten Zeilen:
1. Der Tabellenkopf mit dem Speichern-Icon:
PHP-Code:
<th width="5%">
<div align="center">
<a href="javascript: saveorder( <?php echo count($rows)-1; ?> )" >
<img src="images/filesave.png" border="0" width="16" height="16"
alt="<?php echo JText::_('_PBK_SAVE_ORDER'); ?>" />
</a>
</div>
</th>
2. Die Tabellenzeilen mit den entsprechenden Nummern für die Reihenfolge:
PHP-Code:
<tr class="<?php echo "row$k"; ?>">
[...]
<td align="center" colspan="2">
<input type="text" name="order[]" size="5" value="<?php echo $row->ordering; ?>"
class="text_area" style="text-align: center" />
</td>
[...]
<?php $k = 1 - $k; } ?>
</tr>
Das ist die Bedingung für das Klicken des Speichern-Icons (admin.peoplebook.php):
PHP-Code:
switch ($task) {
[...]
case 'saveorder':
Joom_SaveOrder($id, $cid);
break;
[...]
}
In derselben Datei ist die Funktion, die das eigentliche Speichern nach dem Klick des Icons übernimmt:
PHP-Code:
function Joom_SaveOrder() {
global $mainframe;
// Check for request forgeries
JRequest::checkToken() or jexit( 'Invalid Token' );
// Initialize variables
$db =& JFactory::getDBO();
$cid = JRequest::getVar( 'cid', array(), 'post', 'array' );
$total = count( $cid );
$order = JRequest::getVar( 'order', array(0), 'post', 'array' );
JArrayHelper::toInteger($order, array(0));
$row =& JTable::getInstance('name', 'Table');
// update ordering values
for( $i=0; $i < $total; $i++ )
{
$row->load( (int) $cid[$i] );
// track sections
if ($row->ordering != $order[$i])
{
$row->ordering = $order[$i];
if (!$row->store())
{
JError::raiseError(500, $db->getErrorMsg());
}
}
}//for
$row->reorder();
$msg = JText::_( 'Neue Reihenfolge gespeichert' );
$mainframe->redirect('index.php?option=com_peoplebook', $msg);
}
(Leider weiß ich auch nicht für was die $cid Variable gut ist ...)
Für eure Hilfe wäre ich sehr dankbar.
Freundliche Grüße,
suncity
Lesezeichen