Просмотр исходного кода

#2172 Grid: ability to hide some columns on mobile, desktop, tablet and option to disable responsive grid

Alex Trofimov 7 лет назад
Родитель
Сommit
7a4bb25cb8
5 измененных файлов с 49 добавлено и 32 удалено
  1. 2 0
      inc/classes/BxDolGridQuery.php
  2. 28 26
      install/sql/system.sql
  3. 5 5
      template/css/media-phone.css
  4. 1 1
      template/grid.html
  5. 13 0
      template/scripts/BxBaseGrid.php

+ 2 - 0
inc/classes/BxDolGridQuery.php

@@ -56,10 +56,12 @@ class BxDolGridQuery extends BxDolDb
             return false;
             return false;
         foreach ($aFields as $sKey => $aRow) {
         foreach ($aFields as $sKey => $aRow) {
             $aObject['fields'][$sKey] = array(
             $aObject['fields'][$sKey] = array(
+                'name' => $sKey,
                 'title' => _t($aRow['title']),
                 'title' => _t($aRow['title']),
                 'width' => $aRow['width'],
                 'width' => $aRow['width'],
                 'translatable' => $aRow['translatable'],
                 'translatable' => $aRow['translatable'],
                 'chars_limit' => $aRow['chars_limit'],
                 'chars_limit' => $aRow['chars_limit'],
+                'hidden_on' => $aRow['hidden_on'],
             );
             );
             if (empty($aRow['params']))
             if (empty($aRow['params']))
                 continue;
                 continue;

+ 28 - 26
install/sql/system.sql

@@ -3748,6 +3748,7 @@ CREATE TABLE IF NOT EXISTS `sys_objects_grid` (
   `sorting_fields` text NOT NULL,
   `sorting_fields` text NOT NULL,
   `sorting_fields_translatable` text NOT NULL,
   `sorting_fields_translatable` text NOT NULL,
   `visible_for_levels` int(11) NOT NULL DEFAULT '2147483647',
   `visible_for_levels` int(11) NOT NULL DEFAULT '2147483647',
+  `responsive` tinyint(4) NOT NULL DEFAULT '1',
   `override_class_name` varchar(255) NOT NULL,
   `override_class_name` varchar(255) NOT NULL,
   `override_class_file` varchar(255) NOT NULL,
   `override_class_file` varchar(255) NOT NULL,
   PRIMARY KEY (`id`),
   PRIMARY KEY (`id`),
@@ -3787,6 +3788,7 @@ CREATE TABLE IF NOT EXISTS `sys_grid_fields` (
   `translatable` tinyint(4) NOT NULL DEFAULT '0',
   `translatable` tinyint(4) NOT NULL DEFAULT '0',
   `chars_limit` int(11) NOT NULL DEFAULT '0',
   `chars_limit` int(11) NOT NULL DEFAULT '0',
   `params` text NOT NULL,
   `params` text NOT NULL,
+  `hidden_on` varchar(255) NOT NULL DEFAULT '',
   `order` int(11) NOT NULL,
   `order` int(11) NOT NULL,
   UNIQUE KEY `object_name` (`object`(64),`name`(127))
   UNIQUE KEY `object_name` (`object`(64),`name`(127))
 );
 );
@@ -4022,41 +4024,41 @@ INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon
 
 
 
 
 -- GRID: connections
 -- GRID: connections
-INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `field_id`, `field_order`, `field_active`, `paginate_url`, `paginate_per_page`, `paginate_simple`, `paginate_get_start`, `paginate_get_per_page`, `filter_fields`, `filter_fields_translatable`, `filter_mode`, `sorting_fields`, `sorting_fields_translatable`, `visible_for_levels`, `override_class_name`, `override_class_file`) VALUES
-('sys_grid_connections', 'Sql', 'SELECT `p`.`id`, `c`.`added`, `c`.`mutual` FROM `sys_profiles` AS `p` INNER JOIN `sys_accounts` AS `a` ON (`a`.`id` = `p`.`account_id`) {join_connections}', 'sys_profiles', 'id', 'c`.`added', '', '', 10, NULL, 'start', '', 'name,email', '', 'auto', '', '', 2147483647, 'BxDolGridConnections', ''),
-('sys_grid_connections_requests', 'Sql', 'SELECT `p`.`id`, `c`.`added`, `c`.`mutual` FROM `sys_profiles` AS `p` INNER JOIN `sys_accounts` AS `a` ON (`a`.`id` = `p`.`account_id`) {join_connections}', 'sys_profiles', 'id', 'c`.`added', '', '', 10, NULL, 'start', '', 'name,email', '', 'auto', '', '', 2147483647, 'BxDolGridConnectionsRequests', ''),
+INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `field_id`, `field_order`, `field_active`, `paginate_url`, `paginate_per_page`, `paginate_simple`, `paginate_get_start`, `paginate_get_per_page`, `filter_fields`, `filter_fields_translatable`, `filter_mode`, `sorting_fields`, `sorting_fields_translatable`, `visible_for_levels`, `responsive`, `override_class_name`, `override_class_file`) VALUES
+('sys_grid_connections', 'Sql', 'SELECT `p`.`id`, `c`.`added`, `c`.`mutual` FROM `sys_profiles` AS `p` INNER JOIN `sys_accounts` AS `a` ON (`a`.`id` = `p`.`account_id`) {join_connections}', 'sys_profiles', 'id', 'c`.`added', '', '', 10, NULL, 'start', '', 'name,email', '', 'auto', '', '', 2147483647, 0, 'BxDolGridConnections', ''),
+('sys_grid_connections_requests', 'Sql', 'SELECT `p`.`id`, `c`.`added`, `c`.`mutual` FROM `sys_profiles` AS `p` INNER JOIN `sys_accounts` AS `a` ON (`a`.`id` = `p`.`account_id`) {join_connections}', 'sys_profiles', 'id', 'c`.`added', '', '', 10, NULL, 'start', '', 'name,email', '', 'auto', '', '', 2147483647, 0, 'BxDolGridConnectionsRequests', ''),
 
 
-('sys_grid_subscriptions', 'Sql', 'SELECT `p`.`id`, `c`.`added` FROM `sys_profiles` AS `p` INNER JOIN `sys_accounts` AS `a` ON (`a`.`id` = `p`.`account_id`) {join_connections}', 'sys_profiles', 'id', 'c`.`added', '', '', 10, NULL, 'start', '', 'name,email', '', 'auto', '', '', 2147483647, 'BxDolGridSubscriptions', ''),
-('sys_grid_subscribed_me', 'Sql', 'SELECT `p`.`id`, `c`.`added` FROM `sys_profiles` AS `p` INNER JOIN `sys_accounts` AS `a` ON (`a`.`id` = `p`.`account_id`) {join_connections}', 'sys_profiles', 'id', 'c`.`added', '', '', 10, NULL, 'start', '', 'name,email', '', 'auto', '', '', 2147483647, 'BxDolGridSubscribedMe', ''),
+('sys_grid_subscriptions', 'Sql', 'SELECT `p`.`id`, `c`.`added` FROM `sys_profiles` AS `p` INNER JOIN `sys_accounts` AS `a` ON (`a`.`id` = `p`.`account_id`) {join_connections}', 'sys_profiles', 'id', 'c`.`added', '', '', 10, NULL, 'start', '', 'name,email', '', 'auto', '', '', 2147483647, 0, 'BxDolGridSubscriptions', ''),
+('sys_grid_subscribed_me', 'Sql', 'SELECT `p`.`id`, `c`.`added` FROM `sys_profiles` AS `p` INNER JOIN `sys_accounts` AS `a` ON (`a`.`id` = `p`.`account_id`) {join_connections}', 'sys_profiles', 'id', 'c`.`added', '', '', 10, NULL, 'start', '', 'name,email', '', 'auto', '', '', 2147483647, 0, 'BxDolGridSubscribedMe', ''),
 
 
-('sys_grid_relations', 'Sql', 'SELECT `p`.`id`, `c`.`relation`, `c`.`mutual`, `c`.`added` FROM `sys_profiles` AS `p` INNER JOIN `sys_accounts` AS `a` ON (`a`.`id` = `p`.`account_id`) {join_connections}', 'sys_profiles', 'id', 'c`.`added', '', '', 10, NULL, 'start', '', 'name,email', '', 'auto', '', '', 2147483647, 'BxDolGridRelations', ''),
-('sys_grid_related_me', 'Sql', 'SELECT `p`.`id`, `c`.`relation`, `c`.`mutual`, `c`.`added` FROM `sys_profiles` AS `p` INNER JOIN `sys_accounts` AS `a` ON (`a`.`id` = `p`.`account_id`) {join_connections}', 'sys_profiles', 'id', 'c`.`added', '', '', 10, NULL, 'start', '', 'name,email', '', 'auto', '', '', 2147483647, 'BxDolGridRelatedMe', '');
+('sys_grid_relations', 'Sql', 'SELECT `p`.`id`, `c`.`relation`, `c`.`mutual`, `c`.`added` FROM `sys_profiles` AS `p` INNER JOIN `sys_accounts` AS `a` ON (`a`.`id` = `p`.`account_id`) {join_connections}', 'sys_profiles', 'id', 'c`.`added', '', '', 10, NULL, 'start', '', 'name,email', '', 'auto', '', '', 2147483647, 0, 'BxDolGridRelations', ''),
+('sys_grid_related_me', 'Sql', 'SELECT `p`.`id`, `c`.`relation`, `c`.`mutual`, `c`.`added` FROM `sys_profiles` AS `p` INNER JOIN `sys_accounts` AS `a` ON (`a`.`id` = `p`.`account_id`) {join_connections}', 'sys_profiles', 'id', 'c`.`added', '', '', 10, NULL, 'start', '', 'name,email', '', 'auto', '', '', 2147483647, 0, 'BxDolGridRelatedMe', '');
 
 
 
 
-INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `params`, `order`) VALUES
-('sys_grid_connections', 'name', '_sys_name', '40%', '', 1),
-('sys_grid_connections', 'info', '', '30%', '', 2),
-('sys_grid_connections', 'actions', '', '30%', '', 3),
+INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `params`, `hidden_on`, `order`) VALUES
+('sys_grid_connections', 'name', '_sys_name', '40%', '', '', 1),
+('sys_grid_connections', 'info', '', '30%', '', '1', 2),
+('sys_grid_connections', 'actions', '', '30%', '', '', 3),
 
 
-('sys_grid_connections_requests', 'name', '_sys_name', '40%', '', 1),
-('sys_grid_connections_requests', 'info', '', '30%', '', 2),
-('sys_grid_connections_requests', 'actions', '', '30%', '', 3),
+('sys_grid_connections_requests', 'name', '_sys_name', '40%', '', '', 1),
+('sys_grid_connections_requests', 'info', '', '30%', '', '1', 2),
+('sys_grid_connections_requests', 'actions', '', '30%', '', '', 3);
 
 
-('sys_grid_subscriptions', 'name', '_sys_name', '70%', '', 1),
-('sys_grid_subscriptions', 'actions', '', '30%', '', 2),
+('sys_grid_subscriptions', 'name', '_sys_name', '70%', '', '', 1),
+('sys_grid_subscriptions', 'actions', '', '30%', '', '', 2),
 
 
-('sys_grid_subscribed_me', 'name', '_sys_name', '70%', '', 1),
-('sys_grid_subscribed_me', 'actions', '', '30%', '', 2),
+('sys_grid_subscribed_me', 'name', '_sys_name', '70%', '', '', 1),
+('sys_grid_subscribed_me', 'actions', '', '30%', '', '', 2),
 
 
-('sys_grid_relations', 'name', '_sys_name', '40%', '', 1),
-('sys_grid_relations', 'relation', '_sys_relation', '15%', '', 2),
-('sys_grid_relations', 'mutual', '_sys_status', '15%', '', 3),
-('sys_grid_relations', 'actions', '', '30%', '', 4),
+('sys_grid_relations', 'name', '_sys_name', '40%', '', '', 1),
+('sys_grid_relations', 'relation', '_sys_relation', '15%', '', '', 2),
+('sys_grid_relations', 'mutual', '_sys_status', '15%', '', '', 3),
+('sys_grid_relations', 'actions', '', '30%', '', '', 4),
 
 
-('sys_grid_related_me', 'name', '_sys_name', '40%', '', 1),
-('sys_grid_related_me', 'relation', '_sys_relation', '15%', '', 2),
-('sys_grid_related_me', 'mutual', '_sys_status', '15%', '', 3),
-('sys_grid_related_me', 'actions', '', '30%', '', 4);
+('sys_grid_related_me', 'name', '_sys_name', '40%', '', '', 1),
+('sys_grid_related_me', 'relation', '_sys_relation', '15%', '', '', 2),
+('sys_grid_related_me', 'mutual', '_sys_status', '15%', '', '', 3),
+('sys_grid_related_me', 'actions', '', '30%', '', '', 4);
 
 
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
 ('sys_grid_connections', 'single', 'accept', '_sys_accept', '', 0, 0, 1),
 ('sys_grid_connections', 'single', 'accept', '_sys_accept', '', 0, 0, 1),

+ 5 - 5
template/css/media-phone.css

@@ -137,14 +137,14 @@ html.bx-media-phone {
 
 
 /* grid.css */
 /* grid.css */
 
 
-html.bx-media-phone .bx-grid-table-wrapper {
+html.bx-media-phone .bx-grid-table-wrapper-responsive .bx-grid-table-wrapper {
     overflow-x:scroll;
     overflow-x:scroll;
 }
 }
-html.bx-media-phone .bx-grid-table {
+html.bx-media-phone .bx-grid-table-wrapper-responsive .bx-grid-table {
     min-width:720px;
     min-width:720px;
 }
 }
-html.bx-media-phone .bx-grid-table-wrapper2:before,
-html.bx-media-phone .bx-grid-table-wrapper2:after {
+html.bx-media-phone .bx-grid-table-wrapper-responsive .bx-grid-table-wrapper2:before,
+html.bx-media-phone .bx-grid-table-wrapper-responsive .bx-grid-table-wrapper2:after {
     display:block;
     display:block;
 }
 }
 
 
@@ -197,4 +197,4 @@ html.bx-media-phone .bx-grid-table-wrapper2:after {
 
 
 .bx-media-phone .bx-base-pofile-cover .bx-base-pofile-cover-info .bx-base-pofile-cover-actions .bx-btn u {
 .bx-media-phone .bx-base-pofile-cover .bx-base-pofile-cover-info .bx-base-pofile-cover-actions .bx-btn u {
     display: none;
     display: none;
-}
+}

+ 1 - 1
template/grid.html

@@ -15,7 +15,7 @@
 			</div>
 			</div>
         </div>
         </div>
     </bx_if:display_header>
     </bx_if:display_header>
-    <div class="bx-grid-table-wrapper2 bx-grid-table-hide-shadow-before">
+    <div class="bx-grid-table-wrapper2 bx-grid-table-hide-shadow-before __class_table_wrapper__">
         <div id="__id_cont__" class="bx-grid-table-wrapper">
         <div id="__id_cont__" class="bx-grid-table-wrapper">
             <table id="__id_table__" class="bx-grid-table">
             <table id="__id_table__" class="bx-grid-table">
                 <bx_if:display_head>
                 <bx_if:display_head>

+ 13 - 0
template/scripts/BxBaseGrid.php

@@ -197,6 +197,7 @@ class BxBaseGrid extends BxDolGrid
             'id_table' => $sIdTable,
             'id_table' => $sIdTable,
             'id_cont' => $sIdContainer,
             'id_cont' => $sIdContainer,
             'id_wrap' => $sIdWrapper,
             'id_wrap' => $sIdWrapper,
+            'class_table_wrapper' => $this->_aOptions['responsive'] ? 'bx-grid-table-wrapper-responsive' : '',
             'sortable' => empty($this->_aOptions['field_order']) ? 0 : 1,
             'sortable' => empty($this->_aOptions['field_order']) ? 0 : 1,
             'sorting' => empty($this->_aOptions['sorting_fields']) ? 0 : 1,
             'sorting' => empty($this->_aOptions['sorting_fields']) ? 0 : 1,
             'sorting_field' => $sOrderField,
             'sorting_field' => $sOrderField,
@@ -616,6 +617,18 @@ class BxBaseGrid extends BxDolGrid
 
 
     protected function _convertAttrs ($aField, $sAttrName, $sClasses = false, $sStyles = false)
     protected function _convertAttrs ($aField, $sAttrName, $sClasses = false, $sStyles = false)
     {
     {
+        if (!empty($aField['hidden_on'])) {
+            $aHiddenOn = array(
+                pow(2, BX_DB_HIDDEN_PHONE - 1) => 'bx-def-media-phone-hide',
+                pow(2, BX_DB_HIDDEN_TABLET - 1) => 'bx-def-media-tablet-hide',
+                pow(2, BX_DB_HIDDEN_DESKTOP - 1) => 'bx-def-media-desktop-hide',
+                pow(2, BX_DB_HIDDEN_MOBILE - 1) => 'bx-def-mobile-app-hide'
+            );
+            foreach ($aHiddenOn as $iHiddenOn => $sClass)
+                if ((int)$aField['hidden_on'] & $iHiddenOn)
+                    $sClasses .= ' ' . $sClass;
+        }
+            
         return bx_convert_array2attrs(
         return bx_convert_array2attrs(
             isset($aField[$sAttrName]) && is_array($aField[$sAttrName]) ? $aField[$sAttrName] : array(),
             isset($aField[$sAttrName]) && is_array($aField[$sAttrName]) ? $aField[$sAttrName] : array(),
             $sClasses,
             $sClasses,