/** * @service theme write * * @return Gpf_Rpc_Action */ public function save(Gpf_Rpc_Params $params) { $form = new Gpf_Rpc_Form($params); $newThemeId = str_replace(' ', '_', $form->getFieldValue('name')); $srcTheme = new Gpf_Desktop_Theme($form->getFieldValue('Id') , $form->getFieldValue('panelName')); $srcPath = $srcTheme->getThemePath(); $targetPath = new Gpf_Io_File($srcPath->getParent().$newThemeId); try{ $targetPath->mkdir(); $srcPath->recursiveCopy($targetPath); $newTheme = new Gpf_Desktop_Theme($newThemeId , $form->getFieldValue('panelName')); $newTheme->load(); $newTheme->setName($form->getFieldValue('name')); $newTheme->setAuthor($form->getFieldValue('author')); $newTheme->setUrl($form->getFieldValue('url')); $newTheme->setDescription($form->getFieldValue('description')); $newTheme->setBuiltIn(false); $newTheme->save(); }catch(Gpf_Exception $ex){ $form->setErrorMessage($ex->getMessage()); } $form->setField('themeId', $newThemeId); return $form; }