24 апреля 2016, 23:15 Главная страница нагруженного сайта стала грузиться быстрее более чем в два раза. Очень круто) Хостинг / PHP 7 на modhost.pro 45 +1
19 декабря 2015, 21:43 Готов также скинуться на такой модуль. Объявления о работе / Модуль MODX Revo для постинга в FB, TW, LI 34 0
13 октября 2015, 13:33 Вот это я уже не помню правда $.ajax({ data: {type:type}, type: "POST", url: "/аякс-загрузка-фоток.html",в files.js для чего посылал, скорее всего там у меня был првоерчный сниппет, который показывал, прокатывал POST или нет у меня на странице. Соотв-но можно без него обойтись. Вопросы / TicketForm - количество загружаемых файлов 31 0
13 октября 2015, 13:06 Пожалуйста. Теперь хоть сам отсюда смогу восстановить, если вдруг чего опять))) Вопросы / TicketForm - количество загружаемых файлов 31 0
13 октября 2015, 13:05 Получается следующая система. Можно закидывать и мультиаплодно, тогда при превышении укзаанного лимита, скрывается кнопка «отправить». Учитывается ссылки к каждой добавленной фоте «восстановить» и «удалить». И при уходе со страницы и возвращении на нее, количество загруженных фоток ранее учитывается и форма показывает превышение лимита, убирая кнопку «отправить». Вопросы / TicketForm - количество загружаемых файлов 31 0
13 октября 2015, 13:01 Вроде все) Учти все id в формах при подключении. Вопросы / TicketForm - количество загружаемых файлов 31 0
13 октября 2015, 13:01 Во! Это tpl.Tickets.form.files: <div id="ticket-files-list"> [[+files]] <div class="clearfix"></div> </div> <div id="ticket-files-container" data-action="ticket/file/upload"> <a id="ticket-files-select" href="javascript:;">[[%ticket_file_select]]</a> <div id="ticket-files-progress"> <span id="ticket-files-progress-count">0/0</span> <span id="ticket-files-progress-percent">0%</span> <div id="ticket-files-progress-bar"></div> </div> </div> <span style="display:none;" id="max-response"><strong>Лимит исчерпан</strong></span> Вопросы / TicketForm - количество загружаемых файлов 31 0
13 октября 2015, 12:58 Сейчас, еще кое-что никак не вспомню… Вопросы / TicketForm - количество загружаемых файлов 31 0
13 октября 2015, 12:50 Это temp-count-photo: <?php $userId; $modx->getObject('TicketFile'); return $count = $modx->getCount('TicketFile', array('parent'=>0, 'createdby'=>$userId)); Вопросы / TicketForm - количество загружаемых файлов 31 0
13 октября 2015, 12:49 $(document).ready(function() { var maxPhoto=$("#ajax_max_value").html() maxPhoto = parseInt(maxPhoto); var count=$("#ajax_test_value").html() count = parseInt(count); if(count>maxPhoto){ $("#ajax_hide_limit").hide(); } if(count<=maxPhoto){ $("#ajax_hide_limit").show(); } })Это подключаемый скрипт к странице с формой. Вопросы / TicketForm - количество загружаемых файлов 31 0
13 октября 2015, 12:45 var form = $('#comment-form'); if (!form.length) { form = $('#ticketForm'); } Tickets.Uploader = new plupload.Uploader({ runtimes: 'html5,flash,silverlight,html4', browse_button: 'ticket-files-select', //upload_button: document.getElementById('ticket-files-upload'), container: 'ticket-files-container', filelist: 'ticket-files-list', progress: 'ticket-files-progress', progress_bar: 'ticket-files-progress-bar', progress_count: 'ticket-files-progress-count', progress_percent: 'ticket-files-progress-percent', form: form, multipart_params: { action: $('#' + this.container).data('action') || 'ticket/file/upload', tid: this.form.find('[name="tid"]').val(), form_key: this.form.find('[name="form_key"]').val(), ctx: TicketsConfig.ctx || 'web' }, drop_element: 'ticket-files-list', url: TicketsConfig.actionUrl, filters: { max_file_size: TicketsConfig.source.size, mime_types: [{ title: 'Files', extensions: TicketsConfig.source.extensions }] }, resize: { width: TicketsConfig.source.width, height: TicketsConfig.source.height }, flash_swf_url: TicketsConfig.jsUrl + 'web/lib/plupload/js/Moxie.swf', silverlight_xap_url: TicketsConfig.jsUrl + 'web/lib/plupload/js/Moxie.xap', init: { Init: function(up) { if (this.runtime == 'html5') { var element = $(this.settings.drop_element); element.addClass('droppable'); element.on('dragover', function() { if (!element.hasClass('dragover')) { element.addClass('dragover'); } }); element.on('dragleave drop', function() { element.removeClass('dragover'); }); } }, PostInit: function(up) {}, FilesAdded: function(up, files) { this.settings.form.find('[type="submit"]').attr('disabled',true); up.start(); }, UploadProgress: function(up, file) { $(up.settings.browse_button).hide(); $('#' + up.settings.progress).show(); $('#' + up.settings.progress_count).text((up.total.uploaded + 1) + ' / ' + up.files.length); $('#' + up.settings.progress_percent).text(up.total.percent + '%'); $('#' + up.settings.progress_bar).css('width', up.total.percent + '%'); }, FileUploaded: function(up, file, response) { response = $.parseJSON(response.response); if (response.success) { // Successfull action /*Моя фича*/ var maxPhoto=$("#ajax_max_value").html() maxPhoto = parseInt(maxPhoto); var count=$("#ajax_test_value").html() count = parseInt(count); var type="test"; $.ajax({ data: {type:type}, type: "POST", url: "/аякс-загрузка-фоток.html", success: function ( data ) { count++; $("#ajax_test_value").html(count); if(count>=maxPhoto){ $("#ticket-files-container").hide(); $("#max-response").show(); } if(count>maxPhoto){ $("#ajax_hide_limit").hide(); } else{ $("#ajax_hide_limit").show(); } /* $("#ajax_test_block").html(count);*/ /*$("#ticket-files-select").hide();*/ } }); /*конец моей фичи*/ var files = $('#' + up.settings.filelist); var clearfix = files.find('.clearfix'); if (clearfix.length != 0) { $(response.data).insertBefore(clearfix); } else { files.append(response.data); } } else { Tickets.Message.error(response.message); } }, UploadComplete: function(up, file, response) { $(up.settings.browse_button).show(); $('#' + up.settings.progress).hide(); up.total.reset(); up.splice(); this.settings.form.find('[type="submit"]').attr('disabled',false); }, Error: function(up, err) { Tickets.Message.error(err.message); } } }); Tickets.Uploader.init(); $(document).on('click', '.ticket-file-delete', function(e) { var deleted = 'deleted'; var $this = $(this); var $form = $this.parents('form'); var $parent = $this.parents('.ticket-file'); var id = $parent.data('id'); var form_key = $form.find('[name="form_key"]').val(); $.post(TicketsConfig.actionUrl, {action: 'ticket/file/delete', id: id, form_key: form_key}, function(response) { /*Моя фича*/ var maxPhoto=$("#ajax_max_value").html() maxPhoto = parseInt(maxPhoto); var count=$("#ajax_test_value").html() count = parseInt(count); var type="test"; $.ajax({ data: {type:type}, type: "POST", url: "/аякс-загрузка-фоток.html", success: function ( data ) { count--; $("#ajax_test_value").html(count); if(count>=maxPhoto){ $("#ticket-files-container").hide(); $("#max-response").show(); } else {$("#ticket-files-container").show(); $("#max-response").hide(); } if(count>maxPhoto){ $("#ajax_hide_limit").hide(); } else{ $("#ajax_hide_limit").show(); } /* $("#ajax_test_block").html(count);*/ /*$("#ticket-files-select").hide();*/ } }); /*конец моей фичи*/ if (response.success) { if ($parent.hasClass(deleted)) { $parent.removeClass(deleted) } else { $parent.addClass(deleted) } } else { Tickets.Message.error(response.message); } }, 'json'); return false; }); $(document).on('click', '.ticket-file-restore', function(e) { var deleted = 'deleted'; var $this = $(this); var $form = $this.parents('form'); var $parent = $this.parents('.ticket-file'); var id = $parent.data('id'); var form_key = $form.find('[name="form_key"]').val(); $.post(TicketsConfig.actionUrl, {action: 'ticket/file/delete', id: id, form_key: form_key}, function(response) { /*Моя фича*/ var maxPhoto=$("#ajax_max_value").html() maxPhoto = parseInt(maxPhoto); var count=$("#ajax_test_value").html() count = parseInt(count); var type="test"; $.ajax({ data: {type:type}, type: "POST", url: "/аякс-загрузка-фоток.html", success: function ( data ) { count++; $("#ajax_test_value").html(count); if(count>=maxPhoto){ $("#ticket-files-container").hide(); $("#max-response").show(); } else {$("#ticket-files-container").show(); $("#max-response").hide(); } if(count>maxPhoto){ $("#ajax_hide_limit").hide(); } else{ $("#ajax_hide_limit").show(); } /* $("#ajax_test_block").html(count);*/ /*$("#ticket-files-select").hide();*/ } }); /*конец моей фичи*/ if (response.success) { if ($parent.hasClass(deleted)) { $parent.removeClass(deleted) } else { $parent.addClass(deleted) } } else { Tickets.Message.error(response.message); } }, 'json'); return false; }); $(document).on('click', '.ticket-file-insert', function(e) { var $this = $(this); var $parent = $this.parents('.ticket-file'); var $text = $('[name="content"]'); var template = $parent.find('.ticket-file-template').html(); template = template.replace(/^\n/g, '').replace(/\t{2}/g, '').replace(/\t$/g, ''); $text.focus(); $.markItUp({replaceWith: template}); return false; });Это files.js Ща другое распишу… Тут учтены в том числе варианты с восстановлением фоток и их удалением в форме. Вопросы / TicketForm - количество загружаемых файлов 31 0
13 октября 2015, 12:27 Да, там просто такая ситуация. Если авторизваонный чувак, закидывает фоты и уходит со страницы, не отправляя… но потом возвращается на страницу с формой. Все загруженные фоты ранее остаются… и если не учитваеть это(алерт тут уже не поможет), то вся история напрасна. Я скрываю кнопку в таком случае «отправить». В ближайшее время постараюсь восстановить. Вопросы / TicketForm - количество загружаемых файлов 31 0
13 октября 2015, 12:23 Ок, я ща порпобую сделать откат до субботы, скопирую, и возвращусь) Надеюсь, он не пропал))) Ну мой как раз тоже и предусматриает это через [[*max-photo]] .) Вопросы / TicketForm - количество загружаемых файлов 31 0
13 октября 2015, 12:17 Блеать! тикеткс обновил что-ли… ща, пороюсь Вопросы / TicketForm - количество загружаемых файлов 31 0
13 октября 2015, 12:13 Вот мой код files.js: Вопросы / TicketForm - количество загружаемых файлов 31 0
13 октября 2015, 12:12 Создал дополнительное поле [[*max-photo]]. Прикрепил к ресурсу, на котором будет вызов формы. Форму создал отдельную, на вскйи случай photo.tpl.Tickets.form.create: <form class="well create" method="post" action="" id="ticketForm"> <div id="ticket-preview-placeholder"></div> <input type="hidden" name="tid" value="0" /> <div class="form-group"> <label for="ticket-sections">Выберете альбом</label> <select name="parent" class="form-control" id="ticket-sections">[[+sections]]</select> <span class="error"></span> </div> <div class="form-group"> <label for="ticket-pagetitle">[[%ticket_pagetitle]]</label> <input type="text" class="form-control" placeholder="[[%ticket_pagetitle]]" name="pagetitle" value="" maxlength="50" id="ticket-pagetitle"/> <span class="error"></span> </div> <div class="form-group"> <textarea class="form-control" placeholder="[[%ticket_content]]" name="content" id="ticket-editor" rows="10"></textarea> <span class="error"></span> </div> <div class="ticket-form-files"> [[+files]] </div> <div class="form-actions row"> <div class="col-md-6"> <input type="button" class="btn btn-default preview" value="[[%ticket_preview]]" title="Ctrl + Enter" /> </div> <div class="col-md-6 move-right"> <!--<input type="button" class="btn btn-primary publish" name="publish" value="[[%ticket_publish]]" title="" /> --> <div id="ajax_hide_limit"><input type="submit" class="btn btn-danger draft" name="draft" value="Отправить на модерацию" title="Ctrl + Shift + Enter" /></div> </div> </div> </form> <strong>Количество загруженных фотографий:</strong><div style="display:inline-block;" id="ajax_test_value">[[!temp-count-photo? &id=`[[*id]]` &userId=`[[!+modx.user.id]]`]]</div> из <div style="display:inline-block;" id="ajax_max_value">[[*max-photo]]</div> <div id="ajax_test_block" ></div> Далее… Вопросы / TicketForm - количество загружаемых файлов 31 0
13 октября 2015, 11:55 У меня получилогсь сделать. Допиливал files.js. Могу кинуть подробно все шаги, мультизагрузка тоже учтена и она работает. ) Но, чувствую, не самый оптимальный способ(т.к. опыт небольшой), но рабочий. Вопросы / TicketForm - количество загружаемых файлов 31 +1
07 октября 2015, 16:53 Да, убрал. Я послал приглашение в скайп. Готов заплатить за решение этой проблемы) Вопросы / Как правильно вывести данные через PdoPage 8 0
07 октября 2015, 16:45 Да, авторизован конечно) Вот лог самой ошибки: .0001860: Could not process query, error #1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) ORDER BY ' at line 1 Вопросы / Как правильно вывести данные через PdoPage 8 0
07 октября 2015, 16:42 Не работает так тоже( Вопросы / Как правильно вывести данные через PdoPage 8 0
Возможно ли реализовать возможность предоплаты за доставку на сайте? Так ради этого мне и нужно это все, чтобы клиент платил сразу при оформлении заказа, чтобы избавить себя от мусорных заявок (когда человек оставляет заявку, а предоплату делать не ...
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 18 px. Да и текст комментариев можно таким сделать. Для меня лично 16 — мелковато на больших экранах (в комментариях вообще 15 ...
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска события поставить ниже чем orderUI, после
ImageOptimizer - WebP/AVIF и responsive <picture> для MODX 3 Дополнение доступно modstore.pro/packages/photos-and-files/imageoptimizer
Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeV... Добавил localizator3_default_language
msInShopNotify Начиная с версии 3.0.0-beta добавлена поддержка MiniShop3 Минимальные требования: PHP 8.4 MODX 3.2 MiniShop3
MaxNotify Обновление 1.2.0-pl (03.07.2026) — добавлены уведомления о заявках FormIt через hook-сниппет `maxNotifyFormIt`; — добавлены уведомления о заявках SendIt через hook-...
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurre... Да, планируется. Даже чуть больше, чем просто бонусная система)
Тут учтены в том числе варианты с восстановлением фоток и их удалением в форме.
Надеюсь, он не пропал)))
Ну мой как раз тоже и предусматриает это через [[*max-photo]] .)
Далее…
Вот лог самой ошибки: