Entwickler-Ecke

Wünsche, Anregungen & Kritik - BB-Tag Tabelle


Regan - Sa 23.07.11 09:20
Titel: BB-Tag Tabelle
Hallo,

Diskussion von hier [http://www.delphi-forum.de/topic_HTMLCode+in+Nachrichten+einbauen_106374.html]. Ich würde gern einen BB-Tag für Tabellen haben. Dafür würde ich folgenden Aufbau vorschlagen:
Zitat:

[table]
[tr]
[td][td]
[/tr]
[/table]


Was haltet ihr davon?

Grüße
Regan


Xion - Sa 23.07.11 15:38

Ich denke eine CSV-Formatierung würde schon reichen ([csv][/csv] als Code-Tags)


Regan - Sa 23.07.11 17:10

Wird bloß schwierig, da einen Trenner zu finden.


Oliver M. - Sa 23.07.11 18:09

user profile iconDir gefällt meine Table-Idee also. Das freut mich. :D

user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
Ich denke eine CSV-Formatierung würde schon reichen ([csv][/csv] als Code-Tags)

CSV... Hmm... :gruebel: Keine schlechte Idee, aber warum bleiben wir nicht bei BB?

Wir sollten aber nich ausdiskutieren, was denn so alles für so eine Table angegeben werden muss...

Igend wie muss man die Spaltenbreiten angeben können. Ich würde vorschlagen: [table columns="beite,breite,breite"] (breite in px oder mm??? )
Und irgend wie muss man die Tabelle über die ganse Breite ziehen können... Vielleich [table maxwidth] (breite in Proportionen und (px oder mm???))

Ich mach mal ne Beispieltabelle. Wie sie aussehen könnte.

MfG Oliver


Regan - Sa 23.07.11 18:17

Das ist weiterhin BB. BBCode bezeichnet nur eine Auszeichnungssprache auf Basis von XML, bei der die spitzen Klammern durch eckige ersetzt wurden. Der BB-Tag [csv] wäre also möglich.

Die Tabelle wird keinen weiteren Schnickschnack erhalten. Schließlich sollte die Implementation einfach bleiben.


jaenicke - Sa 23.07.11 19:20

Ich denke das sinnvollste wäre zusätzlich noch das colgroup Tag irgendwie einzubauen. So nach dem Motto:

Quelltext
1:
2:
3:
4:
5:
6:
7:
[csv="100px;200px"(100%)]Spalte 1;Spalte 2
Eintrag 1; Eintrag 1
Eintrag 2; Eintrag 2
Eintrag 3; Eintrag 3
Eintrag 4; Eintrag 4
Eintrag 5; Eintrag 5
Eintrag 6 und so weiter; Eintrag 6[csv]
Also angelehnt an die Syntax des delphi-Tags, hier mit den Spaltenbreiten für das colgroup Tag in Anführungszeichen und der Tabellenbreite in Klammern:

Quelltext
1:
2:
3:
4:
<div class="syntaxContainer">    <div class="syntaxTitle genmed">        <b>Unit1.pas</b>    </div>    <div class="syntax">        <table cellspacing="0" cellpadding="0">            <tr>                <td valign="top" style="text-align: right; padding-right: 3px; border: #DBE4EB solid; border-width: 0px 1px 0px 0px;">                    <pre> 
25:
</pre>                </td>                <td valign="top" style="width: 100%; padding-left: 3px;">                    <pre class="sourcecode"><span style="color: #777777">{ ... }</span>
<span class="codecomment">{PROTECTTAG804fefeb542f99a68c2a0846b558333c}</span>                    </pre>                </td>            </tr>        </table>    </div></div>
Wobei die Breite in Pixeln natürlich auf einen Maximalwert geprüft werden müsste.

Aus dem Code oben würde dann eine Tabelle wie im Anhang.


Tryer - Sa 23.07.11 20:53

Ein Semikolon fänd ich jetzt im Delphiforum nicht so ideal als Trennzeichen :? - vielleicht besser diesen TrennStrich | (#$7C)

Grüsse, Dirk


Regan - Sa 23.07.11 21:10

Der Senkrechtstrich ist für das C#-Forum nicht geeignet, da er dort das logische Oder repräsentiert.


jaenicke - Sa 23.07.11 21:15

user profile iconTryer hat folgendes geschrieben Zum zitierten Posting springen:
Ein Semikolon fänd ich jetzt im Delphiforum nicht so ideal als Trennzeichen :?
Warum? Erstens ist das CSV-Format so definiert, dass man dann eben Anführungszeichen setzt, zudem kann man escapen und außerdem wird so eine Tabelle ja eigentlich nie für Quelltext gebraucht, oder? Und wenn, dann säße der ja auch wieder in Delphi-Tags (aber das ginge vermutlich höchstens einzeilig sinnvoll).


Regan - Sa 23.07.11 21:27

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconTryer hat folgendes geschrieben Zum zitierten Posting springen:
Ein Semikolon fänd ich jetzt im Delphiforum nicht so ideal als Trennzeichen :?
Warum? Erstens ist das CSV-Format so definiert, dass man dann eben Anführungszeichen setzt, zudem kann man escapen und außerdem wird so eine Tabelle ja eigentlich nie für Quelltext gebraucht, oder?

Wir wollen hier aber eine Tabelle haben und kein CSV (das man als Tabelle interpretieren kann).


Xion - Sa 23.07.11 21:38

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconTryer hat folgendes geschrieben Zum zitierten Posting springen:
Ein Semikolon fänd ich jetzt im Delphiforum nicht so ideal als Trennzeichen :?
Warum? Erstens ist das CSV-Format so definiert

Also das CSV ist erstmal mit Kommas definiert. Der Strichpunkt ist nur so eine Unart von Excel und Software, die mit Excel kompatibel sein will (weil man echtes CSV immer extra importieren musste).

Wäre es nicht außerdem besser, wenn sich die Tabelle automatisch der Größe anpasst? Das ist ja eigentlich der Vorteil gewesen, dass die dann auch bei kleineren Fenstern umgebrochen wird etc.


Oliver M. - Sa 23.07.11 22:29

user profile iconOliver M. hat folgendes geschrieben Zum zitierten Posting springen:
Igend wie muss man die Spaltenbreiten angeben können. Ich würde vorschlagen: [table columns="beite,breite,breite"] (breite in px oder mm??? )
Und irgend wie muss man die Tabelle über die ganse Breite ziehen können... Vielleich [table maxwidth] (breite in Proportionen und (px oder mm???))

Ist euch zu kompliziert... Ja, vielleicht habt ihr recht.

Quelltext
1:
2:
3:
4:
5:
6:
[table columns="beite,breite" maxwidth title="Tabelle:"]
Regan[trenner]Sa 23.07.11 09:20
Xion[trenner]Sa 23.07.11 15:38
Regan[trenner]Sa 23.07.11 17:10
Oliver M.[trenner]Sa 23.07.11 18:09
...[trenner]...[/table]
Wobei columns, maxwidth und titel natürlich optional sind...

Und statt trenner müsste irgendein knackiger Buchstabe hin.

Aber man sollte zumindes die Möglichkeit habe, die Tabelle sauber zu struckturieren...


Yogu - So 24.07.11 17:12

user profile iconOliver M. hat folgendes geschrieben Zum zitierten Posting springen:
[code][table columns="beite,breite" maxwidth title="Tabelle:"]

Naja, ein Titel ist ja wohl nicht nötig, den kann man ja besser drüberschreiben. Abgesehen davon hat user profile iconjaenicke ja schon einen Vorschlag gemacht, der die gleichen Funktionen bietet, nur etwas kompakter.


jaenicke - So 24.07.11 17:28

user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
Wäre es nicht außerdem besser, wenn sich die Tabelle automatisch der Größe anpasst? Das ist ja eigentlich der Vorteil gewesen, dass die dann auch bei kleineren Fenstern umgebrochen wird etc.
Nein, denn wenn eine Spalte z.B. nur 100 Pixel braucht, wäre es nicht sinnvoll, wenn diese über die ganze Browserbreite geht. Damit wäre jeder Gewinn an Übersichtlichkeit wieder zunichte...


Oliver M. - Mi 27.07.11 12:08

user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
Naja, ein Titel ist ja wohl nicht nötig

Sorry, Denkfehler: Der titel Tag muss in die Zeile und soll bewirken, dass es eine Überschriftenzeile ist und das sie dann igend wie anders Hinterlegt ist.


Yogu - Mi 27.07.11 15:22

user profile iconOliver M. hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
Naja, ein Titel ist ja wohl nicht nötig

Sorry, Denkfehler: Der titel Tag muss in die Zeile und soll bewirken, dass es eine Überschriftenzeile ist und das sie dann igend wie anders Hinterlegt ist.

Also eine Überschriftszeile in der Tabelle, wie <th>s im <thead>. Meine Idee: Wenn die zweite Zeile innerhalb von [csv] bzw. [table] leer ist, wird die erste Zeile als Überschriftszeile hervorgehoben.


Boldar - Do 28.07.11 00:16

Mal im Ernst: Braucht man das wirklich?
Diese ganze Diskussion hier ist doch nur aufgekommen, weil jemand gerne ne js-Injection machen wollte, und meinte, Tabellen vorzuschieben sei unauffälliger.
Ich glaube, die Entwickler hier haben auch so genug zu tun, ohne Funktionen zu implementieren, die nur 0.001% der User nutzen werden, weil sie den anderen entweder zu kompliziert sind oder einfach unnötig sind.


jaenicke - Do 28.07.11 00:48

Wichtig ist das Feature sicher nicht, aber ich kann mich schon an ein paar Gelegenheiten erinnern, wo ich tatsächlich mit Leerzeichen und Code-Tags oder so eine Tabelle nachgestellt habe. Das wird zwar vermutlich wirklich nicht oft gebraucht, aber wenn erhöht es die Übersicht enorm.

Da ist eben die Frage wie viel Aufwand das ist, aber ich glaube so viel ist das gar nicht, zumindest wenn man in der Tabelle nicht alle anderen Tags unterstützt.


Teekeks - Do 28.07.11 10:01

Und eine weite Frage die ich mir stelle:

Momentan wird das zwar nicht wirklich gefordert (weil nicht vorhanden). Aber:
Wenn es die Funktion geben würde, könnte ich mir vorstellen, dass mehr Leute sie auch nutzen würden.
Ich kann mich natürlich auch täuschen.

Gruß Teekeks


Th69 - Do 28.07.11 11:04

Hallo Teekeks,

dein Text liest sich ein bißchen wie "Wenn der Hahn kräht auf dem Mist, ändert sich das Wetter, oder es bleibt wie es ist."
:lol:


Teekeks - Do 28.07.11 11:35

In etwa so ist er auch gemeint.
Das war halt einfach eine Frage die ich mir gestellt und einfach mal gepostet habe. :D


Boldar - Do 28.07.11 14:49

user profile iconTeekeks hat folgendes geschrieben Zum zitierten Posting springen:
Und eine weite Frage die ich mir stelle:

Momentan wird das zwar nicht wirklich gefordert (weil nicht vorhanden). Aber:
Wenn es die Funktion geben würde, könnte ich mir vorstellen, dass mehr Leute sie auch nutzen würden.
Ich kann mich natürlich auch täuschen.

Gruß Teekeks

Damit dass wirklich passiert, muss eine absolut simple Syntax verwendet werden...


Teekeks - Fr 29.07.11 01:08

user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconTeekeks hat folgendes geschrieben Zum zitierten Posting springen:
Und eine weite Frage die ich mir stelle:

Momentan wird das zwar nicht wirklich gefordert (weil nicht vorhanden). Aber:
Wenn es die Funktion geben würde, könnte ich mir vorstellen, dass mehr Leute sie auch nutzen würden.
Ich kann mich natürlich auch täuschen.

Gruß Teekeks

Damit dass wirklich passiert, muss eine absolut simple Syntax verwendet werden...

Und ich dachte, das es die ganze Zeit hier darum ging eine entsprechende Syntax zu entwickeln :)


Regan - Fr 29.07.11 08:38

user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
Damit dass wirklich passiert, muss eine absolut simple Syntax verwendet werden...

Welche simple Syntax würdest du denn vorschlagen?


jaenicke - Fr 29.07.11 09:14

Ich glaube simpler als meine Variante geht kaum mehr. Denn die Breitenangaben kann man ja weglassen, dann schreibt man nur vorne und hinten ein Tag und die Zeilen hin...


Oliver M. - Mo 01.08.11 12:49

Ja, ja. Alles muss von irgend jemand gemacht werden.
Und klar, das Forum funktionier auch ohne Tabelle. Aber es funktionier auch ohne [b] und so weiter. Die Frage ist: warum eine Tabelle hinzufügen. Und ich glaube die Antwort ist: damit wir die Beiträge einfacher formatieren können!
Und ich denke, wenn wir irgend eine selbst ausgedachte CSV-Formatierung benutzen, wird es deutlich schwerer sein, eine Rutine zu schreiben, die das ganze in HTML umwandelt. Deswegen würde ich sagen: wir machen es gans genau wie in HTML, nur mit [ statt <. Dann müssen nur noch [table] zu <table> und [tr] zu <tr> gemacht werden.

P. S.: in welcher Sprache wird das Forum eigentlich Programmiert?


glotzer - Mo 01.08.11 12:52

Zitat:
http://www.delphi-forum.de/viewtopic.php

sagt wohl alles ^^


Oliver M. - Mo 01.08.11 12:55

user profile iconglotzer hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
http://www.delphi-forum.de/viewtopic.php

sagt wohl alles ^^

Das gewählte Thema oder der Beitrag existiert nicht. :nixweiss:


FaTaLGuiLLoTiNe - Mo 01.08.11 13:11

user profile iconOliver M. hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconglotzer hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
http://www.delphi-forum.de/viewtopic.php

sagt wohl alles ^^

Das gewählte Thema oder der Beitrag existiert nicht. :nixweiss:


Der war gut!

Hinweis: Du forderst duch so vehement neue Formatierungsmöglichkeiten. Jetzt nutzt mal jemand eine vorhandene Formatierung, um den relevanten Teil seines Beitrages hervorzuheben, also achte auch darauf.


Oliver M. - Mo 01.08.11 13:58

user profile iconOliver M. hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconglotzer hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
http://www.delphi-forum.de/viewtopic.php

sagt wohl alles ^^

Das gewählte Thema oder der Beitrag existiert nicht. :nixweiss:

Okay, ich dachte das fette PHP wäre eine automatische Formatierung. Ja, ich habe gedacht. Gut, eingentlich hätte ich auch so sehen sollen das ihr Java :wink: benutzt.
Sorry, aber ich kann kein PHP. Also kann ich auch nicht helfen, eine Tabelle zu Programmieren, was ich liebend gerne tuen würden. Zumindes kann ich euch nicht helfen, wenn ihr keinen echten Editor wollt. Denn wenn die Formatierung zu kompliziert ist, kann man ja ein iFrame haben mit einem Programm, was eine Tabele anzeigt, die man ausfüllen kann. Aber bei dieser, ja eigentlich perfeckten, Lösung würdet ihr sehr viel krummes PHP schreiben müssen.

Schade


jaenicke - Mo 01.08.11 15:06

Da ist nicht viel zu programmieren, das sind hauptsächlich ein paar RegExe nehme ich an. Aber user profile iconMartok scheint sich ja der Sache schon annehmen zu wollen. :mrgreen:


Martok - Mo 01.08.11 17:42

Naja, die Frage ist, wie viel komplizierter wird das durch Quoting und die dazugehörigen Escapes. Meiner ersten Einschätzung nach sehr viel ;)

Ich persönlich würde mir das mittlerweile so ähnlich wie List-Tags denken. Also im Prinzip schon jedes Element einzeln auszeichnen, nur die Ende-Tags aus HTML sind ja nicht unbeingt notwendig. Sowas in der Art:


Quelltext
1:
2:
3:
4:
5:
[table="20%;40%"(100%)]
[head][cell]X[cell]Y
[row][cell]1.1[cell]1.2
[row][cell]2.1[cell]2.2
[/table]

Das würde im Prinzip sogar ColSpan zulassen: [cell=3]


Note: das ist keine offizielle Aussage, nur meine persönliche Meinung ;)


Yogu - Mo 01.08.11 18:45

user profile iconOliver M. hat folgendes geschrieben Zum zitierten Posting springen:
wir machen es gans genau wie in HTML, nur mit [ statt <. Dann müssen nur noch [table] zu <table> und [tr] zu <tr> gemacht werden.

Ganz so einfach ist es doch nicht: Sonst haben wir nachher haufenweise nicht geschlossene Tags und Elemente an falscher Stelle.

Eine CSV-ähnliche Formatierung ist, würde ich sagen, viel einfacher zu realisieren: Den Inhalt von [csv][/csv] in Zeilen aufteilen, diese wiederum mit den Zellen-Trennzeichen aufspalten und das ganze in einem zweidimensionalen Array zwischenspeichern. Jetzt muss nur noch sichergestellt werden, dass jede Zeile gleich viele Spalten hat, Überschriftszeilen müssen erkannt werden und so weiter. Am Schluss kann man aus dem Array einen HTML-Code machen.

user profile iconMartok: Das ist aber meiner Meinung nach umständlicher und sicher mehr Schreibarbeit als die CSV-Syntax. Und den Trennstrich könnte man ja mit || escapen.


Oliver M. - Mo 01.08.11 19:13

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:

Quelltext
1:
2:
3:
4:
5:
[table="20%;40%"(100%)]
[head][cell]X[cell]Y
[row][cell]1.1[cell]1.2
[row][cell]2.1[cell]2.2
[/table]

Ja, das würde auch mir gefallen. Das "="20%;40%"(100%)]" müsste natürlich optional sein. Aber wenn ich kurz mitmischen darf, ich finde die Idee der CSV-Formatierung (oder richtig: Semmikolon-Formatierung) ganz gut, und für das Problem mit dem Trenner habe ich die Lösung: [;] Und vielleicht, bin mir nicht sicher, sollte man sagen das es einfach Zeile für Zeile geschrieben wird, dann könnte man die [row]-Tags weg lassen. Also:

Quelltext
1:
2:
3:
4:
5:
[table] oder [table="20%;40%"(100%)]
[head][;]X[;]Y
[;]1.1[;]1.2
[;]2.1[;]2.2
[/table]

Das würde das Ganze auch noch eine Stück kompackter machen.


jaenicke - Mo 01.08.11 19:15

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Ich persönlich würde mir das mittlerweile so ähnlich wie List-Tags denken. Also im Prinzip schon jedes Element einzeln auszeichnen, nur die Ende-Tags aus HTML sind ja nicht unbeingt notwendig. Sowas in der Art:
Auch ich finde das zu kompliziert. Aus zwei Gründen:

Ich glaube nicht, dass hier viel Aufwand nötig ist was die Syntax angeht. Ich denke eine Beschriftung macht z.B. so gut wie immer Sinn. Da könnte man vielleicht einfach eine Leerzeile mit Trennzeichen als leer erkennen und dann den Kopf weglassen, aber ich glaube das braucht man nicht. Eine Beschriftung kann man wohl verlangen. ;-)

Wichtig ist doch nur, dass man eine tabellarische Darstellung ohne viel Aufwand hat. Viel mehr Mühe würden sich ohnehin die wenigsten machen.

Wie das in Zitaten usw. aussieht, muss man natürlich mal schauen, aber zumindest im kleinen Test via Debugger im Browser sah es soweit gut aus. :mrgreen:


Regan - Mo 01.08.11 21:15

user profile iconOliver M. hat folgendes geschrieben Zum zitierten Posting springen:
Also:
[table="20%;40%"(100%)]
[head][;]X[;]Y
[;]1.1[;]1.2
[;]2.1[;]2.2
[/table]
Das würde das Ganze auch noch eine Stück kompackter machen.

Ich würde mich diesem Vorschlag anschießen. Damit fällt dann natürlich das colspan weg, aber das wäre meiner Meinung nach verzichtbar. So hat man wenigstens noch etwas Übersicht und wird nicht von einer Tagwelle überrollt.


Oliver M. - Di 02.08.11 11:20

user profile iconRegan hat folgendes geschrieben Zum zitierten Posting springen:
Damit fällt dann natürlich das colspan weg

Warum?


Quelltext
1:
2:
3:
4:
5:
6:
[table="20%;40%"(100%)]
[head]X[;]Y
[cs=2]1.1
[rs=2]2.1[;]2.2
3.2
[/table]