FatCat Опубликовано 5 Апреля 2006 Жалоба Поделиться Опубликовано 5 Апреля 2006 Понадобились таблицы в топиках (прайс выложить или картинку с текстом поудобнее спозиционировать etc) и верхни индекст (для оформления сносок к статьям). Сделал. На 1.3 работает. Как делал: Сделал кнопочки: smile.gif (он мне не нужен, перерисовал): http://juvenjust.org/html/UBBC/smile.gifhelp.gif (тоже не нужен, перерисовал): http://juvenjust.org/html/UBBC/help.gifup.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] Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Mitos Опубликовано 5 Апреля 2006 Жалоба Поделиться Опубликовано 5 Апреля 2006 $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 ); ну и при парсинге аналогично Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 6 Апреля 2006 Жалоба Поделиться Опубликовано 6 Апреля 2006 2FatCat А учитывается то, что td может быть только внутри tr, tr только внутри table, парность тегов, etc... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 6 Апреля 2006 Автор Жалоба Поделиться Опубликовано 6 Апреля 2006 так$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 - сделал там возможность гостям видеть и отвечать в топике. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 9 Апреля 2006 Жалоба Поделиться Опубликовано 9 Апреля 2006 Но я ведь могу и не пользоваться твоим javascript'ом для вставки тегов в текстарею? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 10 Апреля 2006 Автор Жалоба Поделиться Опубликовано 10 Апреля 2006 Но я ведь могу и не пользоваться твоим javascript'ом для вставки тегов в текстарею?Да и без нарушения вложенности у пользователя есть масса способов придать своему сообщению отвратительный вид, хватит и банального кирпича на капс-локе ИМХО, главное, что нет возможности ввести непарный тег и поломать чужие сообщения или дизайн страницы. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 10 Апреля 2006 Жалоба Поделиться Опубликовано 10 Апреля 2006 Думается мне чтобы поломать достаточно не только непарный тег не соблюсти. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Dasboot Опубликовано 2 Июня 2006 Жалоба Поделиться Опубликовано 2 Июня 2006 а можно ссылочку на готовый вариант ? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Jax Опубликовано 2 Июня 2006 Жалоба Поделиться Опубликовано 2 Июня 2006 а можно ссылочку на готовый вариант ?А первый пост никак посмотреть не получается? Для меня на данный момент удобный вариант Hostem'а. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Dasboot Опубликовано 2 Июня 2006 Жалоба Поделиться Опубликовано 2 Июня 2006 а можно ссылочку на готовый вариант ?А первый пост никак посмотреть не получается? Для меня на данный момент удобный вариант Hostem'а. я не имею ввиду код, я имею ввиду результат на самом сайте Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Jax Опубликовано 2 Июня 2006 Жалоба Поделиться Опубликовано 2 Июня 2006 Ну так ведь тоже есть ссылка, постом выше http://juvenjust.org/index.php?showtopic=56 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Dasboot Опубликовано 2 Июня 2006 Жалоба Поделиться Опубликовано 2 Июня 2006 Ну так ведь тоже есть ссылка, постом выше http://juvenjust.org/index.php?showtopic=56 http://www.dasboot.biz/rew/showproduct.php?product=1 ну вобщем да, что-то похожее.. осталось увеличить количество строк и добавить background. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Malcom Опубликовано 4 Декабря 2006 Жалоба Поделиться Опубликовано 4 Декабря 2006 для 2.1 нет такой фичи? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
efimer Опубликовано 13 Марта 2007 Жалоба Поделиться Опубликовано 13 Марта 2007 То ли в FireFox нет передачи параметров через java, то ли скрипт пора чуток поменять. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 13 Марта 2007 Автор Жалоба Поделиться Опубликовано 13 Марта 2007 Забросил тему за неактуальностью. Привинтил к форуму визуальный редактор: можно в нем набирать, а можно вообще копи-пасте из ворда.Разрешил dohtml для проверенной группы, и пусть пользуются визуальным редактором. Работает только в интернет-эксплорере, но возможности стОят того, чтобы пользоваться этим браузером.Там проблем с передачей данных между окнами нет. Но если есть интерес, могу глянуть, что там с лисой, почему не отдает данные в родительское окно. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
efimer Опубликовано 21 Марта 2007 Жалоба Поделиться Опубликовано 21 Марта 2007 Буду признателен, большинство знакомых плавно перетекают именно на этот браузер. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
efimer Опубликовано 5 Апреля 2007 Жалоба Поделиться Опубликовано 5 Апреля 2007 Все то же самое в 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> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
PALADIN+ Опубликовано 9 Апреля 2007 Жалоба Поделиться Опубликовано 9 Апреля 2007 FatCat,дьявольски круто смотрится, но слишком тяжёлая форма получается.Может что-то отдельное получится использовать. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.