Как сделать ограничение на комменты в доске объявление, только один?
Например проект типа фри-ланса, заказчик разместил проект (объявление) и фри-лансер публикует заявку (комментарий) и чтобы мог только 1 сделать и потом редактировать его (это уже в панели) но как можно ограничение поставить на 1, можно как то конечно скрыть после этого форму добавления ему или может еще у кого есть идеи по этому поводу ??
Например на хэлпере это так решали но как уже в рабочей версии хотелось бы узнать как сделать??
Последние 2 сообщения с форума:
Code
(1 вое сообщ) Я вообще в этом пока не особо шарю и техническиое решение не предоставлю но есть мысль...
В общем в шаблон вида материалов (коментарии) весь код берем в <div id="user$ID$> (примерно так). Потом, ищем на странице объект с ид текудего юзера, если находим то скрываем форму добавления коментария, если нет - форма отображается.
Сори что все коды с головы, надеюсь 2 пункт ясно описал. Но есть проблема: поиск будет на текущей странице, а другие страници застагиваться не будут. Т.е. если коментарий гдето вглубине на другой странице то форма появится.
Либо сделать поле в "старнице материалов и коментов" (блок, новости, каталог файлов) куда при добавлении сообщения через запятую будут записываться числа с ид юзера. Потом делать поиск по этому полю.
Теорию сказал, техническое решение не могу написать, хотя скрипт поиска у меня где то был... могу поискать если нужно
(2 сообщ Бармалей) Цитата (mob_dp)
<div id="user$UID$> угу, я тоже так думаю. и потом if( $(xxx).find('#user$UID$').length ) alert('вы уже писали тут');
первую страницу берем непосредственно из документа. остальные получаем ассинхронным яваскриптом и каждую новую странцу записываем в новую переменную comm1, comm2, ..., commN. и циклом проходим по всем этим переменным посмотреть код печать
function qeif(){ qf = setInterval(function(){ if($('#eMessage').html().indexOf('успешно') != -1){ $('#commentsPostHide').hide().after('<div id="eqeq3">Вы уже добавили комментарий.</div>'); clearInterval(qf); } }, 400); }; </script>
2. Там же, заменить: $COM_ADD_FORM$ на <div id="commentsPostHide">$COM_ADD_FORM$</div>
и второй способ на cookies:
Code
В начало страницы после <body> ставим следущий скрипт: <script type="text/javascript"> (function($) { $.cookie = function(key, value, options) {
// key and at least value given, set cookie... if (arguments.length > 1 && (!/Object/.test(Object.prototype.toString.call(value)) || value === null || value === undefined)) { options = $.extend({}, options);
if (value === null || value === undefined) { options.expires = -1; }
if (typeof options.expires === 'number') { var days = options.expires, t = options.expires = new Date(); t.setDate(t.getDate() + days); }
// key and possibly options given, get cookie... options = value || {}; var decode = options.raw ? function(s) { return s; } : decodeURIComponent;
var pairs = document.cookie.split('; '); for (var i = 0, pair; pair = pairs[i] && pairs[i].split('='); i++) { if (decode(pair[0]) === key) return decode(pair[1] || ''); // IE saves cookies with empty string as "c; ", e.g. without "=" as opposed to EOMB, thus pair[1] may be undefined } return null; }; })(jQuery); </script>
Находим, где находятся комментарии в шаблоне и перед ними, точнее перед <?if($COM_IS_ACTIVE$)?> ставим следующий скрипт: <script type="text/javascript"> var board_id = $ID$; </script>
А в форму добавления комментария ставим следующий скрипт: <?if($MODULE_ID$="board")?><script type="text/javascript"> // checking if($.cookie('board'+board_id)) $('.commTable').remove();
Но все эти способы можно обойти, может поможете довести это все до ума, чтобы пользователь не смог флудить, а только один раз и желательно не нагружать скриптом сайт сильно... в Trane73 была идея "Могу на тегах, но там долго обновляется сайтмап и поэтому смысла нет " может кто то упростит этот способ, помогите пожалуйста друзья ...