Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Архив » Запросы по скриптам[4]


Запросы по скриптам[4]

Сообщений 481 страница 500 из 1000

Перевести1

Архивная тема с запросами о создании различных скриптов

Это архивная тема с запросами от пользователей на написание скриптов. Некоторые скрипты могут быть индивидуальным исполнением для конкретного форума, что не гарантирует его работоспособность на другом форуме. Перед использованием скрипта, пожалуйста, внимательно изучите все предыдущие сообщения между автором запроса и исполнителем, в них могут содержаться важные детали о функционале и установке найденного скрипта.
Скрипты, опубликованные в этой теме, могут быть устаревшими и нерабочими, поскольку функционал форумов и стандарты языка javascript или библиотеки jquery могли измениться.

Предыдущая тема - Запросы по скриптам[3]
Следующая тема - Запросы по скриптам[5]

Инструменты для поиска и редактирования стиля (скриптов).

Как с помощью браузера можно определить элемент дизайна.

Каталог скриптов/CSS

Полезные скрипты, необходимые темы для новичков, а также ссылки на сайты рассказывающие что такое НТМЛ и CSS.

Типовые Вопросы (ЧаВо)

Ответы на часто задаваемые вопросы.

Как задавать вопросы! Разница между стилем и скриптом. ( Советы)

Плюс к названию темы еще и Памятка.

+1

Перевести481

i_am_your_soul
Хм, поправил скрипты, - есть минусы, при отсутствии всплывающей инфы в минипрофиле, рамка не ставиться
Можно попробовать добавить для таких профилей старый скрипт, (ставим ниже) рамки для профилей с инфой, тогда

Суммарный код:

<style type="text/css">
    .pa-avatar>div:not(.Wrp-ava1){
      position:relative;
      z-index:20;
      display:inline-block;
      margin: auto;
      padding:0;
    }
    .pa-avatar>div:not(.Wrp-ava1)>img{
      position:absolute;
      top:0;left:0;
      z-index:-2;
    }
    .pa-avatar>div>span{
    margin-top: -2px;
    padding:3px 5px;
    display:block;
    border:3px rgba(121,103,21,0.6); /*Цвет верхнего бордера*/
    border-style:solid none none none;
    background:rgba(0,0,0,0.8); /*Цвет перекрывающего фона*/
    opacity:0;
    transition: opacity 0.8s;
    }
    .pa-avatar:hover>div>span{
    opacity:1.0;
    }
    .pa-avatar>div>span a{
    color:#a2840c!important; /*Цвет ccылок*/
    }
    .pa-avatar>div>span a:hover{
    color:#d0d1e2!important; /*Цвет ccылок при наведении*/
    text-decoration:underline!important;
    }
    </style>
    <script type="text/javascript">
    $('.pa-avatar').each(function(){
      var that =$(this).parents('.post-author').find('.ava-wrp::first'),
      a = $(this).find('img:first');
      if(a.length&&that.length){
        b = that.parents('li[class^="pa-fld"]'),
        h = a.height(),w=a.width(),
        c = a.wrap('<div style="width:'+w+'px;height:'+h+'px;"></div>').parent();
        c.prepend('<span style="max-width:100%;height:'+(h-3*2-0)+'px;">'+b.remove().html()+'</span>');
      }
    });
    </script>

    <!--Ставим рамки для Аватара к скрипту всплывающей инфы -->
        <script>
        $(document).ready(function(){
            var imgWrp = "http://images.vfl.ru/ii/1440624873/ba889a0c/9710710.png"; // Ccылка на картинку;
            imgWrp = '<img src="'+imgWrp+'" width=100% height=100% alt="" style="position:absolute;##"/>'
            $("li.pa-avatar> div> img[alt]").each(function () {
           
            var img = this.src;
            $(this).replaceWith(imgWrp.replace('##','background-size:70% 70%; background:transparent url('+img+') no-repeat 0 0'));
        });});
        </script><!--Конец//Рамки для Аватара к скрипту всплывающей инфы -->


    <!--Ставим рамки для Аватара -->
    <style type="text/css">
    li.pa-avatar .Wrp-ava1 img[alt]{
      display:block;
      padding:0;
      border-width:0;
      margin: 7px; /*Отступ рамки*/
    }
    </style>
    <script>
      $(document).ready(function(){
        var imgWrp = "http://images.vfl.ru/ii/1440624873/ba889a0c/9710710.png"; // Ccылка на картинку;

        imgWrp = '<img src="'+imgWrp+'" width=100% height=100% style="position:absolute;z-index:100;"/>'
        $("li.pa-avatar > img[alt]").each(function () {
        $(this).wrap('<div class="Wrp-ava1" style="display:inline-block;text-align:left;position:relative;"></div>');
        $(this).parent().prepend(imgWrp)
    });});
    </script><!--Конец//Рамки для Аватара-->

0

Перевести482

Deff
Поковырялся тут по запросу Dango, вот что получилось:

Скрипт:

<script type="text/javascript">
(function(){
if(!(GroupID!=3 && $('#pun-viewtopic,#pun-post').length && $('#post').length && this.document==top.document)) return;

//====.serialize() под Win 1251 ====//
// Инициализируем таблицу перевода
var transAnsiAjaxSys = [];
var arr=[0x402,0x403,0x201A,0x453,0x201E,0x2026,0x2020,0x2021,0x20AC,0x2030,0x409,0x2039,
0x40A,0x40C,0x40B,0x40F,0x452,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014,'0',0x2122,0x459,0x203A,0x45A,
0x45C,0x45B,0x45F,0x0A0,0x40E,0x45E,0x408,0x0A4,0x490,0x0A6,0x0A7,0x401,0x0A9,0x404,0x0AB,
0x0AC,0x0AD,0x0AE,0x407,0x0B0,0x0B1,0x406,0x456,0x491,0x0B5,0x0B6,0x0B7,0x451,0x2116,0x454,
0x0BB,0x458,0x405,0x455,0x457,0x410,0x411,0x412,0x413,0x414,0x415,0x416,0x417,0x418,0x419,
0x41A,0x41B,0x41C,0x41D,0x41E,0x41F,0x420,0x421,0x422,0x423,0x424,0x425,0x426,0x427,0x428,
0x429,0x42A,0x42B,0x42C,0x42D,0x42E,0x42F,0x430,0x431,0x432,0x433,0x434,0x435,0x436,0x437,
0x438,0x439,0x43A,0x43B,0x43C,0x43D,0x43E,0x43F,0x440,0x441,0x442,0x443,0x444,0x445,0x446,
0x447,0x448,0x449,0x44A,0x44B,0x44C,0x44D,0x44E,0x44F
];
var arLng = arr.length;
for (var i = 0; i < arLng; i++)transAnsiAjaxSys[arr[i]]=i+128;
for (var i = 0x410; i <= 0x44F; i++) transAnsiAjaxSys[i] = i - 0x350; // А-Яа-я

var MyencodeURIwin125 = function(str){
  var ret = [];
  for (var i = 0; i < str.length; i++)  {
    var n = str.charCodeAt(i);
    if (typeof transAnsiAjaxSys[n] != 'undefined')
      n = transAnsiAjaxSys[n];
    if (n <= 0xFF)
      ret.push(n);
  }
  return  escape(String.fromCharCode.apply(null, ret)).replace(/\+/mg,'%2B');
}

$.fn.extend({serialize : function() {
var s = '';
var obj = this.serializeArray();
var Lng = obj.length;
for(var i=0;i<Lng;i++){
   if(i)s+='&';
   s+=MyencodeURIwin125(obj[i].name)+'='+MyencodeURIwin125(obj[i].value);
}
return s; }
})
//====//END// .serialize() под Win 1251 ====//

//==== Распарс поста с символом &del& ====//
$('.post-content p:contains("&del&")').each(function(){
  if(GroupID>2){
    $(this).parents('.post').css({'display':'none'});
  };
  if(GroupID<=2){
    $(this).parents('.post').find('h3>span').append('<dd class="moder-ntf">Сообщение удалено пользователем.</dd>');
    $('dd.moder-ntf').css({
      'display':'inline-block',
      'float':'right',
      'font-weight':'400',
      'color':'#AB3636'
    });
    $(this).parents('.post').find('.pl-delete').after('<li class="pl-rst"><a href="#">Восстановить</a></li>');
    $(this).parents('.post').find('.pl-rst').after('<li class="pl-move"><a href="#">Перенести</a></li>');
    $(this).parents('.post-content').find('p:contains("&del&"), .lastedit').remove();
  };
});
if(GroupID>2){
  $('.post').each(function(){
    $(this).find('.pl-delete').remove();
    $(this).find('.pl-edit').before('<li class="pl-remove"><a href="#">Удалить</a></li>');
  });
}

//==== Удаляем .lastedit у Восстановленного поста ====//
$('.post .post-content p:contains("&edit&")').each(function (){
  $(this).parents('.post').find('.lastedit').remove();
  $(this).remove();
});
if($('#pun-edit').length){//alert()
  $(function (){
    $('#post').find('#main-reply').each(function(){
      if($(this).val().indexOf('&edit&')!=-1){
        var rpCnt = $(this).val().replace('\n\n','').replace('&edit&','');alert(rpCnt);
        $(this).val(rpCnt);    var val=$(this).val();alert(val);
      };
    });
  });
};

//==== Отправка запроса на страницу Редактирования ====//
$('.post').each(function(){
  var editLnk = $(this).find('.pl-edit>a').attr('href');
  if($(this).find('.pa-author>a').text()==UserLogin){
    $(this).find('.pl-remove').live('click',function(e){
    e.preventDefault();
    var pst = $(this).parents('.post');
      $.get(editLnk,function(data){//alert(data);
        var form = $(data).find('#post');
        var cnt = form.find('#main-reply').val();//alert(cnt);
        var lnk = form.attr('action');//alert(lnk);
        form.find('#main-reply').val(cnt+'\n\n'+'&del&');   //var newCnt=form.find('#main-reply').val();alert(newCnt);
        var frmDat = form.serialize();//alert(frmDat);
        $.ajax({
          url: lnk,
          type: "POST",
          dataType: "html",
          data: frmDat,
          success: function (){
             //alert('Запрос Отправлен!');
             pst.find('.container, h3, .post-author').hide();
             pst.append('<div class="del-msg">Сообщение удалено. <a class="restore" href="#">Восстановить...</a></div>');
          }
        });
      });
    });
  }

  //===Восстановление поста===//
  $(this).find('a.restore, .pl-rst').live('click',function(e){
    e.preventDefault();
    var pst = $(this).parents('.post');
    $.get(editLnk,function(data){//alert(data);
      var form = $(data).find('#post');
      var cnt = form.find('#main-reply').val();//alert(cnt);
      var lnk = form.attr('action');//alert(lnk);
      if(cnt.indexOf('&edit&')!=-1||GroupID<=2){
        var newCnt = cnt.replace('\&del\&','');  //alert(newCnt);
      }else{
        newCnt = cnt.replace('\&del\&','\&edit\&');//alert(newCnt);
      }
      form.find('#main-reply').val(newCnt);   //var tstCnt=form.find('#main-reply').val();alert(tstCnt);
      var newFrmDat = form.serialize();//alert(newFrmDat);
      $.ajax({
        url: lnk,
        type: "POST",
        dataType: "html",
        data: newFrmDat,
        success: function (){
           //alert('Запрос Отправлен!');
           if(GroupID>2){
             $('.del-msg').remove();
             pst.find('.container, h3, .post-author').show();
           };if(GroupID==1||2){
             pst.each(function(){
               $(this).find('.moder-ntf, .pl-rst, .pl-move').remove();
             });
           }
        }
      });
    });
  });
});

//==== Перемещение поста ====//
$('.post').each(function (){
  $(this).find('.pl-move').live('click',function(e){
    e.preventDefault();
    $(this).parent().append('<div class="post-move" style="position:absolute;right:160px;margin-top:-130px;"></div>');
    var tID = $('html').find('link[rel="alternate"]').attr('href').split('tid=')[1],
    fID = $('html').find('link[rel="up"]').attr('href').split('id=')[1];
    $('.post-move').append('<form class="container" method="post" action="http://hostjs.mybb.ru/moderate.php?fid='+fID+'&tid='+tID+'&mode=move"><fieldset><legend><span>Введите URL адрес темы, в которую необходимо перенести сообщение</span></legend><div class="fs-box"><input type="hidden" name="posts" value="###"><p><input type="text" size="80" maxlength="100" name="new_tid"></p></div></fieldset><p class="formsubmit"><input type="submit" class="button" name="move_posts_comply" value="Переместить"></p></form>');
    $(this).parents('.post').find('input[name="posts"]').attr('value',($(this).parents('.post').attr('id').split('p')[1]));
    $('.post-move').find('.formsubmit .button').live('click',function(event){
      event.preventDefault();
      var formDt = $('.post-move>form').serialize();//alert(formDt);
      var formLnkN = $('.post-move>form').attr('action');//alert(formLnkN);
      $.ajax({
        lnk: formLnkN,
        type: "POST",
        dataType: "html",
        data: formDt,
        success: function (){
          $('.post-move').parents('.post').remove();alert('Сообщение перенесено.');
        }
      });
    });
  });
});
}())
</script>

Под юзером "удаляет" и "восстанавливает" посты нормально, а под модером/админом - восстановить не дает, вылетает ошибка:

Неверный источник. Вы попали на эту страницу из несанкционированного источника. Пожалуйста, вернитесь и попробуйте еще раз. Если проблема остается: попробуйте отключить антивирус и(или) фаервол.

То же самое происходит и при попытке перенести пост скриптом. Как с этим бороться?

Форум http://hostjs.mybb.ru/

0

Перевести483

Deff написал(а):

Можно попробовать, для скрипта будёт нужно текстовое  доп. поле редактируемое юзером

Простите, я вас не вполне поняла. Юзерам самим придется свою статистику делить, что ли? Или это нужно для работы скрипта?

0

Перевести484

Коша-сан

Deff написал(а):

Можно попробовать, для скрипта будёт нужно текстовое  доп. поле редактируемое юзером

0

Перевести485

Deff написал(а):

Лучше не менять проценты если выхотите отодвинуть рамку от краёв картинки лучше

Поняла! Спасибо еще раз  :flirt:
Появилась только проблемка. В сообщении некорректно отображается эта рамка... Не пойму, в чем проблема

o_O

http://images.vfl.ru/ii/1440764376/3db9f9dd/9731875.png

Отредактировано i_am_your_soul (Пт, 28 Авг 2015 15:19:59)

0

Перевести486

i_am_your_soul
Поставьте суммарный код из спойлера(вместо всего текущего), сообщение (481)

0

Перевести487

Alex_63 написал(а):

Под юзером "удаляет" и "восстанавливает" посты нормально, а под модером/админом - восстановить не дает, вылетает ошибка:

То же самое происходит и при попытке перенести пост скриптом. Как с этим бороться?

Антиспам поставил в низкий ?
2. Посмотри внимательно текущую форму в топике под Админом - Модером (Может Максим какие параметры изменил, которые не учтены в сокращённой заготовке формы в скрипте ?

0

Перевести488

Deff
Антиспам низкий стоит.. Еще раньше выставлял.

0

Перевести489

Alex_63
Чтобы перенести пост нужен фрейм со страницей переноса постов, ибо Максим сделал привязку всех отправок к страницам на которых есть такие формы(считывает рефер на сервере), Либо запоминать действие и параметры в LocalStorage и переходить на нужную страницу с формой( location.href) и там только выполнять действие

+1

Перевести490

Deff
Пока не очень представляю, как это делается(как создать фрейм), можете помочь?

0

Перевести491

Alex_63
Ну может наплевать на перенос ? просто дать иконку со ссылкой перехода на страницу переноса данного поста ? (Так сделано в скрипте премодерации)

0

Перевести492

Deff написал(а):

Ну может наплевать на перенос ? просто дать иконку со ссылкой перехода на страницу переноса данного поста ? (Так сделано в скрипте премодерации)

Можно и так, но убирать спецсимвол из сообщения под модератором (восстановление) тож не получаецо - походу та же ошибка, т.к. запрос отправляется, но пост не редактируется

0

Перевести493

Alex_63 написал(а):

Можно и так, но убирать спецсимвол из сообщения под модератором (восстановление) тож не получаецо - походу та же ошибка, т.к. запрос отправляется, но пост не редактируется

Проверь/cравни текущую форму ответа в топике(ты ж наверно её используешь для правки ?) и при редактировании сообщения, возможно при редактировании она чуть иная под модером-админом?
По крайней мере там должны быть доп чекиты - не оставлять уведомление о редактировании
2. Ты обрабатываешь поправленную форму перед отправкой функцией function process_form(the_form) ?
Если ты посмотришь мои скрипты с отправкой формы ответа скриптом, я создавал свою минимизированную форму #post c иным id, вставлял в её техтarea исправленный контент, обрабатывал функцией function process_form(the_form) ? ток потом serialize() и отправка

C фреймом есть скрипт предпросмотра в Личке (первая версия) - Не советую связываться с фреймами, они тьву не нужны для отправки исправленного

+2

Перевести494

Deff

Deff написал(а):

Проверь/cравни текущую форму ответа в топике(ты ж наверно её используешь для правки ?) и при редактировании сообщения, возможно при редактировании она чуть иная под модером-админом?

Я отправляю GET запрос на страницу редактирования, получаю значение формы Ответа на стр.Редактирования .val() ; затем меняю '&del&' на '' , делаю .serialize() и отправляю форму POST запросом на страницу редактирования /edit.php?id=40285&action=edit

0

Перевести495

Alex_63 написал(а):

Я отправляю GET запрос на страницу редактирования, получаю значение формы Ответа на стр.Редактирования .val() ; затем меняю '&del&' на '' , делаю .serialize() и отправляю форму POST запросом на страницу редактирования /edit.php?id=40285&action=edit

Нет обработки формы функцией process_form($(cелектор полученной или созданной формы)[0]), смотри выше как делал я

При отправке настоящая форма обрабатывается функцией, которая и вставляет ключ в форму ответа

<form id="post" class="container" method="post" action="http://forum.mybb.ru/edit.php?id=870126&amp;action=edit" onsubmit="return process_form(this)">

При отправке скриптом это нужно делать искуственно, до serialize() и отправки
=============
Можно посмотреть скрипт автопродления тем (Или тот же предпросмотр в личке)

0

Перевести496

Deff
ОК, пошел смотреть скрипт Предпросмотра.

0

Перевести497

+1

Перевести498

Alex_63
Все как и было, перед отправкой Аяксом, далее:
1. вставляешь в текущую существую форум в топике в #main-reply текст "[code-tmp]"
2. Запускаешь process_form($('#post')[0])
3. Изымаешь текст "[code-tmp]"
4. Клонируешь <div id="formkey"> и <div id="formetc"> и переносишь в отправляемую форму
5. Сериализуешь и отправляешь

0

Перевести499

Deff
Не выходит.

Пробовал и через .clone() и .replaceWith() (в форму для редактирования), и через .html()

0

Перевести500

Alex_63
//==== process_form(), получение Ключей ====//
var reply = $('#main-reply');
var rep = reply.val();
reply.val(rep+'[code-tmp]');
process_form($('#post')[0]);
reply.val(rep);
var key0 = $('#post').find('#formkey').clone();
var key1 = $('#post').find('#formetc').clone();
alert(key1.html())

=============
//далее key1.prependTo(полученная Аяксом форма)
//далее key0.prependTo(полученная Аяксом форма)

0


Вы здесь » Единый форум поддержки » Архив » Запросы по скриптам[4]