Дмитрий Г

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

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