1
Changeset 5685409 – MultiMag

Changeset 5685409


Ignore:
Timestamp:
Dec 2, 2019, 2:21:43 AM (3 years ago)
Author:
BlackLight <blacklight@…>
Branches:
master
Children:
6e371e3
Parents:
fd09a48 (diff), a653dec (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge remote-tracking branch 'origin/master'

Location:
web
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • web/include/doc.nulltype.php

    rfd09a48 r5685409  
    19061906                        var result =
    19071907                                row[0] +
    1908                                 ' (' + row[3] + ')' +
    19091908                                \"<em class='qnt'> тел . \" + row[2] + \"</em>\";
    19101909                        return result;
  • web/include/doc.s.agent.php

    rfd09a48 r5685409  
    9292                                list($nxt[0],$nxt[3])=[$nxt[3],$nxt[0]];
    9393                        }
    94                         $tmpl->addContent("$nxt[0]|$nxt[1]|$nxt[2]|$nxt[3]\n");
     94                        $tmpl->addContent("$nxt[0] ".($nxt[3] ? "($nxt[3])" : "")."|$nxt[1]|$nxt[2]|$nxt[3]\n");
    9595                }
    9696        } elseif ($opt == 'jgetcontracts') {
  • web/include/models/ldo/doclist.php

    rfd09a48 r5685409  
    8888        }
    8989        return $filter;
     90    }
     91
     92
     93        /**
     94         * Сформировать order из запроса
     95         * @return string
     96         */
     97        protected function getOrder()
     98        {
     99                $orderFields = [
     100                        'sum' => '`doc_list`.`sum`',
     101                        'date' => '`doc_list`.`date`',
     102                        'asc' => 'ASC',
     103                        'desc' => 'DESC'
     104                ];
     105                if(!empty($this->options['order'])) {
     106                        foreach (json_decode($this->options['order'], true) as $item) {
     107                                if(!empty($orderFields[$item['field']]) && !empty($orderFields[$item['order']])) {
     108                                        $orders[] = $orderFields[$item['field']] . ' ' . $orderFields[$item['order']];
     109                                }
     110                        }
     111                }
     112                if(!empty($orders)) {
     113                        return 'ORDER BY '.implode(', ', $orders);
     114                }
     115                return 'ORDER by `doc_list`.`date` DESC';
    90116    }
    91117
     
    203229            $sql_join
    204230            WHERE 1 $sql_filter
    205             ORDER by `doc_list`.`date` DESC
     231            {$this->getOrder()}
    206232            LIMIT $start,{$this->limit}";
    207233        $result = array();
  • web/js/doc_journal.js

    rfd09a48 r5685409  
    132132    var httpRequest = new XMLHttpRequest();
    133133
     134    let sortableFields = [];
     135    let fieldsWithCnt = [
     136        {
     137            attributes: {
     138                width: 55
     139            },
     140            html: 'a.№'
     141        },
     142            {
     143                    attributes: {
     144                            width: 20
     145                    },
     146                    html: ''
     147            },
     148            {
     149                    attributes: {
     150                            width: 20
     151                    },
     152                    html: ''
     153            },
     154            {
     155                    html: 'Тип'
     156            },
     157            {
     158                    html: 'Участник 1'
     159            },
     160            {
     161                    html: 'Участник 2'
     162            },
     163            {
     164                    html: 'Кол-во'
     165            },
     166            {
     167                    html: 'Цена'
     168            },
     169            {
     170                    attributes: {
     171                        class: 'js-order-filter'
     172                    },
     173            field: 'sum',
     174            order: 'asc',
     175                    html: 'Сумма'
     176            },
     177            {
     178                    attributes: {
     179                            class: 'js-order-filter'
     180                    },
     181                    field: 'date',
     182                    order: 'asc',
     183                    html: 'Дата'
     184            },
     185            {
     186                    html: 'Автор'
     187            },
     188            {
     189                    html: 'id'
     190            },
     191    ];
     192
     193        let fields = [
     194                {
     195                        attributes: {
     196                                width: 55
     197                        },
     198                        html: 'a.№'
     199                },
     200                {
     201                        attributes: {
     202                                width: 20
     203                        },
     204                        html: ''
     205                },
     206                {
     207                        attributes: {
     208                                width: 20
     209                        },
     210                        html: ''
     211                },
     212                {
     213                        html: 'Тип'
     214                },
     215                {
     216                        html: 'Участник 1'
     217                },
     218                {
     219                        html: 'Участник 2'
     220                },
     221                {
     222                        attributes: {
     223                                class: 'js-order-filter'
     224                        },
     225                        field: 'sum',
     226                        order: 'asc',
     227                        html: 'Сумма'
     228                },
     229                {
     230                        attributes: {
     231                                class: 'js-order-filter'
     232                        },
     233                        field: 'date',
     234                        order: 'asc',
     235                        html: 'Дата'
     236                },
     237                {
     238                        html: 'Автор'
     239                },
     240                {
     241                        html: 'id'
     242                },
     243        ];
     244
     245
    134246    var deffer_timer;
    135247    var docj_list_body = document.getElementById('docj_list_body');
     
    218330        if (okfilter_id.value != '0')
    219331            filter_request += '&doclist[ok]=' + encodeURIComponent(okfilter_id.value);
     332
     333        if(sortableFields) {
     334            let orderQuery = [];
     335            sortableFields.forEach(function(item){
     336               if(item.hasOwnProperty('order') && item.hasOwnProperty('field')) {
     337                   orderQuery.push({
     338                       'field': item.field,
     339                       'order': item.order
     340                   });
     341               }
     342            });
     343                filter_request += '&doclist[order]=' + encodeURIComponent(JSON.stringify(orderQuery));
     344        }
    220345    }
    221346
     
    558683    }
    559684
     685    function buldHeaderFields(data) {
     686        let tr = document.createElement("tr");
     687        data.forEach(function (item, i) {
     688                let th = document.createElement("th");
     689                th.innerText = item.html;
     690                if(item.hasOwnProperty('attributes')) {
     691                    if(item.attributes.hasOwnProperty('class')){
     692                            th.classList = item.attributes.class ? item.attributes.class : '';
     693                }
     694            }
     695                if(item.hasOwnProperty('order')) {
     696                        th.style = 'background: url(/img/i_orderarrows.png) 100% '
     697                    +(item.order === 'asc' ? '' : '10')
     698                    +'0% no-repeat transparent; background-color: #6488DC; cursor: pointer';
     699                }
     700                if(item.hasOwnProperty('field')) {
     701                        th.dataset.field = item.field;
     702                }
     703                th.dataset.fieldId = i;
     704                tr.appendChild(th);
     705        });
     706            return tr.innerHTML;
     707    }
     708
     709
    560710    function initTableHead() {
    561711        var head = document.getElementById('doc_list_head');
    562712        if (show_count_column) {
    563             head.innerHTML = "<tr><th width='55'>a.№</th><th width='20'>&nbsp;</th><th width='20'>&nbsp;</th><th>Тип</th><th>Участник 1</th><th>Участник 2</th><th>Кол-во</th><th>Цена</th><th>Сумма</th><th>Дата</th><th>Автор</th><th width='45'>id</th></tr>";
     713            head.innerHTML = buldHeaderFields(fieldsWithCnt);
    564714        }
    565715        else {
    566             head.innerHTML = "<tr><th width='55'>a.№</th><th width='20'>&nbsp;</th><th width='20'>&nbsp;</th><th>Тип</th><th>Участник 1</th><th>Участник 2</th><th>Сумма</th><th>Дата</th><th>Автор</th><th width='45'>id</th></tr>";
    567         }
     716            head.innerHTML = buldHeaderFields(fields);
     717        }
     718            let orderFilter = function(e) {
     719            let data = show_count_column ? fieldsWithCnt : fields;
     720            let self = this;
     721                    sortableFields = sortableFields.filter(function(val){
     722                            return val.field !== data[self.dataset.fieldId].field;
     723                    });
     724                    sortableFields.unshift({
     725                            field: data[this.dataset.fieldId].field,
     726                            order: data[this.dataset.fieldId].order === 'asc' ? 'desc' : 'asc',
     727            });
     728                    data[this.dataset.fieldId].order = data[this.dataset.fieldId].order === 'asc' ? 'desc' : 'asc';
     729                    beginDefferedRequest();
     730            };
     731            document.querySelectorAll("th.js-order-filter").forEach(box => { box.addEventListener('click', orderFilter, false); });
    568732    }
    569733
  • web/vitrina.php

    rfd09a48 r5685409  
    400400            $lim = 100;
    401401        }
    402 
     402            $this->OrderAndViewBar($group, $page, $order, $view);
    403403        if ($res->num_rows) {
    404404            if ($page < 1 || $lim * ($page - 1) > $res->num_rows) {
     
    406406                exit();
    407407            }
    408             $this->OrderAndViewBar($group, $page, $order, $view);
    409408
    410409            $this->PageBar($group, $res->num_rows, $lim, $page);
     
    429428            header("Location: " . (empty($_SERVER['HTTPS']) ? "http" : "https") . "://" . $_SERVER['HTTP_HOST'] . html_in($this->GetGroupLink($group)), false, 301);
    430429            exit();
     430        } else {
     431                $tmpl->addContent("<h2 style='text-align: center'>Нет подходящих товаров</h2>");
    431432        }
    432433    }
     
    13701371                $img = '';
    13711372            }
     1373                $product_data = $this->getProductData($item['id']);
     1374                $product_name_html = html_out($product_data['group_printname'] . ' ' . $product_data['name']);
    13721375            $img = isset($item['img_uri']) ? "<img_src='{$item['img_uri']}' alt='" . html_out($item['name']) . "'>" : '';
    13731376            $tmpl->addContent("<tr id='korz_ajax_item_{$item['pos_id']}'{$lock_mark}>
     
    13761379                    <img src='/img/i_del.png' alt='Убрать'></a></span></td>
    13771380                <td>$img</td>
    1378                 <td><a href='/vitrina.php?mode=product&amp;p={$item['pos_id']}'>" . html_out($item['name']) . "</a></td>
     1381                <td><a href='/vitrina.php?mode=product&amp;p={$item['pos_id']}'>" . $product_name_html . "</a></td>
    13791382                <td class='right'{$gray_price}>$price_p</td>
    13801383                <td class='right'><span class='sum'>$sum_p</span></td>
     
    17701773    /// Заключительная форма оформления покупки
    17711774    protected function BuyMakeForm() {
    1772         global $tmpl;
     1775        global $tmpl, $db;
    17731776        if (@$_SESSION['uid']) {
    17741777            $up = getUserProfile($_SESSION['uid']);
     
    18401843        }
    18411844
    1842         $tmpl->addContent("
    1843         Другая информация:<br>
    1844         <textarea name='dop' rows='5' cols='80'>" . html_out(@$up['dop']['dop_info']) . "</textarea><br>
    1845         <button type='submit'>Оформить заказ</button>
    1846         </div>
    1847         </form>");
     1845        $tmpl->addContent("Другая информация:<br><textarea name='dop' rows='5' cols='80'>" . html_out(@$up['dop']['dop_info']) . "</textarea><br>");
     1846
     1847            if($this->getBasket()) {
     1848                $basket = $this->getBasket();
     1849                    $tmpl->addContent('<br>
     1850                                <table class="list">
     1851                                        <tbody>
     1852                                                <tr class="title">
     1853                                                        <th width="60%">Наименование</th>
     1854                                                        <th width="15%">Цена, руб.</th>
     1855                                                        <th width="10%">Количество</th>
     1856                                                        <th width="15%">Сумма, руб.</th>
     1857                                                </tr>
     1858                        ');
     1859                    foreach ($basket['items'] as $item) {
     1860                            $product_data = $this->getProductData($item['id']);
     1861                            $product_name_html = html_out($product_data['group_printname'] . ' ' . $product_data['name']);
     1862                            $tmpl->addContent("
     1863                                <tr>
     1864                                                <td style='text-align: left'><a href='/vitrina.php?mode=product&amp;p={$item['pos_id']}'>{$product_name_html}</a></td>
     1865                                                <td>".number_format($item['price'], 2, ',', ' ')."</td>
     1866                                                <td>{$item['cnt']}</td>
     1867                                                <td style='text-align: right'>".number_format($item['sum'], 2, ',', ' ')."</td>
     1868                                        </tr>
     1869                            ");
     1870                    }
     1871
     1872                    $tmpl->addContent("
     1873                        <tr>
     1874                                        <td colspan=\"3\">Сумма заказа:</td>
     1875                                        <td style='text-align: right' colspan=\"1\">" . number_format($basket['sum'], 2, ',', ' ') . "</td>
     1876                                </tr>
     1877                    ");
     1878
     1879                    if(!empty($_SESSION['basket']['delivery_region']) && !empty($_SESSION['basket']['delivery_type'])) {
     1880                            $delivery = $_SESSION['basket']['delivery_type'];
     1881                            $delivery_region = $_SESSION['basket']['delivery_region'];
     1882                            $res = $db->query("SELECT `name` FROM `delivery_types` WHERE `id`='$delivery'");
     1883                            list($d_service_name) = $res->fetch_row();
     1884                            $res = $db->query("SELECT `price`, `name` FROM `delivery_regions` WHERE `id`='$delivery_region'");
     1885                            list($d_price, $d_region_name) = $res->fetch_row();
     1886                            $tmpl->addContent("
     1887                                <tr>
     1888                                                <td colspan=\"3\">$d_service_name ($d_region_name):</td>
     1889                                                <td style='text-align: right' colspan=\"1\">".number_format($d_price, 2, ',', ' ')."</td>
     1890                                        </tr>
     1891                         ");
     1892                    }
     1893
     1894                    $tmpl->addContent('
     1895                                                <tr class="total">
     1896                                                        <td colspan="3">Итого:</td>
     1897                                                        <td style=\'text-align: right\' colspan="1">
     1898                                                        ' . number_format(($basket['sum'] + (isset($d_price) ? $d_price : 0)), 2, ',', ' ') . '
     1899                                                        </td>
     1900                                                </tr>
     1901                                        </tbody>
     1902                                </table><br>
     1903                        ');
     1904            }
     1905
     1906            $tmpl->addContent("<button type='submit'>Оформить заказ</button></div></form>");
    18481907    }
    18491908
Note: See TracChangeset for help on using the changeset viewer.