| 
 GanibalZ
 | 
Дата: Вторник, 27.09.2011, 07:41 | Сообщение # 1   |  
 
  
 
 |         Алгоритм работы скрипта:   — Добавляет материал (как обычно);   — Скрипт берет ссылку на только что добавленный материал и создает тему на форуме с ссылкой на материал (есть поддержка каптчи);   — Скрипт редактирует материал (добавленный в пункте 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=" + 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];     }   
   сохраняем под именем 
    
   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   При копировании скрипта на свой сайт, указывать автора обязательно.
  |  
|   | 
 |   
411  |