X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_baseSelector.inc;h=4da32961e827ac04fa56158b03c0ad07e3a89090;hb=7d0eab6bb81d3010130879061ea00542071f5b76;hp=375fe207ac3ed59c683c87c47632529850113b51;hpb=4fb638983db1e8ea78211a0ecb9a64351f881520;p=gosa.git diff --git a/gosa-core/include/class_baseSelector.inc b/gosa-core/include/class_baseSelector.inc index 375fe207a..4da32961e 100644 --- a/gosa-core/include/class_baseSelector.inc +++ b/gosa-core/include/class_baseSelector.inc @@ -25,8 +25,11 @@ class baseSelector { private $base; private $pid; private $action; + private $height= 500; + private $submitButton= true; protected $tree; protected $pathMapping; + protected $lastState; // It would be better to get a dn -> [name, description, type] array // to avoid these tasks be done several times. Skipping for the moment. @@ -48,17 +51,39 @@ class baseSelector { } + function setSubmitButton($flag) + { + $this->submitButton= $flag; + } + + + function setHeight($value) + { + $this->height= $value; + } + + function setBase($base) { if (isset($this->pathMapping[$base])) { $this->base= $base; $this->update(true); - } else { - die("Invalid base selected"); } } + function checkBase($base) + { + return isset($this->pathMapping[$base]); + } + + + function checkLastBaseUpdate() + { + return $this->lastState; + } + + function setBases($bases) { global $config; @@ -89,28 +114,57 @@ class baseSelector { // Analyze for base changes if needed $this->action= null; $last_base= $this->base; - if(isset($_REQUEST['PID']) && $_REQUEST['PID'] == $this->pid) { - if (isset($_REQUEST['REBASE'])) { - $new_base= base64_decode($_REQUEST['REBASE']); + if(isset($_REQUEST['BPID']) && $_REQUEST['BPID'] == $this->pid) { + if (isset($_POST['bs_rebase_'.$this->pid]) && !empty($_POST['bs_rebase_'.$this->pid])) { + $new_base= base64_decode($_POST['bs_rebase_'.$this->pid]); if (isset($this->pathMapping[$new_base])) { $this->base= $new_base; $this->action= 'rebase'; } else { - die ("Base mismatch!"); + $this->lastState= false; + return false; } - } + }else{ + // Input field set? + if (isset($_POST['bs_input_'.$this->pid])) { + + // Take over input field base + if ($this->submitButton && isset($_POST['submit_base_'.$this->pid.'_x']) || !$this->submitButton) { + + // Check if base is available + $this->lastState= false; + foreach ($this->pathMapping as $key => $path) { + if (mb_strtolower($path) == mb_strtolower($_POST['bs_input_'.$this->pid])) { + $this->base= $key; + $this->lastState= true; + break; + } + } + } + } + } + } /* Skip if there's no change */ if (($this->tree && $this->base == $last_base) && !$force) { - return; + return true; } - $link= "href='?plug=".$_GET['plug']."&PID=".$this->pid."&REBASE=".base64_encode($config->current['BASE'])."'"; - $this->tree= "pid."').hide()\" onmouseover=\"Element.clonePosition(\$('bs_".$this->pid."'), 'bs_input_".$this->pid."', {setHeight: false, setWidth: false, offsetTop:(Element.getHeight('bs_input_".$this->pid."'))});\$('bs_".$this->pid."').show();\" onmouseout=\"rtimer= Element.hide.delay(0.25, 'bs_".$this->pid."')\" value='".$this->pathMapping[$this->base]."'>"; + $link= "onclick=\"\$('bs_rebase_".$this->pid."').value='".base64_encode($config->current['BASE'])."'; $('submit_tree_base_".$this->pid."').click();\""; + $this->tree= "pid."').hide()\" onfocus=\"\$('bs_".$this->pid."').hide()\" onmouseover=\"Element.clonePosition(\$('bs_".$this->pid."'), 'bs_input_".$this->pid."', {setHeight: false, setWidth: false, offsetTop:(Element.getHeight('bs_input_".$this->pid."'))});\$('bs_".$this->pid."').show();\" onmouseout=\"rtimer= Element.hide.delay(0.25, 'bs_".$this->pid."')\" value=\"".preg_replace('/"/', '"',$this->pathMapping[$this->base])."\">"; + + // Autocompleter + $this->tree.= "
". + ""; $selected= $this->base == $config->current['BASE']?"Selected":""; - $this->tree.= "