X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_CopyPasteHandler.inc;h=afb2a117ec147840cf00c55b04a2e4a639b476e8;hb=45af86cd801883d1c4032ec539db39156a328058;hp=660c351cc03a3b276c9be2083020d9265a17c737;hpb=e3f11f5fb10b5d3ff8257cd8d13717c92eadab54;p=gosa.git diff --git a/include/class_CopyPasteHandler.inc b/include/class_CopyPasteHandler.inc index 660c351cc..afb2a117e 100644 --- a/include/class_CopyPasteHandler.inc +++ b/include/class_CopyPasteHandler.inc @@ -10,20 +10,21 @@ class CopyPasteHandler { var $dialogOpen = false; var $objectdn = false; - /* Create CP handler - */ + var $lastdn = ""; + + var $was_successfull = false; + + /* Create CP handler */ function CopyPasteHandler($config){ $this->config = $config; $this->current= NULL; } - /* Returns wether the current object can be pasted - */ + /* Returns wether the current object can be pasted */ function isCurrentObjectPastAble(){ - /* Check if we got a valid object - */ + /* Check if we got a valid object */ if($this->current == NULL){ return(false); } @@ -31,8 +32,7 @@ class CopyPasteHandler { } - /* Clears all copy & paste informations - */ + /* Clears all copy & paste informations */ function Clear() { $this->copyCurrent = false; @@ -42,27 +42,35 @@ class CopyPasteHandler { } - /* return current obejct dn - */ + /* return current obejct dn */ function GetCurrentDn() { return($this->objectdn); } - /* Add Object which should be copied - */ + /* Add Object which should be copied */ function Copy($obj,$emptyObj) { $this->copyCurrent = true; $this->objectdn = $obj->dn; $this->current = $emptyObj; + + if(!isset($obj->by_object)){ + trigger_error("No valid tab object specified for copy & paste."); + return; + } + foreach($obj->by_object as $name => $obj){ - foreach($obj->attributes as $attr){ - $this->current->by_object[$name]->$attr = $obj->$attr; - } - foreach(array('is_account') as $attr){ - $this->current->by_object[$name]->$attr = $obj->$attr; + + /* Prepare every single class, to be copied */ + $this->current->by_object[$name]->PrepareForCopyPaste($obj); + + /* handle some special vars */ + foreach(array("is_account") as $attr){ + if(isset($obj->$attr)){ + $this->current->by_object[$name]->$attr = $obj->$attr; + } } } if($this->isCurrentObjectPastAble()){ @@ -75,8 +83,7 @@ class CopyPasteHandler { } - /* Add Object which should be cutted - */ + /* Add Object which should be cutted */ function Cut($obj){ $this->cutCurrent = true; $this->current = $obj; @@ -92,118 +99,155 @@ class CopyPasteHandler { /* Returns true if current object - * is cutted. And awaits to be pasted anywhere - */ + * is cutted. And awaits to be pasted anywhere */ function isCurrentCutted(){ return($this->cutCurrent); } /* Returns true if current object - * was copied, and awaits to be pasted again - */ + * was copied, and awaits to be pasted again */ function isCurrentCopied(){ return($this->copyCurrent); } - /* stillOpen - */ + /* Returns true if the copy$paste dialog is still open */ function stillOpen(){ if(isset($_POST['AbortCopyPaste'])){ $this->dialogOpen = false; } - return($this->dialogOpen); } - /* Displays a dialog which allows the user to fix all dependencies of this object. - Create unique names, ids, or what ever - */ - function execute() - { - $this->dialogOpen = true; - - /* Cut & paste - */ - if($this->cutCurrent){ - $this->current->save(); - $this->dialogOpen =false; - $smarty = get_smarty(); - $smarty->assign("Complete",true); - $this->Clear(); - return($smarty->fetch(get_template_path("copyPasteDialog.tpl",FALSE))); - - /* Copy & paste - */ - }else{ - if(isset($_POST['PerformCopyPaste'])){ - $msgs = $this->check(); - if(count ($msgs) ){ - foreach( $msgs as $msg){ - print_red($msg); - } - }else{ - $this->current->save(); - $this->dialogOpen =false; - $smarty = get_smarty(); - $smarty->assign("Complete",true); - $this->Clear(); - return($smarty->fetch(get_template_path("copyPasteDialog.tpl",FALSE))); - } - } - $smarty = get_smarty(); - $smarty->assign("Complete",false); - $smarty->assign("AttributesToFix",$this->generateAttributesToFix()); - $smarty->assign("objectDN" ,$this->objectdn); - return($smarty->fetch(get_template_path("copyPasteDialog.tpl",FALSE))); - } - } - - /* Create dialog which asks unique attributes values ... - * calls tabs -> getCopyDialog() - * which calls tab -> getCopyDialog() - */ - function generateAttributesToFix() - { - return($this->current->getCopyDialog()); - } + /* Displays a dialog which allows the user to fix all dependencies of this object. + Create unique names, ids, or what ever */ + function execute() + { + $this->dialogOpen = true; + + /* Cut & paste + */ + if($this->cutCurrent){ + + if(isset($_POST['PerformCopyPaste'])){ + $msgs = $this->check(); + if(count ($msgs) ){ + foreach( $msgs as $msg){ + print_red($msg); + } + }else{ + $this->current->save(); + $this->dialogOpen =false; + $this->Clear(); + } + } + if($this->current){ + $smarty = get_smarty(); + $smarty->assign("type","cut"); + $smarty->assign("Complete",false); + $smarty->assign("AttributesToFix"," "); + $smarty->assign("SubDialog",$this->current->SubDialog); + $smarty->assign("objectDN" ,$this->objectdn); + $smarty->assign("message", sprintf(_("You are going to paste the cutted entry '%s'."), $this->objectdn)); + return($smarty->fetch(get_template_path("copyPasteDialog.tpl",FALSE))); + } + + /* Copy & paste + */ + }else{ + if(isset($_POST['PerformCopyPaste'])){ + $msgs = $this->check(); + if(count ($msgs) ){ + foreach( $msgs as $msg){ + print_red($msg); + } + }else{ + $this->current->save(); + $this->lastdn = $this->current->dn; + $this->dialogOpen =false; + $this->Clear(); + } + } + if($this->current){ + $smarty = get_smarty(); + $smarty->assign("type","copy"); + $smarty->assign("Complete",false); + $smarty->assign("AttributesToFix",$this->generateAttributesToFix()); + $smarty->assign("SubDialog",$this->current->SubDialog); + $smarty->assign("objectDN" ,$this->objectdn); + $smarty->assign("message", sprintf(_("You are going to paste the copied entry '%s'."), $this->objectdn)); + return($smarty->fetch(get_template_path("copyPasteDialog.tpl",FALSE))); + } + } + } + + /* Create dialog which asks unique attributes/values ... + * call tabs -> getCopyDialog() + * which calls tab -> getCopyDialog() */ + function generateAttributesToFix() + { + if($this->current){ + return($this->current->getCopyDialog()); + } + } /* Set a single attribute to specified value - * example : ("base", $newBase ); - */ - function SetVar($name,$value) - { - foreach($this-> current->by_object as $key => $obj){ - if(isset($this->current->by_object[$key]->$name)){ - $this->current->by_object[$key]->$name = $value; - } - } - } - - - /* Save new values posted by copy & paste dialog - */ - function save_object() - { - /* Assign posted var to all tabs + * example : ("base", $newBase ); */ + function SetVar($name,$value) + { + foreach($this-> current->by_object as $key => $obj){ + if(isset($this->current->by_object[$key]->$name)){ + $this->current->by_object[$key]->$name = $value; + } + } + } + + + /* Save new values posted by copy & paste dialog */ + function save_object() + { + /* Assign posted var to all tabs */ - $this->current->saveCopyDialog(); + if($this->current){ + $this->current->saveCopyDialog(); + } } - /* Returns possible errors returned from all including tabs .. - */ - function check() - { - $ret = array(); - foreach($this-> current->by_object as $obj){ - $ret = array_merge($ret , $obj->check()); - } - return($ret); - } + /* Returns errors from including tabs. */ + function check() + { + $ret = array(); + foreach($this-> current->by_object as $obj){ + if($obj->is_account){ + $ret = array_merge($ret , $obj->check()); + } + } + return($ret); + } + + + /* returns the paste icon for headpages */ + function generatePasteIcon() + { + $Copy_Paste= "  "; + if($this->isCurrentObjectPastAble()){ + if($this->isCurrentCutted()){ + $img= "images/cutpaste.png"; + }else{ + $img= "images/copypaste.png"; + } + $Copy_Paste.= " "; + }else{ + $Copy_Paste.= "\""._("Can't "; + } + + return ($Copy_Paste); + } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: