Feedback Feedback / Technische Fragen zu Xenforo

Feedback-Threads
Kurze Frage: Gibt es den einfachen Editor (nicht WYSIWYG) nicht mehr?

Wenn ich mit Formatierungen Arbeite und diese nur als Code will kann ich auf BBCode umschalten (das Zahnrädchen drücken). Leider sind dann alle anderen Funktionen disabled.
Gibts die Möglichkeit mit BBCode zu arbeiten und die Funktionen aktiv zu haben?

Unbenannt.png
 
Das hatte ich anfangs auch so begonnen, also mit Beginn und Ende suchen, Table-Tags setzen, aber ich habe nicht die Zeit dafür dass weiter auszubauen - und dann gesehen, dass 99% der Posts mit den Tables die Tags eh gesetzt hatten. Also habe ich die einfache Variante genommen.

So großartig anders habe ich das auch nicht gemacht. Einfach noch Table Tags dazu gesetzt.

Code:
from django.shortcuts import render
from django import forms
from django.http import HttpResponse
import re

def isTableRow(line):
    if "|" in line:
        return True
    else:
        return False

def replaceTable(line):
    line = line.strip("\n").strip(" ").strip("\t")
    if remove:
        line = re.sub("\[COLOR=#?[a-zA-Z0-9]*\]", "", line)
        line = re.sub("\[SIZE=[0-9]\]", "", line)
        line = line.replace("", "").replace("[/SIZE]", "")
        line = line.replace("|", "[/TD][TD]")
    line = "[TR][TD]" + line + "[/TD][/TR]"
    return line

def makeFirstRow(line):
    return "[TABLE]" + replaceTable(line) + "<br>"

def makeRow(line):
    return replaceTable(line) + "<br>"

def makeLastRow(line):
    return replaceTable(line) + "[/TABLE]" + "<br>"

class inputField(forms.Form):
    text = forms.CharField(widget=forms.Textarea, label="text")

def form(request):
    global remove
    remove = True
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = inputField(request.POST)
        # check whether it's valid:
        if form.is_valid():
            lines = form.cleaned_data.get("text").splitlines()
            result = ""
            intable = False

            for index, line in enumerate(lines):
                if intable:
                    try:
                        lastrow = not isTableRow(lines[index+1])
                    except:
                        lastrow = True
                    
                    if lastrow:
                        line = makeLastRow(line)
                        intable = False
                    else:
                        line = makeRow(line)
                else:
                    if isTableRow(line):
                        line = makeFirstRow(line)
                        intable = True
                result += (line + "<br>")
            return HttpResponse(result)

    # if a GET (or any other method) we'll create a blank form
    else:
        form = inputField()

    return render(request, 'inputField.html', {'form': form})
{/code]
 
@Gohrbi

Möglichkeit 1:

Du musst dir die Codes dazu näher ansehen.
  1. Ich schreib da immer dann drei xxx rein und dann suche ich im Code wo ich diese drei xxx wieder finde und die Codes dazu raus lösche.
  2. Mit Zahnrad ins Code Editor wechseln.
  3. Codes markieren und löschen
  4. Nun sind die leren Tabellen weg.
Ashampoo_Snap_Donnerstag, 24. September 2020_14h43m30s_001_.png Ashampoo_Snap_Donnerstag, 24. September 2020_14h44m36s_003_.png Ashampoo_Snap_Donnerstag, 24. September 2020_14h45m36s_004_.png Ashampoo_Snap_Donnerstag, 24. September 2020_14h45m50s_005_.png

Möglichkeit 2:
Einfach in leeres Feld klicken und die Zeile darin zum löschen auswählen,​
Damit können Spalten und Zeile und auch der Tabelenkopf bearbeitet werden.​

Ashampoo_Snap_Donnerstag, 24. September 2020_14h49m18s_006_.png

Du kannst auch vorne mit der Maus vorbei gehen bis ein PLUS angezeigt wird und dann damit noch eine komplette Zeile einfügen.
Ashampoo_Snap_Donnerstag, 24. September 2020_15h10m50s_012_.png

Wenn ich mit Formatierungen Arbeite und diese nur als Code will kann ich auf BBCode umschalten (das Zahnrädchen drücken). Leider sind dann alle anderen Funktionen disabled.
Gibts die Möglichkeit mit BBCode zu arbeiten und die Funktionen aktiv zu haben?
Das ist nicht nur hier so, sonder mit anderen Forensoftware nicht anders.
Beispiel aus der Woltlab Software:
Ashampoo_Snap_Donnerstag, 24. September 2020_14h54m59s_007_.png Ashampoo_Snap_Donnerstag, 24. September 2020_14h55m09s_008_.png
Das ist auch fester Bestandteil des Editors (Software).

Hier mit der Forum Software XenForo finde ich sogar noch einfacher, da es mit Woltlab so eine Art kastriertes HTML dazu genutzt wird.

Ashampoo_Snap_Donnerstag, 24. September 2020_15h03m03s_011_.png Ashampoo_Snap_Donnerstag, 24. September 2020_15h02m53s_010_.png

Das geht dann auch noch mit Tabellen, Aufzählung Punkt und Nummeriert usw. genau mit HTML weiter.
Kastriert in diesem Sinn weil nicht alles an HTML ohne Adminrechte genutzt werden kann um Forum oder Webseite nicht schaden zu können.
 
Zuletzt bearbeitet von einem Moderator:
....ich schon wieder .... man sehe es mir nach

Ja, weil es wie gesagt keine öffnenden und schließenden Table-Tags hat.
Habe die Table-Limitierung mal rausgenommen.

... nun rechnet er nicht mehr um:huh: Wenn ich den Wert oben eingebe und "suche" steht auf der Umrechnungsseite der gleiche Text wie links:huh:

Hatte es aber gerade bei einer Tabelle hin bekommen.
 
@Gohrbi

Beim Bearbeiten das Zahnrad rechts anklicken, dann bist du in der BBCode Ansicht.
Jede Tabellenzeile fängt mit [TR] an und endet mit [/TR]
Die Spaltenüberschriften beginnen jeweils mit [TH] und enden mit [/TH]
Die Spalteninhalte beginnen jeweils mit [TD] und enden mit [/TD]

Ist halt leider mehr Aufwand als das bisherige copy-paste, möglicherweise war das der Grund für die früher nicht ganz so Standardkonformen Tabellenformatierungen.
 
Problem ist auch, dass im originalen Text ein paar der Zeilen intern zu viele Umbrüche haben, dadurch schrammelt es die Struktur. Das kann ich nicht beheben, außer ich stecke jetzt Tage in einen Parser, der in jeder Tabelle einen Zellen-Count macht und diese über die Rows hinweg abgleicht und repariert, aber die Zeit habe ich bei aller nerdigen Liebe fürs Forum nicht.


Falls es jemand modifizieren möchte, bitte.
PHP:
/**
 * @param string $sContent
 * @return string
 */
function cleanUpBBCodesInRow($sContent = '') {

	// Remove broken BBCodes, except for url, img, attach
	$sContent = preg_replace_callback('#(\[/?([a-z_\-]+)[^]]*])#is',
		function ($m = []) {
			return empty($m[2]) ? $m[0] : ((in_array(strtolower($m[2]), ['url', 'img', 'attach'])) ? $m[0] : '');
		}, trim($sContent)
        );

	// Repair URL-Tag fuckups
	$sContent = preg_replace('#^\[/url]\s?#is', '', $sContent);
	$sContent = preg_replace('#\[url=\'([^]]+)\']#si', '[url="\\1"]', $sContent);
	$sContent = preg_replace('#\[url=["\']?([^]]+)["\']?]$#si', '\\1', $sContent);
	$sContent = preg_replace('#^\[url=["\']?([^]]+)["\']?]$#si', '\\1', $sContent);
	$sContent = preg_replace('#^\[url=["\']?([^]]+)["\']?]Link$#si', '[url="\\1"]Link[/url]', $sContent);
	$sContent = preg_replace('#\[url=["\']?([^]]+)["\']?]\s*\[/url]#si', '[url="\\1"]Link[/url]', $sContent);
	$sContent = preg_replace('#^\[/url]\s?#is', '', $sContent);
	$sContent = preg_replace('#"$#', '', $sContent);

	return trim($sContent);
}

/**
 * @param string $sContent
 * @return string|string[]|null
 */
function cleanUpBBCodesInContent($sContent = '') {

	$sContent = preg_replace([
            // Remove all old table tags
            '#(\[/?table[^]]*]\r?\n?)#si',
            // Remove unused bbcode tags
            '#(\[([a-z_\-]+)]\s*\[/\\2])#si',
            // Remove multiple line breaks
            '#(\r?\n){3,}#s'
        ],
		['', '', "\n\n"],
		$sContent
	);

	return $sContent;
}

/**
 * @param string $sContent
 * @return string
 */
function getNewTableStruct($sContent = '') {

	// Remove ugly bbcode fuckups from content
	$sContent = cleanUpBBCodesInContent($sContent);

	// Define tab stops and line break characters
	$sLineBreak = "\n";
	$sTabStopTD = "    ";
	$sTabStopTR = "  ";

	// Remove breaks and tab stops if option save_rows is active
	if (isset($_POST['save_rows'])) {
		$sLineBreak = $sTabStopTD = $sTabStopTR = '';
	}

	$sContentNew = '';
	$bTableStart = false;

	$aLines = explode("\n", $sContent);
	foreach ($aLines as $idx => $sLine) {

		$sLine = trim($sLine);
		$sTRows = '';

		if (preg_match('#\|+#', $sLine)) {

			$tdFields = explode('|', $sLine);

			$sTRows .= $sTabStopTR . '[tr]' . $sLineBreak;
			foreach ($tdFields as $tdContent) {
				$sTRows .= $sTabStopTD . '[td]' . cleanUpBBCodesInRow($tdContent) . '[/td]' . $sLineBreak;
			}
			$sTRows .= $sTabStopTR . '[/tr]';

			$sLine = $sTRows;

			if (!$bTableStart) {
				$sContentNew .= '[table]' . "\n";
				$bTableStart = true;
			}
		} else {
			if ($bTableStart) {
				$sContentNew .= '[/table]' . "\n";
				$bTableStart = false;
			}
		}

		$sContentNew .= $sLine . "\n";
	}

	return $sContentNew;
}
 
Zuletzt bearbeitet:
Gibt es im neuen Forum eigentlich eine Funktion seine Beträge als CSV o.ä. zu exportieren um Art 15 DSGVO gerecht zu werden?


Warum werden die Doppelposts hier nicht automatisch zusammengefasst wie bei CB?
 
Zuletzt bearbeitet:
Gibt es im neuen Forum eigentlich eine Funktion seine Beträge als CSV o.ä. zu exportieren um Art 15 DSGVO gerecht zu werden?
Öffentliche Beiträge haben rein gar nichts mit DSGVO zu tun, maximal mit Urheberrecht, sofern du für jeden einzelnen Beitrag eine Schöpfungshöhe nachweisen kannst - und selbst dann ist der Inhalt immer noch Public. Für alle anderen Daten deines eigenen Accounts gibt es eine Export-Funktion.


Warum werden die Doppelposts hier nicht automatisch zusammengefasst wie bei CB?
Das kann das Forum nicht nativ, dafür braucht man ein Plugin. Haben noch keins dafür installiert - aber da müsste man vorher auch testen, damit nicht wieder irgendwas merkwürdiges passiert wie damals im VB mit dem Plugin-Test ^^

Hätte ich auch gerne wieder.
Diese Berechnung hat noch ihre Tücken - verloren sind die Werte aber nicht.
Btw. Ich habe eben in der alten Datenbank nachgeschaut, den Titel hattest du da auch nicht.
 
Zuletzt bearbeitet:
Dass sich das Forum den Auf/Zuklapp-Status der Foren-Kategorien nicht dauerhaft merkt macht mich fertig. :ugly: Ich fürchte, hier muss ich doch noch was eigenes (demnächst mal) bauen, statt Foren-Funktionen zu nutzten. Das Cookie dafür ist auch viel zu (überflüssig) groß. Da stehen ganze Data-ID-Namen drin statt einfach nur eine ID-Liste aller zugeklappten Kategorien...
 
Alles gut. Wie gesagt "Erste-Welt-Problem".

Mich nervt es halt. Mag daran liegen, dass es bei anderen XenForos anders eingestellt ist. Sprich: Gewöhnungsbedürftig.
 
Zurück