diff --git a/gosa-plugins/goto/admin/devices/class_deviceGeneric.inc b/gosa-plugins/goto/admin/devices/class_deviceGeneric.inc
index ac4c810c6abf35eae088cd6fe601c23091d4b9a6..037963de6088bed57a04b39341881eeb0f984fd5 100644 (file)
public $base = "";
public $types;
public $type;
+ public $baseSelector;
public $attributes = array("cn","description","devID","serial","vendor", "type");
public $objectclasses = array("top","gotoDevice");
$this->base= dn2base($ui->dn);
}
} else {
- $this->base =preg_replace ("/^[^,]+,".get_ou('deviceRDN')."/","",$this->dn);
+ $this->base =preg_replace ("/^[^,]+,".preg_quote(get_ou('deviceRDN'), '/')."/i","",$this->dn);
}
$this->orig_base = $this->base;
$this->orig_dn = $this->dn;
+
+ /* Instanciate base selector */
+ $this->baseSelector= new baseSelector($this->get_allowed_bases(), $this->base);
+ $this->baseSelector->setSubmitButton(false);
+ $this->baseSelector->setHeight(300);
+ $this->baseSelector->update(true);
}
public function execute()
{
+ plugin::execute();
$smarty = get_smarty();
- $smarty->assign("base",$this->base);
- $smarty->assign("bases",$this->get_allowed_bases());
+
+ $smarty->assign("base", $this->baseSelector->render());
foreach($this->attributes as $attr){
$smarty->assign($attr,$this->$attr);
}
if(empty($this->vendor) || !$this->is_2byteHex($this->vendor)){
$message[]= msgPool::invalid(_("Vendor-ID"),"","","0x1234");
}
+
+ // Check if a wrong base was supplied
+ if(!$this->baseSelector->checkLastBaseUpdate()){
+ $message[]= msgPool::check_base();
+ }
/* Check if entry already exists */
if($this->cn != $this->orig_cn || $this->dn == "new"){
{
if(isset($_POST['deviceGeneric_posted'])){
plugin::save_object();
-
- if(isset($_POST['base'])){
- $tmp = $this->get_allowed_bases();
- if(isset($tmp[get_post("base")])){
- $this->base = get_post("base");
+
+ /* Refresh base */
+ if ($this->acl_is_moveable($this->base)){
+ if (!$this->baseSelector->update()) {
+ msg_dialog::display(_("Error"), msgPool::permMove(), ERROR_DIALOG);
+ }
+ if ($this->base != $this->baseSelector->getBase()) {
+ $this->base= $this->baseSelector->getBase();
+ $this->is_modified= TRUE;
}
}
+
}
}
"plSection" => array("administration"),
"plCategory" => array("devices" => array("description" => _("Devices"),
"objectClass" => "gotoHotplugDevice")),
+ "plProperties" =>
+ array(
+ array(
+ "name" => "deviceRDN",
+ "type" => "rdn",
+ "default" => "ou=devices,",
+ "description" => "The 'deviceRDN' statement defines the location where new devices will be created. The default is 'ou=devices,'.",
+ "check" => "gosaProperty::isRdn",
+ "migrate" => "",
+ "group" => "plugin",
+ "mandatory" => FALSE)),
+
"plProvidedAcls"=> array(
"cn" => _("Name"),
"base" => _("Base"),