晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/akaindir/www/crm/modules/Settings/LayoutEditor/views/ |
Upload File : |
<?php
/*+**********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
************************************************************************************/
class Settings_LayoutEditor_Index_View extends Settings_Vtiger_Index_View {
function __construct() {
parent::__construct();
$this->exposeMethod('showFieldLayout');
$this->exposeMethod('showRelatedListLayout');
$this->exposeMethod('showFieldEdit');
$this->exposeMethod('showDuplicationHandling');
}
public function process(Vtiger_Request $request) {
$mode = $request->getMode();
switch($mode) {
case 'showRelatedListLayout' : $selectedTab = 'relatedListTab'; break;
case 'showDuplicationHandling' : $selectedTab = 'duplicationTab'; break;
default : $selectedTab = 'detailViewTab';
if (!$mode) {
$mode = 'showFieldLayout';
}
break;
}
$sourceModule = $request->get('sourceModule');
$supportedModulesList = Settings_LayoutEditor_Module_Model::getSupportedModules();
$supportedModulesList = array_flip($supportedModulesList);
ksort($supportedModulesList);
$viewer = $this->getViewer($request);
$viewer->assign('MODE', $mode);
$viewer->assign('SELECTED_TAB', $selectedTab);
$viewer->assign('SUPPORTED_MODULES', $supportedModulesList);
$viewer->assign('REQUEST_INSTANCE', $request);
if ($sourceModule) {
$viewer->assign('SELECTED_MODULE_NAME', $sourceModule);
}
if($this->isMethodExposed($mode)) {
$this->invokeExposedMethod($mode, $request);
}else {
//by default show field layout
$this->showFieldLayout($request);
}
}
public function showFieldLayout(Vtiger_Request $request) {
$sourceModule = $request->get('sourceModule');
$supportedModulesList = Settings_LayoutEditor_Module_Model::getSupportedModules();
$supportedModulesList = array_flip($supportedModulesList);
ksort($supportedModulesList);
if(empty($sourceModule)) {
//To get the first element
$sourceModule = reset($supportedModulesList);
}
$moduleModel = Settings_LayoutEditor_Module_Model::getInstanceByName($sourceModule);
$fieldModels = $moduleModel->getFields();
$blockModels = $moduleModel->getBlocks();
$blockIdFieldMap = array();
$inactiveFields = array();
$headerFieldsCount = 0;
$headerFieldsMeta = array();
foreach ($fieldModels as $fieldModel) {
$blockIdFieldMap[$fieldModel->getBlockId()][$fieldModel->getName()] = $fieldModel;
if(!$fieldModel->isActiveField()) {
$inactiveFields[$fieldModel->getBlockId()][$fieldModel->getId()] = vtranslate($fieldModel->get('label'), $sourceModule);
}
if ($fieldModel->isHeaderField()) {
$headerFieldsCount++;
}
$headerFieldsMeta[$fieldModel->getId()] = $fieldModel->isHeaderField() ? 1 : 0;
}
foreach($blockModels as $blockLabel => $blockModel) {
$fieldModelList = $blockIdFieldMap[$blockModel->get('id')];
$blockModel->setFields($fieldModelList);
}
$cleanFieldModel = Settings_LayoutEditor_Field_Model::getCleanInstance();
$cleanFieldModel->setModule($moduleModel);
$qualifiedModule = $request->getModule(false);
$viewer = $this->getViewer($request);
$viewer->assign('CLEAN_FIELD_MODEL', $cleanFieldModel);
$viewer->assign('REQUEST_INSTANCE', $request);
$viewer->assign('SELECTED_MODULE_NAME', $sourceModule);
$viewer->assign('SELECTED_MODULE_MODEL', $moduleModel);
$viewer->assign('BLOCKS',$blockModels);
$viewer->assign('SUPPORTED_MODULES',$supportedModulesList);
$viewer->assign('ADD_SUPPORTED_FIELD_TYPES', $moduleModel->getAddSupportedFieldTypes());
$viewer->assign('FIELD_TYPE_INFO', $moduleModel->getAddFieldTypeInfo());
$viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
$viewer->assign('QUALIFIED_MODULE', $qualifiedModule);
$viewer->assign('IN_ACTIVE_FIELDS', $inactiveFields);
$viewer->assign('HEADER_FIELDS_COUNT', $headerFieldsCount);
$viewer->assign('HEADER_FIELDS_META', $headerFieldsMeta);
$cleanFieldModel = Settings_LayoutEditor_Field_Model::getCleanInstance();
$cleanFieldModel->setModule($moduleModel);
$sourceModuleModel = Vtiger_Module_Model::getInstance($sourceModule);
$this->setModuleInfo($request, $sourceModuleModel, $cleanFieldModel);
if ($request->isAjax() && !$request->get('showFullContents')) {
$viewer->view('FieldsList.tpl', $qualifiedModule);
} else {
$viewer->view('Index.tpl', $qualifiedModule);
}
}
public function showRelatedListLayout(Vtiger_Request $request) {
$sourceModule = $request->get('sourceModule');
$supportedModulesList = Settings_LayoutEditor_Module_Model::getSupportedModules();
if(empty($sourceModule)) {
//To get the first element
$moduleInstance = reset($supportedModulesList);
$sourceModule = $moduleInstance->getName();
}
$moduleModel = Settings_LayoutEditor_Module_Model::getInstanceByName($sourceModule);
$relatedModuleModels = $moduleModel->getRelations();
$hiddenRelationTabExists = false;
foreach ($relatedModuleModels as $relationModel) {
if (!$relationModel->isActive()) {
// to show select hidden element only if inactive tab exists
$hiddenRelationTabExists = true;
break;
}
}
$relationFields = array();
$referenceFields = $moduleModel->getFieldsByType('reference');
foreach ($referenceFields as $fieldModel) {
if ($fieldModel->get('uitype') == '52' || !$fieldModel->isActiveField()) {
continue;
}
$relationType = $moduleModel->getRelationTypeFromRelationField($fieldModel);
$fieldModel->set('_relationType', $relationType);
$relationFields[$fieldModel->getName()] = $fieldModel;
}
$qualifiedModule = $request->getModule(false);
$viewer = $this->getViewer($request);
$viewer->assign('SELECTED_MODULE_NAME', $sourceModule);
$viewer->assign('RELATED_MODULES', $relatedModuleModels);
$viewer->assign('RELATION_FIELDS', $relationFields);
$viewer->assign('HIDDEN_TAB_EXISTS', $hiddenRelationTabExists);
$viewer->assign('MODULE_MODEL', $moduleModel);
$viewer->assign('QUALIFIED_MODULE', $qualifiedModule);
if ($request->isAjax() && !$request->get('showFullContents')) {
$viewer->view('RelatedList.tpl', $qualifiedModule);
} else {
$viewer->view('Index.tpl', $qualifiedModule);
}
}
public function showFieldEdit(Vtiger_Request $request) {
$sourceModule = $request->get('sourceModule');
$fieldId = $request->get('fieldid');
$fieldInstance = Settings_LayoutEditor_Field_Model::getInstance($fieldId);
$moduleModel = Settings_LayoutEditor_Module_Model::getInstanceByName($sourceModule);
$fieldModels = $moduleModel->getFields();
$headerFieldsCount = 0;
foreach ($fieldModels as $fieldModel) {
if ($fieldModel->isHeaderField()) {
$headerFieldsCount++;
}
}
$qualifiedModule = $request->getModule(false);
$viewer = $this->getViewer($request);
$viewer->assign('FIELD_INFO', $fieldInstance->getFieldInfo());
$viewer->assign('SELECTED_MODULE_NAME', $sourceModule);
$viewer->assign('ADD_SUPPORTED_FIELD_TYPES', $moduleModel->getAddSupportedFieldTypes());
$viewer->assign('FIELD_TYPE_INFO', $moduleModel->getAddFieldTypeInfo());
$viewer->assign('FIELD_MODEL', $fieldInstance);
$viewer->assign('IS_FIELD_EDIT_MODE', true);
$viewer->assign('QUALIFIED_MODULE', $qualifiedModule);
$viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
$viewer->assign('HEADER_FIELDS_COUNT', $headerFieldsCount);
$viewer->assign('IS_NAME_FIELD', in_array($fieldInstance->getName(), $moduleModel->getNameFields()));
$cleanFieldModel = Settings_LayoutEditor_Field_Model::getCleanInstance();
$cleanFieldModel->setModule($moduleModel);
$sourceModuleModel = Vtiger_Module_Model::getInstance($sourceModule);
$this->setModuleInfo($request, $sourceModuleModel, $cleanFieldModel);
$viewer->view('FieldCreate.tpl', $qualifiedModule);
}
public function showDuplicationHandling(Vtiger_Request $request) {
$qualifiedModule = $request->getModule(false);
$sourceModuleName = $request->get('sourceModule');
$moduleModel = Vtiger_Module_Model::getInstance($sourceModuleName);
$blocks = $moduleModel->getBlocks();
$fields = array();
foreach ($blocks as $blockId => $blockModel) {
$blockFields = $blockModel->getFields();
foreach ($blockFields as $key => $fieldModel) {
if ($fieldModel->isEditable()
&& $fieldModel->get('displaytype') != 5
&& !in_array($fieldModel->get('uitype'), array(28, 30, 53, 56, 69, 83))
&& !in_array($fieldModel->getFieldDataType(), array('text', 'multireference'))) {
$fields[$blockModel->get('label')][$fieldModel->getName()] = $fieldModel;
}
}
}
$viewer = $this->getViewer($request);
$viewer->assign('FIELDS', $fields);
$viewer->assign('SOURCE_MODULE', $sourceModuleName);
$viewer->assign('QUALIFIED_MODULE', $qualifiedModule);
$viewer->assign('SOURCE_MODULE_MODEL', $moduleModel);
$viewer->assign('ACTIONS', Vtiger_Module_Model::getSyncActionsInDuplicatesCheck());
$viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
if ($request->isAjax() && !$request->get('showFullContents')) {
$viewer->view('DuplicateHandling.tpl', $qualifiedModule);
} else {
$viewer->view('Index.tpl', $qualifiedModule);
}
}
/**
* Function to get the list of Script models to be included
* @param Vtiger_Request $request
* @return <Array> - List of Vtiger_JsScript_Model instances
*/
function getHeaderScripts(Vtiger_Request $request) {
$headerScriptInstances = parent::getHeaderScripts($request);
$jsFileNames = array(
'~libraries/garand-sticky/jquery.sticky.js',
'~/libraries/jquery/bootstrapswitch/js/bootstrap-switch.min.js',
);
$jsScriptInstances = $this->checkAndConvertJsScripts($jsFileNames);
$headerScriptInstances = array_merge($headerScriptInstances, $jsScriptInstances);
return $headerScriptInstances;
}
/**
* Setting module related Information to $viewer (for Vtiger7)
* @param type $request
* @param type $moduleModel
*/
public function setModuleInfo($request, $moduleModel, $cleanFieldModel = false) {
$fieldsInfo = array();
$basicLinks = array();
$viewer = $this->getViewer($request);
if (method_exists($moduleModel, 'getFields')) {
$moduleFields = $moduleModel->getFields();
foreach ($moduleFields as $fieldName => $fieldModel) {
$fieldsInfo[$fieldName] = $fieldModel->getFieldInfo();
}
//To set the clean field meta for new field creation
if ($cleanFieldModel) {
$newfieldsInfo['newfieldinfo'] = $cleanFieldModel->getFieldInfo();
$viewer->assign('NEW_FIELDS_INFO', json_encode($newfieldsInfo));
}
$viewer->assign('FIELDS_INFO', json_encode($fieldsInfo));
}
if (method_exists($moduleModel, 'getModuleBasicLinks')) {
$moduleBasicLinks = $moduleModel->getModuleBasicLinks();
foreach ($moduleBasicLinks as $basicLink) {
$basicLinks[] = Vtiger_Link_Model::getInstanceFromValues($basicLink);
}
$viewer->assign('MODULE_BASIC_ACTIONS', $basicLinks);
}
}
public function getHeaderCss(Vtiger_Request $request) {
$headerCssInstances = parent::getHeaderCss($request);
$cssFileNames = array(
'~/libraries/jquery/bootstrapswitch/css/bootstrap2/bootstrap-switch.min.css',
);
$cssInstances = $this->checkAndConvertCssStyles($cssFileNames);
$headerCssInstances = array_merge($headerCssInstances, $cssInstances);
return $headerCssInstances;
}
}