Наверное, можно просто создать поле «дата» у материала и сравнивать с текущей датой — для начала больше текущего времени или меньше. По этому условию скрывать или показывать элемент. Попробуйте начать с такого простого шага реализацию Вашей затеи) А остальное — прикрутить Аякс и т.д. будет проще, если это получится. Еще легче будет, если немного вникните в т.н. UNIX-время. Поле тогда можно создать просто число.
Absolute134
Если шаблон не модерн, нужно будет добавить ещё стилей немного:
С этими стилями отличная адаптивность получается на… шаблоне не модерн.
К счастью немного роликов в бд нужно обернуть, обойдусь без костыля на js. Там кстати в iframe_no_resp по коду у вас итак объект jQuery со всеми методами — нет никакого смысла передавать это в функцию $.
$(function () { var iframe_resp_classes = ".video_frame.embed-responsive-item"; var iframe_no_resp = $("iframe").not(iframe_resp_classes); iframe_no_resp.wrap("<div class='video_wrap embed-responsive embed-responsive-16by9'></div>"); iframe_no_resp.addClass(iframe_resp_classes); });
В любом случае, благодарствую за наводку на стили.
Попробуйте в /templates/modern/js/images-upload.js
найти на 130 и 188 строке
file_name: $('#title').val()+' '+field_name
Заменить на:
file_name: $('#title').val().replace(/\./g,'-')+' '+field_name
Тут непонятно чуток другое. Много чего есть, много чего можно сделать, или не сделать, как угодно. Зачем только. Есть какие-то конкретные предложения, уверен, все будут рады. А разговоры, ради разговоров, можно. Запрета то нет, но зачем, время терять.
Уважаемый IamB мне задал вопрос — было бы неприлично просто проигнорировать человека. Другое, что мы не поняли друг друга и понеслось обсуждение/споры, как это часто бывает. А костыли на PHP — это я видел раньше. В js банально setTimeout, который во времена ES5 был — у вас уже асинхронная функция, не блокирующая поток. А более поздние спецификации в этом плане ещё много полезных фич добавили, что асинхронность стала естественной частью разработки.
А вообще, согласен — знатно нафлудили. С другой стороны администрация — разрешает (вроде бы :) По крайней мере конструктивные штуки обсуждаем — не за жизнь… или переход на личности… Разве что, пожалуй, за исключением одного гражданина. Да и контент генерируется — для SEO+. Когда форум живет, споры-дебаты, обсуждения это мне кажется наоборот хорошо. ИМХО конечно.
Ага, ответа по существу я не увидел. А это разве не вы писали?
При низких бюджетах и ограниченном времени — равных разработке на PHP нет, ну разве что на Node.js еще… Но кроме «модно-молодежно», пока особых преимуществ не видно… Разве что асинхронность, недоступная для PHP??
Здесь я рассуждаю о возможных преимуществах Node.js. Вроде из текста понятно. Вы и Fuze сказали, что я не понимаю что такое асинхронность. То есть не знаю о чем говорю.
Давайте к конкретике. Короткий и простой вопрос с примером на аяксе:
$.ajax({ url : 'https://enable-cors.org/', dataType : 'html', async : false, cache : false }).done((res)=>{ alert( $(res).find('h2:first').text() ) }); alert(1);
Почему поток выполнения будет заблокирован ajax запросом?? Почему мы сначала увидем результат из ajax, а потом 1. Почему?))
Может быть я действительно не понимаю каких-то вещей.
Объясните тогда)) Я за истину. И признаю ошибку, если будут аргументы.
Absolute134, итак, я вас спросил зачем вам асинхронность в PHP. Вы меня отправили сначала к jQuery потом к асинхронности выполнения кода в javascript. Вы еще хотите ответить мне на вопрос: Зачем вам асинхронность в PHP в вашем проекте на InstantCMS?
Вы спросили дословно следующее: «Расскажите зачем вам асинхронность?». На что получили ответ. Про PHP Вы не спрашивали.
А Fuze далее почему-то подумал, что я воспринимаю ICMS, типа как react-приложение, которое рендерится на клиенте.
Никаких проблем)) Закрывайте тему за ненадобностью сообществу. Тем более, если это всё просто шоу, как сказал уважаемый Ris.
синхронный ajax запрос — не блокирует поток?
блокирует поток таких же запросов из js.
Вы (для примера) возьмите тот же jQuery, использующийся в icms и поотключайте эту самую асинхронность в ajax вызовах. А потом начните пользоваться сайтом.
Ничего не изменится. Потому что у нас страница грузится вся сразу (серверный рендеринг) и по ajax после загрузки страницы мы не получаем ничего.
Вы путаете асинхронность выполнения кода в javascript с асинхронностью в ajax вызовах.
Fuze, я не совсем про это. Ajax на проекте используются. В том же мессенджере. Я в целом, про блокировку потока, выше привел пример с кодом. И alert'ами. Блокируется поток при async: false?)
Fuze, за одно рассуди быть этой теме или не быть. А то вот выше люди (вероятно с тонкой душевной организацией) претензии имеют) Не знаю насколько обоснованные.
Absolute134, давайте я напишу вам в личку адрес своего сайта, а Вы мне в ответ вышлете пароль базы данных из конфига моего сайта?
Ломайте хоть всё, если сможете. У меня есть все необходимые бэкапы.
Один вопрос страннее другого сегодня.
Во-первых, мне Ваш сайт совсем не сдался.
Во-вторых, я не пытаюсь потешить свое ЧСВ или кому-то что-то доказать.
В-третьих, Вы имеете полное право считать, что уязвимостей не существует в принципе, равно как и людей способных эксплуатировать эти уязвимости.
синхронный ajax запрос — не блокирует поток? Так?
Давайте рассмотрим ситуацию. Запрос браузером произвольной страницы-> Работает сервер(PHP) -> Страница загрузилась -> Клик по баттону -> JS формирует новый запрос к серверу -> Работает сервер(PHP) отдает какой-то json -> JS встраивает ответ сервера в тело страницы. Где блокировка потока?
Вам было предложено отключить асинхронные запросы. Давайте на мухах и котлетах.
Получим текст самого первого заголовка вот этого прекрасного сайта:
https://enable-cors.org/
Опять же на любимом всеми jQuery. Хотя можно и без него. Не суть.
Получаем заголовок асинхронно (как и положено).
$.ajax({ url : 'https://enable-cors.org/', dataType : 'html', async : true, cache : false }).done((res)=>{ alert( $(res).find('h2:first').text() ) }); alert(1);
Что раньше выведется вам? 1 или Why is CORS important?
Можете открыть консоль браузера прямо на этом форуме, вставить туда этот код и нажать enter;
А теперь то же самое, но синхронно:
$.ajax({ url : 'https://enable-cors.org/', dataType : 'html', async : false, cache : false }).done((res)=>{ alert( $(res).find('h2:first').text() ) }); alert(1);
Вопросы, замечания?))
Не понимаю, что такое асинхронное выполнение кода?
Да. В контексте вашего примера выше.
То есть по-Вашему, синхронный ajax запрос — не блокирует поток? Так?
Вы (для примера) возьмите тот же jQuery, использующийся в icms и поотключайте эту самую асинхронность в ajax вызовах.
Думаю, вы путаете тёплое с мягким. Посмотрите хотя бы определение асинхронности здесь.
Можете сформулировать Вашу мысль) Что с чем я путаю… Не понимаю, что такое асинхронное выполнение кода?
Разве что асинхронность, недоступная для PHP??
Расскажите зачем вам асинхронность?
Даже не знаю что ответить)) Вы (для примера) возьмите тот же jQuery, использующийся в icms и поотключайте эту самую асинхронность в ajax вызовах. А потом начните пользоваться сайтом. Посмотрите, что получится и вряд ли впредь такие вопросы будете задавать.
Не, по уму, я за то, чтобы было все правильно, чтобы докопаться нельзя было, до всего. Но, так не бывает и не будет. В любой ОС и в любом языке, в любом ПО.
Где-то риски выше, а где-то ниже.
Например, безопасность Django (тот, который на питоне): docs.djangoproject.com/en/3.2/topics/security/
Сам фреймворк строится таким образом, чтобы минимизировать риски + имеет встроенные защиты. Другое дело, что бюджеты и время.
При низких бюджетах и ограниченном времени — равных разработке на PHP нет, ну разве что на Node.js еще… Но кроме «модно-молодежно», пока особых преимуществ не видно… Разве что асинхронность, недоступная для PHP??
Понятно, что при низких бюджетах и ограниченном времени мы как бы добровольно жертвуем безопасностью. ОК. Поэтому есть смысл немного заморочиться и минимизировать риски — провести хотя бы базовый пентистинг на систему, поставить WAF или, допустим, простые фильтры запросов на nginx и т.д.
Как вариант, просто повесить ивент на dropdown «меню действий». Правда оно будет на всех страницах при нажатии на это меню добавлять ссылку.
$('.breadcrumb + .dropdown').on('show.bs.dropdown', function () { let li = document.createElement('li'), a = document.createElement('a'); li.className = 'nav-item'; a.href = '#'; a.className = 'nav-link text-nowrap'; a.textContent = 'Скопировать ссылку'; li.appendChild(a); $(this).children('.dropdown-menu').append(li); let handler = ()=>{ let inp = document.createElement('input'); inp.value = location.href; document.body.appendChild(inp); inp.select(); if(document.execCommand('copy')){ alert('Успешно скопировано') } inp.remove(); return false; }; li.onclick = handler; });
Вот вам и Apache((
Наглядно экспойтим реверс-шелл на v2.4.49. Сработает и на v2.4.50 (CVE-2021-42013). Жесть ведь?? Полная жесть))