Cotonti / Open Source PHP Content Management FrameworkContent Management Framework

Forums / National / Russian / Вывод в плагине clients сначала новых клиентов

vpktz
#1 2021-12-07 10:51

В плагине clients (это который для биржи) , эти самые клиенты выводятся сначала старые и к низу новые(последние), вопрос как сделать наоборот?

Wertex
#2 2021-12-07 21:07
Никогда не видел этого плагина, поэтому в каком месте сделать корректировку не подскажу. Но это элементарно, ищите в плагине sql запрос выборки клиентов, затем измените сортировку с ASC на DESC, или если в запросе отсутствует ASС добавьте в конец запроса после ORDER BY "критерий сортировки" : DESC. По хорошему эта настройка должна присутствовать в настройках плагина, а вообще почитайте в интерете про mysql запросы, благо этой информации предостаточно. Движок Cotonti использует процедурный подход и прост как пицца "Маргарита"), нужно чуть-чуть покопаться. Но в нынешнее время даже не знаю целесообразность запускать биржу на этом движке, имхо морально устарел, да и биржа так себе затея. Удачи)
vpktz
#3 2021-12-08 06:22
#45506 Wertex:
Никогда не видел этого плагина, поэтому в каком месте сделать корректировку не подскажу. Но это элементарно, ищите в плагине sql запрос выборки клиентов, затем измените сортировку с ASC на DESC, или если в запросе отсутствует ASС добавьте в конец запроса после ORDER BY "критерий сортировки" : DESC. По хорошему эта настройка должна присутствовать в настройках плагина, а вообще почитайте в интерете про mysql запросы, благо этой информации предостаточно. Движок Cotonti использует процедурный подход и прост как пицца "Маргарита"), нужно чуть-чуть покопаться. Но в нынешнее время даже не знаю целесообразность запускать биржу на этом движке, имхо морально устарел, да и биржа так себе затея. Удачи)

в плагине бузвально 3 файла и ничего подобного найти не м огу https://wdfiles.ru/b1593a

webitproff
#4 2021-12-08 07:18

старые или новые что конкретно, какое событие? - дата регистрации пользователя или дата сделки?

в любом случае придется дописывать сортировку и делать порядок

ORDER BY "критерий сортировки"
Разработка, редизайн и модернизация шаблонов для "Cotonti Siena", используя front-end framework "UIkit 2" и "UIkit 3"
vpktz
#5 2021-12-08 08:56
#45508 webitproff:

старые или новые что конкретно, какое событие? - дата регистрации пользователя или дата сделки?

в любом случае придется дописывать сортировку и делать порядок

ORDER BY "критерий сортировки

дата сделки, надо что бу в самом верху листа были новые сделки а к низу  на оборот, старые

пример

 

<ul>
  <li>
    Алексей, с ним была сделка 08.12.2021
  </li>
  <li>
    Сергей, с ним была сделка 07.12.2021
  </li>
  <li>
    Матвей, с ним была сделка 06.12.2021
  </li>
</ul>

 


This post was edited by vpktz (2021-12-08 09:01, 6 months ago)
Wertex
#6 2021-12-08 12:03

Почему нет. Файл clients.functions.php в папке inc, строка 31 добавить сортировку

Вместо 

	$sql = $db->query("SELECT * FROM $db_projects WHERE item_performer=" . (int) $userid . " $limit");

Вставить

  $sql = $db->query("SELECT * FROM $db_projects WHERE item_performer=" . (int) $userid . " ORDER BY !критерий сортировки! DESC $limit");

Критерий сортировки это столбец в таблице $db_projects, как он называеться я не знаю, может item_date, item_updated, item_begin вариантов много, посмотрите в таблице.

И не забыть заменить !критерий сортировки! включая знаки восклицания на имя нужного столбца сохраняя пробелы с двух сторон.

 

vpktz
#7 2021-12-08 13:07
#45510 Wertex:

Почему нет. Файл clients.functions.php в папке inc, строка 31 добавить сортировку

Вместо 

	$sql = $db->query("SELECT * FROM $db_projects WHERE item_performer=" . (int) $userid . " $limit");

Вставить

  $sql = $db->query("SELECT * FROM $db_projects WHERE item_performer=" . (int) $userid . " ORDER BY !критерий сортировки! DESC $limit");

Критерий сортировки это столбец в таблице $db_projects, как он называеться я не знаю, может item_date, item_updated, item_begin вариантов много, посмотрите в таблице.

И не забыть заменить !критерий сортировки! включая знаки восклицания на имя нужного столбца сохраняя пробелы с двух сторон.

 

Спасибо, сделал это и заработало.

$sql = $db->query("SELECT * FROM $db_projects WHERE item_performer=" . (int) $userid . " ORDER BY item_date DESC $limit");

 

Добавлено 6 месяцев спустя:

Пишу сюда, почему то новые темы не создаются

Плагин sbr вывод новых сообщений в самом низу sbr.tpl

Cитуация там была обратная. В общем вопрос таков, в плагине sbr на странице сделки sbr.tpl  есть форма отправки сообщений для заказчика, исполнителя, администратора. Соощения этой формы приходят тут же на этой странице, только сортируются "сначала (сверху)  новые потом старые (снизу)" . Я хочу реализовать что то вроде чата как в вк, нужно что бы последнии сообщения были снизу.

 


This post was edited by vpktz (2022-06-14 09:05, 1 week ago)
Kopusha
#8 2022-06-16 11:38

https://github.com/Cmsworks/cot-sbr/blob/master/sbr/inc/sbr.main.php#L653

ORDER BY post_date ASC/DESC?

Я не совсем уловил где это надо но суть одна - ASC или DESC надо поменять в запросе в БД

vpktz
#9 2022-06-16 21:32

Спасибо дорогой копуша. то что ASC/DESC я знал,  но не знал где и как. А вот ты мне подсказал с файлом и строкой.

Файл sbr.main.php L645  у меня. blushyes

$posts = $db->query("SELECT * FROM $db_sbr_posts
		WHERE post_sid=" . $id . " ".$query_string ."
		ORDER BY post_date DESC")->fetchAll()

 

К стати, никто не зна почему тут на сайте темы новые не создаются? Или это только у меня?

Kopusha
#10 2022-06-17 07:44
#45625 vpktz:

К стати, никто не зна почему тут на сайте темы новые не создаются? Или это только у меня?

Потому что в БД этого сайта поле таблицы форумов ft_tag не имеет дефолтного значения
General error: 1364 Field 'ft_tag' doesn't have a default value

vpktz
#11 2022-06-17 20:51
#45626 Kopusha:
#45625 vpktz:

К стати, никто не зна почему тут на сайте темы новые не создаются? Или это только у меня?

Потому что в БД этого сайта поле таблицы форумов ft_tag не имеет дефолтного значения
General error: 1364 Field 'ft_tag' doesn't have a default value

Тааак, это значит что я должен сделать что бы создать новую тему? Я вроде все поля заполнил. 

Kopusha
#12 2022-06-18 05:39

Выучить английский. Сложно заполнить default value.

vpktz
#13 2022-06-18 08:24
#45628 Kopusha:

Выучить английский. Сложно заполнить default value.

значение слов я понимаю,  я не знаю что теперь делать, я тупой верстальщик, я бы он хотел знать языки и не кляньчить, но память у меня слабоватая ddr1 видимо

 ну ладно, пока Kopusha  ты тут, я вопрос один задам.

 

Доработка скрипта sbr.tpl кастомная форма добавления файла в чате между заказчиком и исполнителем. У мменя есть форма чата общения заказчика и сиполнителя. плагина sbr  в sbr.tpl 

 
<style media="screen">
      .image-upload > input
      {
        display: none;
      }
      .image-upload img
      {
        width: 80px;
        cursor: pointer;
      }
      </style>


<form action="{POST_FORM_ACTION}" method="post" id="addpost" enctype="multipart/form-data">
        <div class="input-group mb-3">
          <span class="input-group-text" uk-tooltip="Прикрепить файл">
            <div class="postfiles image-upload">
              <label for="file-input">
                  <i class="bi-paperclip"></i>
              </label>
              <input class="my" id="file-input" type="file" value="Выбрать" name="rpostfiles[]" onchange="GetFileSizeNameAndType()" />
              <span id="fp"></span>
              <script type="text/javascript">
              function GetFileSizeNameAndType()
                    {
                    var fi = document.getElementById('file-input'); // GET THE FILE INPUT AS VARIABLE.
                    var totalFileSize = 0;
                    // VALIDATE OR CHECK IF ANY FILE IS SELECTED.
                    if (fi.files.length > 0)
                    {
                        // RUN A LOOP TO CHECK EACH SELECTED FILE.
                        for (var i = 0; i <= fi.files.length - 1; i++)
                        {
                            //ACCESS THE SIZE PROPERTY OF THE ITEM OBJECT IN FILES COLLECTION. IN THIS WAY ALSO GET OTHER PROPERTIES LIKE FILENAME AND FILETYPE
                            var fsize = fi.files.item(i).size;
                            totalFileSize = totalFileSize + fsize;
                            document.getElementById('fp').innerHTML =
                            document.getElementById('fp').innerHTML
                            + fi.files.item(i).name
                            + '&nbsp ' + Math.round((fsize / 1024)) + 'kb';
                        }
                    }
                }
              </script>
        		</div>
          </span>
          <textarea class="uk-textarea form-control" type="text" aria-describedby="button-addon2" name="rposttext" maxlength="300" rows="1" style="overflow:hidden;" placeholder="Текст сообщения ..."></textarea>
          <button class="btn btn-outline-secondary" uk-tooltip="Отправить" name="submit" type="submit" value="{PHP.L.Submit}" id="button-addon2">
            <i class="bi-caret-right"></i>
          </button>
        </div>
        </form>


<script type="text/javascript">
        var tx = document.getElementsByTagName('textarea');//РАСТЯГИВАЕМ_textarea
        for (var i = 0; i < tx.length; i++) {
        tx[i].setAttribute('style', 'height:' + (tx[i].scrollHeight) + 'px;overflow-y:hidden;');
        tx[i].addEventListener("input", OnInput, false);
        }
        function OnInput() {
        this.style.height = 'auto';
        this.style.height = (this.scrollHeight) + 'px';//////console.log(this.scrollHeight);
        }
        </script>

Есть input  который позволяет мне написать сообщение и прикрепить только  1 файл и отправить. 

И что бы было красиво я ее сделал на bootstrap  и добавил еще стилей

И получилось что то вроде окно чата как на vk 

 

Вот так когда ,нажимаю на скрепку и выбираю файл для загрузки 

То есть вижу, скрепку, имя файла, тип, вес

Все хорошо и красиво. но если вдруг я захотел изменить свое решение и вместо файла 546.png  я хочу загрузить файл users.rar , то я опять нажимаю на скрепку и и закачиваю (подготавливаю файл к отправке ) тот самый users.rar , но имя первого файла не удаляется и получается 

 

за вывод имя формата и веса файла отвечает  скрипт который находится внутри формы

видимо этот скрипт надо подкрутить что бы он значение обнулял при загрузке нового файла 

<script type="text/javascript">
              function GetFileSizeNameAndType()
                    {
                    var fi = document.getElementById('file-input'); // GET THE FILE INPUT AS VARIABLE.
                    var totalFileSize = 0;
                    // VALIDATE OR CHECK IF ANY FILE IS SELECTED.
                    if (fi.files.length > 0)
                    {
                        // RUN A LOOP TO CHECK EACH SELECTED FILE.
                        for (var i = 0; i <= fi.files.length - 1; i++)
                        {
                            //ACCESS THE SIZE PROPERTY OF THE ITEM OBJECT IN FILES COLLECTION. IN THIS WAY ALSO GET OTHER PROPERTIES LIKE FILENAME AND FILETYPE
                            var fsize = fi.files.item(i).size;
                            totalFileSize = totalFileSize + fsize;
                            document.getElementById('fp').innerHTML =
                            document.getElementById('fp').innerHTML
                            + fi.files.item(i).name
                            + '&nbsp ' + Math.round((fsize / 1024)) + 'kb';
                        }
                    }
                }
              </script>

Функционал input позволяет закачать только 1 файл по факту.

Как сделать что бы в таких случаях , В случаях передумывания, имя первого файла удалялась Оставалось только имя последнего файла?


This post was edited by vpktz (2022-06-18 08:35, 1 week ago)
Kopusha
#14 2022-06-19 11:16

<script type="text/javascript">
              function GetFileSizeNameAndType()
                    {
                    document.getElementById('fp').empty();
                    

vpktz
#15 2022-06-21 09:00
#45630 Kopusha:

<script type="text/javascript">
              function GetFileSizeNameAndType()
                    {
                    document.getElementById('fp').empty();
                    

что то не получается, куда я только это строку не вставлял document.getElementById('fp').empty();

что сразу по порядку как у вас указзано, что где то ниже, не получается. Скрипт перестает работать и не показывает имя + size