Sign in to follow this  
Followers 1
Дмитрий Г

Пользовательский вид в зависимости от роли

    1 post in this topic

    Posted (edited)

    Всем привет!

    Нужно было, чтобы в зависимости от роли, по разному отображались модули. Долго искал решение вопроса, как на забугорных, так и на наших сайтах, полного решения нигде не нашел. Даже имея под рукой готовую систему как образец кастомизированную профи (а я таким себяне считаю =))) ), нашел в ней только вариант с использованием 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;
        }
    }

     

    Edited by Дмитрий Г
    нашел неточности в описании
    1 person likes this

    Share this post


    Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!


    Register a new account

    Sign in

    Already have an account? Sign in here.


    Sign In Now
    Sign in to follow this  
    Followers 1