Sign in to follow this  
Followers 1
Алексей

Как разделить homepage ровно пополам, а не 60 на 40

    6 posts in this topic

    Как разделить homepage ровно пополам, а не 60 на 40.

    Вроде $columns[0]['width'] = '60%' поменял уже везде, где можно...

    Share this post


    Link to post
    Share on other sites

    Пропорции оторажения колонок той или иной страницы на главной берутся из настроек, записанных в текущем пользователе, который просматривает страницу. В целом работает это так:

    • Пользователь нажимает на главной кноку добавления новой страницы. Ему показывается диалоговое окно названия этой страницы и количество колонок на ней. В зависимости от того, сколько колонок указано, сразу на этом этапе назначаются пропорции. Назначаются они в файле custom/modules/Home/AddDashboardPages.php. У меня это начиная с 41 строки:
    1. switch ($numberColumns) {
          case 1:
              $pagecolumns[0] = array();
              $pagecolumns[0]['dashlets'] = array();
              $pagecolumns[0]['width'] = '100%';
              break;
          case 2:
              $pagecolumns[0] = array();
              $pagecolumns[0]['dashlets'] = array();
              $pagecolumns[0]['width'] = '60%';
              $pagecolumns[1] = array();
              $pagecolumns[1]['dashlets'] = array();
              $pagecolumns[1]['width'] = '40%';
              break;
          case 3:
              $pagecolumns[0] = array();
              $pagecolumns[0]['dashlets'] = array();
              $pagecolumns[0]['width'] = '30%';
              $pagecolumns[1] = array();
              $pagecolumns[1]['dashlets'] = array();
              $pagecolumns[1]['width'] = '30%';
              $pagecolumns[2] = array();
              $pagecolumns[2]['dashlets'] = array();
              $pagecolumns[2]['width'] = '30%';
              break;
      }
      
    • Как тут видно что для 1 колонки - это 100%, для 2-х колонок это 60% и 40% и для 3-х колонок это по 30%. Тебе, чтобы сделать для двух колонок по 50% необходимо подправить эти значения.
    • Но все это будет действовать для вновь создаваемых страниц. Значения для уже существующих страниц подгружаются вот так:
    1. $pages = $current_user->getPreference('pages', 'Home');
    • Это значит, что надо искать в таблице `user_preferences` строку для `assigned_user_id` = 'текущий_пользователь' и `category` = 'Home'. В поле `contents` будет находиться сериализованный массив с настройками главной страницы текущего пользователя. Ты можешь сделать unserialize(base64_decode()) для этого значения, найти параметры width там и пихнуть обратно все в базу сделав предварительно serialize(base64_encode()) полученному исправленному массиву. Ну или скинуть настройки главной страницы выбранных пользователей в админке в редактировании пользователей.

    должно помочь

    1 person likes this

    Share this post


    Link to post
    Share on other sites

    Спасибо, я это тоже нашел, но при изменении значения поля `contents` в  `user_preferences` в результате запроса

    $sql= "
        SELECT
            `contents`    
        FROM
            `user_preferences`
        WHERE
            category =  'Home'
            AND     assigned_user_id = 1";

    $result = $db->query($sql, true);
    while($row = $db->fetchByAssoc($result)) {
    print_array(unserialize(base64_decode($row[contents])));
    }

    выводится

        [pages] => Array
            (
                [0] => Array
                    (
                        [columns] => Array
                            (
                                [0] => Array
                                    (
                                        [width] => 50%
                                        [dashlets] => Array
                                            (
                                                [0] => 678115e9-8909-8b10-84f2-56ee76fab7f1
                                                [1] => 3ad15871-94a3-22f9-d12f-56ec7bc75b34
                                                [2] => 11e5033a-d45b-d7c5-0e9d-56d47e3c78ea
                                                [3] => 3bc2121c-61d6-f0ff-e124-56e072d7dde5
                                            )
    
                                    )
    
                                [1] => Array
                                    (
                                        [width] => 50%
                                        [dashlets] => Array
                                            (
                                                [0] => 9ae0c1fe-9909-88cb-ac37-56e072adf740
                                                [1] => d5c3ca0c-6e91-8efa-39c0-56e072b1b457
                                            )
    
                                    )
    
                            )
    
                        [numColumns] => 3
                        [pageTitleLabel] => LBL_HOME_PAGE_1_NAME
                    )
    
            )

     а в как результат

    $pages = $current_user->getPreference('pages', 'Home');

    Array
    (
        [0] => Array
            (
                [columns] => Array
                    (
                        [0] => Array
                            (
                                [width] => 60%
                                [dashlets] => Array
                                    (
                                        [0] => 678115e9-8909-8b10-84f2-56ee76fab7f1
                                        [1] => 3ad15871-94a3-22f9-d12f-56ec7bc75b34
                                        [2] => 11e5033a-d45b-d7c5-0e9d-56d47e3c78ea
                                        [3] => 3bc2121c-61d6-f0ff-e124-56e072d7dde5
                                    )
    
                            )
    
                        [1] => Array
                            (
                                [width] => 40%
                                [dashlets] => Array
                                    (
                                        [0] => 9ae0c1fe-9909-88cb-ac37-56e072adf740
                                        [1] => d5c3ca0c-6e91-8efa-39c0-56e072b1b457
                                    )
    
                            )
    
                    )
    
                [numColumns] => 3
                [pageTitleLabel] => LBL_HOME_PAGE_1_NAME
            )
    
    )

    где $pag = $current_user->id;
    print_array($pag);

    1

    и после добавления любого дашлета на страницу, первый запрос начинает возвращать значения 60% и 40% (т. е. перезаписывается поле contents в user_preferences)

    Может проблема в том, что пользователь -> Администратор (т.е. id = 1)?

     

    Share this post


    Link to post
    Share on other sites
    1. попробуйте выйти и зайти в систему. иногда кеш в сессиях висит. не факт, что в этом функционале, но всеже
    2. 1 час назад, Алексей сказал:

      и после добавления любого дашлета на страницу, первый запрос начинает возвращать значения 60% и 40% (т. е. перезаписывается поле contents в user_preferences)

       

      так смысл в том, что после правки файла AddDashboardPages.php и указания там 50/50 надо добавлять не ДАШЛЕТ, а СТРАНИЦУ. Я так понимаю в момент создания страницы задаются ее настройки, и все дашлеты потом на этой странице перенимают эти настройки.

    вот попробовал у себя:

    56efb15a55c8d_2016-03-2111-30-47CRMHosti

    Share this post


    Link to post
    Share on other sites

     

    4 часа назад, SpravkaCRM.ru сказал:

    попробуйте выйти и зайти в систему. иногда кеш в сессиях висит. не факт, что в этом функционале, но всеже

    Спасибо, все помогло. Дело было действительно в кэше. Разлогинился -> поменял значение в БД -> залогинился снова, и всё ОК.

    PS Кстати, огромное спасибо за ресурс )

    Share this post


    Link to post
    Share on other sites
    Только что, Алексей сказал:

     

    Спасибо, все помогло. Дело было действительно в кэше. Разлогинился -> поменял значение в БД -> залогинился снова, и всё ОК.

    PS Кстати, огромное спасибо за ресурс )

    ок, я рад, что получилось!

    заходите еще, если будут вопросы ;)

    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