Ejemplo n.º 1
0
 public function save(Vtiger_Request $request)
 {
     $blockId = $request->get('blockid');
     $sourceModule = $request->get('sourceModule');
     $modueInstance = Vtiger_Module_Model::getInstance($sourceModule);
     if (!empty($blockId)) {
         $blockInstance = Settings_LayoutEditor_Block_Model::getInstance($blockId);
         $blockInstance->set('display_status', $request->get('display_status'));
         $isDuplicate = false;
     } else {
         $blockInstance = new Settings_LayoutEditor_Block_Model();
         $blockInstance->set('label', $request->get('label'));
         $blockInstance->set('iscustom', '1');
         //Indicates block id after which you need to add the new block
         $beforeBlockId = $request->get('beforeBlockId');
         if (!empty($beforeBlockId)) {
             $beforeBlockInstance = Vtiger_Block_Model::getInstance($beforeBlockId);
             $beforeBlockSequence = $beforeBlockInstance->get('sequence');
             $newBlockSequence = $beforeBlockSequence + 1;
             //To give sequence one more than prev block
             $blockInstance->set('sequence', $newBlockSequence);
             //push all other block down so that we can keep new block there
             Vtiger_Block_Model::pushDown($beforeBlockSequence, $modueInstance->getId());
         }
         $isDuplicate = Vtiger_Block_Model::checkDuplicate($request->get('label'), $modueInstance->getId());
     }
     $response = new Vtiger_Response();
     if (!$isDuplicate) {
         try {
             $id = $blockInstance->save($modueInstance);
             $responseInfo = array('id' => $id, 'label' => $blockInstance->get('label'), 'isCustom' => $blockInstance->isCustomized(), 'beforeBlockId' => $beforeBlockId, 'isAddCustomFieldEnabled' => $blockInstance->isAddCustomFieldEnabled());
             if (empty($blockId)) {
                 //if mode is create add all blocks sequence so that client will place the new block correctly
                 $responseInfo['sequenceList'] = Vtiger_Block_Model::getAllBlockSequenceList($modueInstance->getId());
             }
             $response->setResult($responseInfo);
         } catch (Exception $e) {
             $response->setError($e->getCode(), $e->getMessage());
         }
     } else {
         $response->setError('502', vtranslate('LBL_DUPLICATES_EXIST', $request->getModule(false)));
     }
     $response->emit();
 }