diff --git a/plugins/admin/departments/tabs_department.inc b/plugins/admin/departments/tabs_department.inc
index de5e877d1703d1793cc030851b0d7d8a62053004..9e3f6675bd435d75c7d2b63d27be774d3adf3635 100644 (file)
{
var $base= "";
- function deptabs($config, $data, $dn)
+ function deptabs($config, $data, $dn,$category)
{
- tabs::tabs($config, $data, $dn);
- $this->base= $this->by_object['department']->base;
+ tabs::tabs($config, $data, $dn,$category);
+ $this->base= $this->by_object['department']->base;
+
+ /* Add references/acls/snapshots */
+ $this->addSpecialTabs();
}
function check()
{
- return (tabs::check(TRUE));
+ return (tabs::check(TRUE));
}
-
-
- function save()
- {
- $baseobject= $this->by_object['department'];
- $new_dn= 'ou='.$baseobject->ou.','.$baseobject->base;
- if ($this->dn != $new_dn && $this->dn != "new"){
- $baseobject->recursive_move($this->dn, $new_dn);
- }
- $this->dn= $new_dn;
- tabs::save(TRUE);
+ function save($justsave = false)
+ {
+ $baseobject= $this->by_object['department'];
+ $ou= preg_replace('/,/', '\,', $baseobject->ou);
+ $new_dn= @LDAP::convert('ou='.$ou.','.$baseobject->base);
+
+ if($justsave){
+ if ($this->dn != $new_dn && $this->dn != "new"){
+ /* if( new_dn is subtree of this->dn ) */
+ $cnt1 = count(split(",",$this->dn));
+ $cnt2 = count(split(",",$new_dn));
+ if((strstr($new_dn,$this->dn))&&($cnt1<$cnt2)){
+ print_red(_("Try to move tree failed. Destination tree is subtree of source tree."));
+ }else{
+ /* Prepare to be moved */
+ $baseobject->recursive_move($this->dn, $new_dn);
+ $this->by_object['department'] = $baseobject;
+ return;
+ }
+ }
+ }
+ $this->dn= $new_dn;
+ $baseobject->dn= $this->dn;
+ $this->by_object['department']= $baseobject;
+ return(tabs::save(TRUE));
}
-}
+}
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>