|
1
|
|
|
<?php |
|
2
|
|
|
/* +********************************************************************************** |
|
3
|
|
|
* The contents of this file are subject to the vtiger CRM Public License Version 1.1 |
|
4
|
|
|
* ("License"); You may not use this file except in compliance with the License |
|
5
|
|
|
* The Original Code is: vtiger CRM Open Source |
|
6
|
|
|
* The Initial Developer of the Original Code is vtiger. |
|
7
|
|
|
* Portions created by vtiger are Copyright (C) vtiger. |
|
8
|
|
|
* All Rights Reserved. |
|
9
|
|
|
* Contributor(s): YetiForce S.A. |
|
10
|
|
|
* ********************************************************************************** */ |
|
11
|
|
|
|
|
12
|
|
|
class Settings_LayoutEditor_Index_View extends Settings_Vtiger_Index_View |
|
13
|
|
|
{ |
|
14
|
|
|
use \App\Controller\ExposeMethod; |
|
15
|
|
|
|
|
16
|
|
|
public function __construct() |
|
17
|
|
|
{ |
|
18
|
|
|
parent::__construct(); |
|
19
|
|
|
$this->exposeMethod('showFieldLayout'); |
|
20
|
|
|
$this->exposeMethod('showRelatedListLayout'); |
|
21
|
|
|
} |
|
22
|
|
|
|
|
23
|
|
|
public function process(App\Request $request) |
|
24
|
|
|
{ |
|
25
|
|
|
$mode = $request->getMode(); |
|
26
|
|
|
if ($this->isMethodExposed($mode)) { |
|
27
|
|
|
$this->invokeExposedMethod($mode, $request); |
|
28
|
|
|
} else { |
|
29
|
|
|
//by default show field layout |
|
30
|
|
|
$this->showFieldLayout($request); |
|
31
|
|
|
} |
|
32
|
|
|
} |
|
33
|
|
|
|
|
34
|
|
|
public function showFieldLayout(App\Request $request) |
|
35
|
|
|
{ |
|
36
|
|
|
$qualifiedModule = $request->getModule(false); |
|
37
|
|
|
$activeTab = 'detailViewLayout'; |
|
38
|
|
|
if ($request->has('tab')) { |
|
39
|
|
|
$activeTab = $request->getByType('tab', \App\Purifier::ALNUM); |
|
40
|
|
|
} |
|
41
|
|
|
$sourceModule = $request->getByType('sourceModule', \App\Purifier::ALNUM); |
|
42
|
|
|
$supportedModulesList = Settings_LayoutEditor_Module_Model::getSupportedModules(); |
|
43
|
|
|
if (empty($sourceModule)) { |
|
44
|
|
|
//To get the first element |
|
45
|
|
|
$sourceModule = reset($supportedModulesList); |
|
46
|
|
|
} |
|
47
|
|
|
$moduleModel = Settings_LayoutEditor_Module_Model::getInstance($qualifiedModule)->setSourceModule($sourceModule); |
|
48
|
|
|
$fieldModels = $moduleModel->getFields(); |
|
49
|
|
|
$blockModels = $moduleModel->getBlocks(); |
|
50
|
|
|
|
|
51
|
|
|
$blockIdFieldMap = []; |
|
52
|
|
|
$inactiveFields = []; |
|
53
|
|
|
foreach ($fieldModels as $fieldModel) { |
|
54
|
|
|
$fieldName = $fieldModel->getName(); |
|
55
|
|
|
$lastItem = strrchr($fieldName, '_'); |
|
56
|
|
|
$firstItem = ''; |
|
57
|
|
|
if ('_extra' === $lastItem) { |
|
58
|
|
|
$firstItem = str_replace($lastItem, '', $fieldName); |
|
59
|
|
|
} |
|
60
|
|
|
if ((!empty($firstItem) && !empty($firstItemModuleModal = \Vtiger_Field_Model::getInstance($firstItem, \Vtiger_Module_Model::getInstance($sourceModule))) && $firstItemModuleModal->isActiveField() && $fieldModel->isActiveField()) && (11 == $firstItemModuleModal->getUIType()) && (1 == $fieldModel->getUIType())) { |
|
61
|
|
|
unset($fieldName); |
|
62
|
|
|
} else { |
|
63
|
|
|
$blockIdFieldMap[$fieldModel->getBlockId()][$fieldName] = $fieldModel; |
|
64
|
|
|
if (!$fieldModel->isActiveField()) { |
|
65
|
|
|
$inactiveFields[$fieldModel->getBlockId()][$fieldModel->getId()] = \App\Language::translate($fieldModel->getLabel(), $sourceModule); |
|
66
|
|
|
} |
|
67
|
|
|
} |
|
68
|
|
|
} |
|
69
|
|
|
foreach ($blockModels as $blockModel) { |
|
70
|
|
|
if (isset($blockIdFieldMap[$blockModel->get('id')])) { |
|
71
|
|
|
$fieldModelList = $blockIdFieldMap[$blockModel->get('id')]; |
|
72
|
|
|
$blockModel->setFields($fieldModelList); |
|
73
|
|
|
} |
|
74
|
|
|
} |
|
75
|
|
|
|
|
76
|
|
|
$isInvenotry = $moduleModel->getSourceModule()->isInventory(); |
|
77
|
|
|
$type = $isInvenotry ? Vtiger_Module_Model::STANDARD_TYPE : Vtiger_Module_Model::ADVANCED_TYPE; |
|
78
|
|
|
$batchMethod = (new \App\BatchMethod([ |
|
79
|
|
|
'method' => '\App\Module::changeType', |
|
80
|
|
|
'params' => [$sourceModule, $type], |
|
81
|
|
|
])); |
|
82
|
|
|
$viewer = $this->getViewer($request); |
|
83
|
|
|
$viewer->assign('ACTIVE_TAB', $activeTab); |
|
84
|
|
|
$viewer->assign('SELECTED_MODULE_NAME', $sourceModule); |
|
85
|
|
|
$viewer->assign('SUPPORTED_MODULES', $supportedModulesList); |
|
86
|
|
|
$viewer->assign('SELECTED_MODULE_MODEL', $moduleModel); |
|
87
|
|
|
$viewer->assign('BLOCKS', $blockModels); |
|
88
|
|
|
$viewer->assign('ADD_SUPPORTED_FIELD_TYPES', $moduleModel->getAddSupportedFieldTypes()); |
|
89
|
|
|
$viewer->assign('DISPLAY_TYPE_LIST', Vtiger_Field_Model::showDisplayTypeList()); |
|
90
|
|
|
$viewer->assign('MODULE', $qualifiedModule); |
|
91
|
|
|
$viewer->assign('QUALIFIED_MODULE', $qualifiedModule); |
|
92
|
|
|
$viewer->assign('IN_ACTIVE_FIELDS', $inactiveFields); |
|
93
|
|
|
$viewer->assign('IS_INVENTORY', $isInvenotry); |
|
94
|
|
|
$viewer->assign('CHANGE_MODULE_TYPE_DISABLED', $batchMethod->isExists()); |
|
95
|
|
|
$viewer->assign('INVENTORY_MODEL', Vtiger_Inventory_Model::getInstance($sourceModule)); |
|
96
|
|
|
$viewer->view('Index.tpl', $qualifiedModule); |
|
97
|
|
|
} |
|
98
|
|
|
|
|
99
|
|
|
public function showRelatedListLayout(App\Request $request) |
|
100
|
|
|
{ |
|
101
|
|
|
$qualifiedModule = $request->getModule(false); |
|
102
|
|
|
$supportedModulesList = Settings_LayoutEditor_Module_Model::getSupportedModules(); |
|
103
|
|
|
if ($request->isEmpty('sourceModule', true)) { |
|
104
|
|
|
//To get the first element |
|
105
|
|
|
$moduleName = reset($supportedModulesList); |
|
106
|
|
|
$sourceModule = Vtiger_Module_Model::getInstance($moduleName)->getName(); |
|
107
|
|
|
} else { |
|
108
|
|
|
$sourceModule = $request->getByType('sourceModule', \App\Purifier::ALNUM); |
|
109
|
|
|
} |
|
110
|
|
|
$moduleModel = Settings_LayoutEditor_Module_Model::getInstance($qualifiedModule)->setSourceModule($sourceModule); |
|
111
|
|
|
|
|
112
|
|
|
$viewer = $this->getViewer($request); |
|
113
|
|
|
$viewer->assign('SELECTED_MODULE_NAME', $sourceModule); |
|
114
|
|
|
$viewer->assign('MODULE_MULTI_REFERENCE_FIELDS', Settings_LayoutEditor_Module_Model::getMultiReferenceFieldsRelatedWithModule($sourceModule)); |
|
115
|
|
|
$viewer->assign('SUPPORTED_MODULES', $supportedModulesList); |
|
116
|
|
|
$viewer->assign('RELATED_MODULES', $moduleModel->getRelations()); |
|
117
|
|
|
$viewer->assign('MODULE', $qualifiedModule); |
|
118
|
|
|
$viewer->assign('BASE_CUSTOM_VIEW', [ |
|
119
|
|
|
'relation' => \App\Language::translate('LBL_RECORDS_FROM_RELATION'), |
|
120
|
|
|
'private' => \App\Language::translate('LBL_RCV_PRIVATE', $qualifiedModule), |
|
121
|
|
|
'all' => \App\Language::translate('LBL_RCV_ALL', $qualifiedModule), |
|
122
|
|
|
]); |
|
123
|
|
|
$viewer->assign('QUALIFIED_MODULE', $qualifiedModule); |
|
124
|
|
|
$viewer->view('RelatedList.tpl', $qualifiedModule); |
|
125
|
|
|
} |
|
126
|
|
|
|
|
127
|
|
|
public function getFooterScripts(App\Request $request) |
|
128
|
|
|
{ |
|
129
|
|
|
return array_merge(parent::getFooterScripts($request), $this->checkAndConvertJsScripts(['libraries.clipboard.dist.clipboard'])); |
|
130
|
|
|
} |
|
131
|
|
|
} |
|
132
|
|
|
|