cotonti.com : Вывод в плагине clients сначала новых клиентов https://www.cotonti.com Laatste forum onderwerpen Cotonti en Sun, 01 Feb 2026 14:15:51 -0000 Cotonti Aik #45505 vpktz:

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

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

Возможно, это может быть функция, которая отправляет запрос к базе данных и получает список клиентов. В этой функции вы можете изменить условие сортировки в запросе. Например, вместо SELECT * FROM clients ORDER BY id ASC вы можете использовать SELECT * FROM clients ORDER BY id DESC Это должно вывести клиентов в обратном порядке, т.е. сначала новые, а потом старые. 

Возможно, что в настройках плагина есть опция для указания того, как должны быть отсортированы клиенты. Эта опция может быть реализована в виде выпадающего списка или радиокнопок, где можно выбрать один из вариантов сортировки (например, по имени клиента, по дате добавления и т.д.).

Также возможно, что плагин предоставляет возможность указывать параметры в запросе к базе данных через URL. Например, может быть возможность вызова списка клиентов с параметром order=desc, что будет означать, что клиенты нужно вывести в обратном порядке. Например:

http://example.com/clients?order=desc Однако, снова же, без доступа к коду плагина трудно сказать точно, какие варианты сортировки и настройки предоставляет плагин.

Добавлено 23 минуты спустя:

#45642 vpktz:

blushуф, мощно, php.

спасибо Копуш

Теперь мой чатик визуально да и функционально не хуже вкашишного я считаю.

function getFileSizeNameAndType() {
  const fileInput = document.getElementById('file-input');
  let totalFileSize = 0;

  if (fileInput.files.length > 0) {
    for (let i = 0; i < fileInput.files.length; i++) {
      const file = fileInput.files[i];
      totalFileSize += file.size;
      document.getElementById('fp').innerHTML += `${file.name} ${Math.round(file.size / 1024)}kb`;
    }
  }
}

Суть функции сохранена, но код стал более читабельным и понятным.

Стоит также заметить, что в данном коде используется оператор +=, который добавляет значение к уже существующему. Этот оператор упрощает код и снижает нагрузку на процессор, так как не требует перезаписывания переменной на каждой итерации цикла.

Ну и как опицю добавим дату:

function getFileSizeNameAndType() {
  const fileInput = document.getElementById('file-input');
  let totalFileSize = 0;

  if (fileInput.files.length > 0) {
    for (let i = 0; i < fileInput.files.length; i++) {
      const file = fileInput.files[i];
      totalFileSize += file.size;
      const date = new Date().toLocaleString();
      document.getElementById('fp').innerHTML += `${date}: ${file.name} ${Math.round(file.size / 1024)}kb`;
    }
  }
}

Теперь текущая дата и время будут выводиться перед информацией о файле. По умолчанию формат даты будет соответствовать настройкам региональных настроек браузера, но этот формат можно переопределить, передав аргументы в метод toLocaleString(). Подробнее об этом можно прочитать в документации: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString

]]>
Vr, 06 Jan 2023 15:36:27 -0000
Kopusha Это бесполезные вопросы - все упаковано в работу с кучей других модулей и плагинов, так "из коробки" толку с него ноль. Понимая php ajax js можно за неделю переверстать на свой проект. Не понимая - нельзя.

]]>
Di, 05 Jul 2022 06:59:02 -0000
vpktz   У меня есть nulbilling но никогда им не пользовался , считал тестирование им не полноценным , легко можно было через поставщика биллинговых услуг тестить на прямую, сейчас проблема. Придется наверное nulbilling пока пользоваться но ладно. На выходных по тестю Paypal, Stripe, liqpay.

 

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

 

]]>
Ma, 04 Jul 2022 20:17:06 -0000
Kopusha

Added 4 minutes later:

#45648 vpktz:

 

и еще сейчас одна проблема возникла. У меня настроена только одна билинговая система Ikassa. Но эта система сейчас перестала поддерживать рубли так как украинская. 

 

У меня стоят Paypal, Stripe, liqpay, но боюсь они тоже не заработают. Дело не "в поддерживают рубли", дело в стране. Для РФ есть готовое отличное решение на Котонти - Nullbilling.

]]>
Ma, 04 Jul 2022 07:01:53 -0000
vpktz #45647 Kopusha:

Частная разработка) Оно увязано с сотней хуков и десятком плагинов, не надо тащить в проект все что блестит. Надо расписать задачи и под них писать решение.

У меня почти все готово, осталось только уведомлялку на сайте сделать. Типа колокольчика.  Хочу что бы в этот колокольчик все сообщения которые на почту приходили. Но я так понимаю это уже явно надо заново писать. Все варианты которые я нашел про уведомления у меня почему то не работают. Да и не нравятся они мне в целом хотя на первое время бы пошло. Но хочется что бы все сообщения которые на почту дублировались и в колокольчик на сайте, а при раскрытии колокольчика, обнулялось количествоо новых  уведомлений, и хранилось последние 10 например уведомлений. 

 

и еще сейчас одна проблема возникла. У меня настроена только одна билинговая система https://interkassa.com. Но эта система сейчас перестала поддерживать рубли так как украинская. 

Error

Checkout has no purses with requested currency [RUB]

А только эта система работает без регистрации всяких ип и самозанятых.  Остальные яндекс кассы или альбанк кассы например все требуют какие то регистрации. Хотя мне просто нужно  для тестов пока  не настрою все полностью. Может кто подскажет биллинговую систему какую нить которая сейчас не требует никаких регистраций ип и самозанятых, потому что для тестов ?

 

]]>
Zo, 03 Jul 2022 20:34:03 -0000
Kopusha Частная разработка) Оно увязано с сотней хуков и десятком плагинов, не надо тащить в проект все что блестит. Надо расписать задачи и под них писать решение.

]]>
Zo, 03 Jul 2022 17:30:26 -0000
vpktz #45645 Kopusha:

Это аналог PM на AJAX так сверстан.

Есть в свободном доступе этот аналог, или он частная разработка?

 

]]>
Zo, 03 Jul 2022 13:13:10 -0000
Kopusha Это аналог PM на AJAX так сверстан.

]]>
Zo, 03 Jul 2022 08:44:29 -0000
vpktz #45643 Kopusha:

У меня как то так

Это модуль pm  так сверстан?

]]>
Za, 02 Jul 2022 17:52:57 -0000
Kopusha У меня как то так

]]>
Vr, 01 Jul 2022 07:38:52 -0000
vpktz blushуф, мощно, php.

спасибо Копуш

Теперь мой чатик визуально да и функционально не хуже вкашишного я считаю.

]]>
Thu, 30 Jun 2022 18:11:34 -0000
Kopusha
<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 =
                            document.getElementById('fp').innerHTML
                            + fi.files.item(i).name
                            + '&nbsp ' + Math.round((fsize / 1024)) + 'kb';
                        }
                    }
                }
              </script>
]]>
Ma, 27 Jun 2022 06:51:44 -0000
vpktz #45630 Kopusha:

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

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

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

]]>
Di, 21 Jun 2022 09:00:54 -0000
Kopusha <script type="text/javascript">
              function GetFileSizeNameAndType()
                    {
                    document.getElementById('fp').empty();
                    

]]>
Zo, 19 Jun 2022 11:16:31 -0000
vpktz #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 файл по факту.

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

]]>
Za, 18 Jun 2022 08:24:36 -0000
Kopusha Выучить английский. Сложно заполнить default value.

]]>
Za, 18 Jun 2022 05:39:23 -0000
vpktz #45626 Kopusha:
#45625 vpktz:

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

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

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

]]>
Vr, 17 Jun 2022 20:51:45 -0000
Kopusha #45625 vpktz:

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

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

]]>
Vr, 17 Jun 2022 07:44:28 -0000
vpktz Спасибо дорогой копуша. то что 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()

 

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

]]>
Thu, 16 Jun 2022 21:32:41 -0000
Kopusha https://github.com/Cmsworks/cot-sbr/blob/master/sbr/inc/sbr.main.php#L653

ORDER BY post_date ASC/DESC?

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

]]>
Thu, 16 Jun 2022 11:38:12 -0000
vpktz #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  есть форма отправки сообщений для заказчика, исполнителя, администратора. Соощения этой формы приходят тут же на этой странице, только сортируются "сначала (сверху)  новые потом старые (снизу)" . Я хочу реализовать что то вроде чата как в вк, нужно что бы последнии сообщения были снизу.

 

]]>
Wo, 08 Dec 2021 13:07:38 -0000
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 вариантов много, посмотрите в таблице.

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

 

]]>
Wo, 08 Dec 2021 12:03:30 -0000
vpktz #45508 webitproff:

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

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

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

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

пример

 

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

 

]]>
Wo, 08 Dec 2021 08:56:53 -0000
webitproff старые или новые что конкретно, какое событие? - дата регистрации пользователя или дата сделки?

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

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

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

]]>
Wo, 08 Dec 2021 06:22:46 -0000
Wertex Di, 07 Dec 2021 21:07:43 -0000 vpktz В плагине clients (это который для биржи) , эти самые клиенты выводятся сначала старые и к низу новые(последние), вопрос как сделать наоборот?

]]>
Di, 07 Dec 2021 10:51:53 -0000