X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_sortableListing.inc;h=55c3bbfe9bc5617b76eabbc41a0c9de330ad8334;hb=0263ebf7c8361121ba2e35e4e80c976a02ed1d26;hp=48babc45568aeb9ab4971c1a7b57e1fb6b4ca8fd;hpb=359619a1d3b790bd6a3f08b8c609ce57777d281f;p=gosa.git diff --git a/gosa-core/include/class_sortableListing.inc b/gosa-core/include/class_sortableListing.inc index 48babc455..55c3bbfe9 100644 --- a/gosa-core/include/class_sortableListing.inc +++ b/gosa-core/include/class_sortableListing.inc @@ -53,12 +53,12 @@ class sortableListing { private $acl= ""; private $modified= false; - public function sortableListing($data= array(), $displayData= null, $modes= null, $reorderable= false) + public function sortableListing($data= array(), $displayData= null, $reorderable= false) { global $config; // Save data to display - $this->setListData($data, $displayData, $modes); + $this->setListData($data, $displayData); // Generate instance wide unique ID $tmp= gettimeofday(); @@ -72,25 +72,17 @@ class sortableListing { } - public function setListData($data, $displayData= null, $modes= null) + 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($value); + $displayData[$key]= array("data" => array($value)); } } - if (!$modes) { - $modes= array(); - foreach ($data as $key => $value) { - $modes[$key]= LIST_NORMAL; - } - } - $this->setDisplayData($displayData); - $this->setModes($modes); } @@ -100,12 +92,6 @@ class sortableListing { } - private function setModes($modes) - { - $this->modes= array_values($modes); - } - - private function setDisplayData($data) { if (!is_array($data)) { @@ -113,7 +99,14 @@ class sortableListing { } // Transfer information - $this->displayData= array_values($data); + $this->displayData= array(); + $this->modes= 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 @@ -193,17 +186,17 @@ class sortableListing { public function render() { $result= "
\n"; - $result.= "cssclass)?" class='".$this->cssclass."'":"").">\n"; + $result.= "
cssclass)?" class='".$this->cssclass."'":"").">\n"; $action_width= 0; if (strpos($this->acl, 'w') === false) { - $edit_image= $this->editable?""._("Edit")."":""; + $edit_image= $this->editable?image("images/lists/edit-grey.png"):""; } else { - $edit_image= $this->editable?"":""; + $edit_image= $this->editable?image('images/lists/edit.png', "%ID", _("Edit this entry")):""; } if (strpos($this->acl, 'd') === false) { - $delete_image= $this->deleteable?""._("Delete")."":""; + $delete_image= $this->deleteable?image('images/lists/trash-grey.png'):""; } else { - $delete_image= $this->deleteable?"":""; + $delete_image= $this->deleteable?image('images/lists/trash.png', "%ID", _("Delete this entry")):""; } // Do we need colspecs? @@ -211,12 +204,16 @@ class sortableListing { if ($this->colspecs) { $result.= " \n"; for ($i= 0; $i<$this->columns; $i++) { - $result.= " \n"; + if(isset($this->colspecs[$i]) && $this->colspecs[$i] != '*'){ + $result.= " \n"; + }else{ + $result.= " \n"; + } } // Extend by another column if we've actions specified if ($action_width) { - $result.= " \n"; + $result.= " \n"; } $result.= " \n"; } @@ -224,12 +221,12 @@ class sortableListing { // Do we need a header? if ($this->header) { $result.= " \n \n"; - $first= " style='border:0'"; + $first= " style='border-left:0'"; for ($i= 0; $i<$this->columns; $i++) { $link= "href='?plug=".$_GET['plug']."&PID=".$this->id."&act=SORT_$i'"; $sorter= ""; if ($i == $this->sortColumn){ - $sorter= " "; + $sorter= " ".image("images/lists/sort-".($this->sortDirection[$i]?"up":"down").".png", null, $this->sortDirection[$i]?_("Up"):_("Down")); } if ($this->reorderable) { @@ -253,14 +250,16 @@ class sortableListing { $editable= $this->editable?" onclick='$(\"edit_".$this->id."_$nr\").click()'":""; $id= ""; - switch ($this->modes[$row]) { - case LIST_DISABLED: - $id= " sortableListItemDisabled"; - $editable= false; - break; - case LIST_MARKED: - $id= " sortableListItemMarked"; - break; + if (isset($this->modes[$row])) { + switch ($this->modes[$row]) { + case LIST_DISABLED: + $id= " sortableListItemDisabled"; + $editable= ""; + break; + case LIST_MARKED: + $id= " sortableListItemMarked"; + break; + } } $result.= " \n"; @@ -336,6 +335,15 @@ class sortableListing { $this->sortData(); } } + } + + + public function save_object() + { + // Do not do anything if this is not our PID, or there's even no PID available... + if(!isset($_REQUEST['PID']) || $_REQUEST['PID'] != $this->id) { + return; + } // Do not do anything if we're not posted - or have no permission if (strpos($this->acl, 'w') !== false && isset($_POST['reorder_'.$this->id])){ @@ -361,11 +369,22 @@ class sortableListing { } // Delete requested? + $this->action = ""; if (strpos($this->acl, 'd') !== false){ foreach ($_POST as $key => $value) { - if (preg_match('/^del_'.$this->id.'_([0-9]+)_x.*$/', $key, $matches)) { + if (preg_match('/^del_'.$this->id.'_([0-9]+)$/', $key, $matches)) { $this->active_index= $this->mapping[$matches[1]]; + + // Ignore request if mode requests it + if (isset($this->modes[$this->active_index]) && $this->modes[$this->active_index] == LIST_DISABLED) { + $this->active_index= null; + continue; + } + + // Set action $this->action= "delete"; + + // Remove value if requested if ($this->instantDelete) { $this->deleteEntry($this->active_index); } @@ -376,8 +395,15 @@ class sortableListing { // Edit requested? if (strpos($this->acl, 'w') !== false){ foreach ($_POST as $key => $value) { - if (preg_match('/^edit_'.$this->id.'_([0-9]+)_x.*$/', $key, $matches)) { + if (preg_match('/^edit_'.$this->id.'_([0-9]+)$/', $key, $matches)) { $this->active_index= $this->mapping[$matches[1]]; + + // Ignore request if mode requests it + if (isset($this->modes[$this->active_index]) && $this->modes[$this->active_index] == LIST_DISABLED) { + $this->active_index= null; + continue; + } + $this->action= "edit"; } } @@ -467,7 +493,7 @@ class sortableListing { } - public function addEntry($entry, $displayEntry= null, $key= null, $mode= null) + public function addEntry($entry, $displayEntry= null, $key= null) { // Only add if not already there if (!$key) { @@ -482,7 +508,7 @@ class sortableListing { // Prefill with default value if not specified if (!$displayEntry) { - $displayEntry= array($entry); + $displayEntry= array('data' => array($entry)); } // Append to data and mapping @@ -493,10 +519,12 @@ class sortableListing { $this->data[]= $entry; $this->keys[]= count($this->mapping); } - $this->modes[]= $mode; - $this->displayData[]= $displayEntry; + $this->displayData[]= $displayEntry['data']; $this->mapping[]= count($this->mapping); $this->modified= true; + + // Sort data after we've added stuff + $this->sortData(); }