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

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

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


Вы здесь » Единый форум поддержки » Новые возможности форумов » Скрипты от пользователей 3


Скрипты от пользователей 3

Сообщений 441 страница 460 из 570

1

Администрация MyBB не гарантирует работоспособность данных скриптов, вы ставите их на свой страх и риск.

Для тех кто выкладывает скрипты:
1) Дайте краткое описание скрипта.
2) Обязательно укажите куда его вставлять.
3) Сам скрипт вставьте в bb-коды [сode] [/сode] или в [quotе] [/quotе]

В данной теме запрещено задавать вопросы и просить скрипты. Для этого есть раздел  Запросы по скриптам[10], при нарушение данного правила будет выдаваться предупреждение в профиль.

Отредактировано Alex_63 (Ср, 12 Фев 2020 20:35:57)

+8

441

Модераторские теги
Поправлен стиль оформления
(для возможности вставки длинного текста в модераторские предупреждения,
- поправлена корректность отображения)


Скриншот:
http://se.uploads.ru/UZDAM.jpg

+4

442

Дополнение к скрипту "Смена аватара в топике"

Смена аватара по клику на иконку

© Deff

http://sf.uploads.ru/3JALs.png

В HTML низ:

<style>
.post-author img.clk-imag{
  cursor:pointer;
  display:block;
  position:absolute;
  z-index:1000;
  margin-top:
-33px;  /*Наезд на Авик снизу*/
  margin-left:
-27px; /* Сдвиг левее */
}
</style>

<script>
$(document).ready(function(){
var img_click = "
http://funkyimg.com/i/2jFxE.png"; //Ccылка на картинку;
$('.pa-avatar img[title="Сменить аватар"]').parents('.pa-avatar').after('<img  class="clk-imag" src="'+img_click+'" title="Cменить аватар?"/>');
$('.pa-avatar+.clk-imag').click(function(){$(this).prev('.pa-avatar').find('img[alt][title="Сменить аватар"]').click()});});
</script>

+4

443

Запрет просмотра профилей Гостем

Новый вариант, с защитой от отключения JavaScript

http://se.uploads.ru/S345b.png

В HTML верх:

<!-- Скрываем профиль от гостей -->
<style id="HideProfile">.gid3 #pun-profile .main{display:none}</style>
<script type="text/javascript">
if(self==top&&GroupID==3&&$('#pun-profile').length)$().pun_mainReady(function(){
var s='Информация',s1=$('#pun-title h1>span').text();document.title=s1;
var L=' »&nbsp;<a href="/">'+s1+'</a> »&nbsp;'+s;$('.crumbs').html(L);
$().pun_aboutReady(function(){$('#pun-crumbs2>.crumbs').html(L);});
$('#pun-main').html('<h1><span>'+s+'</span></h1><div class=info>\
<div class=container>Вы не имеете прав для доступа к этой странице.\
</div></div>');$('style#HideProfile').remove();});
</script>

+3

444

Мультитрековый плеер в постах (плеер с плейлситом) v1.0

http://sg.uploads.ru/tFc1X.gif

Музыка в постах

+5

445

Радио с плейлистом

http://s6.uploads.ru/tC25j.gif

Радио на форум (HTML5)

+2

446

Может кому пригодится...

Инструментарий для создания оглавления на литературных форумах

У всех пользователей, в темах созданных (либо еще только создаваемых) ими, отображается новая кнопка (у модераторов и прочей администрации она присутствует всегда). Кнопка позволяет выделить фрагмент поста, дать ему название (или оставить безымянным) и занести в оглавление.
http://s8.uploads.ru/t/lkp6d.png

Оглавление создается автоматически при выделении первого фрагмента.
Когда оглавление создано, оно выводится в блоке над сообщениями темы. В оглавлении выводятся названия фрагментов (если они есть, иначе ссылка будет названа, как "Фрагмент") и дата их добавления по московскому времени. Так же, новые, для каждого конкретного пользователя, фрагменты подсвечиваются значком (new).
http://s0.uploads.ru/t/sF3Xe.png

Под каждым сообщением с включенным в оглавление фрагментом, либо блоком сообщений (неименованные фрагменты идущие друг за другом), находится панель навигации, которая, как я надеюсь, интуитивно понятна.
http://s5.uploads.ru/t/F73JU.png


CSS:

Код:
#button-fragment{background:url(http://sa.uploads.ru/kl9Aw.png) no-repeat;}

.chapters-box
{
	height: 15em;
	overflow: auto;
}

#chapters
{
	width: 40em;
	margin: auto;
	padding-bottom: 1em;
}

.chapt .fragment-name
{
	display: block;
    padding-top: 0.7em;
    font-size: 1.3em;
    font-weight: bold;	
    font-style: normal;
	text-align: center;
    margin: 0;	
}

#chpt td
{
	border: none !important;
    padding: 0.5em 0 0 0;
}
.mrk
{
	width:1em;
	text-align: center;
}
.newc
{
	width:5em;
}

.new_chp
{
	background-color: #ca050f;
	border-radius: 10px;
	font-weight: bold;
	color: #ffe78a;
}

.chp_name
{
    font-size: 1.1em;
    font-weight: 600;
    font-style: normal;
}

.fragment
{
	border: 1px solid;
	border-color: #fff #ccc #ccc #fff;
	margin: 0.4em 1.8em 1.4em 1.8em;
	padding: 1em;
	background-color: #fff9e7;
}

.fragment h4
{
	display: block;
    padding-bottom: 0.7em;
    font-size: 1.3em;
    font-weight: bold;
    font-style: normal;
	text-align: center;
    margin: 0;
}

.fragment-navigation 
{
	border-top: 1px solid #ccc;
}

.fragment-navigation ul
{
	margin: 0;
    padding: 4px;
	text-align: center;
}

.fragment-navigation ul li
{
	display: inline;
    margin-right: 5px; 
    padding: 3px;
}

В html-низ
JS

Код:
<script type="text/javascript">
//извлеч гостевой ForumAPITicket и вставить вручную
//Посмотреть его можно выйдя из учетной записи и открыв Sources (в хроме)(правой кнопкой мыши->посмотреть код->вкладка Sources->в списке слева выбрать текущую страницу->найти ForumAPITicket)
GuestAPITicket='3f29aad94e883b9c00f7227d6a2fa700bd934768'; 

function NameTit() 
{
	var fname=prompt('Введите название главы!\n(Оставить пустым, если фрагмент не имеет названия)');
	return (fname ? '[fragment=\"'+fname+'\"]':'[fragment]');
}

//Отправка оглавления через фрейм
$.postFrame = function(lnk,data) {
   var rnd = Math.random().toString().substr(6);
   $('<iframe src="about:blank" name="MyFrame_'+rnd+'" id="MyFrame_'+rnd+'"></iframe>').appendTo("head");
   var form = $('<form action="'+lnk+'" target="MyFrame_'+rnd+'" method="post"></form>');
   var kk, vk;
   if(data)  for(var inf in data){
	   vk=data[inf];
	 kk='<input name="'+inf+'" id="'+inf+'" value=\''+vk+'\' type="hidden" />';
     form.append(kk);
   }
 	
   setTimeout(function(){ //Отправляем 
     form.submit();
   },50);
   $('#MyFrame_'+rnd).on('load',function() {
     if($.trim($(this).contents().html()).length>0)$(this).remove()
   });
};

//Формат даты
$.chTime = function(time) 
{
	var ctime = new Date();
	ctime.setTime(parseInt(time)*1000);
	return (ctime.getDate()<10 ? "0" : "")+ctime.getDate()+"."+(ctime.getMonth()<9 ? "0" : "")+(ctime.getMonth()+1)+"."+ctime.getFullYear()+" "+ctime.toTimeString().replace(/ .+$/img, "");
}

//Проверка и замена тега оглавления
var s='</p>',
	e='<p>',
	//c=$(this).html(),
	x,
	m,
	end='<span class="fragment-inner">$1</span></div>';
  
x=s+'<div class="fragment"><h4 class="fragment-name">$1</h4><span class="fragment-inner">$2</span></div>'+e;
m=s+'<div class="fragment">'+end+e;

$('.post').find('.post-content:contains("[fragment=")').map(function() {
	var c=$(this).html();
	c=c.replace(/\n/mgi,'');

	try
	{
c=c.replace(/\[fragment=\"(.*?)\"\](.*?)\[\/fragment\]/mgi,x);
	} catch(e){}

	c=c.replace(/<p><\/p>/mgi,'');
	$(this).html(c);
});

$('.post').find('.post-content:contains("[fragment]")').map(function() {
	var c=$(this).html();
	c=c.replace(/\n/mgi,'');

	try
	{
c=c.replace(/\[fragment\](.*?)\[\/fragment\]/mgi,m);
	} catch(e){}

	c=c.replace(/<p><\/p>/mgi,'');
	$(this).html(c);
});


var punv = $('#pun-viewtopic').length,
	punp = $('#pun-post').length,
	pune = $('#pun-edit').length;
	
//Если в просмотре, отправке или редактировании сообщений
if(punv || punp || pune)(function() {
  var tl0='Фрагмент';  
  var t0 = '<td id="button-fragment" style="cursor: pointer !important;"><img src="i/blank.gif" title="'+tl0+'" onclick="bbcode(NameTit(),\'[/fragment]\');"></td>';
  var tid; 
  var this_author=false;
  var last_rev, tmplr;
  var this_chapter;
  
  //Если в просмотре темы, то вставить оглавление
  if(punv || pune)
  {
	  tid=(punv ? document.URL.split("id=")[1].split("#")[0].split("&p=")[0] : $("#pun-crumbs1").find("a:last").attr("href").split("id=")[1]);
	  
	  //запрос оглавления
	  this_chapter = JSON.parse($.ajax({
url: 'http://www.en.'+location.hostname.replace(/^www\./,'')+"/api.php?method=storage.get&key=chapters-"+tid,
async: false,
cache: false
	}).responseText);

	  //Если оглавление существует
	  try
	  {
  var q = /&quot;/g,
	  a = /&apos;/g;
	
  //заменить юникодные кавычки и апострофы
  this_chapter=(this_chapter.response.storage.data['chapters-'+tid]).replace(q, "\"").replace(a, "\'");
  this_chapter=JSON.parse(this_chapter);
  
  //иначе пустой массив
	  } catch(e) {this_chapter=[];}
	  
	  
	  last_rev = JSON.parse($.ajax({
	url: "/api.php?method=storage.get&key=newchp",
	async: false,
	cache: false
}).responseText);

	  try
	  {
last_rev=JSON.parse(last_rev.response.storage.data.newchp);
if(last_rev=='') last_rev={};
	  } catch(e){last_rev={};}
	  
	  if(!(last_rev[tid]))
	  {
last_rev[tid]=0;
	  }
	  
	  tmplr=last_rev[tid];
	  
	  var hchp = '<div class="section"><div class="container chapt"><h4 class="fragment-name">Оглавление</h4><div class="formal chapters-box"><div id="chapters"><table id="chpt">';
	  
	  //И внести изменения при наличии соответствующего куки
	  if($getCookie('postChap'))
	  {
  $deleteCookie('postChap');
  
  var cc=$('.endpost:last .fragment-name')
  var PstId=$('.endpost:last').find('.permalink').attr('href').replace(/^.+?#p(\d+)$/gim,'$1');
  var PstD=$('.endpost:last').attr('data-posted');
  
  //Если в предыдущем посте нет элемента оглавления
  if($('.endpost:last').prev().find('.fragment').length==0 || cc.length)
  {
	  //создать новый
	  this_chapter.push([PstId, PstId, PstD, (cc.length ? cc.text():"")]);
  }else
  {
	  //иначе
	  //изменить номер последнего поста
	  this_chapter[this_chapter.length-1][1] = PstId;
  }
  
  var titstr='[';
  this_chapter.forEach(function(item, i)
  {
	  //Собираем строку для записи в репозиторий
	  titstr+='[\"'+item[0]+'\",\"'+item[1]+'\",\"'+item[2]+'\",\"'+item[3]+'\"],';
	  
	  //Собираем оглавление
	  hchp+='<tr class="'+(item[3] ? 'yname':'nname')+'"><td class="mrk">'+(item[3] ? '• </td><td class="namech">':'</td><td class="namech">⚬ ')
	+'<a href="'+($('#p'+item[0]).length ? '#p'+item[0] :'http://'+location.hostname+'/viewtopic.php?pid='+item[0]+'#p'+item[0])+'"' 
	+'data-posted="'+item[2]+'">'+(item[3] ? '<span class="chp_name">'+item[3]+'</span>' : 'Фрагмент')+'</a></td><td class="datach" width="60%">'+' от '+$.chTime(item[2])
	+' по МСК '+(last_rev[tid]<item[2] ? '<span class="new_chp">&nbsp;new&nbsp;</span>':'')+'</td></tr>';
	  
	  if(tmplr<item[2]) tmplr=item[2];
	  
	  //вставляем панели навигации
	  var this_fragment=$('#p'+this_chapter[i][1]);
	  if(this_fragment.length)
	  {
  try
  {
  var nav = '<div class="fragment-navigation"><ul>'+
	(i!=0 ? '<li class="prev_fragment"><a href="'+($('#p'+this_chapter[i-1][0]).length?'#p'+this_chapter[i-1][0] : 'http://'+location.hostname+'/viewtopic.php?pid='+this_chapter[i-1][0]+'#p'+this_chapter[i-1][0])+'">\<\<Предыдущий фрагмент</a></li>' : '')+
	'<li class="back_chapter"><a href="#pun-main">К оглавлению</a></li>'+
	(i!=this_chapter.length-1 ? '<li class="next_fragment"><a href="'+($('#p'+this_chapter[i+1][0]).length?'#p'+this_chapter[i+1][0] : 'http://'+location.hostname+'/viewtopic.php?pid='+this_chapter[i+1][0]+'#p'+this_chapter[i+1][0])+'">Следующий фрагмент\>\></a></li>' : '')+
	'</ul></div>';
  this_fragment.find('.post-box').after(nav);
  } catch(e)
  {
	  var nav = '<div class="fragment-navigation"><ul>'+
	'<li class="back_chapter"><a href="#pun-main">К оглавлению</a></li>'+
	'</ul></div>';
  this_fragment.find('.post-box').after(nav);
  }
	  }
  }); 
  
  titstr=titstr.substring(0,titstr.length-1)+']';
  
  //запись в репозиторий
  $.postFrame(
	'http://www.en.'+location.hostname.replace(/^www\./,'')+'/api.php', 
	{
method: 'storage.set',
user_id: 1,
token: GuestAPITicket,
key: 'chapters-'+tid,
value: titstr
	});
	  } else
	  {
  //Если куки нет
  //то собрать оглавление и создать панели навигации
  this_chapter.forEach(function(item, i)
  {
	  hchp+='<tr class="'+(item[3] ? 'yname':'nname')+'"><td class="mrk">'+(item[3] ? '• </td><td class="namech">':'</td><td class="namech">⚬ ')
	+'<a href="'+($('#p'+item[0]).length ? '#p'+item[0] :'http://'+location.hostname+'/viewtopic.php?pid='+item[0]+'#p'+item[0])+'"' 
	+'data-posted="'+item[2]+'">'+(item[3] ? '<span class="chp_name">'+item[3]+'</span>' : 'Фрагмент')+'</a></td><td class="datach" width="60%">'+' от '+$.chTime(item[2])
	+' по МСК '+(last_rev[tid]<item[2] ? '<span class="new_chp">&nbsp;new&nbsp;</span>':'')+'</td></tr>';
	  
	  if(tmplr<item[2]) tmplr=item[2];
	  
	  var this_fragment=$('#p'+this_chapter[i][1]);
	  if(this_fragment.length)
	  {
  try
  {
  var nav = '<div class="fragment-navigation"><ul>'+
	(i!=0 ? '<li class="prev_fragment"><a href="'+($('#p'+this_chapter[i-1][0]).length?'#p'+this_chapter[i-1][0] : 'http://'+location.hostname+'/viewtopic.php?pid='+this_chapter[i-1][0]+'#p'+this_chapter[i-1][0])+'">\<\<Предыдущий фрагмент</a></li>' : '')+
	'<li class="back_chapter"><a href="#pun-main">К оглавлению</a></li>'+
	(i!=this_chapter.length-1 ? '<li class="next_fragment"><a href="'+($('#p'+this_chapter[i+1][0]).length?'#p'+this_chapter[i+1][0] : 'http://'+location.hostname+'/viewtopic.php?pid='+this_chapter[i+1][0]+'#p'+this_chapter[i+1][0])+'">Следующий фрагмент\>\></a></li>' : '')+
	'</ul></div>';
  this_fragment.find('.post-box').after(nav);
  } catch(e)
  {
	  var nav = '<div class="fragment-navigation"><ul>'+
	'<li class="back_chapter"><a href="#pun-main">К оглавлению</a></li>'+
	'</ul></div>';
  this_fragment.find('.post-box').after(nav);
  }
	  }
  });
	  }
	  
	  //если в просмотре
	  if(this_chapter.length && punv)
	  {
  
  if(last_rev[tid]!=tmplr && UserID!=1)
  {
	last_rev[tid]=tmplr;
  
	$.post("/api.php", {
method: "storage.set",
token: ForumAPITicket,
key: "newchp",
value: JSON.stringify(last_rev)
	}, "json");
  }
  
  //нарисовать оглавление
  hchp+='</table></div></div></div></div>';
  $('.topic').find('h2:first').before(hchp);
	  }
  }else
  {
	  //на странице отправки поста просто записать id темы
	  tid=$("#pun-crumbs1").find("a:last").attr("href").split("id=")[1];
  }
  
  //проверка на авторство
  var sel=".topicpost .pl-email:first>a";
  var id;
  if(document.URL.indexOf('fid')>-1) {this_author = true;} else
  if( $(".topicpost").length){ id = $(sel).attr("href").split("id=")[1]
  } else 
  {  
	$.ajax({ url:"/viewtopic.php?id="+tid,async:false,cache:true,success:function(data){
      id = $(data).find(sel).attr("href").split("id=")[1];
	}});
  }
  if( id && +id == UserID) this_author = true;
  
  //если автор или модератор
  if(GroupID<=2 || !!this_author)
  {
	  $('#button-right').after(t0);

	  // Обрабатываем форму, вызываем функцию...
	  var xx=$('[name="submit"]');
	  var nn=xx.length;
	  xx.click(function() {

//var tmp_chapter;
var cc = $('#main-reply:first').val();

var nameCook;

// если редактирование
if(pune)
{
	//аякс запрос следующего и предыдущего сообщений
	//и сопутствующей информации
	var pid = document.URL.split("id=")[1].split("&amp;")[0];
	var nextc, prevc, thc;
	var dataPost;
	var idn, idp;
	$.ajax({ url:"/viewtopic.php?pid="+pid+"#p"+pid,async:false,cache:true,success:function(data){
thc = $(data).find('#p'+pid).text();
nextc = $(data).find('#p'+pid).next().text();
try
{
	idn = $(data).find('#p'+pid).next().attr('id').replace(/p/gim,'');
} catch(e){}
prevc = $(data).find('#p'+pid).prev().text();
try
{
	idp = $(data).find('#p'+pid).prev().attr('id').replace(/p/gim,'');
} catch(e){}
dataPost = $(data).find('#p'+pid).attr('data-posted');
	}});
	
	//если раньше был частью оглавлений и сейчас часть оглавления
	if(cc.indexOf('[/fragment]')!=-1 && thc.indexOf('[/fragment]')!=-1)
	{
//Сейчас именован
if(cc.indexOf('[fragment=')!=-1)
{
	//Раньше именован
	if(thc.indexOf('[fragment=')!=-1)
	{
//Изменить имя в соответствующем элементе
this_chapter.forEach(function(item, i){if(item[0]==pid)item[3]=cc.substring(cc.indexOf('[fragment="')+11,cc.indexOf('"]'));}); 
	} else 
	{
//Реньше не был именован
//Если предыдущее и следующее сообщения - части оглавления
if(nextc.indexOf('[/fragment]')!=-1 && prevc.indexOf('[/fragment]')!=-1)
{
	//Если следующее сообщение именовано
	if(nextc.indexOf('[fragment=')!=-1)
	{
//Изменить у предыдущего элемента номер завершающего сообщения...
var idarr;
this_chapter.forEach(function(item, i)
{
	if(item[1]==pid)
	{
idarr=i;
item[1]=idp;
	}
}); 
//И вставить новый элемент оглавления
this_chapter.splice(idarr+1,0,[pid, pid, dataPost, cc.substring(cc.indexOf('[fragment="')+11,cc.indexOf('"]'))]);
	} else
	{
//Если не именовано
//Найти и изменить предыдущий
var idarr;
var tmp;
this_chapter.forEach(function(item, i)
{
	if(item[0]<pid && pid<item[1])
	{
idarr=i;
tmp=item[1];
item[1]=idp;
	}
}); 
//и вставить новый
//А дальше мне лень писать коментарии.
this_chapter.splice(idarr+1,0,[pid, tmp, dataPost, cc.substring(cc.indexOf('[fragment="')+11,cc.indexOf('"]'))]);
	}
} else if(nextc.indexOf('[/fragment]')!=-1)
{
	this_chapter.forEach(function(item)
	{
if(item[0]==pid)
{
	item[3]=cc.substring(cc.indexOf('[fragment="')+11,cc.indexOf('"]'));
}
	});
} else if(prevc.indexOf('[/fragment]')!=-1)
{
	var idarr;
	this_chapter.forEach(function(item, i)
	{
if(item[1]==pid)
{
	idarr=i;
	item[1]=idp;
}
	}); 
	this_chapter.splice(idarr+1,0,[pid, pid, dataPost, cc.substring(cc.indexOf('[fragment="')+11,cc.indexOf('"]'))]);
} else
{
	//var idarr=0;
	this_chapter.forEach(function(item, i)
	{
if(item[0]==pid)
{
	item[3]=cc.substring(cc.indexOf('[fragment="')+11,cc.indexOf('"]'));
}
	}); 
	//this_chapter.splice(idarr+1,0,[pid, pid, dataPost, cc.substring(cc.indexOf('[fragment="')+11,cc.indexOf('"]'))]);
}
	}
} else 
{
	if(thc.indexOf('[fragment=')!=-1)
	{
if(prevc.indexOf('[/fragment]')!=-1)
{
	var idarr;
	this_chapter.forEach(function(item, i)
	{
if(item[0]==pid)
{
	this_chapter[i-1][1]=item[1];
	idarr=i;
}
	}); 
	this_chapter.splice(idarr,1);
} else 
{
	this_chapter.forEach(function(item, i)
	{
if(item[0]==pid)
{
	item[3]="";
}
	}); 
}
	}
}
	} else if(cc.indexOf('[/fragment]')!=-1)
	{
if(cc.indexOf('[fragment=')!=-1)
{
	if(nextc.indexOf('[/fragment]')!=-1 && prevc.indexOf('[/fragment]')!=-1)
	{
if(nextc.indexOf('[fragment=')!=-1)
{
	var idarr;
	this_chapter.forEach(function(item, i)
	{
if(item[1]==idp)
{
	idarr=i;
}
	}); 
	this_chapter.splice(idarr+1,0,[pid, pid, dataPost, cc.substring(cc.indexOf('[fragment="')+11,cc.indexOf('"]'))]);
} else
{
	this_chapter.forEach(function(item, i)
	{
if(item[0]==idn)
{
	item[0]=pid;
	item[3]=cc.substring(cc.indexOf('[fragment="')+11,cc.indexOf('"]'));
}
	}); 
}
	} else if(nextc.indexOf('[/fragment]')!=-1)
	{
if(nextc.indexOf('[fragment=')!=-1)
{
	var idarr;
	this_chapter.forEach(function(item, i)
	{
if(item[0]==idn)
{
	idarr=i;
}
	}); 
	this_chapter.splice(idarr,0,[pid, pid, dataPost, cc.substring(cc.indexOf('[fragment="')+11,cc.indexOf('"]'))]);
} else
{
	this_chapter.forEach(function(item, i)
	{
if(item[0]==idn)
{
	item[0]=pid;
	item[3]=cc.substring(cc.indexOf('[fragment="')+11,cc.indexOf('"]'));
}
	}); 
}
	} else if(prevc.indexOf('[/fragment]')!=-1)
	{
var idarr;
this_chapter.forEach(function(item, i)
{
	if(item[1]==idp)
	{
idarr=i;
	}
}); 
this_chapter.splice(idarr+1,0,[pid, pid, dataPost, cc.substring(cc.indexOf('[fragment="')+11,cc.indexOf('"]'))]);
	} else
	{
var idarr=0;
this_chapter.forEach(function(item, i)
{
	if(item[0]<pid)
	{
idarr=i;
	}
}); 
this_chapter.splice(idarr+1,0,[pid, pid, dataPost, cc.substring(cc.indexOf('[fragment="')+11,cc.indexOf('"]'))]);
	}
} else 
{
	if(nextc.indexOf('[/fragment]')!=-1 && prevc.indexOf('[/fragment]')!=-1)
	{
if(nextc.indexOf('[fragment=')!=-1)
{
	this_chapter.forEach(function(item, i)
	{
if(item[1]==idp)
{
	item[1]=pid;
}
	}); 
} else
{
	var idarr;
	this_chapter.forEach(function(item, i)
	{
if(item[1]==idp)
{
	idarr=i;
	item[1]=this_chapter[i+1][1];
}
	}); 
	this_chapter.splice(idarr+1,1);
}
	} else if(nextc.indexOf('[/fragment]')!=-1)
	{
if(nextc.indexOf('[fragment=')!=-1)
{
	var idarr;
	this_chapter.forEach(function(item, i)
	{
if(item[0]==idn)
{
	idarr=i;
}
	}); 
	this_chapter.splice(idarr,0,[pid, pid, dataPost, ""]);
} else
{
	this_chapter.forEach(function(item, i)
	{
if(item[0]==idn)
{
	item[0]=pid;
}
	}); 
}
	} else if(prevc.indexOf('[/fragment]')!=-1)
	{
this_chapter.forEach(function(item, i)
{
	if(item[1]==idp)
	{
item[1]=pid;
	}
}); 
	} else
	{
var idarr=0;
this_chapter.forEach(function(item, i)
{
	if(item[0]<pid)
	{
idarr=i;
	}
}); 
this_chapter.splice(idarr+1,0,[pid, pid, dataPost, ""]);
	}
}
	} else if(thc.indexOf('[/fragment]')!=-1)
	{
if(nextc.indexOf('[/fragment]')!=-1 && prevc.indexOf('[/fragment]')!=-1)
{
	if(nextc.indexOf('[fragment=')!=-1)
	{
var idarr;
this_chapter.forEach(function(item, i)
{
	if(item[1]==pid)
	{
idarr=i;
item[1]=idp;
	}
}); 
if(thc.indexOf('[fragment=')!=-1)
	this_chapter.splice(idarr,1);
	} else
	{
if(thc.indexOf('[fragment=')!=-1)
{
	this_chapter.forEach(function(item, i)
	{
if(item[0]==pid)
{
	item[0]=idn;
	item[3]="";
}
	}); 
}else
{
	var idarr;
	var tmp;
	this_chapter.forEach(function(item, i)
	{
if(item[0]<pid && pid<item[1])
{
	idarr=i;
	tmp=item[1];
	item[1]=idp;
}
	}); 
	this_chapter.splice(idarr+1,0,[idn, tmp, dataPost, ""]);
}
	}
} else if(nextc.indexOf('[/fragment]')!=-1)
{
	if(nextc.indexOf('[fragment=')!=-1)
	{
var idarr;
this_chapter.forEach(function(item, i)
{
	if(item[0]==pid)
	{
idarr=i;
	}
}); 
this_chapter.splice(idarr,1);
	} else
	{
this_chapter.forEach(function(item, i)
{
	if(item[0]==pid)
	{
item[0]=idn;
item[3]="";
	}
}); 
	}
} else if(prevc.indexOf('[/fragment]')!=-1)
{
	if(thc.indexOf('[fragment=')!=-1)
	{
var idarr=0;
this_chapter.forEach(function(item, i)
{
	if(item[1]==pid)
	{
idarr=i;
	}
}); 
this_chapter.splice(idarr,1);
	} else
	{
this_chapter.forEach(function(item, i)
{
	if(item[1]==pid)
	{
item[1]==idp;
	}
}); 
	}
} else
{
	var idarr=0;
	this_chapter.forEach(function(item, i)
	{
if(item[1]==pid)
{
	idarr=i;
}
	}); 
	this_chapter.splice(idarr,1);
}
	}
	
	//собрать строку для записи в репозиторий
	var titstr='[';
	this_chapter.forEach(function(item, i)
	{
titstr+='[\"'+item[0]+'\",\"'+item[1]+'\",\"'+item[2]+'\",\"'+item[3]+'\"],';
	}); 
  
	titstr=titstr.substring(0,titstr.length-1)+']';
  
	//Запись если в строке есть оглавление
	if(titstr.length>1)
	{
$.postFrame(
	'http://www.en.'+location.hostname.replace(/^www\./,'')+'/api.php', 
	{
method: 'storage.set',
user_id: 1,
token: GuestAPITicket,
key: 'chapters-'+tid,
value: titstr
	});
	} else //иначе удалить
	{
$.post('http://www.en.'+location.hostname.replace(/^www\./,'')+'/api.php', {
method: "storage.delete",
token: GuestAPITicket,
key: 'chapters-'+tid
	}, "json");
	}
//Если создание нового поста
//И в форме есть элемент
} else if(cc.indexOf('[/fragment]')!=-1)
{
	//создать куки
	nameCook='postChap';
	$setCookie(nameCook, true, 120*1000);
}
	  });
	  
	  //Если удаление сообщения
	  $('[name="delete"]').click(function() {
  var pid = document.URL.split("id=")[1].split("&amp;")[0];
  if($('post-content:contains("[/fragment]")').length)
  {
	var titstr='[';
	this_chapter.forEach(function(item){if(item[0]!=pid || item[1]!=pid)
{
	if(item[1]==pid) item[1]=$(this).prev().attr("href").split("id=")[1];
	if(item[0]==pid) item[0]=$(this).next().attr("href").split("id=")[1];
	titstr+='[\"'+item[0]+'\",\"'+item[1]+'\",\"'+item[2]+'\",\"'+item[3]+'\"],';
}}); 
	titstr=titstr.substring(0,titstr.length-1)+']';
	
	if(titstr.length>1)
	{
$.postFrame(
	'http://www.en.'+location.hostname.replace(/^www\./,'')+'/api.php', 
	{
method: 'storage.set',
user_id: 1,
token: GuestAPITicket,
key: 'chapters-'+tid,
value: titstr
	});
	} else
	{
$.post('http://www.en.'+location.hostname.replace(/^www\./,'')+'/api.php', {
method: "storage.delete",
token: GuestAPITicket,
key: 'chapters-'+tid
	}, "json");
	}
  }
	  });
  } 
  else 
  {
    $('.formsubmit .button').click(function() {
	  var txt = $('#main-reply:first').val();
	  if(txt.indexOf('[/fragment]')!=-1)
	  {
alert('Вам запрещено использовать теги оглавления вне своих произведений!');
$('.button[disabled]').removeAttr('disabled');return false;
	  }
    });
  }
}());
</script>

Код не идеален, но все это делалось в обеденные перерывы на работе, так что еще и шлифовать его мне откровенно лень.

Отредактировано Ezingrin (Пт, 2 Дек 2016 17:29:49)

+4

447

Попытка устранить явление оверквотинга техническими средствами:

Сворачивание длинных цитат в сообщениях
(разворачивается/сворачивается по клику на стрелку внизу цитаты)

https://s4.uploads.ru/r7b5w.png

В HTML верх

<!-- Сворачивание длинных цитат -->
<style type="text/css">
.quote-box.toggle blockquote,.quote-box.toggle{position:relative;overflow-y:hidden}
.quote-box .quote-after{width:100%;height:2em;position:absolute;display:block;bottom:-.5em;transition:background-image .4s ease;cursor:pointer}
.quote-after:before {content:"^";width:100%;text-align:center;position:absolute;line-height:2em;font-weight:700;font-size:1.2em;bottom:-.5em}
.quote-after.q-resize-1:before {transform:rotate(180deg);top:0;bottom:0;}
</style>

<script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/91221.js"></script>


Тестируем, отписываемся в теме Запросы по скриптам[8]


08.04.2024 Обновлено для совместимости с ajax-событиями, пофикшен конфликт с некоторыми скриптами, когда событие на кнопке разворачивания убивалось.

+2

448

я в курсе что есть много вариаций расширенной палитры цветов в форме ответа:
1.Большая палитра с фоновой картинкой от lenhenster (Deff)
2.Новая палитра цветов. Добавляет в стандартную палитру 4096 цветов. (RUSSIAN_GOBLIN)
но было желание по-экспериментировать  с input type="color" (браузерная поддержка)

чем отличается данный вариант?
1. очень короткий код
2. практически неограниченная палитра
минус - не все старые браузеры поддерживают input type="color", но это скорее всего проблема тех, кто пользуется старыми и медленно развивающимися браузерами

Расширенная палитра цветов (NEW)

http://s7.uploads.ru/FoPT5.jpg

В действии

http://sh.uploads.ru/1NX0e.gif

в HTML-низ:

Код:
<!-- Расширенная палитра цветов (NEW) -->
<script type="text/javascript">
$('#color-area tr').append('<td><input type="color" id="litr" style="cursor:pointer;padding:0;width:22px;" title="Показать всю палитру" value="#ffa500"></td>');$('#litr').change(function(){bbcode('[color='+this.value+']','[/color]');});
</script>

можно привести вот к таком виду, добавив код перед скриптом

http://sg.uploads.ru/QDz3a.jpg

Код:
<style type="text/css">
input[type=color]::-webkit-color-swatch {background-color: transparent !important; border:none;}
input[type=color]::-moz-color-swatch {background-color: transparent !important; border:none;}
#litr{background: url(https://forumstatic.ru/files/0017/d8/50/28311.png) no-repeat scroll 0 0 / cover ;}
</style>

+10

449

3ASOFT написал(а):

В мобильной версии форума ролики ютуба выложенные на форум отображаются половинчато. Скажите есть ли способ чтобы окошечко было полным и удавалось пальчиком нажать расширение окна для раскрытия ютуба на весь телефон?

Автоуменьшение фреймов в постах(на маленьких экранах)

http://s9.uploads.ru/1bFyL.png

В HTML низ:

<!-- Автоуменьшение фреймов -->
<script type="text/javascript">
$(".post-content iframe[allowfullscreen]").each(function(){
    var w = $(this).width(),h = $(this).height(),k = h/w;
    var c = $(this).parents("p").width();if(c>w)return;
    $(this).attr("width",c).attr("height",c*k)
  });
</script>

+2

450

Идея пользователя Mirra Bell

Аватарка юзера в строке приветствия

http://s3.uploads.ru/cj1qw.png

В HTML низ

<!-- Аватарка в строке приветствия --><style>.status_userava>img{width:34px;height:auto;vertical-align:middle;border-radius:4px;margin:-.6em 0}</style>
<script>$('#pun-status>p').prepend('<span class="status_userava"><img src="'+(window.UserAvatar?UserAvatar:'/i/default_avatar.jpg')+'"/></span>')</script>

+12

451

Дитя написал(а):

Пожалуйста, покажите мне скрипт <...>, сменяющий шапки на форуме по времени суток

Смена Шапки форума в зависимости от времени суток

В HTML верх:

<!--Шапка форума по времени суток-->
<style id=ChangeTitle>
#pun-title {
  background:url( #title_hours_time );
}

</style>

<script type="text/javascript">
(function(){
var ImgArr=new Array (
"
картинка - ночь",   //ночь
"
картинка - утро",   //утро
"
картинка - день",   //день
"
картинка - вечер"  //вечер   //!!последний элемент без запятой
);
var h=new Date().getHours(),img;
if(h>23||h<7){img=ImgArr[0];}else if(h>6&&h<12){img=ImgArr[1];}else if(h>11&&h<19){
img=ImgArr[2];}else if(h>18&&h<24){img=ImgArr[3];} img="'"+img+"'";
var L=$("style.#ChangeTitle").html();L=L.replace("#title_hours_time",img);$("style.#ChangeTitle").html(L)}());
</script>

Красным - ссылки на картинки (соответственно для каждого времени суток),
Жирным оливковым - Ваш стиль - оформление для элемента,
Подчеркнутое - не меняем, - этот кусок будет заменяться на нужную картинку, нужен для работы скрипта

Т.е. прописываем фон для нужного элемента(на котором у нас шапка), вместо ссылки на картинку - ставим #title_hours_time


Тестируем

+4

452

Скрипт "Регулировка размера шрифта в постах бегунком" обновлен.
Устранена ошибка, выпадающая в консоль, на страницах, где отсутствует регулятор; добавлена работа регулятора в Личке и на странице Поиска сообщений

+6

453

Вариация скрипта Регулировка размера шрифта в постах бегунком

Поскольку часто спрашивают, как можно менять размер шрифта
не только в постах, но и в Форме Ответа, -                                     
сделал такой вариант, с учетом предыдущих правок                   

Регулятор со сменой шрифта и в Форме Ответа

В HTML низ:

<!-- Регулировка размера шрифта в постах © Alex_63 -->
<style>
.FNTslider {
  border-radius: 4px;
  position:relative;z-index:1000;
  background: #E0E0E0;
  width: 110px;
  height: 5px;
  margin: 3px 5px;
  border: solid 1px #ccc;
  float: right;
  margin-right: 7%;
}
.FNTslider .before {
  height: 5px;
  border: solid 1px transparent;
  border-right: none 0;
  border-radius: 4px 0 0 4px;
  position: absolute;
  background: #A0BCDA;
  margin-top: -1px;
}
.FNTslider .thumb {
  width: 8px;
  height: 13px;
  border-radius: 3px;
  position: relative;
  top: -4px;
  background: #3980D8;
  cursor: pointer;
}
</style>

<script type="text/javascript" src="https://forumstatic.ru/files/0016/0b/c8/31011.js"></script>

Скриншоты и описание смотрим в Исходном посте(ссылка вверху сообщения)

+1

454

Вообщем навеял скрипт Ромыча Тени для шрифта, вот решил свой вариант предложить (ставить НТМЛ низ):

Код:
<!--Тень для текста с любыми параметрами-->
<script type="text/javascript">
$('td#button-right').after('<td id="shad" style=\'background-image:url("http://www.iconsearch.ru/uploads/icons/gnomeicontheme/16x16/stock_text-shadow.png")\' title="Тень для текста" onclick="tag_shadow()"></td>');
$(function(){
$('.post-content:contains("[shadow=")').each(function(){
var htmlSHADOW = $(this).html().replace(/\[shadow=(.*?)\]([^`]*?)\[\/shadow\]/gi, "<span style='width=80%; text-shadow:$1;'>$2</span>");
$(this).html(htmlSHADOW)
});
});
function tag_shadow(){
var FoundErrorsSHADOW = '';
var shadowTIT = prompt('Введите параметры тени', '1px 1px 2px #FFF6AD');
if (FoundErrorsSHADOW)
{alert("Ошибка!" + FoundErrorsSHADOW);
return;}
bbcode('[shadow='+shadowTIT+']','[/shadow]');
}
</script>

Ставить можно любые параметры доступные в css для тени, вот примеры:
http://sf.uploads.ru/SHMlF.png

Код:
[shadow=1px 1px 2px black, 0 0 1em red][b][size=16][color=white]В чащах юга жил бы цитрус? Да, но фальшивый экземпляр![/color][/size][/b][/shadow]

[shadow=6px 6px 0px rgba(0,0,0,0.2)][b][size=18][color=white]Много очень очень очень текста[/color][/size][/b][/shadow]

[shadow=4px 3px 0px #fff, 9px 8px 0px rgba(0,0,0,0.15)][b][size=20]А вот еще Пример!!![/size][/b][/shadow]

[shadow=0 1px 0 #ccc,0 2px 0 #c9c9c9,0 3px 0 #bbb,0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,.1),0 0 5px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.3),0 3px 5px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.2),0 20px 20px rgba(0,0,0,.15)][b][size=28][color=white]3D текст от Mark Dotto[/color][/size][/b][/shadow]

[shadow=0px 0px 6px rgba(255,255,255,0.7)][b][size=30]Сияние текста[/size][/b][/shadow]

[shadow=-10px 10px 0px #00e6e6,-20px 20px 0px #01cccc,-30px 30px 0px #00bdbd][b][size=28][color=aqua]Ретро-стиль[/color][/size][/b][/shadow]

[shadow=2px 8px 6px rgba(0,0,0,0.2), 0px -5px 35px rgba(255,255,255,0.3)][b][size=26][color=green]Выпуклый текст[/color][/size][/b][/shadow]

Не знаю насколько это безопасно. Скрипт не кроссбраузерный. Internet Explorer только с версии 10.0.

В принципе на основе такого подхода можно будет сделать скрипт и фоновой картинки, фонового цвета для текста...

Отредактировано kolobdur74 (Сб, 18 Фев 2017 13:52:18)

+9

455

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

В принципе на основе такого подхода можно будет сделать скрипт и фоновой картинки, фонового цвета для текста...

Вот на основе предыдущего скрипта (они совместимы) Фон для текста с любыми параметрами:

Код:
<!--Фон для текста с любыми параметрами-->
<script type="text/javascript">
$('td#button-font').after('<td id="backgr" style=\'background-image:url("http://s4.uploads.ru/zkAou.png")\' title="Фон для текста" onclick="tag_background()"></td>');
$(function(){
$('.post-content:contains("[background=")').each(function(){
var htmlbackground = $(this).html().replace(/\[background=(.*?)\]([^`]*?)\[\/background\]/gi, "<span style='width=80%; background:$1;'>$2</span>");
$(this).html(htmlbackground)
});
});
function tag_background(){
var FoundErrorsBACKGROUND = '';
var backgroundTIT = prompt('Введите параметры фона', 'url("http://s4.uploads.ru/zkAou.png") no-repeat #fc0');
if (FoundErrorsBACKGROUND)
{alert("Ошибка!" + FoundErrorsBACKGROUND);
return;}
bbcode('[background='+backgroundTIT+']','[/background]');
}
</script>

Примеры:
http://s1.uploads.ru/gJkDs.png

Код:
[background=url("http://images.gofreedownload.net/heart-handprint-seamless-pattern-239222.jpg") no-repeat #fc0]буууууууууууууууууууууууууууууууу[/background]


[background=url("http://s4.uploads.ru/zkAou.png") no-repeat #fc0]Очень много текста!!! Примеры!!![/background]


[background=#F8F8FF][b][size=20]И еще огромное количество текста!!![/size][/b][/background]

[background=#F8F8FF][b][size=20][shadow=1px 1px 2px #FFF6AD]И еще огромное количество текста но с тенью!!![/shadow][/size][/b][/background]

Ссылки на картинки ставить обязательно в кавычки: "здесь ссылка", то есть вот так:

background=url("http://s4.uploads.ru/zkAou.png") no-repeat #fc0

Если картинка не нужна, то можно поставить только цвет таким образом:

background=#F8F8FF

Отредактировано kolobdur74 (Сб, 18 Фев 2017 14:39:44)

+7

456

Mirra Bell написал(а):

У меня по скрипту фона для текста: а можно сделать так, чтобы устанавливаемая картинка не сжималась/не обрезалась под размер шрифта? К примеру, я ставлю на фон картинку 400х200, а получаю все равно фон четко под буквами. Он в таком случае от просто цвета практически не отличается, а вот если можно будет писать поверх любого фона, это будет реально круто, а то сейчас приходится исполнять танцы с бубнами с HTML в постах.

Ну, вот с регулированием ширины и высоты:

Код:
<!--Фон для текста с любыми параметрами с регулированием ширины и высоты-->
<script type="text/javascript">
$('td#button-font').after('<td id="backgr" style=\'background-image:url("http://s4.uploads.ru/zkAou.png")\' title="Фон для текста" onclick="tag_background()"></td>');
$(function(){
$('.post-content:contains("[background=")').each(function(){
var htmlbackground = $(this).html().replace(/\[background=(.*?)\,(.*?)\,(.*?)\]([^`]*?)\[\/background\]/gi, "<div style='background:$1;width:$2;height:$3;'>$4</div>");
$(this).html(htmlbackground)
});
});
function tag_background(){
var FoundErrorsBACKGROUND = '';
var backgroundTIT = prompt('Введите параметры фона', 'url("http://s4.uploads.ru/zkAou.png") no-repeat #fc0');
var backgroundTIT2 = prompt('Введите ширину', '80%');
var backgroundTIT3 = prompt('Введите Высоту', '200px');
if (FoundErrorsBACKGROUND)
{alert("Ошибка!" + FoundErrorsBACKGROUND);
return;}
bbcode('[background='+backgroundTIT+','+backgroundTIT2+','+backgroundTIT3+']','[/background]');
}
</script>

Вставлять через запятую:
1. Параметры фона (картинку, повторяется или нет, позицию, цвет)
2. Требуемую ширину
3. Требуемую высоту

Ширину и высоту можно ставить как пикселях так и в процентах, но высоту стоит ставить в пикселях, иначе сожмется до текста..

Отредактировано kolobdur74 (Вс, 19 Фев 2017 13:00:46)

+1

457

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

Ну, вот с регулированием ширины и высоты:

И сразу вариант с регулированием положения текста (отступы сверху и слева):

Код:
<!--Фон для текста с любыми параметрами с регулированием ширины и высоты и положением текста-->
<script type="text/javascript">
$('td#button-font').after('<td id="backgr" style=\'background-image:url("http://s4.uploads.ru/zkAou.png")\' title="Фон для текста" onclick="tag_background()"></td>');
$(function(){
$('.post-content:contains("[background=")').each(function(){
var htmlbackground = $(this).html().replace(/\[background=(.*?)\,(.*?)\,(.*?)\,(.*?)\,(.*?)\]([^`]*?)\[\/background\]/gi, "<div style='position:relative;background:$1;width:$2;height:$3;'><span style='position:absolute;top:$4;left:$5;'>$6</span></div>");
$(this).html(htmlbackground)
});
});
function tag_background(){
var FoundErrorsBACKGROUND = '';
var backgroundTIT = prompt('Введите параметры фона', 'url("http://s4.uploads.ru/zkAou.png") no-repeat #fc0');
var backgroundTIT2 = prompt('Введите ширину', '80%');
var backgroundTIT3 = prompt('Введите Высоту', '200px');
var backgroundTIT4 = prompt('Введите Отступ сверху', '50%');
var backgroundTIT5 = prompt('Введите Отступ слева', '10%');
if (FoundErrorsBACKGROUND)
{alert("Ошибка!" + FoundErrorsBACKGROUND);
return;}
bbcode('[background='+backgroundTIT+','+backgroundTIT2+','+backgroundTIT3+','+backgroundTIT4+','+backgroundTIT5+']','[/background]');
}
</script>

Здесь вставлять через запятую 5 параметров:
1. Параметры фона (картинку, повторяется или нет, позицию, цвет)
2. Требуемую ширину
3. Требуемую высоту
4: Отступ сверху
5: Отступ слева

Отступы можно ставить как в процентах так и в пикселях..

Отредактировано kolobdur74 (Вс, 19 Фев 2017 13:31:50)

+3

458

Поскольку были просьбы реализовать запрет копирования картинок
с исключением видимости ссылки в Исходном коде страницы
(чтобы юзер не мог открыть картинку по ссылке и скопировать),
Реализовал такой вариант, кодирующий ссылку картинки при вставке:

Запрет копирования картинок в постах
с кодированием ссылки и автомаркированием изображения
http://s2.uploads.ru/4MKd2.png

В HTML низ

<!-- Запрет копирования картинок в постах -->
<style type="text/css">
.post-content .postimg-wrap {display:inline-block;position:relative}
.post-content .postimg-wrap.mark:before {
  position:absolute;
  bottom:.6em;right:.6em;
  font-size:1.4em;
  color:#fff;
  text-shadow:0 0 2px rgba(255,255,255,.8);
}
.post-content .postimg-wrap.img-deleted {
  font-size:.9em;
}
.post-content .mark-img-deleted {
  font-style:italic;
}
#action-set-nocopy{font-size:.9em;margin:-1em 0 -2em;line-height:.6em}
#chk22{vertical-align:middle;margin-bottom:2px}#image-area-actions{padding-top:1em}
</style>

<script type="text/javascript">var ImgNoCopy = {};
ImgNoCopy.markImg =
1; // Маркирование изображений с запретом копирования: 0 - отключено, 1 - включено
ImgNoCopy.default =
1; // Включать запрет копирования при вставке картинок по умолчанию: 0 - нет, 1 - да
</script>
<script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/18656.js"></script>


В качестве маркера картинки ставится копирайт домена текущего форума (к примеру: © forum.mybb.ru)

Скриншот: (кликабельно)

http://s9.uploads.ru/t/PVeRZ.png

Маркирование можно отключить в настройках скрипта (см.код выше)

Включить/выключить запрет копирования для нужных картинок(при вставке в пост) можно в стандартной форме загрузки картинок(кнопка http://sf.uploads.ru/lJIQS.png в форме ответа)


При вставке картинок как "Превью" - запрет копирования отключается(т.к. если юзер делает картинку кликабельной для возможности открытия ее в полном размере - смысл в запрете отпадает)

Вставленную с помощью этого скрипта картинку с помощью обычных средств скопировать невозможно,
В т.ч. не получится вытащить ссылку на картинку из Исходного кода, т.к ссылка закодирована

+13

459

Не знаю насколько правильно сделал, но вот сделал скрипт Запрет определенным группам определенные вв-коды. Возможно будет тем, кто использует вв-коды, которые большинству пользователей не нужны..

Полная версия (включает в себя все стандартные вв-коды плюс вв-коды из последних моих скриптов):

Код:
<!--Запрет определенным группам определенные вв-коды-->
<script type="text/javascript">
var GroupNoBB = [3,4];  // Тут выставляем группу, которой не видны вв-коды
if($.inArray(GroupID,GroupNoBB)!=-1){
setInterval(function() {
var arrButtons = [
// "#form-buttons td#button-font",
// "#form-buttons td#backgr",
// "#form-buttons td#button-size",
// "#form-buttons td#button-bold",
// "#form-buttons td#button-italic",
// "#form-buttons td#button-underline",
// "#form-buttons td#button-strike",
// "#form-buttons td#button-math",
// "#form-buttons td#button-left",
// "#form-buttons td#button-center",
// "#form-buttons td#button-right",
// "#form-buttons td#shad",
// "#form-buttons td#button-link",
// "#form-buttons td#button-spoiler",
// "#form-buttons td#button-image",
// "#form-buttons td#button-video",
// "#form-buttons td#button-hide",
// "#form-buttons td#button-quote",
// "#form-buttons td#button-code",
// "#form-buttons td#button-color",
// "#form-buttons td#button-table",
// "#form-buttons td#button-smile",
// "#form-buttons td#button-keyboard",
// "#form-buttons td#button-addition",
// "#form-buttons td#form-audio"  // Последний без запятой
];
for(i=0;i<arrButtons.length;i++){
var fidBB=arrButtons[i];
$(fidBB).css({"display" : "none"});
};
}, 1);
}
</script>

Где: var GroupNoBB = [3,4]; - Тут выставляем нужные группы, которым не видны вв-коды (брать цифру: Администрирование - Группы - Редактировать нужную группу - в адресной строке последняя цифра)

Для того, чтобы данный вв-код не отображался у этих групп убираем комментарий перед нужным селектором:

// "#form-buttons td#button-font",

Сокращенный вариант (только пользоватеские вв-коды):

Код:
<!--Запрет определенным группам определенные вв-коды-->
<script type="text/javascript">
var GroupNoBB = [3,4];  // Тут выставляем группу, которой не видны вв-коды
if($.inArray(GroupID,GroupNoBB)!=-1){
setInterval(function() {
var arrButtons = [
// "#form-buttons td#backgr",
// "#form-buttons td#shad"  // Последний без запятой
];
for(i=0;i<arrButtons.length;i++){
var fidBB=arrButtons[i];
$(fidBB).css({"display" : "none"});
};
}, 1);
}
</script>

Вместо:

// "#form-buttons td#backgr",
// "#form-buttons td#shad"

Можно вставлять свои варианты.. За корректность скрипта не ручаюсь..

Скрипт ставить НТМЛ низ.

Отредактировано kolobdur74 (Вс, 26 Фев 2017 00:40:30)

+3

460

Поскольку давно просили реализовать вывод последних картинок,     
загруженных на форум пользователями, - реализовал такой скрипт,     
(Спасибо Admin'у за реализацию поиска по URL картинок в постах!)     

Вывод последних загруженных картинок форума

(слайдер с последними картинками из сообщений форума)

http://s9.uploads.ru/8UH1t.png

В HTML верх

<!-- Последние загруженные картинки форума -->
<script type="text/javascript">var LastUploads = {};
LastUploads.onlyIndex =
0;               // Отображать: 0 - везде, 1 - только на Главной
LastUploads.forumsExc = [
2,4,18];        // Форумы, исключаемые из выборки картинок
LastUploads.selectors = '
#pun-crumbs1';  // Cелектор элемента, после которого ставим блок с картинками
LastUploads.numberImg =
15;              // Максимальное количество отображаемых картинок
LastUploads.postOrImg =
0;               // По клику на картинку открывать: 0 - картинку, 1 - пост с картинкой
</script>
<link rel="stylesheet" type="text/css" href="https://forumstatic.ru/files/0015/c4/3f/66253.css" />
<script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/66254.js"></script>


Пояснения:

Настройки скрипта:
LastUploads.onlyIndex  -  Отображение слайдера с картинками: 0 - на всех страницах, 1 - только на Главной
LastUploads.forumsExc  -  Список форумов, картинки из которых в слайдер не добавляем(цифры через запятую)
LastUploads.selectors  -  Элемент, после которого ставим Слайдер(по умолчанию #pun-crumbs1 - верхние "хлебные крошки")
LastUploads.numberImg  -  Максимальное количество картинок, которые будут отображаться в слайдере
LastUploads.postOrImg  -  По клику на картинку в слайдере открывать: 0 - оригинал картинки(в новой вкладке), 1 - пост, содержащий картинку

Оформление:
Селекторы элементов слайдера:
Внешний блок - .punbb #LastUploads
Внутренний блок(с центровкой) - .punbb #LastUploads .lastuploads-inner
Стрелки прокрутки - .punbb #LastUploads .scroll (Левая - .punbb #LastUploads .scroll.left, правая .punbb #LastUploads .scroll.right)
   *Стрелки установлены через :before - можно вставить свой символ или картинку, к примеру

.punbb #LastUploads .scroll.left:before {
  content:url(ссылка на картинку для стрелки влево);
}
.punbb #LastUploads .scroll.right:before {
  content:url(ссылка на картинку для стрелки вправо);
}

Ссылка - обертка картинки - .punbb #LastUploads .image-wrap-link
  *К примеру: Убрать тень у кликабельных картинок

.punbb #LastUploads .image-wrap-link {
  box-shadow:none;
}

Размер картинок также регулируем на этом селекторе(если нужно)


По просьбам юзеров, - дополнение - правка прозрачности

Делаем картинки полупрозрачными
с восстановлением прозрачности при наведении

В HTML верх

<style type="text/css">
.punbb #LastUploads .image-wrap-link {
  opacity:.8;
}
.punbb #LastUploads .image-wrap-link:hover {
  opacity:1.0;
}
</style>

Для каждой группы в Слайдере отображаются только картинки из Постов, видных данной группе!


Если встречается несколько одинаковых картинок, - из них отображается только первая найденная


Картинки подгоняются под размер ссылки в слайдере, с сохранением пропорций


Список картинок обновляется раз в 20-30 минут из-за особенностей работы Поиска


Тестируем!

+8


Вы здесь » Единый форум поддержки » Новые возможности форумов » Скрипты от пользователей 3