X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_listing.inc;h=46f427a28fe732500b423f6719494035226369bd;hb=9c309d6fc3d3ff65caf535b6f53ea3177433d29b;hp=2bf9e3b5935c9a597b6cb69e705c3f4126132004;hpb=4422a4580f46e49a3b7459c0a02ecb3f8062d768;p=gosa.git diff --git a/gosa-core/include/class_listing.inc b/gosa-core/include/class_listing.inc index 2bf9e3b59..46f427a28 100644 --- a/gosa-core/include/class_listing.inc +++ b/gosa-core/include/class_listing.inc @@ -28,6 +28,7 @@ class listing { var $departmentBrowser= false; var $departmentRootVisible= false; var $multiSelect= false; + var $singleSelect= false; var $template; var $headline; var $base; @@ -121,6 +122,12 @@ class listing { } + function getFilter() + { + return($this->filter); + } + + function setFilter($filter) { $this->filter= &$filter; @@ -154,7 +161,7 @@ class listing { $this->xmlData= $this->xmlData["list"]; // Load some definition values - foreach (array("departmentBrowser", "departmentRootVisible", "multiSelect", "baseMode") as $token) { + foreach (array("departmentBrowser", "departmentRootVisible", "multiSelect","singleSelect", "baseMode") as $token) { if (isset($this->xmlData['definition'][$token]) && $this->xmlData['definition'][$token] == "true"){ $this->$token= true; @@ -238,21 +245,21 @@ class listing { isset($config['sortType'])) { $this->sortAttribute= $config['sortAttribute']; $this->sortType= $config['sortType']; - $sorter= " ".image("images/lists/sort-".($this->sortDirection[$index]?"up":"down").".png", null, $this->sortDirection[$index]?_("Up"):_("Down"), "text-top"); + $sorter= " ".image("images/lists/sort-".($this->sortDirection[$index]?"up":"down").".png", null, $this->sortDirection[$index]?_("Sort ascending"):_("Sort descending"), "text-top"); } $sortable= (isset($config['sortAttribute'])); $link= "href='?plug=".$_GET['plug']."&PID=".$this->pid."&act=SORT_$index'"; if (isset($config['label'])) { if ($sortable) { - $this->header[$index]= "colprops[$index].">"._($config['label'])."$sorter"; + $this->header[$index]= "colprops[$index].">"._($config['label'])."$sorter"; } else { $this->header[$index]= "colprops[$index].">"._($config['label']).""; } $this->plainHeader[]= _($config['label']); } else { if ($sortable) { - $this->header[$index]= "colprops[$index]."> $sorter"; + $this->header[$index]= "colprops[$index]."> $sorter"; } else { $this->header[$index]= "colprops[$index]."> "; } @@ -288,16 +295,23 @@ class listing { $result.= "
\n"; $result.= "\n"; - $this->numColumns= count($this->colprops) + ($this->multiSelect?1:0); + $this->numColumns= count($this->colprops) + (($this->multiSelect|$this->singleSelect)?1:0); // Build list header $result.= "\n"; - if ($this->multiSelect) { + if ($this->multiSelect || $this->singleSelect) { $width= "24px"; if (preg_match('/Konqueror/i', $_SERVER['HTTP_USER_AGENT'])){ $width= "28px"; } - $result.= "\n"; + $result.= "\n"; } foreach ($this->header as $header) { $result.= $header; @@ -325,7 +339,7 @@ class listing { $result.=""; // Render multi select if needed - if ($this->multiSelect) { + if ($this->multiSelect || $this->singleSelect) { $result.=""; } @@ -362,6 +376,10 @@ class listing { $trow.="\n"; } + if ($this->singleSelect) { + $trow.="\n"; + } + foreach ($this->xmlData['table']['column'] as $index => $config) { $renderedCell= $this->renderCell($config['value'], $entry, $row); $trow.="\n"; @@ -382,8 +400,27 @@ class listing { // Complete list by sorting entries for _sort$index and appending them to the output $entryIterator= new listingSortIterator($this->entries, $this->sortDirection[$this->sortColumn], "_sort".$this->sortColumn, $this->sortType); foreach ($entryIterator as $row => $entry){ - $result.="\n"; - $result.= $entry['_rendered']; + + // Apply label to objecttype icon? + if (preg_match("//i", $entry['_rendered'], $matches)){ + if (preg_match("//i", $entry['_rendered'], $m)) { + $objectType= image($matches[1]."[".$m[1]."]", null, LDAP::fix(base64_decode($matches[2]))); + } else { + $objectType= image($matches[1], null, LDAP::fix(base64_decode($matches[2]))); + } + $entry['_rendered']= preg_replace("/]+>/", $objectType, $entry['_rendered']); + $entry['_rendered']= preg_replace("/]+>/", '', $entry['_rendered']); + } + + // Apply custom class to row? + if (preg_match("//i", $entry['_rendered'], $matches)) { + $result.="\n"; + $result.= preg_replace("/]+>/", '', $entry['_rendered']); + } else { + $result.="\n"; + $result.= $entry['_rendered']; + } + $result.="\n"; $alt++; } @@ -403,6 +440,7 @@ class listing { $result.= ""; } } + $result.= ""; } @@ -433,7 +471,7 @@ class listing { $result.= ''; $smarty= get_smarty(); - $smarty->assign("usePrototype", "true"); + $smarty->assign("FILTER", $this->filter->render()); $smarty->assign("SIZELIMIT", print_sizelimit_warning()); $smarty->assign("LIST", $result); @@ -445,6 +483,7 @@ class listing { } // Assign action menu / base + $smarty->assign("HEADLINE", $this->headline); $smarty->assign("ACTIONS", $this->renderActionMenu()); $smarty->assign("BASE", $this->renderBase()); @@ -474,6 +513,7 @@ class listing { // Take care of base selector if ($this->baseMode) { $this->baseSelector->update(); + // Check if a wrong base was supplied if(!$this->baseSelector->checkLastBaseUpdate()){ msg_dialog::display(_("Error"), msgPool::check_base(), ERROR_DIALOG); @@ -818,7 +858,7 @@ class listing { $objectType= $this->getObjectType($this->objectTypes, $classes); if ($objectType) { $this->objectDnMapping[$dn]= $objectType["objectClass"]; - $result= image($objectType["image"], null, LDAP::fix($dn)); + $result= ""; if (!isset($this->objectTypeCount[$objectType['label']])) { $this->objectTypeCount[$objectType['label']]= 0; } @@ -997,17 +1037,17 @@ class listing { /* Draw back button */ if($enableBack){ - $result["BACK"]= image('images/lists/back.png', 'BACK', _("Go up one department")); + $result["BACK"]= image('images/lists/back.png', 'BACK', _("Go to preceding level")); }else{ - $result["BACK"]= image('images/lists/back-grey.png', null, _("Go up one department")); + $result["BACK"]= image('images/lists/back-grey.png', null, _("Go to preceding level")); } /* Draw home button */ /* Draw home button */ if($enableHome){ - $result["HOME"]= image('images/lists/home.png', 'HOME', _("Go to users department")); + $result["HOME"]= image('images/lists/home.png', 'HOME', _("Go to current users level")); }else{ - $result["HOME"]= image('images/lists/home-grey.png', null, _("Go to users department")); + $result["HOME"]= image('images/lists/home-grey.png', null, _("Go to current users level")); } @@ -1048,6 +1088,12 @@ class listing { return $result; } + // Get single selection (radio box) + if($this->singleSelect && isset($_POST['listing_radio_selected'])){ + $entry = $_POST['listing_radio_selected']; + $result['targets']= array($this->entries[$entry]['dn']); + } + // Filter POST with "listing_" attributes foreach ($_POST as $key => $prop) { @@ -1094,9 +1140,11 @@ class listing { function renderActionMenu() { + $result= "
"; + // Don't send anything if the menu is not defined if (!isset($this->xmlData['actionmenu']['action'])){ - return ""; + return $result; } // Array? @@ -1106,13 +1154,12 @@ class listing { // Load shortcut $actions= &$this->xmlData['actionmenu']['action']; - $result= "
". - ""; } @@ -1171,7 +1218,7 @@ class listing { // Render entry elseways if (isset($action['label'])){ - $result.= "$img"._($action['label']).""; + $result.= "$img"._($action['label']).""; } // Check for special types @@ -1377,13 +1424,13 @@ class listing { // Copy entry if($copy){ - $result.= "".image('images/lists/copy.png')." "._("Copy").""; + $result.= "".image('images/lists/copy.png')." "._("Copy").""; $separator= ""; } // Cut entry if($cut){ - $result.= "".image("images/lists/cut.png")." "._("Cut").""; + $result.= "".image("images/lists/cut.png")." "._("Cut").""; $separator= ""; } } @@ -1391,7 +1438,7 @@ class listing { // Draw entries that allow pasting entries if($paste){ if($this->copyPasteHandler->entries_queued()){ - $result.= "".image("images/lists/paste.png")." "._("Paste").""; + $result.= "".image("images/lists/paste.png")." "._("Paste").""; }else{ $result.= "".image('images/lists/paste-grey.png')." "._("Paste").""; } @@ -1457,7 +1504,7 @@ class listing { // Draw icons according to the restore flag if($restore){ - $result.= "".image('images/lists/restore.png')." "._("Restore snapshots").""; + $result.= "".image('images/lists/restore.png')." "._("Restore snapshots").""; }else{ $result.= "".image('images/lists/restore-grey.png')." "._("Restore snapshots").""; } @@ -1477,7 +1524,7 @@ class listing { // Export CVS as build in exporter foreach ($this->exporter as $action => $exporter) { - $result.= "
  • ".image($exporter['image'])." ".$exporter['label']."
  • "; + $result.= "
  • ".image($exporter['image'])." ".$exporter['label']."
  • "; } // Finalize list @@ -1515,7 +1562,7 @@ class listing { // Draw snapshot button if($ui->allow_snapshot_create($dn, $category)){ - $result.= image('images/snapshot.png', "listing_snapshot_$row", _("Create a new snapshot from this object")); + $result.= image('images/snapshot.png', "listing_snapshot_$row", _("Create new snapshot for this object")); }else{ $result.= image('images/empty.png'); } @@ -1534,7 +1581,7 @@ class listing { $events= DaemonEvent::get_event_types_by_category($this->categories); if(isset($events['BY_CLASS']) && count($events['BY_CLASS'])){ foreach($events['BY_CLASS'] as $name => $event){ - $result.= "".$event['MenuImage']." ".$event['s_Menu_Name'].""; + $result.= "".$event['MenuImage']." ".$event['s_Menu_Name'].""; $separator= ""; } } @@ -1563,6 +1610,7 @@ class listing { function getType($dn) { + $dn = LDAP::fix($dn); if (isset($this->objectDnMapping[$dn])) { return $this->objectDnMapping[$dn]; }
    "; + if($this->multiSelect){ + $result.= ""; + }else{ + $result.= " "; + } + $result.="
     colprops[$index]." class='list0'>".$renderedCell."