X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_listing.inc;h=ab6d5944354bdf8f56ebf12bbe5a68886a6d80a5;hb=37a863af6c001e5760070adb1d74dc77e4df61f9;hp=31a1b3dc19fe5156945b12f672ca85dbff13fdd5;hpb=58e588f095fb166bdb7eacd07d45de0804f01ffb;p=gosa.git diff --git a/gosa-core/include/class_listing.inc b/gosa-core/include/class_listing.inc index 31a1b3dc1..ab6d59443 100644 --- a/gosa-core/include/class_listing.inc +++ b/gosa-core/include/class_listing.inc @@ -52,6 +52,7 @@ class listing { var $exportColumns= array(); var $useSpan= false; var $height= 0; + var $scrollPosition= 0; function listing($filename) @@ -273,6 +274,7 @@ class listing { // Initialize list $result= "\n"; + $result.= "\n"; $height= 450; if ($this->height != 0) { $result.= "\n"; @@ -425,6 +427,12 @@ class listing { $result.= ""; $result.= $switch?"":""; + // Add scroll positioner + $result.= ''; + $smarty= get_smarty(); $smarty->assign("usePrototype", "true"); $smarty->assign("FILTER", $this->filter->render()); @@ -447,7 +455,15 @@ class listing { // Assign summary $smarty->assign("HEADLINE", $this->headline); - return ($smarty->fetch(get_template_path($this->xmlData['definition']['template'], true))); + // Try to load template from plugin the folder first... + $file = get_template_path($this->xmlData['definition']['template'], true); + + // ... if this fails, try to load the file from the theme folder. + if(!file_exists($file)){ + $file = get_template_path($this->xmlData['definition']['template']); + } + + return ($smarty->fetch($file)); } @@ -465,6 +481,11 @@ class listing { return; } + // Save position if set + if (isset($_POST['position_'.$this->pid]) && is_numeric($_POST['position_'.$this->pid])) { + $this->scrollPosition= $_POST['position_'.$this->pid]; + } + // Save base if (isset($_POST['BASE']) && $this->baseMode) { $base= get_post('BASE'); @@ -704,41 +725,44 @@ class listing { // Row is replaced by the row number if ($param == "row") { $params[]= $row; + continue; } // pid is replaced by the current PID if ($param == "pid") { $params[]= $this->pid; + continue; } // base is replaced by the current base if ($param == "base") { $params[]= $this->getBase(); + continue; } // Fixie with "" is passed directly if (preg_match('/^".*"$/', $param)){ $params[]= preg_replace('/"/', '', $param); + continue; + } + + // Move dn if needed + if ($param == "dn") { + $params[]= LDAP::fix($config["dn"]); + continue; } // LDAP variables get replaced by their objects for ($i= 0; $i<$config['count']; $i++) { - if ($config[$i] == 'dn') { - continue; - } if ($param == $config[$i]) { $values= $config[$config[$i]]; if (is_array($values)){ unset($values['count']); } $params[]= $values; + break; } } - - // Move dn if needed - if ($param == "dn") { - $params[]= LDAP::fix($config["dn"]); - } } // Replace information @@ -851,11 +875,16 @@ class listing { $result.= " "; continue; } - } else { + } elseif (is_string($objectclass)) { if(!in_array($objectclass, $classes)) { $result.= " "; continue; } + } elseif (is_array($objectclass)) { + if(count(array_intersect($objectclass, $classes)) != count($objectclass)){ + $result.= " "; + continue; + } } } @@ -878,7 +907,9 @@ class listing { } if ($action['type'] == "copypaste") { - $result.= $this->renderCopyPasteActions($row, $this->entries[$row]['dn'], $category, $class); + $copy = !isset($action['copy']) || $action['copy'] == "true"; + $cut = !isset($action['cut']) || $action['cut'] == "true"; + $result.= $this->renderCopyPasteActions($row, $this->entries[$row]['dn'], $category, $class,$copy,$cut); } else { $result.= $this->renderSnapshotActions($row, $this->entries[$row]['dn'], $category, $class); } @@ -993,6 +1024,11 @@ class listing { return; } + // Save position if set + if (isset($_POST['position_'.$this->pid]) && is_numeric($_POST['position_'.$this->pid])) { + $this->scrollPosition= $_POST['position_'.$this->pid]; + } + $result= array("targets" => array(), "action" => ""); // Filter GET with "act" attributes @@ -1141,7 +1177,9 @@ class listing { // Check for special types switch ($action['type']) { case 'copypaste': - $result.= $this->renderCopyPasteMenu($separator); + $cut = !isset($action['cut']) || $action['cut'] != "false"; + $copy = !isset($action['copy']) || $action['copy'] != "false"; + $result.= $this->renderCopyPasteMenu($separator, $copy , $cut); break; case 'snapshot': @@ -1503,7 +1541,7 @@ class listing { function getEntry($dn) { foreach ($this->entries as $entry) { - if (isset($entry['dn']) && strcasecmp($dn, $entry['dn'])){ + if (isset($entry['dn']) && strcasecmp($dn, $entry['dn']) == 0){ return $entry; } }