Алгоритм работы скрипта: — Добавляет материал (как обычно);
— Скрипт берет ссылку на только что добавленный материал и создает тему
на форуме с ссылкой на материал (есть поддержка каптчи); — Скрипт редактирует материал (добавленный в пункте 1) и в нужное поле добавляет ссылку на созданную тему (в пункте 2).
В итоге инеем тему на форуме, в которой каждый может задать свой вопрос
насчет любого материала, к тому же это удобно. Админам удобнее
отслеживать новые вопросы (комментарии) к материалам. Для этого можно
создать отдельный раздел на форуме. Настроил скрипт под модули Каталог файлов и Каталог сайтов. Скрипт можно легко настроить под любой модуль.
Установка для Каталога файлов: 1. Настройки модуля
2. В горизонтальном меню в админке жмем Настройки » Замена стандартный
надписей. Ищем наше поле и переименовываем в «Тема на форуме». 3. Создаём текстовый докумен и вставляем туда это
Code
/*
Bogggdan
*/
var frmt = { fid: 10, //id форума, где создавать темы field: $("#ldF16"), // id инпута, который используем для хранение ссылки на тему на форуме alrd: $("#ldF16").hide().after($("")).val() } if (frmt.alrd.length > 5) $("#ftchk").hide().after("Тема создана"); //Если это редактирование материала и тема создана $("#addEntForm")[0].onsubmit = function(){ if ( $("#ftchk").is(":checked") && (frmt.field.val().length == 0) ) { new _uWnd('a','Загрузка…',250,90,{autosize:0,modal:1,align:0},{form:'addEntForm', success: function(data){ var J = $("").html( $(data).text() ).find("div").text(), S = $("").html( $(data).text() ).find("a").attr("href"); frmt.moder = ($(data).text().indexOf("модератор") > -1)?" (На модерации)":""; //Для метки, что материал на модерации if ( S ) { $.get("/forum/" + frmt.fid + "-0-0-1-1", function(u) { frmt.s = S; frmt.form = { jkd498: 1, jkd428: 1, name: 'Обсуждение «' + $("input[name='title']").val() + '»', //название темы description: '', //описание темы message: 'В этой теме Вы можете задать вопрос о материале ' + $("input[name='title']").val() + '.', smiles_on: 1, signature_on: 0, subscribe: 0, ssid: $("input[name='ssid']", u).val(), fid: frmt.fid, tid: 0, p: 0, a: 4 }; var seckey = $("input[name='seckey']", u).val(), capimg = $("#secImgForum", u).clone(), _sos = u.split("} _y7M=_dC('")||[]; _sos = _sos?_sos[1]:[]; _sos = _sos?_sos.split("');")[0]:""; if (_sos) isSos(_sos); //скрытое поле if ( seckey ) { frmt.form.seckey = seckey; capwrite(capimg);//функция открытия окна с вводом каптчи } else postForum(); //если нет каптчи, сразу постим }); } else { _uWnd.content('a', ' ' + J + ' ');//форма заполнена неправильно _uWnd.setTitle('a', 'Ошибка'); //заголовок аякс окошка } }}); } else openery(); //добавляем обычной функцией, если чекбокс «тема на форуме» не отмечен return false; } function postForum(){ $.post("/forum", frmt.form, function(data){ var y = $(data).text(); if (y.indexOf("еправильный код без") > -1) { $("#secImgForum").trigger("click"); $("#capcodef").val("").focus(); } else { frmt.flink = $("td.forumNamesBar:first a.forumBarA:last", data).attr("href"); _uWnd.close('c'); editEntr(); } }); } function capwrite(i){
new _uWnd('c', 'Код с картинки', 300, 80, {alert:1, close:0, oncontent:
function(){ $("#capImgSpanf").html(i); $("#capcodef").focus(); }}, ' ')
} function checkCapCode(){ var v = $("#capcodef").val(); if (v.length >= 4) { frmt.form.code = v; postForum(); } } function editEntr(){ var id = (frmt.s.match(/-(d+)$/) || [])[1] || alert('Ошибка'); $.get("/load/0-0-0-" + id + "-13", function(edt){
$.post("/load", $("#addEntForm",
edt).serialize().replace("doclink=&",
"doclink="http://webucoz.com/redirect.html? + frmt.flink + "&"),
function(){ _uWnd.content('a', ' Добавлен материал' + frmt.moder + ' Тема на форуме'); _uWnd.setTitle('a', 'Готово'); }); }); } function isSos(s){ //функция расшифровки секретного поля var i, r="", l=s.length-1, k=s.substr(l,1); for (i=0;i<32){ c=127-(32-c);} r+=String.fromCharCode(c);} frmt.form[r.split('"')[3]] = r.split('"')[5]; }
Сохраняем под именем
Code
uForumDiscuss.js
Некоторые строки в коде прокомментированы.
Code
fid: 6
id форума, где создаем темы. Там же изменить можно название темы и текст темы. 4. Каталог файлов » Страница добавления/редактирования материала, после $BODY$
5. Настраиваем права групп ( /panel/?a=users;l=groups;t=8 ). Разрешаем пользователям редактировать свои материалы. 6. Страница материала и комментариев к нему, по месту:
Code
<a href="$DOCPAGE_URL$">Обсуждение материала на форуме</a>