Сама возможность әбьюзать новые таблицы ещё не значит, что они плохи! Как показала практика, на форуме чисто административных мер (запрет в правилах) достаточно для того, чтобы люди не әбьюзали фичи (ср. использование красного цвета).
Поэтому я уверен, что возможность выставить Трэси в сайдбаре не значит, что кто-то будет так делать.
Но мне очень хотелось побаловаться. :-[
[table style="position: absolute; background-image: url('http://cs9728.userapi.com/u75391102/106521315/x_12745249.jpg'); background-color: #055; top: 275px; left: 28px; width: 164px; height: 1000px;"][tr][td]Ваш сайдбар принадлежит Треси!
Ваш сайдбар принадлежит Треси!
Ваш сайдбар принадлежит Треси!
Ваш сайдбар принадлежит Треси!
Ваш сайдбар принадлежит Треси!
Ваш сайдбар принадлежит Треси!
Ваш сайдбар принадлежит Треси!
Ваш сайдбар принадлежит Треси!
Ваш сайдбар принадлежит Треси!
Ваш сайдбар принадлежит Треси!
Ваш сайдбар принадлежит Треси!
Ваш сайдбар принадлежит Треси!
Ваш сайдбар принадлежит Треси!
Ваш сайдбар принадлежит Треси!
Ваш сайдбар принадлежит Треси![/td][/tr][/table]
Какой ужос!
Зато возможность выставить фон можно использовать для генерации картинок «Типичный ЛФ». Сейчас попробую.
[table style="background-image: url('http://ablog.site90.com/fast/save-ip.php'); width: 980px; height: 980px;"][tr][td]
. [/td][/tr][/table]
[table style="width: 400px; height: 400px; background-image: url('http://www.imageup.ru/img275/998272/tresi2.jpg'); "][tr][td]
[table style="color: white; height: 40px; position: relative; top: 0px; text-align: center;"][tr][td] ВАШ САЙДБАР[/td][/tr][/table]
[table style="color: white; height: 40px; position: relative; top: 280px; text-align: center;"][tr][td] ПРИНАДЛЕЖИТ ТРЕСИ[/td][/tr][/table]
[/td][/tr][/table]
Ητπεκμν υτ ηφλετν...
Цитата: Bhudh от июля 22, 2012, 11:44
Ητπεκμν υτ ηφλετν...
:'(
А так:
Цитата: fujhi от июля 22, 2012, 11:39
[table style="width: 400px; height: 400px; background-image: url('http://www.imageup.ru/img275/998272/tresi2.jpg'); "][tr][td]
[table style="color: white; height: 40px; position: relative; top: 0px; text-align: center;"][tr][td] ВАШ САЙДБАР[/td][/tr][/table]
[table style="color: white; height: 40px; position: relative; top: 280px; text-align: center;"][tr][td] ПРИНАДЛЕЖИТ ТРЕСИ[/td][/tr][/table]
[/td][/tr][/table]
Так лучше?
РавонаМ всё отключил... :(
А что тут mənashe написал? Я не успел посмотреть...
Я не понял, зачем нужны были отступы пробелами вместо text-align: center;...
Цитата: Bhudh от июля 22, 2012, 11:50
А что тут mənashe написал? Я не успел посмотреть...
Аватар fujhi поверх сайдбара.
А, перезапись! ;D
Цитата: Bhudh от июля 22, 2012, 11:51
Я не понял, зачем нужны были отступы пробелами вместо text-align: center;...
Потому что второе не работало, в отличие от первого.
Merci pour montrer les trous.
style est interdit.
Где не работало, в [td]⁈ :o
У меня всё работало!
Цитата: RawonaM от июля 22, 2012, 11:56Благодарим Вас за проявленное отверстия.
Стиль запрещено.
Объясни, почему.
Злоупотреблений я не заметил.
Цитата: RawonaM от июля 22, 2012, 11:56
style est interdit.
:'(
Стили дают огромные возможности!
А вся дыра базируется исключительно на position.
Нельзя ли запретить только position и разрешить стили?
Ну, что стоит проверять содержимое стилей на наличие position?
:'(
Цитата: mnashe от июля 22, 2012, 11:59
Нельзя ли запретить только position и разрешить стили?
Ну, что стоить проверять содержимое стилей на наличие position?
C'est possible, mais est-ce que ça solve tous les problemes?
Цитата: RawonaM от июля 22, 2012, 11:56
Merci pour montrer les trous.
style est interdit.
Да я сам удивился, когда Вы полный доступ к стилю включили.
Но замену-то стиля нужно сделать! Без стиля нельзя сделать таблички с шириной в 1 пиксель.
Сделайте, пожалуйста, класс в CSS-файле типа
.nicetable { border-collapse: collapse; }
.nicetable tr td { border: solid 1px black; }
а также тег, который включает этот класс:
[table nice][tr][td]...[/td][/table]Так сделано в Википедии.
Хорошо бы ещё зебра-таблицы ::), но это много менять...
Цитата: RawonaM от июля 22, 2012, 12:00
est-ce que c'est solve tous les problemes?
Конечно!
Без position невозможно выйти за пределы поля сообщения — значит, никаких злоупотреблений.
Цитата: RawonaM от июля 22, 2012, 11:59
Цитата: Bhudh от июля 22, 2012, 11:57
Злоупотреблений я не заметил.
:???
Возможность злоупотребления ≠ злоупотребление.
Злоупотребить можно чем угодно. И в этом случае размещение Трэси на сайдбаре ничем не отличается от, скажем, растягивания строки с помощью
длинннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннного
текста.
Цитата: RawonaM от июля 22, 2012, 11:59
Цитата: Bhudh от июля 22, 2012, 11:57Злоупотреблений я не заметил.
:???
Dēmētrius честно попросил тебя в эту тему не входить! :negozhe:
Цитата: fujhi от июля 22, 2012, 12:00
Да я сам удивился, когда Вы полный доступ к стилю включили.
C'est un mod, j'ai pense qu'il prévient ça.
http://custom.simplemachines.org/mods/index.php?mod=2505
Цитата: mnashe от июля 22, 2012, 12:02
Цитата: RawonaM от июля 22, 2012, 12:00
est-ce que c'est solve tous les problemes?
Конечно!
Без position невозможно выйти за пределы поля сообщения — значит, никаких злоупотреблений.
Нет, это не решит всех проблем, т.к. проблемы в голове. Технические ограничения в принципе не могут спасти от злоупотреблений чем-либо.
Цитата: fujhi от июля 22, 2012, 12:05
Нет, это не решит всех проблем, т.к. проблемы в голове. Технические ограничения в принципе не могут спасти от злоупотреблений чем-либо.
Проблемы в голове, конечно, не решит, но вылезти за пределы поля сообщения без position невозможно.
Цитата: fujhi от июля 22, 2012, 12:03
Злоупотребить можно чем угодно. И в этом случае размещение Трэси на сайдбаре ничем не отличается от, скажем, растягивания строки с помощью
С'est aussi un bug qui doit etre fixé.
Цитата: fujhi от июля 22, 2012, 12:05
Технические ограничения в принципе не могут спасти от злоупотреблений чем-либо.
Vous pouvez voir tous les comtes dans un banque?
Цитата: mnashe от июля 22, 2012, 12:07
Проблемы в голове, конечно, не решит, но вылезти за пределы поля сообщения без position невозможно.
Нет гарантии, что завтра или послезавтра в CSS 3 не придумают какой-то чудо тег, который всё испортит. Стили — это незамкнутая система же.
Цитата: RawonaM от июля 22, 2012, 12:09
Vous pouvez voir tous les comtes dans un banque?
РавонаМу ответить не могу, т.к. лень отключать НоСкрипт ради кнопки Транслейт. Но с аккаутнами в банке — это неправильная метафора. Надо сравнивать с улицами, где могут пырнуть ножом, если не запретить людям иметь ножи.
Цитата: fujhi от июля 22, 2012, 12:12
Но с аккаутнами в банке — это неправильная метафора.
C'est pas une métaphore, ce sont exactement les restrictions techniques.
Dans un monde idéal tous peuvent voir tous.
Цитата: RawonaM от июля 22, 2012, 12:14
Dans un monde idéal tous peuvent voir tous.
我唔明白呢句句子。
RawonaM не хочет иметь идеальный форум! :'(
А давайте сделаем юзерскрипт, который сам парсит таблицы со стилям. Кто включит юзерскрипт — будет видеть красивые таблички. Кто не включит — будет видеть безопасные коды. :-???
Цитата: fujhi от июля 22, 2012, 12:12
Нет гарантии, что завтра или послезавтра в CSS 3 не придумают какой-то чудо тег, который всё испортит. Стили — это незамкнутая система же.
Во-первых, довлеет дневи злоба его.
Во-вторых, даже при разрешённом position ничего такого уж опасного произойти не может. Самое худшее, что может быть, — подменят ссылку с какого-нибудь элемент оформления на что-то левое. Так всё деструктивное всё равно идёт с подтверждением или и вовсе заблокировано.
А если position запрещён, то вообще непонятно, какие пакости можно сделать.
Зато колоссальные возможности оформления.
Цитата: RawonaM от июля 22, 2012, 12:14
Dans un monde idéal tous peuvent voir tous.
我怕呢種世界。咪理想,係反烏托邦。
Цитата: Bhudh от июля 22, 2012, 12:16
RawonaM не хочет иметь идеальный форум! :'(
Тогда придется написать Идеальный Скрипт и забанить всех пользователей.
Цитата: mnashe от июля 22, 2012, 12:18А если position запрещён, то вообще непонятно, какие пакости можно сделать.
По секрету: на позицию элемента может влиять не только
position... :tss:
Цитата: Bhudh от июля 22, 2012, 12:23
По секрету: на позицию элемента может влиять не только position... :tss:
你有冇例子呀?
Цитата: RawonaM от июля 22, 2012, 12:08
Цитата: fujhi от июля 22, 2012, 12:03Злоупотребить можно чем угодно. И в этом случае размещение Трэси на сайдбаре ничем не отличается от, скажем, растягивания строки с помощью
С'est aussi un bug qui doit etre fixé.
Et en fait c'est fixé dans Curve:
Цитата: Bhudh от июля 22, 2012, 12:23
По секрету: на позицию элемента может влиять не только position...
:o Как это?
Так это не страшно, поскольку всё равно привязано к сообщению. Похоже на position: relative.
Например, таким способом можно что-то написать поверх своего аватара, или под/над своим сообщением.
Изменить элементы оформления таким образом невозможно, для этого нужно position: absolute.
Цитата: RawonaM от июля 22, 2012, 12:25
Цитата: RawonaM от июля 22, 2012, 12:08
Цитата: fujhi от июля 22, 2012, 12:03Злоупотребить можно чем угодно. И в этом случае размещение Трэси на сайдбаре ничем не отличается от, скажем, растягивания строки с помощью
С'est aussi un bug qui doit etre fixé.
Et en fait c'est fixé dans Curve:
Curve 乜嘢都改唔到.例如長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長
長嘅文.
А когда таки починится появление скроллбаров справа, а?
Ссылко (//http://javascript:alert('%D0%91%D0%A3%D0%A3%D0%A3%D0%A3!');).
Цитата: Bhudh от июля 22, 2012, 12:32
А когда таки починится появление скроллбаров справа, а?
:E:
Ты чего? :what:
Ну, как бы сколлбары справа — это нормальная функциональность, куда от них денешься?
Гхм... Они у меня вылазят во всех постах на странице!
Upd: Где более двух строк (в том числе где 1 < x < 2, наапример, со смайликами).
Цитата: Bhudh от июля 22, 2012, 12:33
Ссылко (//http://javascript:alert('%D0%91%D0%A3%D0%A3%D0%A3%D0%A3!');).
Не работает — добавляется «http://».
Цитата: fujhi от июля 22, 2012, 12:30
Curve 乜嘢都改唔到.例如長
Et alors?
J'ai aussi pense de limiter la longueur verticale d'un message, c'est vraiment utile.
Plusieurs gens ne lisent pas les messages longues.
Цитата: Bhudh от июля 22, 2012, 12:32
А когда таки починится появление скроллбаров справа, а?
Je crois que jamais.
Цитата: mnashe от июля 22, 2012, 12:36Не работает — добавляется «http://».
Ага :(.
RawonaM, где логика?
RawonaM, верни стили, пожалуйста!
Я уже так раскатал губу... :'(
Цитата: RawonaM от июля 22, 2012, 12:37
J'ai aussi pense de limiter la longueur verticale d'un message, c'est vraiment utile.
禁止寫字係最「有用」嘅。
Цитата: Bhudh от июля 22, 2012, 12:39
RawonaM, где логика?
C'est pas moi qui a écrit cela, ne me demande pas.
Цитата: mnashe от марта 19, 1974, 20:33Я уже так раскатал губу...
Учись у agrammatʼа ;D.
Цитата: mnashe от июля 22, 2012, 12:40
RawonaM, верни стили, пожалуйста!
Я уже так раскатал губу... :'(
唔好用楞國留言板。
Цитата: fujhi от июля 22, 2012, 12:42Не используйте доска потрясла страну.
:o
Цитата: Bhudh от июля 22, 2012, 12:41
Цитата: mnashe от марта 19, 1974, 20:33Я уже так раскатал губу...
Учись у agrammatʼа ;D.
Не дают. Я один раз попробовал подражать аграмматосу, мне РавонаМ тут же предупреждение прислал.
Цитата: mnashe от июля 22, 2012, 12:40
RawonaM, верни стили, пожалуйста!
Je peux pas. Il faut definir exactement les possibilités d'abus.
Цитата: fujhi от июля 22, 2012, 12:40
Цитата: RawonaM от июля 22, 2012, 12:37J'ai aussi pense de limiter la longueur verticale d'un message, c'est vraiment utile.
禁止寫字係最「有用」嘅。
Vous ne pensez pas comme ça? Je crois que si un message est très long, il faut le cacher dans un spoiler.
Цитата: Bhudh от июля 22, 2012, 12:41
Учись у agrammatʼа
Не, там и близко нет того, что я хочу.
Всегда мечтал о стилях таблиц на форуме, и вот сегодня счастье было так близко... :'(
Цитата: fujhi от июля 22, 2012, 12:42
Do not use the message board shocked the country.
:what:
Цитата: fujhi от июля 22, 2012, 12:43
Я один раз попробовал подражать аграмматосу
:???
Цитата: RawonaM от июля 22, 2012, 12:43
Vous ne pensez pas comme ça? Je crois que si un message est très long, il faut le cacher dans un spoiler.
對唔住,我冇明白。
Цитата: RawonaM от июля 22, 2012, 12:45
Цитата: fujhi от июля 22, 2012, 12:43
Я один раз попробовал подражать аграмматосу
:???
Цитата: RawonaM от июля 13, 2012, 10:35
Цитата: RawonaM от сентября 21, 2006, 02:40
Правила форума:
4. Оформление сообщений: не писать сообщения со всяческими лишними украшениями — выделение всего текста каким-либо цветом или шрифтом без особых причин
Цитата: RawonaM от июля 13, 2012, 10:41
Цитата: fujhi от июля 13, 2012, 10:38
Кроме того, я использую glow не праздно, а с умыслом: я им выделяю важное. Например, в этом тексте красный glow у меня обозначает заблуждение, а зелёный правильную мысль. Так что «без особых причин» — это не про меня.
Про glow я пока еще не говорил. Хотя думаю что таки это тоже рано или поздно придется прекратить, слишком уж злоупотребительно получается.
Не выделяйте все сообщение какими-то шрифтами, это противоречит правилам.
Цитата: RawonaM от июля 22, 2012, 12:43
Il faut definir exactement les possibilités d'abus.
Ну, я вроде уже описал эти возможности.
Если уж надо максимально точно, не полагаясь на память, — давай мы просмотрим описание текущей версии CSS, вдумываясь в возможности каждого параметра.
Цитата: mnashe от июля 22, 2012, 12:47
давай мы просмотрим описание текущей версии CSS, вдумываясь в возможности каждого параметра.
:yes:
Moi j'ai un exam demain :)
Скоро у нас уже все сообщения будут пьстрѣти зълооупотрѣблениꙗми, с такими-то правилами...
Только что просмотрел CSS reference (правда, не самую новую версию CSS).
Кроме упомянутого Bhudh'ом margin, обратил внимание только на float, но в таблицах (да и вообще внутри block) это неактуально.
С помощью width и height можно сделать слишком широкое или высокое поле, но это ничего не добавляет к уже имеющимся возможностям: width и height допустимы в теге IMG, и даже без этого, как уже показали, того же эффекта можно добиться с помощью простого текста.
background-image ограничен размерами ячейки / таблицы, так что нет проблем.
Всё остальное касается только оформления текста или ячеек и как раз очень желательно, чтобы оно было.
В общем, я бы запретил только position; на худой конец можно ещё и margin запретить.
Цитата: mnashe от июля 22, 2012, 13:00width и height допустимы в теге IMG
У них ограничено значение.
Просмотрел всё из этого руководства:
http://www.w3schools.com/cssref/
Даже фичи, нереализованные пока ни в одном браузере, просмотрел.
Не вижу никаких возможностей серьёзных злоупотреблений.
margin, text-indent, vertical-align позволяют выйти за пределы сообщения на указанное расстояние. Остаётся привязка к сообщению; абсолютное позиционирование в окне невозможно.
Мне кажется, это вполне приемлемо.
Ширина и высота может быть достигнута и простым текстом.
Картинка может выйти за пределы таблицы, но я, опять же, не вижу в этом проблемы.
Цитата: mnashe от июля 22, 2012, 14:07margin, text-indent, vertical-indent, text-align позволяют выйти за пределы сообщения на указанное расстояние.
:what:
Спутал. text-indent и vertical-align.
Цитата: mnashe от июля 22, 2012, 14:07
margin, text-indent, vertical-indent, text-align позволяют выйти за пределы сообщения на указанное расстояние.
Ce n'est pas acceptable aussi.
À propos, j'ai résolu le problème de position absolute. Il faut mettre l'élément dans un div avec position relative. La position absolute est relative à un dernier ancêtre avec la position relative.
Comme ça:
<div style="position: relative"><div "position: absolute; top: 0px; left: 0px;">test</div></div>
Example ici:
Цитата: mnashe от июля 22, 2012, 14:07
Не вижу никаких возможностей серьёзных злоупотреблений.
J'en vois beaucoup.
Ce que je ne veux pas c'est que quelqu'un peut poster quelque chose qui n'est pas visible ou difficile a voir.
Liens, textes etc.
Alors position, margin, display, float, et peut être text-indent, vertical-indent, vertical-align aussi - il faut filtrer tout ça.
Цитата: RawonaM от июля 22, 2012, 14:24
À propos, j'ai résolu le problème de position absolute. Il faut mettre l'élément dans un div avec position relative. La position absolute est relative à un dernier ancêtre avec la position relative.
Это очень легко обойти (пусть и не во всех браузерах): вместо position: absolute использовать position: fixed.
Я такого никогда не видел, но так написано в просмотренном мной reference.
Цитата: RawonaM от июля 22, 2012, 14:24
Ce que je ne veux pas c'est que quelqu'un peut poster quelque chose qui n'est pas visible ou difficile a voir.
Liens, textes etc.
:o
Не понял.
Чем это плохо?
Цитата: mnashe от июля 22, 2012, 14:30position: fixed
:uzhos:
Заставьте мне глаза не видеть это!
Хуже только background-attachment: fixed!!
Цитата: mnashe от июля 22, 2012, 14:30
Цитата: RawonaM от июля 22, 2012, 14:24Ce que je ne veux pas c'est que quelqu'un peut poster quelque chose qui n'est pas visible ou difficile a voir.
Liens, textes etc.
:o
Не понял.
Чем это плохо?
:??? C'est pas evident?
http://moysamykrutoysait.com
:what:
1. Если ссылку не видят, по ней перейдёт только робот. Это, что ли, опасность?
2. Для конкретной цветовой схемы сделать ссылку невидимой можно и сейчас.
3. А можно и для любой схемы сделать её невидимой, поместив внутри что-то невидимое.
В общем, нет предела ограничениям. Только зачем?
ЦитироватьBeware of Internet explorer, which is known to allow javascript code through CSS.
http://stackoverflow.com/questions/5855398/user-defined-css-what-can-go-wrong
Цитата: mnashe от июля 22, 2012, 14:53
1. Если ссылку не видят, по ней перейдёт только робот. Это, что ли, опасность?
Oui, beaucoup de liens a un porn site peut faire Google bannir un site.
Et aussi le texte invisible lui même.
Цитата: mnashe от июля 22, 2012, 14:53
В общем, нет предела ограничениям. Только зачем?
Sécurité. Better safe than sorry.
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#RULE_.234_-_CSS_Escape_And_Strictly_Validate_Before_Inserting_Untrusted_Data_into_HTML_Style_Property_Values
Il y a beaucoup d'issues avec des textes invisibles.
hint
Цитата: Bhudh от июля 22, 2012, 15:04Так ты ж сам сделал тэг с невидимым текстом. Теперь что ж, отменять будешь?‥
C'est pas invisible.
Si tu vas l'abuser, on peut l'annuler.
ЦитироватьRULE #4 - CSS Escape And Strictly Validate Before Inserting Untrusted Data into HTML Style Property Values
Rule #4 is for when you want to put untrusted data into a stylesheet or a style tag. CSS is surprisingly powerful, and can be used for numerous attacks. Therefore, it's important that you only use untrusted data in a property value and not into other places in style data. You should stay away from putting untrusted data into complex properties like url, behavior, and custom (-moz-binding). You should also not put untrusted data into IE's expression property value which allows JavaScript.
<style>selector { property : ...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...; } </style> property value
<style>selector { property : "...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE..."; } </style> property value
<span style="property : ...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...">text</style> property value
Please note there are some CSS contexts that can never safely use untrusted data as input - EVEN IF PROPERLY CSS ESCAPED! You will have to ensure that URLs only start with "http" not "javascript" and that properties never start with "expression".
C'est pas facile tous ça, on ne sait jamais ce que peut arriver.
Только работает это только в IE и то непонятно до какого нумера.
Остальные браузеры не такие безмозглые.
Цитата: RawonaM от июля 22, 2012, 14:59
Oui, beaucoup de liens a un porn site peut faire Google bannir un site.
Я же показал гораздо более простой способ вписать невидимые ссылки, без всяких таблиц.
И этот способ был всегда.
Кто-нибудь им воспользовался?
Новые пользователи на премодерации, спаммеров режут.
Зачем нужно резко сокращать функциональность ради ничтожной вероятности злоупотребления, которая и без того уже существует?
Цитата: RawonaM от июля 22, 2012, 14:56
http://stackoverflow.com/questions/5855398/user-defined-css-what-can-go-wrong
Это уже серьёзней.
Пишут, что сделать это можно через ссылку на картинку в стилях.
Так можно запретить картинку в стилях (по image или по url), и дело с концом.
Цитата: mnashe от июля 22, 2012, 15:19Так можно запретить картинку в стилях
И прощай бэкграунды. Легче на ссылки регэкспом проверять.
Цитата: mnashe от июля 22, 2012, 15:19
Зачем нужно резко сокращать функциональность
:???
Cette fonctionalité n'existe pas encore, pour la reduire.
Цитата: RawonaM от июля 22, 2012, 15:08
Please note there are some CSS contexts that can never safely use untrusted data as input - EVEN IF PROPERLY CSS ESCAPED! You will have to ensure that URLs only start with "http" not "javascript" and that properties never start with "expression".
Ну так запретить нафиг url в стилях, и дело с концом.
Лично мне url не нужен.
Я хочу background-color, border, width, height, padding, vertical-align, border-collapse; желательны также параметры шрифта, но можно и обойтись. Это уже даёт огромные возможности по сравнению с тем, что есть сейчас.
Цитата: RawonaM от июля 22, 2012, 15:24
Cette fonctionalité n'existe pas encore, pour la reduire.
Но ведь я же уже успел раскатать губу!
И вообще, надо равняться на идеал, а не на то, что есть :)
Там, где для приближения к идеалу требуется много работы, а также там, где это заметно снижает безопасность — приходится отказываться. А если ты можешь сделать такие огромные возможности меньше чем за полчаса...
אז למה לא?
Цитата: Bhudh от июля 22, 2012, 15:23
И прощай бэкграунды.
Ну и ладно.
Мне нужно не украшательство, а функциональность.
Для функциональности первостепенное значение имеют
colspan, rowspan, border, background-color, vertical-align, width, height, padding.
http://stackoverflow.com/questions/1453540/is-it-safe-to-allow-users-to-edit-css
ЦитироватьIs it safe to allow users to edit css?
ЦитироватьShort answer: no it isn't.
ЦитироватьI wouldn't do it
Цитироватьit may be possible to run server-side code from a CSS
ЦитироватьShort answer: no.
Цитироватьyou could include links to offsite resources in the CSS which perform "undesirable" effects to the user requesting them.
http://www.designdetector.com/tips/3DBorderDemo2.html
::)
Цитата: mnashe от июля 22, 2012, 15:39
colspan, rowspan, border,
Ça déjà marche.
Вообще таблица не работает!
Цитата: Bhudh от июля 22, 2012, 15:50
Вообще таблица не работает!
Что ты там с курсивами посреди тегов нагородил? :what:
RawonaM, у тебя есть возможность на уровне сервера выяснить, что возвращает URL?
Цитата: RawonaM от июля 22, 2012, 15:48
Ça déjà marche.
Я понял.
Но под border я имел в виду и border в стилях.
Может, тогда наоборот, разрешить перечисленные мной стили белым списком?
Цитата: mnashe от июля 22, 2012, 15:53Что ты там с курсивами посреди тегов нагородил?
Это просто способ отменить действие тэгов.
Раньше он работал...
[table border="2"]
[tr]
[td]
[table][/table][/td]
[/tr]
[/table]
Цитата: Bhudh от июля 22, 2012, 15:54
Это просто способ отменить действие тэгов.
А почему не nobbc?
Места меньше.
Цитата: mnashe от июля 22, 2012, 15:54
Может, тогда наоборот, разрешить перечисленные мной стили белым списком?
Oui, c'est le meilleure chose.
ici le code:
$codes[] = array(
'tag' => 'table',
'parameters' => array(
'border' => array('optional' => true, 'value' => ' border="$1"', 'match' => '(\d+)'),
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' $1'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
),
'before' => '<table class="bbc_table{class}"{border}{style}>',
'after' => '</table>',
'trim' => 'inside',
'require_children' => array('tr'),
'block_level' => true,
);
$codes[] = array(
'tag' => 'td',
'parameters' => array(
'colspan' => array('optional' => true, 'value' => ' colspan="$1"', 'match' => '(\d+)'),
'rowspan' => array('optional' => true, 'value' => ' rowspan="$1"', 'match' => '(\d+)'),
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' class="$1"'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
),
'before' => '<td{colspan}{rowspan}{class}{style}>',
'after' => '</td>',
'require_parents' => array('tr'),
'trim' => 'outside',
'block_level' => true,
'disabled_before' => '',
'disabled_after' => '',
);
$codes[] = array(
'tag' => 'tr',
'parameters' => array(
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' class="$1"'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
),
'before' => '<tr{class}{style}>',
'after' => '</tr>',
'require_parents' => array('table'),
'require_children' => array('td'),
'trim' => 'both',
'block_level' => true,
'disabled_before' => '',
'disabled_after' => '',
);
Faites ce que vous voulez... :)
$ Коды [] = массив (
«Тег» => «стол» ,
«Параметрами» => Array (
'Границы' => Array ( 'дополнительные' => истинный , "стоимость" => "граница =" $ 1 "' , 'матч' => '(\ D +) " ),
/ / 'Класс' => Array ('дополнительные' => правда, 'цитирует' => правда, 'значение' => '$ 1'),
/ 'Стиль' / => Array ('дополнительные' => правда, 'цитирует' => правда, "стоимость" => "стиль =" $ 1 "),
)
'Перед' => '<table class="bbc_table{class}"{border}{style}> " ,
'После' => '</ стол>' ,
"Отделка" => "внутри" ,
"Require_children ' => Array ( 'TR' ),
"Block_level ' => истинно ,
);
$ Коды [] = массив (
'Tag' => 'ТД' ,
«Параметрами» => Array (
"Объединения" => Array ( 'дополнительные' => истинный , "стоимость" => "Объединения =" $ 1 "' , 'матч' => '(\ D +) " ),
"RowSpan ' => Array ( 'дополнительные' => истинный , "стоимость" => "RowSpan =" $ 1 "' , 'матч' => '(\ D +) " ),
/ / 'Класс' => Array ('дополнительные' => правда, 'цитирует' => правда, 'значение' => 'класс = "$ 1"),
/ 'Стиль' / => Array ('дополнительные' => правда, 'цитирует' => правда, "стоимость" => "стиль =" $ 1 "),
)
'Перед' => '<td{colspan}{rowspan}{class}{style}> " ,
'После' => </ TD> ' ,
"Require_parents ' => Array ( 'TR' ),
"Отделка" => "снаружи" ,
"Block_level ' => истинно ,
"Disabled_before ' => '' ,
"Disabled_after ' => '' ,
);
$ Коды [] = массив (
'Tag' => 'TR' ,
«Параметрами» => Array (
/ / 'Класс' => Array ('дополнительные' => правда, 'цитирует' => правда, 'значение' => 'класс = "$ 1"),
/ 'Стиль' / => Array ('дополнительные' => правда, 'цитирует' => правда, "стоимость" => "стиль =" $ 1 "),
)
'Перед' => '<tr{class}{style}> " ,
'После' => </ TR> ' ,
"Require_parents ' => Array ( «стол» ),
"Require_children ' => Array ( "TD" ),
'Trim' => 'и' ,
"Block_level ' => истинно ,
"Disabled_before ' => '' ,
"Disabled_after ' => '' ,
);
;D
Цитата: RawonaM от июля 22, 2012, 15:57
Faites ce que vous voulez...
Ой... ::)
Надо разбираться.
Достаточно поменять эти настройки, без собственно программирования?
Цитата: mnashe от июля 22, 2012, 16:06
Достаточно поменять эти настройки, без собственно программирования?
Oui.
<? php = php; /* Ух ты! */ ?>
<div></div>
<? // А где этот тэг прописан? ?>
Так будет работать?
$codes[] = array(
'tag' => 'table',
'parameters' => array(
'border' => array('optional' => true, 'value' => ' border="$1"', 'match' => '(\d+)'),
'cellpadding' => array('optional' => true, 'value' => ' cellpadding="$1"', 'match' => '(\d+)'),
'cellspacing' => array('optional' => true, 'value' => ' cellspacing="$1"', 'match' => '(\d+)'),
'border-collapse' => array('optional' => true, 'value' => ' style="border-collapse: collapse"'),
'width' => array('optional' => true, 'value' => ' style="width: $1"'),
'height' => array('optional' => true, 'value' => ' style="height: $1"'),
'bgcolor' => array('optional' => true, 'value' => ' style="background-color: $1"'),
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' $1'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
),
'before' => '<table class="bbc_table"{border}{cellpadding}{cellspacing}{border-collapse}{width}{height}{bgcolor}>',
'after' => '</table>',
'trim' => 'inside',
'require_children' => array('tr'),
'block_level' => true,
);
$codes[] = array(
'tag' => 'td',
'parameters' => array(
'colspan' => array('optional' => true, 'value' => ' colspan="$1"', 'match' => '(\d+)'),
'rowspan' => array('optional' => true, 'value' => ' rowspan="$1"', 'match' => '(\d+)'),
'width' => array('optional' => true, 'value' => ' style="width: $1"'),
'height' => array('optional' => true, 'value' => ' style="height: $1"'),
'align' => array('optional' => true, 'value' => ' style="text-align: $1"'),
'valign' => array('optional' => true, 'value' => ' style="vertical-align: $1"'),
'bgcolor' => array('optional' => true, 'value' => ' style="background-color: $1"'),
'padding' => array('optional' => true, 'quoted' => true, 'value' => ' style="padding: $1"'),
'border' => array('optional' => true, 'quoted' => true, 'value' => ' style="border: $1"'),
'border-width' => array('optional' => true, 'quoted' => true, 'value' => ' style="border-width: $1"'),
'border-style' => array('optional' => true, 'quoted' => true, 'value' => ' style="border-style: $1"'),
'border-color' => array('optional' => true, 'quoted' => true, 'value' => ' style="border-color: $1"'),
'border-top' => array('optional' => true, 'quoted' => true, 'value' => ' style="border-top: $1"'),
'border-bottom' => array('optional' => true, 'quoted' => true, 'value' => ' style="border-bottom: $1"'),
'border-left' => array('optional' => true, 'quoted' => true, 'value' => ' style="border-left: $1"'),
'border-right' => array('optional' => true, 'quoted' => true, 'value' => ' style="border-right: $1"'),
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' class="$1"'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
),
'before' => '<td{colspan}{rowspan}{width}{height}{align}{valign}{bgcolor}{padding}{border}{border-width}{border-style}{border-color}{border-top}{border-bottom}{border-left}{border-right}>',
'after' => '</td>',
'require_parents' => array('tr'),
'trim' => 'outside',
'block_level' => true,
'disabled_before' => '',
'disabled_after' => '',
);
$codes[] = array(
'tag' => 'tr',
'parameters' => array(
'bgcolor' => array('optional' => true, 'value' => ' style="background-color: $1"'),
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' class="$1"'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
),
'before' => '<tr{bgcolor}>',
'after' => '</tr>',
'require_parents' => array('table'),
'require_children' => array('td'),
'trim' => 'both',
'block_level' => true,
'disabled_before' => '',
'disabled_after' => '',
);
Upd.: Нет, не будет.
Допустимы ли hyphen'ы в параметрах?
Или правильнее так:
$codes[] = array(
'tag' => 'table',
'parameters' => array(
'border' => array('optional' => true, 'value' => ' border="$1"', 'match' => '(\d+)'),
'cellpadding' => array('optional' => true, 'value' => ' cellpadding="$1"', 'match' => '(\d+)'),
'cellspacing' => array('optional' => true, 'value' => ' cellspacing="$1"', 'match' => '(\d+)'),
'border-collapse' => array('optional' => true, 'value' => 'border-collapse: collapse;', 'match' => '()'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?w+)'),
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' $1'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
),
'before' => '<table class="bbc_table"{border}{cellpadding}{cellspacing} style="{border-collapse}{width}{height}{bgcolor}">',
'after' => '</table>',
'trim' => 'inside',
'require_children' => array('tr'),
'block_level' => true,
);
$codes[] = array(
'tag' => 'td',
'parameters' => array(
'colspan' => array('optional' => true, 'value' => ' colspan="$1"', 'match' => '(\d+)'),
'rowspan' => array('optional' => true, 'value' => ' rowspan="$1"', 'match' => '(\d+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'align' => array('optional' => true, 'value' => 'text-align: $1;', 'match' => '([a-z]+)'),
'valign' => array('optional' => true, 'value' => 'vertical-align: $1;', 'match' => '([a-z]+)'),
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?w+)'),
'padding' => array('optional' => true, 'quoted' => true, 'value' => 'padding: $1;', 'match' => '([0-9A-Za-z ]+)'),
'border' => array('optional' => true, 'quoted' => true, 'value' => 'border: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-width' => array('optional' => true, 'quoted' => true, 'value' => 'border-width: $1;', 'match' => '([0-9a-z ]+)'),
'border-style' => array('optional' => true, 'quoted' => true, 'value' => 'border-style: $1;', 'match' => '([a-z ]+)'),
'border-color' => array('optional' => true, 'quoted' => true, 'value' => 'border-color: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-top' => array('optional' => true, 'quoted' => true, 'value' => 'border-top: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-bottom' => array('optional' => true, 'quoted' => true, 'value' => 'border-bottom: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-left' => array('optional' => true, 'quoted' => true, 'value' => 'border-left: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-right' => array('optional' => true, 'quoted' => true, 'value' => 'border-right: $1;', 'match' => '([0-9A-Za-z #]+)'),
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' class="$1"'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
),
'before' => '<td{colspan}{rowspan} style="{width}{height}{align}{valign}{bgcolor}{padding}{border}{border-width}{border-style}{border-color}{border-top}{border-bottom}{border-left}{border-right}">',
'after' => '</td>',
'require_parents' => array('tr'),
'trim' => 'outside',
'block_level' => true,
'disabled_before' => '',
'disabled_after' => '',
);
$codes[] = array(
'tag' => 'tr',
'parameters' => array(
'bgcolor' => array('optional' => true, 'value' => ' style="background-color: $1"', 'match' => '(#?w+)'),
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' class="$1"'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
),
'before' => '<tr{bgcolor}>',
'after' => '</tr>',
'require_parents' => array('table'),
'require_children' => array('td'),
'trim' => 'both',
'block_level' => true,
'disabled_before' => '',
'disabled_after' => '',
);
Что за параметр trim?
Будет ли работать [table border-collapse] при таких настройках?
Или придётся писать [table border-collapse=любая_фигня]?
Нет ли возможности что-то здесь оптимизировать?
Нет ли возможности во втором варианте сделать так, чтобы при отсутствии параметров не добавлялся пустой « style=""»?
Il faut specifier un match (regex) pour tous les paramètres.
ici l'explications:
/* The following bbc are formatted as an array, with keys as follows:
tag: the tag's name - should be lowercase!
type: one of...
- (missing): [tag]parsed content[/tag]
- unparsed_equals: [tag=xyz]parsed content[/tag]
- parsed_equals: [tag=parsed data]parsed content[/tag]
- unparsed_content: [tag]unparsed content[/tag]
- closed: [tag], [tag/], [tag /]
- unparsed_commas: [tag=1,2,3]parsed content[/tag]
- unparsed_commas_content: [tag=1,2,3]unparsed content[/tag]
- unparsed_equals_content: [tag=...]unparsed content[/tag]
parameters: an optional array of parameters, for the form
[tag abc=123]content[/tag]. The array is an associative array
where the keys are the parameter names, and the values are an
array which may contain the following:
- match: a regular expression to validate and match the value.
- quoted: true if the value should be quoted.
- validate: callback to evaluate on the data, which is $data.
- value: a string in which to replace $1 with the data.
either it or validate may be used, not both.
- optional: true if the parameter is optional.
test: a regular expression to test immediately after the tag's
'=', ' ' or ']'. Typically, should have a \] at the end.
Optional.
content: only available for unparsed_content, closed,
unparsed_commas_content, and unparsed_equals_content.
$1 is replaced with the content of the tag. Parameters
are replaced in the form {param}. For unparsed_commas_content,
$2, $3, ..., $n are replaced.
before: only when content is not used, to go before any
content. For unparsed_equals, $1 is replaced with the value.
For unparsed_commas, $1, $2, ..., $n are replaced.
after: similar to before in every way, except that it is used
when the tag is closed.
disabled_content: used in place of content when the tag is
disabled. For closed, default is '', otherwise it is '$1' if
block_level is false, '<div>$1</div>' elsewise.
disabled_before: used in place of before when disabled. Defaults
to '<div>' if block_level, '' if not.
disabled_after: used in place of after when disabled. Defaults
to '</div>' if block_level, '' if not.
block_level: set to true the tag is a "block level" tag, similar
to HTML. Block level tags cannot be nested inside tags that are
not block level, and will not be implicitly closed as easily.
One break following a block level tag may also be removed.
trim: if set, and 'inside' whitespace after the begin tag will be
removed. If set to 'outside', whitespace after the end tag will
meet the same fate.
validate: except when type is missing or 'closed', a callback to
validate the data as $data. Depending on the tag's type, $data
may be a string or an array of strings (corresponding to the
replacement.)
quoted: when type is 'unparsed_equals' or 'parsed_equals' only,
may be not set, 'optional', or 'required' corresponding to if
the content may be quoted. This allows the parser to read
[tag="abc]def[esdf]"] properly.
require_parents: an array of tag names, or not set. If set, the
enclosing tag *must* be one of the listed tags, or parsing won't
occur.
require_children: similar to require_parents, if set children
won't be parsed if they are not in the list.
disallow_children: similar to, but very different from,
require_children, if it is set the listed tags will not be
parsed inside the tag.
parsed_tags_allowed: an array restricting what BBC can be in the
parsed_equals parameter, if desired.
*/
Цитата: RawonaM от июля 22, 2012, 20:39
Il faut specifier un match (regex) pour tous les paramètres.
А как же ты сделал style без match, и работало?
Допустим, для width и height можно поставить 'match' => '(\d+[a-z]+)' (так?)
А для border... слишком много вариантов. Разве обязательно? :what:
Цитата: mnashe от июля 22, 2012, 21:11
Цитата: RawonaM от июля 22, 2012, 20:39Il faut specifier un match (regex) pour tous les paramètres.
А как же ты сделал style без match, и работало?
Il n'est pas obligatoire. Mais il est nécessaire parce que si tu ne le mis pas, tout ce que tu fais n'as aucun sens.
P.S. C'est pas moi qui l'a fait, c'est un mod de quelqu'un.
Цитата: mnashe от июля 22, 2012, 21:11
А для border... слишком много вариантов. Разве обязательно? :what:
Oui!
Autrement: border="1px; position: absolute;"...
Цитата: GT от июля 22, 2012, 21:15
if you do not put all that you do not have any sense
:what:
Цитата: RawonaM от июля 22, 2012, 21:17
Autrement: border="1px; position: absolute;"...
Ага!
Тогда достаточно, по идее,
'match' => '([^;]+)', нет?
Цитата: mnashe от июля 22, 2012, 21:24
Тогда достаточно, по идее, 'match' => '([^;]+)', нет?
Apparemment oui. Mais il faut penser sur toutes les options.
Цитата: mnashe от июля 22, 2012, 21:11
А для border... слишком много вариантов. Разве обязательно? :what:
border:
"(\w* \w* \w*)"
Цитата: RawonaM от июля 22, 2012, 21:26
Mais il faut penser sur toutes les options.
Чуть усложнил. Добавил матчи во все строки второго варианта.
Цитата: RawonaM от июля 22, 2012, 21:36
\w
Ой, действительно, так короче.
Щас исправлю.
Исправил на \w в bgcolor. Больше нигде не получается.
Цитата: mnashe от июля 22, 2012, 20:26
Будет ли работать [table border-collapse] при таких настройках?
Или придётся писать [table border-collapse=любая_фигня]?
С этим я так и не разобрался.
Цитата: mnashe от июля 22, 2012, 20:21
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%](1,2))'),
{1,2}
Цитата: mnashe от июля 22, 2012, 21:58
Цитата: mnashe от июля 22, 2012, 20:26Будет ли работать [table border-collapse] при таких настройках?
Или придётся писать [table border-collapse=любая_фигня]?
С этим я так и не разобрался.
Ça va pas marcher sans rien. Mais c'est possible: [table border-collapse=].
Цитата: RawonaM от июля 22, 2012, 22:14
{1,2}
תקנתי
Цитата: RawonaM от июля 22, 2012, 22:15
Mais c'est possible: [table border-collapse=]
Значит, match должен выглядеть так: «()», да?
'border-collapse' => array('optional' => true, 'value' => 'border-collapse: collapse;', 'match' => '()'),
Цитата: mnashe от июля 22, 2012, 23:02
Цитата: RawonaM от июля 22, 2012, 22:15Mais c'est possible: [table border-collapse=]
Значит, match должен выглядеть так: «()», да?
Je crois.
Цитата: fujhi от июля 22, 2012, 12:00
Но замену-то стиля нужно сделать! Без стиля нельзя сделать таблички с шириной в 1 пиксель.
Сделайте, пожалуйста, класс в CSS-файле типа
.nicetable { border-collapse: collapse; }
.nicetable tr td { border: solid 1px black; }
а также тег, который включает этот класс:
[table nice][tr][td]...[/td][/table]
Так сделано в Википедии.
Раз нельзя параметры без «=», значит, не выйдет и это:
[table nice][tr][td]...[/td][/table]
Но можно, скажем, вместо border-collapse сделать:
$codes[] = array(
'tag' => 'table',
'parameters' => array(
'border' => array('optional' => true, 'value' => ' border="$1"', 'match' => '(\d+)'),
'cellpadding' => array('optional' => true, 'value' => ' cellpadding="$1"', 'match' => '(\d+)'),
'cellspacing' => array('optional' => true, 'value' => ' cellspacing="$1"', 'match' => '(\d+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?w+)'),
'nice' => array('optional' => true, 'value' => 'border-collapse: collapse" border="$1', 'match' => '(\d+)'),
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' $1'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
),
'before' => '<table class="bbc_table"{border}{cellpadding}{cellspacing} style="{width}{height}{bgcolor}{nice}">',
'after' => '</table>',
'trim' => 'inside',
'require_children' => array('tr'),
'block_level' => true,
);
Тогда [table nice=n] одновременно включит и border=n, и border-collapse: collapse.
[table nice][tr][td]...[/td][/tr][/table]
[table style="background-color:lightblue;color:navy;"][tr][td]TD[/td][/tr][/table]
Цитата: Bhudh от июля 23, 2012, 03:17
Так, границы работают...
Так border, colspan и rowspan RawonaM оставил.
Надеюсь уже сегодня испытать стили.
А пока пожелаем ему успеха на экзамене.
И надо решить, как мы хотим включать стиль с border-collapse: collapse.
Цитата: mnashe от июля 22, 2012, 23:22
Раз нельзя параметры без «=», значит, не выйдет и это:
[table nice][tr][td]...[/td][/tr][/table]
Comme ça: [table=nice]
Цитата: RawonaM от июля 23, 2012, 07:56
Comme ça: [table=nice]
Отлично.
А где задаются
такие параметры?
Цитата: RawonaM от июля 22, 2012, 20:39
type: one of...
- (missing): [tag]parsed content[/tag]
- unparsed_equals: [tag=xyz]parsed content[/tag]
C'est un nouveau tag.
$codes[] = array(
'tag' => 'table',
'type' => 'unparsed_equals',
...
);
Так я не понял, как задавать их действие. Примера нету.
Посмотреть бы, как реализован, к примеру, URL.
И, кстати, HR, чтобы в него параметр color= добавить.
http://download.simplemachines.org
http://download.simplemachines.org/index.php?thanks;filename=smf_2-0-2_install.zip
Tu dois voir le fichier "Sources/Subs.php".
Cherche dedans.
$codes[] = array(
'tag' => 'hr',
'type' => 'closed',
'parameters' => array(
'color' => array('optional' => true, 'value' => 'background-color: "$1"; border: none; ', 'match' => '(#?w+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
),
'content' => '<hr style="{color}{width}{height}" />',
'block_level' => true,
);
Ничего подходящего для нормальной реализации [table=nice] я не вижу.
Насколько я понял, возможно либо [table=unparsed_equals], либо [table param1=value param2=value ... paramN=value] (для каждой создаётся свой массив), но невозможно [table=что-то param1=value param2=value ... paramN=value].
Значит, лучше остановиться на
$codes[] = array(
'tag' => 'table',
'parameters' => array(
'border' => array('optional' => true, 'value' => ' border="$1"', 'match' => '(\d+)'),
'cellpadding' => array('optional' => true, 'value' => ' cellpadding="$1"', 'match' => '(\d+)'),
'cellspacing' => array('optional' => true, 'value' => ' cellspacing="$1"', 'match' => '(\d+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?w+)'),
'nice' => array('optional' => true, 'value' => 'border-collapse: collapse" border="$1', 'match' => '(\d+)'),
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' $1'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
),
'before' => '<table class="bbc_table"{border}{cellpadding}{cellspacing} style="{width}{height}{bgcolor}{nice}">',
'after' => '</table>',
'trim' => 'inside',
'require_children' => array('tr'),
'block_level' => true,
);
Ну или какой-нибудь другой параметр вводить через nice=value, поскольку смысла в задании толщины >1 при border-collapse: collapse я не вижу. Все внутренние границы при этом всё равно останутся 1.
Может, цвет задавать? Но это как-то неинтуитивно.
Цитата: mnashe от июля 23, 2012, 09:14
Насколько я понял, возможно либо [table=unparsed_equals], либо [table param1=value param2=value ... paramN=value] (для каждой создаётся свой массив), но невозможно [table=что-то param1=value param2=value ... paramN=value].
Correct.
Подытожу:
$codes[] = array(
'tag' => 'table',
'parameters' => array(
'border' => array('optional' => true, 'value' => ' border="$1"', 'match' => '(\d+)'),
'cellpadding' => array('optional' => true, 'value' => ' cellpadding="$1"', 'match' => '(\d+)'),
'cellspacing' => array('optional' => true, 'value' => ' cellspacing="$1"', 'match' => '(\d+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?\w+)'),
'nice' => array('optional' => true, 'value' => 'border-collapse: collapse" border="$1', 'match' => '(\d+)'),
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' $1'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
),
'before' => '<table class="bbc_table"{border}{cellpadding}{cellspacing} style="{width}{height}{bgcolor}{nice}">',
'after' => '</table>',
'trim' => 'inside',
'require_children' => array('tr'),
'block_level' => true,
);
$codes[] = array(
'tag' => 'td',
'parameters' => array(
'colspan' => array('optional' => true, 'value' => ' colspan="$1"', 'match' => '(\d+)'),
'rowspan' => array('optional' => true, 'value' => ' rowspan="$1"', 'match' => '(\d+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'align' => array('optional' => true, 'value' => 'text-align: $1;', 'match' => '([a-z]+)'),
'valign' => array('optional' => true, 'value' => 'vertical-align: $1;', 'match' => '([a-z]+)'),
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?\w+)'),
'padding' => array('optional' => true, 'quoted' => true, 'value' => 'padding: $1;', 'match' => '([0-9A-Za-z ]+)'),
'border' => array('optional' => true, 'quoted' => true, 'value' => 'border: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-width' => array('optional' => true, 'quoted' => true, 'value' => 'border-width: $1;', 'match' => '([0-9a-z ]+)'),
'border-style' => array('optional' => true, 'quoted' => true, 'value' => 'border-style: $1;', 'match' => '([a-z ]+)'),
'border-color' => array('optional' => true, 'quoted' => true, 'value' => 'border-color: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-top' => array('optional' => true, 'quoted' => true, 'value' => 'border-top: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-bottom' => array('optional' => true, 'quoted' => true, 'value' => 'border-bottom: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-left' => array('optional' => true, 'quoted' => true, 'value' => 'border-left: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-right' => array('optional' => true, 'quoted' => true, 'value' => 'border-right: $1;', 'match' => '([0-9A-Za-z #]+)'),
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' class="$1"'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
),
'before' => '<td{colspan}{rowspan} style="{width}{height}{align}{valign}{bgcolor}{padding}{border}{border-width}{border-style}{border-color}{border-top}{border-bottom}{border-left}{border-right}">',
'after' => '</td>',
'require_parents' => array('tr'),
'trim' => 'outside',
'block_level' => true,
'disabled_before' => '',
'disabled_after' => '',
);
$codes[] = array(
'tag' => 'tr',
'parameters' => array(
'bgcolor' => array('optional' => true, 'value' => ' style="background-color: $1"', 'match' => '(#?\w+)'),
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' class="$1"'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
),
'before' => '<tr{bgcolor}>',
'after' => '</tr>',
'require_parents' => array('table'),
'require_children' => array('td'),
'trim' => 'both',
'block_level' => true,
'disabled_before' => '',
'disabled_after' => '',
);
$codes[] = array(
'tag' => 'hr',
'type' => 'closed',
'parameters' => array(
'color' => array('optional' => true, 'value' => 'background-color: "$1"; border: none; ', 'match' => '(#?\w+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
),
'content' => '<hr style="{color}{width}{height}" />',
'block_level' => true,
);
В оригинале для hr 'content' => '<hr />'.
Зачем эта косая?
Цитата: mnashe от июля 23, 2012, 09:54
В оригинале для hr 'content' => '<hr />'.
Зачем эта косая?
Чтобы указать, что элемент не требует закрывающего кода. Ср.
<img src="something.jpg /> vs.
<img src="something.jpg></img>.
Обязательной такая черта она является только в XHTML, но в HTML не мешает.
Хотя у нас, собственно, как раз XHTML (см. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> в начале кода страницы), так что косая черта так очень к месту.
Понятно.
Добавил.
Цитата: mnashe от июля 23, 2012, 09:51
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?w+)'),
Цитата: mnashe от июля 23, 2012, 09:51
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?w+)'),
Цитата: mnashe от июля 23, 2012, 09:51
'color' => array('optional' => true, 'value' => 'background-color: "$1"; border: none; ', 'match' => '(#?w+)'),
Цитата: mnashe от июля 23, 2012, 09:51
'bgcolor' => array('optional' => true, 'value' => ' style="background-color: $1"', 'match' => '(#?w+)'),
\w
Цитата: mnashe от июля 23, 2012, 09:51
'padding' => array('optional' => true, 'quoted' => true, 'value' => 'padding: $1;', 'match' => '([0-9A-Za-z ]+)'),
'border' => array('optional' => true, 'quoted' => true, 'value' => 'border: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-width' => array('optional' => true, 'quoted' => true, 'value' => 'border-width: $1;', 'match' => '([0-9a-z ]+)'),
'border-style' => array('optional' => true, 'quoted' => true, 'value' => 'border-style: $1;', 'match' => '([a-z ]+)'),
'border-color' => array('optional' => true, 'quoted' => true, 'value' => 'border-color: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-top' => array('optional' => true, 'quoted' => true, 'value' => 'border-top: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-bottom' => array('optional' => true, 'quoted' => true, 'value' => 'border-bottom: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-left' => array('optional' => true, 'quoted' => true, 'value' => 'border-left: $1;', 'match' => '([0-9A-Za-z #]+)'),
'border-right' => array('optional' => true, 'quoted' => true, 'value' => 'border-right: $1;', 'match' => '([0-9A-Za-z #]+)'),
[0-9A-Za-z ] == [\w ]
Цитата: mnashe от июля 23, 2012, 09:51
// 'class' => array('optional' => true, 'quoted' => true, 'value' => ' $1'),
// 'style' => array('optional' => true, 'quoted' => true, 'value' => ' style="$1"'),
Cela peut être enlevé.
Цитата: RawonaM от июля 23, 2012, 10:08
[0-9A-Za-z ] == [\w ]
А, вот как?
А [0-9] == \d == [\d], я правильно понял?
Цитата: RawonaM от июля 23, 2012, 10:09
Cela peut être enlevé.
Понимаю, что закомментированные строки никак не участвуют, просто сохраняю на случай, что захочешь оставить простую возможность поэкспериментировать.
Если такая возможность не нужна,
$codes[] = array(
'tag' => 'table',
'parameters' => array(
'border' => array('optional' => true, 'value' => ' border="$1"', 'match' => '(\d+)'),
'cellpadding' => array('optional' => true, 'value' => ' cellpadding="$1"', 'match' => '(\d+)'),
'cellspacing' => array('optional' => true, 'value' => ' cellspacing="$1"', 'match' => '(\d+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?\w+)'),
'nice' => array('optional' => true, 'value' => 'border-collapse: collapse" border="$1', 'match' => '(\d+)'),
),
'before' => '<table class="bbc_table"{border}{cellpadding}{cellspacing} style="{width}{height}{bgcolor}{nice}">',
'after' => '</table>',
'trim' => 'inside',
'require_children' => array('tr'),
'block_level' => true,
);
$codes[] = array(
'tag' => 'td',
'parameters' => array(
'colspan' => array('optional' => true, 'value' => ' colspan="$1"', 'match' => '(\d+)'),
'rowspan' => array('optional' => true, 'value' => ' rowspan="$1"', 'match' => '(\d+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'align' => array('optional' => true, 'value' => 'text-align: $1;', 'match' => '([a-z]+)'),
'valign' => array('optional' => true, 'value' => 'vertical-align: $1;', 'match' => '([a-z]+)'),
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?\w+)'),
'padding' => array('optional' => true, 'quoted' => true, 'value' => 'padding: $1;', 'match' => '([\w ]+)'),
'border' => array('optional' => true, 'quoted' => true, 'value' => 'border: $1;', 'match' => '([\w #]+)'),
'border-width' => array('optional' => true, 'quoted' => true, 'value' => 'border-width: $1;', 'match' => '([\w ]+)'),
'border-style' => array('optional' => true, 'quoted' => true, 'value' => 'border-style: $1;', 'match' => '([\w ]+)'),
'border-color' => array('optional' => true, 'quoted' => true, 'value' => 'border-color: $1;', 'match' => '([\w #]+)'),
'border-top' => array('optional' => true, 'quoted' => true, 'value' => 'border-top: $1;', 'match' => '([\w #]+)'),
'border-bottom' => array('optional' => true, 'quoted' => true, 'value' => 'border-bottom: $1;', 'match' => '([\w #]+)'),
'border-left' => array('optional' => true, 'quoted' => true, 'value' => 'border-left: $1;', 'match' => '([\w #]+)'),
'border-right' => array('optional' => true, 'quoted' => true, 'value' => 'border-right: $1;', 'match' => '([\w #]+)'),
),
'before' => '<td{colspan}{rowspan} style="{width}{height}{align}{valign}{bgcolor}{padding}{border}{border-width}{border-style}{border-color}{border-top}{border-bottom}{border-left}{border-right}">',
'after' => '</td>',
'require_parents' => array('tr'),
'trim' => 'outside',
'block_level' => true,
'disabled_before' => '',
'disabled_after' => '',
);
$codes[] = array(
'tag' => 'tr',
'parameters' => array(
'bgcolor' => array('optional' => true, 'value' => ' style="background-color: $1"', 'match' => '(#?\w+)'),
),
'before' => '<tr{bgcolor}>',
'after' => '</tr>',
'require_parents' => array('table'),
'require_children' => array('td'),
'trim' => 'both',
'block_level' => true,
'disabled_before' => '',
'disabled_after' => '',
);
$codes[] = array(
'tag' => 'hr',
'type' => 'closed',
'parameters' => array(
'color' => array('optional' => true, 'value' => 'background-color: "$1"; border: none; ', 'match' => '(#?\w+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
),
'content' => '<hr style="{color}{width}{height}" />',
'block_level' => true,
);
Le code est installé.
Quelque chose ne marche pas: test (http://lingvoforum.net/index.php/topic,11060.new.html#new)
Цитата: mnashe от июля 23, 2012, 10:21
Цитата: RawonaM от июля 23, 2012, 10:08[0-9A-Za-z ] == [\w ]
А, вот как?
А [0-9] == \d == [\d], я правильно понял?
Oui.
Plus exacte sur le \w: \w == [0-9A-Za-z_]
Цитата: RawonaM от июля 23, 2012, 10:48
Quelque chose ne marche pas: test
Ой-ой-ой! :fp:
Вообще страницу не создаёт.
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 71 bytes) in /var/www/lingvofo/data/www/lingvoforum.net/Sources/Subs.php on line 877
На вот такую строку:
[table bgcolor=yellow][tr][td bgcolor=red]1[/td][td]2[/td][/tr][/table]
Любые параметры в TD такой эффект дают. Даже colspan и rowspan.
А в TABLE и в TR — нет.
Может, где-то \n влез?
А может, нельзя hyphen в параметрах?
Тогда попробовать переписать без них:
'bwidth' => array('optional' => true, 'quoted' => true, 'value' => 'border-width: $1;', 'match' => '([\w ]+)'),
'bstyle' => array('optional' => true, 'quoted' => true, 'value' => 'border-style: $1;', 'match' => '([\w ]+)'),
'bcolor' => array('optional' => true, 'quoted' => true, 'value' => 'border-color: $1;', 'match' => '([\w #]+)'),
'btop' => array('optional' => true, 'quoted' => true, 'value' => 'border-top: $1;', 'match' => '([\w #]+)'),
'bbottom' => array('optional' => true, 'quoted' => true, 'value' => 'border-bottom: $1;', 'match' => '([\w #]+)'),
'bleft' => array('optional' => true, 'quoted' => true, 'value' => 'border-left: $1;', 'match' => '([\w #]+)'),
'bright' => array('optional' => true, 'quoted' => true, 'value' => 'border-right: $1;', 'match' => '([\w #]+)'),
),
'before' => '<td{colspan}{rowspan} style="{width}{height}{align}{valign}{bgcolor}{padding}{border}{bwidth}{bstyle}{bcolor}{btop}{bbottom}{bleft}{bright}">',
Или, может, нельзя так много параметров?
Тогда пожертвовать border-top‥border-right.
Как тебе удалось сделать, что страница открывается?
Попытка запостить параметры в td по-прежнему фатальна.
И страница после минимального редактирования опять не открывается.
Цитата: mnashe от июля 23, 2012, 11:28
Или, может, нельзя так много параметров?
Je crois que ça. Ils consomment trop de memoire.
J'ai fait comme ça:
$codes[] = array(
'tag' => 'td',
'parameters' => array(
'colspan' => array('optional' => true, 'value' => ' colspan="$1"', 'match' => '(\d+)'),
'rowspan' => array('optional' => true, 'value' => ' rowspan="$1"', 'match' => '(\d+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'align' => array('optional' => true, 'value' => 'text-align: $1;', 'match' => '([a-z]+)'),
'valign' => array('optional' => true, 'value' => 'vertical-align: $1;', 'match' => '([a-z]+)'),
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?\w+)'),
'padding' => array('optional' => true, 'quoted' => true, 'value' => 'padding: $1;', 'match' => '([\w ]+)'),
'border' => array('optional' => true, 'quoted' => true, 'value' => 'border: $1;', 'match' => '([\w #]+)'),
/* 'border-width' => array('optional' => true, 'quoted' => true, 'value' => 'border-width: $1;', 'match' => '([\w ]+)'),
'border-style' => array('optional' => true, 'quoted' => true, 'value' => 'border-style: $1;', 'match' => '([\w ]+)'),
'border-color' => array('optional' => true, 'quoted' => true, 'value' => 'border-color: $1;', 'match' => '([\w #]+)'),
'border-top' => array('optional' => true, 'quoted' => true, 'value' => 'border-top: $1;', 'match' => '([\w #]+)'),
'border-bottom' => array('optional' => true, 'quoted' => true, 'value' => 'border-bottom: $1;', 'match' => '([\w #]+)'),
'border-left' => array('optional' => true, 'quoted' => true, 'value' => 'border-left: $1;', 'match' => '([\w #]+)'),
'border-right' => array('optional' => true, 'quoted' => true, 'value' => 'border-right: $1;', 'match' => '([\w #]+)'),
*/ ),
Tout marche.
nice с дополнительными параметрами не работает вообще.
nice без дополнительных параметров не работает правильно, и вот почему:
<table class="bbc_table" style="border-collapse: collapse" border="1">
Это моя ошибка — ввёл два пробела вместо одного.
Цитата: mnashe от июля 23, 2012, 11:38
nice с дополнительными параметрами не работает вообще.
Не так.
nice с дополнительными параметрами
после него не работает вообще.
Неужели параметры должны идти в строгом порядке?
Цитата: mnashe от июля 23, 2012, 11:41
Неужели параметры должны идти в строгом порядке?
Je pense que non.
Цитата: RawonaM от июля 23, 2012, 11:34
J'ai fait comme ça:
Мне всё же любопытно, в hyphen'ах дело или в количестве.
Попробуй, пожалуйста, вариант без hyphen'ов. Ведь мы действительно их нигде не видели, и не можем быть уверены, что они разрешены.
И нужно стереть лишний пробел перед словом border в nice:
'nice' => array('optional' => true, 'value' => 'border-collapse: collapse" border="$1', 'match' => '(\d+)'),
Цитата: mnashe от июля 23, 2012, 11:50
Попробуй, пожалуйста, вариант без hyphen'ов. Ведь мы действительно их нигде не видели, и не можем быть уверены, что они разрешены.
Ne marche pas. Maintenant comme ça:
'parameters' => array(
'colspan' => array('optional' => true, 'value' => ' colspan="$1"', 'match' => '(\d+)'),
'rowspan' => array('optional' => true, 'value' => ' rowspan="$1"', 'match' => '(\d+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'align' => array('optional' => true, 'value' => 'text-align: $1;', 'match' => '([a-z]+)'),
'valign' => array('optional' => true, 'value' => 'vertical-align: $1;', 'match' => '([a-z]+)'),
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?\w+)'),
'padding' => array('optional' => true, 'quoted' => true, 'value' => 'padding: $1;', 'match' => '([\w ]+)'),
'border' => array('optional' => true, 'quoted' => true, 'value' => 'border: $1;', 'match' => '([\w #]+)'),
'bwidth' => array('optional' => true, 'quoted' => true, 'value' => 'border-width: $1;', 'match' => '([\w ]+)'),
/* 'bstyle' => array('optional' => true, 'quoted' => true, 'value' => 'border-style: $1;', 'match' => '([\w ]+)'),
'bcolor' => array('optional' => true, 'quoted' => true, 'value' => 'border-color: $1;', 'match' => '([\w #]+)'),
'btop' => array('optional' => true, 'quoted' => true, 'value' => 'border-top: $1;', 'match' => '([\w #]+)'),
'bbottom' => array('optional' => true, 'quoted' => true, 'value' => 'border-bottom: $1;', 'match' => '([\w #]+)'),
'bleft' => array('optional' => true, 'quoted' => true, 'value' => 'border-left: $1;', 'match' => '([\w #]+)'),
'bright' => array('optional' => true, 'quoted' => true, 'value' => 'border-right: $1;', 'match' => '([\w #]+)'),
*/
'border-width' => array('optional' => true, 'quoted' => true, 'value' => 'border-width: $1;', 'match' => '([\w ]+)'),
/* 'border-style' => array('optional' => true, 'quoted' => true, 'value' => 'border-style: $1;', 'match' => '([\w ]+)'),
'border-color' => array('optional' => true, 'quoted' => true, 'value' => 'border-color: $1;', 'match' => '([\w #]+)'),
'border-top' => array('optional' => true, 'quoted' => true, 'value' => 'border-top: $1;', 'match' => '([\w #]+)'),
'border-bottom' => array('optional' => true, 'quoted' => true, 'value' => 'border-bottom: $1;', 'match' => '([\w #]+)'),
'border-left' => array('optional' => true, 'quoted' => true, 'value' => 'border-left: $1;', 'match' => '([\w #]+)'),
'border-right' => array('optional' => true, 'quoted' => true, 'value' => 'border-right: $1;', 'match' => '([\w #]+)'),
*/ ),
Cela marche.
Ага, хюпхены, стало быть, допустимы.
Давай попробуем оставить 3 из 8: border-style, border-width, border-color.
Они обеспечат полную функциональность.
$codes[] = array(
'tag' => 'td',
'parameters' => array(
'colspan' => array('optional' => true, 'value' => ' colspan="$1"', 'match' => '(\d+)'),
'rowspan' => array('optional' => true, 'value' => ' rowspan="$1"', 'match' => '(\d+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'align' => array('optional' => true, 'value' => 'text-align: $1;', 'match' => '([a-z]+)'),
'valign' => array('optional' => true, 'value' => 'vertical-align: $1;', 'match' => '([a-z]+)'),
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?\w+)'),
'padding' => array('optional' => true, 'quoted' => true, 'value' => 'padding: $1;', 'match' => '([\w ]+)'),
'border-style' => array('optional' => true, 'quoted' => true, 'value' => 'border-style: $1;', 'match' => '([\w ]+)'),
'border-width' => array('optional' => true, 'quoted' => true, 'value' => 'border-width: $1;', 'match' => '([\w ]+)'),
'border-color' => array('optional' => true, 'quoted' => true, 'value' => 'border-color: $1;', 'match' => '([\w #]+)'),
),
'before' => '<td{colspan}{rowspan} style="{width}{height}{align}{valign}{bgcolor}{padding}{border-style}{border-width}{border-color}">',
'after' => '</td>',
'require_parents' => array('tr'),
'trim' => 'outside',
'block_level' => true,
'disabled_before' => '',
'disabled_after' => '',
);
:'(
Fait.
Цитата: mnashe от июля 23, 2012, 12:06
Они обеспечат полную функциональность.
Et comment faire border-left?
Je crois que bcolor (etc) est mieux que border-color.
Цитата: RawonaM от июля 23, 2012, 12:15
Fait.
И в результате снова ошибка.
Итак, {border-style}{border-width}{border-color}, как я понимаю, не работает (ты ж его сейчас проверял?), а {border}{border-width} работает. То есть, если дело в количестве параметров, должно работать {border-style}{border-color}, а если это не работает, значит, всё-таки какой-то баг.
Цитата: RawonaM от июля 23, 2012, 12:15
Je crois que bcolor (etc) est mieux que border-color.
Наверно.
Надо попробовать это:
$codes[] = array(
'tag' => 'td',
'parameters' => array(
'colspan' => array('optional' => true, 'value' => ' colspan="$1"', 'match' => '(\d+)'),
'rowspan' => array('optional' => true, 'value' => ' rowspan="$1"', 'match' => '(\d+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'align' => array('optional' => true, 'value' => 'text-align: $1;', 'match' => '([a-z]+)'),
'valign' => array('optional' => true, 'value' => 'vertical-align: $1;', 'match' => '([a-z]+)'),
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?\w+)'),
'padding' => array('optional' => true, 'quoted' => true, 'value' => 'padding: $1;', 'match' => '([\w ]+)'),
'bstyle' => array('optional' => true, 'quoted' => true, 'value' => 'border-style: $1;', 'match' => '([\w ]+)'),
'bwidth' => array('optional' => true, 'quoted' => true, 'value' => 'border-width: $1;', 'match' => '([\w ]+)'),
'bcolor' => array('optional' => true, 'quoted' => true, 'value' => 'border-color: $1;', 'match' => '([\w #]+)'),
),
'before' => '<td{colspan}{rowspan} style="{width}{height}{align}{valign}{bgcolor}{padding}{bstyle}{bwidth}{bcolor}">',
'after' => '</td>',
'require_parents' => array('tr'),
'trim' => 'outside',
'block_level' => true,
'disabled_before' => '',
'disabled_after' => '',
);
И, если ошибка не исчезнет, то закомментить строчку align
(align не так важен, поскольку есть center и right)
Tout marche.
Fait attention:
Цитата: mnashe от июля 23, 2012, 12:25
'padding' => array('optional' => true, 'quoted' => true, 'value' => 'padding: $1;', 'match' => '([\w ]+)'),
Tous les tags quoted doivent etre "quoted".
Цитата: RawonaM от июля 23, 2012, 12:31
Tout marche.
Non.
Вот это фатально:
[table width=100%][tr][td][table bgcolor=#F55][tr][td]1[/td][td rowspan=2 valign=middle width=2em align=center]2[/td][/tr][tr][td bgcolor=#FC0]3[/td][/tr][/table][/td]
[td align=right][table nice=1][tr][td]1[/td][td rowspan=2]2[/td][/tr][tr][td]3[/td][/tr][/table][/td][/tr][/table]
Цитата: RawonaM от июля 23, 2012, 12:31
Fait attention:
Цитата: mnashe от июля 23, 2012, 12:25
'padding' => array('optional' => true, 'quoted' => true, 'value' => 'padding: $1;', 'match' => '([\w ]+)'),
Tous les tags quoted doit etre "quoted".
Не понял.
Если quoted в BBC, то обязан быть quoted и в HTML? :what:
Цитата: mnashe от июля 23, 2012, 12:36
Не понял.
Если quoted в BBC, то обязан быть quoted и в HTML? :what
Non, si 'quoted'=>true, tu dois ecrire:
[asdf param="sdf"]
Так это понятно, я так и хотел. Параметры, допускающие пробелы, сделал quoted, остальные нет.
Разве в этом где-то ошибка?
Ну что, ты это не проверил?
$codes[] = array(
'tag' => 'td',
'parameters' => array(
'colspan' => array('optional' => true, 'value' => ' colspan="$1"', 'match' => '(\d+)'),
'rowspan' => array('optional' => true, 'value' => ' rowspan="$1"', 'match' => '(\d+)'),
'width' => array('optional' => true, 'value' => 'width: $1;', 'match' => '(\d+[a-z%]{1,2})'),
'height' => array('optional' => true, 'value' => 'height: $1;', 'match' => '(\d+[a-z%]{1,2})'),
// 'align' => array('optional' => true, 'value' => 'text-align: $1;', 'match' => '([a-z]+)'),
'valign' => array('optional' => true, 'value' => 'vertical-align: $1;', 'match' => '([a-z]+)'),
'bgcolor' => array('optional' => true, 'value' => 'background-color: $1;', 'match' => '(#?\w+)'),
'padding' => array('optional' => true, 'quoted' => true, 'value' => 'padding: $1;', 'match' => '([\w ]+)'),
'bstyle' => array('optional' => true, 'quoted' => true, 'value' => 'border-style: $1;', 'match' => '([\w ]+)'),
'bwidth' => array('optional' => true, 'quoted' => true, 'value' => 'border-width: $1;', 'match' => '([\w ]+)'),
'bcolor' => array('optional' => true, 'quoted' => true, 'value' => 'border-color: $1;', 'match' => '([\w #]+)'),
),
'before' => '<td{colspan}{rowspan} style="{width}{height}{align}{valign}{bgcolor}{padding}{bstyle}{bwidth}{bcolor}">',
'after' => '</td>',
'require_parents' => array('tr'),
'trim' => 'outside',
'block_level' => true,
'disabled_before' => '',
'disabled_after' => '',
);
Параметров здесь ровно 10 — столько же, сколько и здесь (http://lingvoforum.net/index.php/topic,50704.msg1394133.html#msg1394133), а тот вариант вроде работал исправно.
Честно, ваш код с цветовыделением такой миленький! Хочется просто смотреть.
Цитата: mnashe от июля 23, 2012, 12:53
Ну что, ты это не проверил?
Je viens de l'installer. Il faut le tester maintenant.
Спасибо! :=
Иду проверять...
Не падает! Уже хорошо.
Но не все параметры работают.
td bgcolor=n не работает, хотя в table и tr нормально.
td width=n работает. А height, похоже, нет...
Проверяю дальше...
Цитата: mnashe от августа 2, 2012, 10:02
Не падает! Уже хорошо.
Essaie de créer une grande table.
Порядок, заработало почему-то td bgcolor=n.
valign работает, padding, colspan...
[td width=50% height=3em bgcolor=#40C090 valign=middle bstyle="solid" bcolor="#60FCAC #005030 #005030 #60FCAC" bwidth="3px"]
Ура! Всё, кроме height, работает!
[/td][td width=50% height=7em bgcolor=yellow bstyle="solid" bcolor="red" bwidth="10px"]
действительно, работает и height
я, видно, ожидал большего размера,
а у меня шрифт увеличен UserJS
[/td][/tr][/table]
Ура! Всё, кроме height, работает! | действительно, работает и height я, видно, ожидал большего размера, а у меня шрифт увеличен UserJS |
Цитата: mnashe от августа 2, 2012, 10:24
только height, кажется, нет...
[td width=50% height=3em bgcolor=#40C090 bstyle="solid" bcolor="#60FCAC #005030 #005030 #60FCAC" bwidth="3px"]
Ура! Всё, кроме height, работает!
[/td][td width=50% height=300px bgcolor=yellow bstyle="solid" bcolor="red" bwidth="10px"]
только height, кажется, нет...
[/td][/tr][/table]
Итак, всё работает!
Надо теперь только запомнить правильный порядок параметров — иначе не работает.
Цитата: RawonaM от августа 2, 2012, 10:02
Essaie de créer une grande table.
Именно créer?
Или достаточно заглянуть в тему, где есть большая таблица?
Цитата: mnashe от августа 2, 2012, 10:37
Или достаточно заглянуть в тему, где есть большая таблица?
Non, il faut créer beaucoup de tr's avec parametres.
Подредактировал вот эту таблицу (http://lingvoforum.net/index.php/topic,2250.msg1214824.html#msg1214824).
Всё нормально.
Цитата: RawonaM от августа 2, 2012, 10:42
Non, il faut créer beaucoup de tr's avec parametres.
Тогда самое простое — размножить ту пёструю таблицу сверху. Там много параметров.
Испытание таблиц (http://lingvoforum.net/index.php/topic,50724.msg1404570.html#msg1404570)
Ça marche.
Tu veux essayer ajouter quelque chose? Align?
Ou c'est assez?
Цитата: RawonaM от августа 2, 2012, 10:53
Ça marche.
Non, non, non!!!!!!
Испытание таблиц (http://lingvoforum.net/index.php/topic,50724.new.html#new%3Cbr%20/%3E)
Page générée en 8.983 secondes avec 19 requêtes. (7424/16384)
Page générée en 10.052 secondes avec 21 requêtes. (13312/22016)
Page générée en 34.497 secondes avec 20 requêtes. (7168/16384)
:(
Ça va pas marcher comme ça :(
Page générée en 23.808 secondes avec 25 requêtes. (10496/22016)
Ну да, плохо.
А можно всякие украшательства убрать и только nice, rowspan и colspan оставить? Этого должно быть достаточно для большинства таблиц.
Цитата: fujhi от августа 2, 2012, 10:59
Этого должно быть достаточно для большинства таблиц.
О нет! :( :( :(
Цитата: mnashe от августа 2, 2012, 11:02
Цитата: fujhi от августа 2, 2012, 10:59
Этого должно быть достаточно для большинства таблиц.
О нет! :( :( :(
А где эти Ваши цвета и высота могут понадобится? :donno:
Вообще, это как-то не тру — мешать семантику с разметкой (высота, цвета)...
Наши проверки явно искусственны.
На практике я не стал бы пользоваться стилями рамок для всех ячеек большой таблицы. Для этого нормально использовать CSS.
Как правило, это используется только для одной ячейки, максимум для ряда.
Цвет фона и ширина — очень полезны. Надо сделать большую таблицу только с цветом фона, и посмотреть, сколько времени она обрабатывается. Это будет реальный пример.
Цитата: fujhi от августа 2, 2012, 11:06
Вообще, это как-то не тру — мешать семантику с разметкой (высота, цвета)...
Вот именно. Для стилей лучше CSS, но в рамках BBC оно нам недоступно.
Цитата: mnashe от августа 2, 2012, 11:10
Наши проверки явно искусственны.
Et alors? C'est possible, et quelqu'un peut l'abuser.
Ну вот, опять всё снёс :'( :'( ':( :'(
Из-за совершенно нереального примера!
К тому же, ничего страшного не случилось, страница не рвётся. Проблема вполне решаема посредством модерации.
Цитата: RawonaM от августа 2, 2012, 11:12
C'est possible, et quelqu'un peut l'abuser.
Ну уже ж говорили: горизонтальная прокрутка огромной ширины тоже possible, и тоже quelqu'un peut l'abuser. Приходит модератор и исправляет. Что такого страшного?
Цитата: mnashe от августа 2, 2012, 11:14
К тому же, ничего страшного не случилось, страница не рвётся. Проблема вполне решаема посредством модерации.
Non, inacceptable.
Il faut trouver une bonne solution.
Цитата: mnashe от августа 2, 2012, 11:11
Цитата: fujhi от августа 2, 2012, 11:06
Вообще, это как-то не тру — мешать семантику с разметкой (высота, цвета)...
Вот именно. Для стилей лучше CSS, но в рамках BBC оно нам недоступно.
Нет, для стилей лучше пару готовых стилей типа
[nobb][table class="collapsed"][tr][td class="important"]...[/td][td]...[/td][/tr][/table][/nobb]
Цитата: mnashe от августа 2, 2012, 11:14
Ну вот, опять всё снёс :'( :'( ':( :'(
Из-за совершенно нереального примера!
По-моему Треси в сайдбаре — куда меньшая опасность, чем страницы, которые генерируются 20 секунд.
Цитата: fujhi от августа 2, 2012, 11:34
страницы, которые генерируются 20 секунд
А из-за чего такое происходит?
Цитата: Тайльнемер от августа 2, 2012, 11:47
Цитата: fujhi от августа 2, 2012, 11:34
страницы, которые генерируются 20 секунд
А из-за чего такое происходит?
Из-за того, что РавонаМ с Менашше наворотили сложнющую регулярку.
Цитата: fujhi от августа 2, 2012, 11:58
Из-за того, что РавонаМ с Менашше наворотили сложнющую регулярку.
Я тоже, подозреваю, что из-за этого. Но как-то же в квотах работает, там выражения на порядок сложнее.
Оптимизация регулярок — такая муть, где чёрт ногу сломит. Длинная и с большой кучей скобок — ещё не значит, что сложная.
Есть гайдлайн одна страничечка на MSDN про оптимизацию, хотя там только .NET'ные. Но они вроде PCRE-совместимы. R., поищите, там около трёх советов было.
Цитата: mnashe от августа 2, 2012, 10:37Надо теперь только запомнить правильный порядок параметров — иначе не работает.
:uzhos: :( :( :(
Цитата: arseniiv от августа 2, 2012, 21:49
Есть гайдлайн одна страничечка на MSDN про оптимизацию, хотя там только .NET'ные. Но они вроде PCRE-совместимы. R., поищите, там около трёх советов было.
Это вот это вот вот (http://msdn.microsoft.com/en-us/library/gg578045.aspx), что ли?
Вроде оно. Не правда ли, коротковато?