Перейти к контенту

Таблицы в топиках, верхний индекс и нобрейк BB-кодами


Рекомендуемые сообщения

Понадобились таблицы в топиках (прайс выложить или картинку с текстом поудобнее спозиционировать etc) и верхни индекст (для оформления сносок к статьям).

 

Сделал. На 1.3 работает.

 

Как делал:

 

Сделал кнопочки:

smile.gif (он мне не нужен, перерисовал): http://juvenjust.org/html/UBBC/smile.gif

help.gif (тоже не нужен, перерисовал): http://juvenjust.org/html/UBBC/help.gif

up.gif http://juvenjust.org/html/UBBC/up.gif

 

Файл UBBC.js :

Закомментировал строки:

makeImage('/smile.gif','23','22','Смайлы') + '</a>';
html += ' ' + makeLink("ubbHelp();",'Помощь') + makeImage('/help.gif','23','22','Помощь') + '</a>';

 

После них добавил:

html += ' ' + makeLink("ubbSmile();",'Таблицы') + makeImage('/smile.gif','23','22','Таблицы') + '</a>';
html += makeLink("ubbBasic('nobr');",'склеить[nobr]') + makeImage('/help.gif','23','22','Жирный[B]') + '</a>';
html += makeLink("ubbBasic('up');",'Сноска[UP]') + makeImage('/up.gif','23','22','Сноска[UP]') + '</a>';

 

Работа в текстовом режиме не планируется, поэтому сделал только для графического режима.

 

В функции ubbSmile() поменял URL: var url = 'http://board.URL/tables.html';

 

В корень форума положил два файла:

1. tables.html :

<html><head></head><body>
<script type="text/javascript">
var tablerowstr=''
var tablerows=tablecolls=1

function writetable(){
name=tablerows+'|'+tablecolls
location='tables22.html'
}

</script>
<table width="100%" height="100%"><tr><td align="CENTER" valign="MIDDLE">
<form action="java script:writetable()">
<table border="1" cellspacing="1" cellpadding="1">
<tr><td colspan="2" align="CENTER"><b><big>Таблица:</big></b></td></tr>
<tr>
<td align="RIGHT"><b>Строк:</b></td>
<td><input type="Text" value="1" size="3" maxlength="3" onBlur="java script:tablerows=value"></td>
</tr>
<tr>
<td align="RIGHT"><b>Колонок:</b></td>
<td><input type="Text" value="1" size="3" maxlength="3" onblur="java script:tablecolls=value"></td>
</tr>
<tr><td colspan="2" align="CENTER"><input type="Submit" value="Открыть!"></td></tr>
</table>
</form>
</td></tr></table>
</body></html>

 

2. tables22.html :

<html>
<head>
<script type="text/javascript">
tablerows=name.split('|')[0]
tablecolls=name.split('|')[1]
var id=new Array()
z=0
for(i=0;i<tablerows;i++){
for(y=0;y<tablecolls;y++){
eval('id['+z+']=(i+1)+"*"+(y+1)')
z++
}}
function changeid(val,zy){
zy=zy*1
id[zy]=val
}
function calltable(){
tablerowstw='[table]'
z=0
for(i=0;i<tablerows;i++){
tablerowstw+='[tr]';
for(y=0;y<tablecolls;y++){
tablerowstw+='[td]'+id[z]+'[\/td]'
z++
}
tablerowstw+='[\/tr]'}
tablerowstw+='[\/table]'
if (opener.document.REPLIER.Post.createTextRange && opener.document.REPLIER.Post.caretPos) {
var caretPos = opener.document.REPLIER.Post.caretPos;
caretPos.text = tablerowstw;
} else {opener.document.REPLIER.Post.value +=tablerowstw; }
window.close()
}
</script>
</head>
<body>
<table width="100%" height="100%"><tr><td align="CENTER" valign="MIDDLE">
<form action="java script:calltable()">
<script type="text/javascript">
tablerowstr='<table>'
z=0
for(i=0;i<tablerows;i++){
tablerowstr+='<tr>';
for(y=0;y<tablecolls;y++){
tablerowstr+='<td><textarea name="'+z+'" cols="20" rows="4" onblur="java script:changeid(value, name)">'+id[z]+'</textarea><\/td>'
z++
}
tablerowstr+='<\/tr>'}
tablerowstr+='<\/table>'
document.write(tablerowstr)
</script>
<input type="Submit" value="Передать!">
</form>
</td></tr></table>
</body>
</html>

 

Файл post_parser.php :

После строк:

// Start off with the easy stuff
//Personals

 

Добавил:

$txt = preg_replace( "#\[table\](.+?)\[/table\]#is", "<table border=0 cellspacing=0 cellpadding=0>\\1</table>", $txt );
$txt = preg_replace( "#\[table=1\](.+?)\[/table\]#is", "<table border=1 cellspacing=1 cellpadding=3>\\1</table>", $txt );
$txt = preg_replace( "#\[table=2\](.+?)\[/table\]#is", "<table border=2 cellspacing=1 cellpadding=3>\\1</table>", $txt );
$txt = preg_replace( "#\[tr\](.+?)\[/tr\]#is", "<tr>\\1</tr>", $txt );
$txt = preg_replace( "#\[td\](.+?)\[/td\]#is", "<td align=LEFT valign=TOP class=postcolor>\\1</td>", $txt );
$txt = preg_replace( "#\[td=center\](.+?)\[/td\]#is", "<td align=center valign=TOP class=postcolor>\\1</td>", $txt );
$txt = preg_replace( "#\[td=right\](.+?)\[/td\]#is", "<td align=right valign=TOP class=postcolor>\\1</td>", $txt );
$txt = preg_replace( "#\[up\](.+?)\[/up\]#is", "<sup>\\1</sup>", $txt );
$txt = preg_replace( "#\[nobr\](.+?)\[/nobr\]#is", "<nobr>\\1</nobr>", $txt );

 

В секции "// Parses the HTML back into plain text" после строк

 if ($code == 1)
{

 

Добавил:

$txt = preg_replace( "#<sup>(.+?)</sup>#is"  , "\[up\]\\1\[/up\]"  , $txt );
$txt = preg_replace( "#<table border=0 cellspacing=0 cellpadding=0>(.+?)</table>#is"  , "\[table\]\\1\[/table\]"  , $txt );
$txt = preg_replace( "#<table border=1 cellspacing=1 cellpadding=3>(.+?)</table>#is"  , "\[table=1\]\\1\[/table\]"  , $txt );
$txt = preg_replace( "#<table border=2 cellspacing=1 cellpadding=3>(.+?)</table>#is"  , "\[table=2\]\\1\[/table\]"  , $txt );
$txt = preg_replace( "#<tr>(.+?)</tr>#is"  , "\[tr\]\\1\[/tr\]"  , $txt );
$txt = preg_replace( "#<td align=LEFT valign=TOP class=postcolor>(.+?)</td>#is"  , "\[td\]\\1\[/td\]"  , $txt );
$txt = preg_replace( "#<td align=center valign=TOP class=postcolor>(.+?)</td>#is"  , "\[td=center\]\\1\[/td\]"  , $txt );
$txt = preg_replace( "#<td align=right valign=TOP class=postcolor>(.+?)</td>#is"  , "\[td=right\]\\1\[/td\]"  , $txt );
$txt = preg_replace( "#<nobr>(.+?)</nobr>#is"  , "\[nobr\]\\1\[/nobr\]"  , $txt );

 

Думаю, не надо пояснять зачем и какие опции предусмотрены в тегах [table] и [td] :D

Ссылка на комментарий
Поделиться на других сайтах

$txt = preg_replace( "#<table border=0 cellspacing=0 cellpadding=0>(.+?)</table>#is" , "\[table\]\\1\[/table\]" , $txt );

$txt = preg_replace( "#<table border=1 cellspacing=1 cellpadding=3>(.+?)</table>#is" , "\[table=1\]\\1\[/table\]" , $txt );

$txt = preg_replace( "#<table border=2 cellspacing=1 cellpadding=3>(.+?)</table>#is" , "\[table=2\]\\1\[/table\]" , $txt );

так

$txt = preg_replace( "#<table border=(.+?) cellspacing=1 cellpadding=3>(.+?)</table>#is" , "\[table=\\1\]\\2\[/table\]" , $txt );

не лучше ?

 

 

 

$txt = preg_replace( "#<td align=LEFT valign=TOP class=postcolor>(.+?)</td>#is" , "\[td\]\\1\[/td\]" , $txt );

$txt = preg_replace( "#<td align=center valign=TOP class=postcolor>(.+?)</td>#is" , "\[td=center\]\\1\[/td\]" , $txt );

$txt = preg_replace( "#<td align=right valign=TOP class=postcolor>(.+?)</td>#is" , "\[td=right\]\\1\[/td\]" , $txt );

 

$txt = preg_replace( "#<td align=(.+?) valign=TOP class=postcolor>(.+?)</td>#is" , "\[td=\\1\]\\2\[/td\]" , $txt );

:D

 

ну и при парсинге аналогично

Ссылка на комментарий
Поделиться на других сайтах

2FatCat

 

А учитывается то, что td может быть только внутри tr, tr только внутри table, парность тегов, etc...

Ссылка на комментарий
Поделиться на других сайтах

так

$txt = preg_replace( "#<table border=(.+?) cellspacing=1 cellpadding=3>(.+?)</table>#is" , "\[table=\\1\]\\2\[/table\]" , $txt );

не лучше ?

Возможно, вероятно, не исключено... Попробую.

У меня не большая практика в php, я больше с джавой имею дело.

 

 

А учитывается то, что td может быть только внутри tr, tr только внутри table, парность тегов, etc...

Это все в джава-скрипт реализовано. Желающие могут потестить в топике http://juvenjust.org/index.php?showtopic=56 - сделал там возможность гостям видеть и отвечать в топике.

Ссылка на комментарий
Поделиться на других сайтах

Но я ведь могу и не пользоваться твоим javascript'ом для вставки тегов в текстарею?
Ссылка на комментарий
Поделиться на других сайтах

Но я ведь могу и не пользоваться твоим javascript'ом для вставки тегов в текстарею?

Да и без нарушения вложенности у пользователя есть масса способов придать своему сообщению отвратительный вид, хватит и банального кирпича на капс-локе :D

 

ИМХО, главное, что нет возможности ввести непарный тег и поломать чужие сообщения или дизайн страницы.

Ссылка на комментарий
Поделиться на других сайтах

Думается мне чтобы поломать достаточно не только непарный тег не соблюсти.
Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...
а можно ссылочку на готовый вариант ?

А первый пост никак посмотреть не получается? :D

 

Для меня на данный момент удобный вариант Hostem'а. ;)

Ссылка на комментарий
Поделиться на других сайтах

а можно ссылочку на готовый вариант ?

А первый пост никак посмотреть не получается? :D

 

Для меня на данный момент удобный вариант Hostem'а. ;)

 

я не имею ввиду код, я имею ввиду результат на самом сайте :)

Ссылка на комментарий
Поделиться на других сайтах

Ну так ведь тоже есть ссылка, постом выше :D

http://juvenjust.org/index.php?showtopic=56

 

http://www.dasboot.biz/rew/showproduct.php?product=1

 

ну вобщем да, что-то похожее.. осталось увеличить количество строк и добавить background.

Ссылка на комментарий
Поделиться на других сайтах

  • 6 месяцев спустя...
  • 3 месяца спустя...

Забросил тему за неактуальностью.

 

Привинтил к форуму визуальный редактор: можно в нем набирать, а можно вообще копи-пасте из ворда.

Разрешил dohtml для проверенной группы, и пусть пользуются визуальным редактором.

 

Работает только в интернет-эксплорере, но возможности стОят того, чтобы пользоваться этим браузером.

Там проблем с передачей данных между окнами нет.

 

Но если есть интерес, могу глянуть, что там с лисой, почему не отдает данные в родительское окно.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Все то же самое в PHP.

 

<html><head>
</head>
<body onload="draw();">
<br><br><br><br><br><br><br>
<?php
$row = !empty($_POST['row']) ? $_POST['row'] : $_GET['row'];
$col = !empty($_POST['col']) ? $_POST['col'] : $_GET['col'];
if($col == 0 || $row == 0)
{
?>
<table width="100%" height="50%"><tr><td align="CENTER" valign="MIDDLE">
<form>
<table border="1" cellspacing="1" cellpadding="1">
<tr><td colspan="2" align="CENTER"><b><big>Таблица:</big></b></td></tr>
<tr>
<td align="RIGHT"><b>Строк:</b></td>
<td><input type="Text" value="1" size="3" maxlength="3" name="row"></td>
</tr>
<tr>
<td align="RIGHT"><b>Колонок:</b></td>
<td><input type="Text" value="1" size="3" maxlength="3" name="col"></td>
</tr>
<tr><td colspan="2" align="CENTER"><input type="Submit" value="Открыть!"></td></tr>
</table>
</form>
</td></tr></table>
<?
}
if($col != 0 && $row != 0)
{
?>
<table width="100%" height="50%">
<tr>
	<td align="CENTER" valign="MIDDLE">
		<div id='out_str'></div>
		<script language="JavaScript">
function draw()
{
str = "<table cellpadding=0 cellspacing=3 border='2' align=center>";
for(i = 0; i < <?=$row?>; i++)
{
	str += "<tr>";
	for(j = 0; j < <?=$col?>; j++)
	{
		cols = j+1;
		rows = i+1;
		str += "<td>";
		id = rows+'*'+cols;
		str += "<textarea name=''+id cols='20' rows='4'>"+id+"</textarea>";
		str += "</td>";
	}
	str += "</tr>";	
}
str += "</table>";
out_str.innerHTML = str;
}
function calltable()
{
code = '[table]'
z=0
for(i = 0; i < <?=$row?>; i++)
{
	code += '[tr]';
	for(y = 0; y < <?=$col?>; y++)
	{
		cols = y+1;
		rows = i+1;
		id = rows+'*'+cols;
		code += '[td]' + '' + id + '[\/td]'
		z++;
	}
	code += '[\/tr]'
}
code += '[\/table]'
if (opener.document.REPLIER.Post.createTextRange && opener.document.REPLIER.Post.caretPos) 
{
	var caretPos = opener.document.REPLIER.Post.caretPos;
	caretPos.text = code;
} 
else 
{
	opener.document.REPLIER.Post.value += code; 
}
window.close()
}
		</script>
		<form action="java script:calltable()">
			<input type="Submit" value="Передать!">
		</form>
	</td>
</td>
</table>
<?
}
?>
</body></html>

Ссылка на комментарий
Поделиться на других сайтах

FatCat,

дьявольски круто смотрится, но слишком тяжёлая форма получается.

Может что-то отдельное получится использовать.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.