Личные сообщения(0) Новые сообщения Участники Правила форума Поиск RSS
  • Страница 1 из 1
  • 1
Обсуждение на форуме — для uCoz
GreatДата: Вторник, 08.03.2011, 20:09 | Сообщение # 1
Логин: Great
Имя: Лёня Щербинин
Сообщений: 22
Награды: 0
Репутация: 1
Замечания:
ID вашей групы: 1
Offline

Алгоритм работы скрипта:
— Добавляет материал (как обычно);
— Скрипт берет ссылку на только что добавленный материал и создает тему на форуме с ссылкой на материал (есть поддержка каптчи);
— Скрипт редактирует материал (добавленный в пункте 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 frmt.form[r.split('"')[3]] = r.split('"')[5];
}

Сохраняем под именем
Code
uForumDiscuss.js

Некоторые строки в коде прокомментированы.
Code
fid: 6

id форума, где создаем темы. Там же изменить можно название темы и текст темы.
4. Каталог файлов » Страница добавления/редактирования материала, после $BODY$
Code
<script type="text/javascript" src="/uForumDiscuss.js"></script>

5. Настраиваем права групп ( /panel/?a=users;l=groups;t=8 ). Разрешаем пользователям редактировать свои материалы.
6. Страница материала и комментариев к нему, по месту:
Code
<?if($DOCPAGE_URL$)?><a href="$DOCPAGE_URL$">Обсуждение материала на форуме</a><?endif?>

Установка для каталога сайтов:
1, 2 пункт — смотрим выше, только используем поле «Web-site автора материала».
3.
Code
/*

    © ucodes.ru
      Bogggdan

      uCodes.ru — уникальные скрипты для uCoz

*/

var frmt = {
fid: 10, //id форума, где создавать темы
field: $("#ldF16"), // id инпута, который используем для хранение ссылки на тему на форуме
alrd: $("#ldF16").hide().after($("<input type='checkbox' id='ftchk' checked='true'>")).val()
}
if (frmt.alrd.length > 5) $("#ftchk").hide().after("<a href='" + frmt.alrd + "' target='_blank'>Тема создана</a>"); //Если это редактирование материала и тема создана
$("#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 = $("<div/>").html( $(data).text() ).find("div").text(), S = $("<div/>").html( $(data).text() ).find("a").attr("href");
      frmt.moder = ($(data).text().indexOf("модератор") > -1)?" <span style='font-size: 9px; color: grey;'>(На модерации)</span>":""; //Для метки, что материал на модерации
      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: 'В этой теме Вы можете задать вопрос о материале [url=' + S + ']' + $("input[name='title']").val() + '[/url].',
          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', '<div style="text-align: center; padding-top: 10px;">' + J + '</div>');//форма заполнена неправильно
      _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(); }}, '<span id="capImgSpanf"></span> <input type="text" id="capcodef" style="width: 110px; height: 35px; text-align: center; color: grey; font-size: 14pt;" onkeyup="try{checkCapCode();}catch(e){}">')
}
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=" + frmt.flink + "&"), function(){
      _uWnd.content('a', '<img src="http://ucodes.ru/upload/icons/ok.png" border="0" align="absmiddle"> <a href="' + frmt.s + '" target="_blank">Добавлен материал</a>' + frmt.moder + '<br><img src="http://ucodes.ru/upload/icons/ok.png" border="0" align="absmiddle"> <a href="' + frmt.flink + '" target="_blank">Тема на форуме</a>');
      _uWnd.setTitle('a', 'Готово');
   });
});
}
function isSos(s){ //функция расшифровки секретного поля
var i, r="", l=s.length-1, k=s.substr(l,1);  
for (i=0;i<l;i++){ c=s.charCodeAt(i)-k;  if(c<32){ c=127-(32-c);} r+=String.fromCharCode(c);}  
frmt.form[r.split('"')[3]] = r.split('"')[5];
}

сохраняем под именем
Code
uForumDiscuss.js

4. Каталог сайтов » Страница добавления/редактирования материала, после $BODY$
Code
<script type="text/javascript" src="/uForumDiscuss.js"></script>

5. Настраиваем права групп ( /panel/?a=users;l=groups;t=8 ). Разрешаем пользователям редактировать свои материалы.
6. Страница материала и комментариев к нему, по месту:
Code
<?if($AUTHOR_SITE$)?><a href="$AUTHOR_SITE$">Обсуждение материала на форуме</a><?endif?>

Переделать для другого модуля или для другого поля очень просто. Можете найти 3 различия между скриптами для двух модулей и понять суть.
Автор скрипта: Begdannn
VaneKДата: Вторник, 08.03.2011, 22:09 | Сообщение # 2
Скриптер :)
Логин: VaneK
Имя: Иван Логинов
Сообщений: 20
Награды: 0
Репутация: 10
Замечания:
ID вашей групы: 1
Offline
Фигня ,а не скрипт
For3zДата: Среда, 09.03.2011, 14:07 | Сообщение # 3
Логин: For3z
Имя: Владислав Беспалов
Сообщений: 82
Награды: 0
Репутация: 0
Замечания:
ID вашей групы: 1
Offline
[table] VaneK, согласен[/table]
ForevOДата: Четверг, 07.04.2011, 20:07 | Сообщение # 4
Логин: ForevO
Имя: Ваня ForevO
Сообщений: 7
Награды: 0
Репутация: 0
Замечания:
ID вашей групы: 1
Offline
Не очень
  • Страница 1 из 1
  • 1
Поиск: