setListData($data, $displayData);
// Generate instance wide unique ID
$tmp= gettimeofday();
$this->id= 'l'.md5(microtime().$tmp['sec']);
// Set reorderable flag
$this->reorderable= $reorderable;
if (!$reorderable) {
$this->sortData();
}
}
public function setListData($data, $displayData= null)
{
// Save data to display
$this->setData($data);
if (!$displayData) {
$displayData= array();
foreach ($data as $key => $value) {
$displayData[$key]= array("data" => array($value));
}
}
$this->setDisplayData($displayData);
}
private function setData($data)
{
$this->data= $data;
}
private function setDisplayData($data)
{
if (!is_array($data)) {
trigger_error ("sortableList needs an array as data!");
}
// Transfer information
$this->displayData= array();
$this->modes= array();
$this->mapping= array();
foreach ($data as $key => $value) {
$this->displayData[]= $value['data'];
if (isset($value['mode'])) {
$this->modes[]= $value['mode'];
}
}
$this->keys= array_keys($data);
// Create initial mapping
if(count($this->keys)){
$this->mapping= range(0, abs(count($this->keys)-1));
}
$this->current_mapping= $this->mapping;
// Find the number of coluns
reset($this->displayData);
$first= current($this->displayData);
if (is_array($first)) {
$this->columns= count($first);
} else {
$this->columns= 1;
}
// Preset sort orders to 'down'
if(!count($this->sortDirection))
for ($column= 0; $column<$this->columns; $column++) {
$this->sortDirection[$column]= true;
}
}
public function setWidth($width)
{
$this->width= $width;
}
public function setInstantDelete($flag)
{
$this->instantDelete= $flag;
}
public function setColorAlternate($flag)
{
$this->colorAlternate= $flag;
}
public function setEditable($flag)
{
$this->editable= $flag;
}
public function setDeleteable($flag)
{
$this->deleteable= $flag;
}
public function setHeight($height)
{
$this->height= $height;
}
public function setCssClass($css)
{
$this->cssclass= $css;
}
public function setHeader($header)
{
$this->header= $header;
}
public function setColspecs($specs)
{
$this->colspecs= $specs;
}
public function render()
{
$result= "
\n";
$result.= "
cssclass)?" class='".$this->cssclass."'":"").">\n";
$action_width= 0;
if (strpos($this->acl, 'w') === false) {
$edit_image= $this->editable?image("images/lists/edit-grey.png"):"";
} else {
$edit_image= $this->editable?image('images/lists/edit.png', "%ID", _("Edit this entry")):"";
}
if (strpos($this->acl, 'd') === false) {
$delete_image= $this->deleteable?image('images/lists/trash-grey.png'):"";
} else {
$delete_image= $this->deleteable?image('images/lists/trash.png', "%ID", _("Delete this entry")):"";
}
// Do we need colspecs?
$action_width= ($this->editable?20:0) + ($this->deleteable?20:0);
if ($this->colspecs) {
$result.= "