Search the Community

Showing results for tags 'editview'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Found 3 results

  1. Всем привет! Нужно было, чтобы в зависимости от роли, по разному отображались модули.Долго искал решение вопроса, как на забугорных, так и на наших сайтах, полного решения нигде не нашел. Даже имея под рукой готовую систему как образец кастомизированную профи (а я таким себяне считаю =))) ), нашел в ней только вариант с использованием js скриптов, что меня не совсем устраивало. В итоге пришлось самому с помощью разных источников, красных глаз и многих сигарет создавать свое. Все работает =)))) как на родных, так и на своих модулях. Вид просмотра делается аналогично. Кому надо - берите Если найдете ошибки или идеи для оптимизации - пишите сюда - буду рад видеть. <?php // для переключения вида правки модуля dgkey_productsia в зависимости от роли // этот файл должен лежать в custom/modules/dgkey_productsia/views/view.edit.php // также должен быть подготовлен файл // /custom/modules/dgkey_productsia/metadata/editviewdefs2.php с пользовательским видом require_once('include/MVC/View/views/view.edit.php'); class dgkey_productsiaViewEdit extends ViewEdit // dgkey_productsia - название модуля, ViewEdit берем из аналогичного файла // в папке view установленнго модуля или /include/MVC/View/views/view.detail.php { private $manager; // пользовательское название function dgkey_productsiaViewEdit() // название функции берем из аналогичного файла в папке view установленнго модуля { unlink ('cache/modules/dgkey_productsia/EditView.tpl'); // отключает закэшированный } public function getMetaDataFile() // переписывает это - /include/MVC/View/SugarView.php { $metadataFile = null; $foundViewDefs = false; // идем проверяем роль текущего пользователя и если она ZakupControl // этого устанавливаем $viewDef = 'editviewdefs2' $objACLRole = new ACLRole(); $roles = $objACLRole->getUserRoles($GLOBALS['current_user']->id); if(in_array('ZakupControl',$roles)){ $viewDef = 'editviewdefs2'; } else{ $viewDef = 'editviewdefs'; } $coreMetaPath = 'modules/'.$this->module.'/metadata/' . $viewDef . '.php'; $metadataFile = 'custom/' . $coreMetaPath; return $metadataFile; } }
  2. Кирилл: Добрый день! Искал на форуме информацию о том - как создать свой вид для отображения карточки редактирования, так и не нашел . Вообще такое возможно ? 11:51:07 Евгений: 11:51:27 Добрый день! для стандартного action=EditView 11:51:56 11:52:32 как правило работа с картами ограничена регулированием состава и месторасположения тех или иных полей и кнопок логика просто нужна такая - в зависимости от выбранного Селекта, показывать или прятать другие поля для редактирования в карте 11:53:11 11:53:37 в базовом функционале SuiteCRM этого нет 11:53:44 подобное есть в SugarCRM Pro 11:53:50 но оно не бесплатно Т.е. лучше создать свои отдельные экшены и там их кастомизировать ?! 11:53:57 11:54:35 лично мой опыт подобного - это подключается к странице javascript, который при помощи jquery отображает/скрывает те или иные поля 11:55:56 ну тоесть настраиваем $('#айдиполясселектом').change(function(){ а тут отображаем или скрываем другие поля}); с этим нет проблем. Просто поля будут местами скрыты и получаются пробелы ) а хочется чтобы они взаимно подтягивались к верху, но так как там таблица, а не бутстраповские grid блоки (к примеру) организовать такую структуру сложнее 11:56:46 вот и хотелось изменить шаблон вывода полей на свой 11:56:56 11:57:00 ну тогда видимо нужно использовать какую то кастомную вьюху вот ))) 11:57:05 можно ли кастомную вьюху создать для стандартного Экшена Редактирования карты ? 11:57:18 переопределить каким то образом ? 11:57:31 12:04:17 да 12:04:19 смотрите 12:04:59 в /custom/modules/Модуль/controller.php можно задавать свои собствннные контроллеры для модуля 12:05:16 В нужном вам модуле добавляете такой файл и в него: 12:05:47 <?php require_once('include/MVC/Controller/SugarController.php'); class МодульController extends SugarController { function action_EditViewCustom() { $this->view = "editcustom"; } } ?> 12:06:00 не, не так 12:06:02 так: 12:06:13 <?php require_once('include/MVC/Controller/SugarController.php'); class МодульController extends SugarController { function action_EditView() { $this->view = "editcustom"; } } ?> 12:06:33 таким образом вы определили свою новую вьюху для стандартного действия EditView 12:06:39 и назвали ее editcustom другие действия. как я понимаю, изменение не затронет ни коим образом?! ) 12:07:00 12:07:03 теперь создаем файл: /custom/modules/Модуль/views/view.editcustom.php 12:07:27 и в нем будет: да этот момент я помню из Ваших видео, довольно смышленая идея так разделить файлы 12:07:30 12:07:45 <?php if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); class МодульViewEditCustom extends МодульObjectsViewEdit { } ?> 12:08:16 ну а в нутри уже по образу и подобию того, что есть в /custom/modules/Модуль/views/view.edit.php class AccountsViewDetail extends ViewDetail 12:08:31 только название своего модуля 12:08:43 12:09:00 ViewDetail не путать только с ViewEdit 12:09:10 а так по такому принципу и делать везде это само собой, но там суть видна из названий 12:09:13 12:09:22 и изменения будут касаться только того модуля, где это все определено и того экшена для которого Переопределено 12:09:33 12:09:36 ну да верно ? 12:09:36 12:09:43 для EditView в данном случае ок - попробую сейчас 12:09:44 классы у меня получилось сделать - добился контроля над ситуацией, но остается один вопрос - как подключить теперь файл TPL шаблона и как в него переменне передать ? 13:02:16 13:05:42 через $this->view_object_map['tpl'] 13:06:04 один из вариантов 13:06:05 public function display() { $tpl = $this->view_object_map['tpl']; $sugarSmarty = new Sugar_Smarty(); $sugarSmarty->assign('CALENDAR_FORMAT', $GLOBALS['timedate']->get_cal_date_format()); $sugarSmarty->assign('CALENDAR_FDOW', $GLOBALS['current_user']->get_first_day_of_week()); $sugarSmarty->assign("tpl", $this->view_object_map['tpl']); $sugarSmarty->display($tpl['template']); } 13:06:34 или 13:06:35 global $current_user; $tpl['date_format'] = $current_user->getPreference('date_format'); $tpl['template'] = 'custom/modules/nra_Contracts/tpls/Prolongation.tpl'; $tpl['prolongation_statuses'] = $GLOBALS['app_list_strings']['prolongation_statuses']; $tpl['find_prolongation_statuses'] = $GLOBALS['app_list_strings']['prolongation_statuses']; unset($tpl['find_prolongation_statuses']['']); $tpl['contract_statuses_list'] = $GLOBALS['app_list_strings']['contract_statuses_list']; $tpl['refusal_prolongation_reasons'] = $GLOBALS['app_list_strings']['refusal_prolongation_reasons']; $this->view = "default"; $this->view_object_map['tpl'] = $tpl;
  3. В этом видео я на примере добавления кнопки для генерации паролей расскажу как можно добавлять кнопки в редактирование карточек модулей и назначать обработчик их кликов.