Beiträge: 2.041
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
18.06.2017, 14:02
(Dieser Beitrag wurde zuletzt bearbeitet: 18.06.2017, 14:05 von doylecc.)
Das hat mit dem MHEditor nichts zu tun. Das überflüssige </li> fügt der MyBB-Parser ein , auch beim Standardeditor oder wenn du gar keinen Editor verwendest, sondern nur ein einfaches Textfeld, Beispiel:
Code: [list]
[*]nr 1
[*]nr2
[*]nr3
[/list]
[list=1]
[*]nr a
[*]nr b
[*]nr c
[/list]
erzeugt:
- nr a
- nr b
- nr c
Hier ist auch das </li> jeweils nach dem öffnenden <ul> und <ol> vorhanden.
Beiträge: 1.734
Themen: 232
Registriert seit: 12.02.2014
MyBB-Version: 1.8.x
aha, alles klar. kann man dies trotzdem eliminieren irgendwie oder hat dies eine besondere Funktion?
Mit freundlichen Grüßen
Für etwaige Tipps, Vorschläge oder Anleitungen von mir gebe ich keine Gewähr. Die Durchführung erfolgt auf eigene Gefahr!
Beiträge: 2.041
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
18.06.2017, 14:34
(Dieser Beitrag wurde zuletzt bearbeitet: 18.06.2017, 14:35 von doylecc.)
Es wird in der class_parser.php jedes
[*] durch </li<\n<li> ersetzt, um das vorherige Element zu schließen und das aktuelle Element zu öffnen. Für das erste
[*] gibt es natürlich kein vorheriges Element, daher das überflüssige </li>
Du könntest es entfernen, in dem du nach diesem Code in inc/class_parser.php suchst:
PHP-Code: if($type) { $list = "\n<ol type=\"$type\" class=\"mycode_list\">$message</ol>\n"; } else { $list = "<ul class=\"mycode_list\">$message</ul>\n"; }
und ihn änderst zu:
PHP-Code: if($type) { $list = "\n<ol type=\"$type\" class=\"mycode_list\">$message</ol>\n"; $list = str_replace("<ol type=\"$type\" class=\"mycode_list\">\n</li>", "<ol type=\"$type\" class=\"mycode_list\">\n", $list); } else { $list = "<ul class=\"mycode_list\">$message</ul>\n"; $list = str_replace("<ul class=\"mycode_list\">\n</li>", "<ul class=\"mycode_list\">\n", $list); }
Beiträge: 1.734
Themen: 232
Registriert seit: 12.02.2014
MyBB-Version: 1.8.x
18.06.2017, 15:14
(Dieser Beitrag wurde zuletzt bearbeitet: 18.06.2017, 15:54 von hkkp.)
PHP-Code: if($type) { $list = "\n<ol type=\"$type\" class=\"mycode_list\">$message</ol>\n"; $list = str_replace("<ol type=\"$type\" class=\"mycode_list\">\n</li>", "<ol type=\"$type\" class=\"mycode_list\">\n", $list); } else { $list = "<ul class=\"mycode_list\">$message</ul>\n"; $list = str_replace("<ul class=\"mycode_list\">\n</li>", "<ul class=\"mycode_list\">\n", $list); } $list = preg_replace("#<(ol type=\"$type\"|ul)>\s*</li>#", "<$1>", $list); return $list; }
ändert sich nichts... grübel... so schaut es aus....
Mit freundlichen Grüßen
Für etwaige Tipps, Vorschläge oder Anleitungen von mir gebe ich keine Gewähr. Die Durchführung erfolgt auf eigene Gefahr!
Beiträge: 2.041
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
Sieht auf den ersten Blick richtig aus.
Wenn du in den Quelltext deiner Seite schaust, sollte das überflüssige </li> dort weg sein.
Beiträge: 1.734
Themen: 232
Registriert seit: 12.02.2014
MyBB-Version: 1.8.x
ist es aber leider nicht, habe dir mal einen link gesendt, damit du es selber siehst...
Mit freundlichen Grüßen
Für etwaige Tipps, Vorschläge oder Anleitungen von mir gebe ich keine Gewähr. Die Durchführung erfolgt auf eigene Gefahr!
Beiträge: 2.041
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
Bei dir fehlt der Zeilenumbruch, daher wird die Stelle nicht erkannt. Wie siehst denn deine gesamte Funktion mycode_parse_list in der class_parser.php aus?
Beiträge: 1.734
Themen: 232
Registriert seit: 12.02.2014
MyBB-Version: 1.8.x
PHP-Code: /** * Parses list MyCode. * * @param string $message The message to be parsed * @param string $type The list type * @return string The parsed message. */ function mycode_parse_list($message, $type="") { // No list elements? That's invalid HTML if(strpos($message, ' [*]') === false) { $message = " [*]{$message}"; }
$message = preg_replace("#[^\S\n\r]*\[\*\]\s*#", "</li>\n<li>", $message); $message .= "</li>";
/* - PL:patches - /* if($type) /* - PL:patches - /* { /* - PL:patches - /* $list = "\n<ol type=\"$type\" class=\"mycode_list\">$message</ol>\n"; /* - PL:patches - /* } /* - PL:patches - /* else /* - PL:patches - /* { /* - PL:patches - /* $list = "<ul class=\"mycode_list\">$message</ul>\n"; /* - PL:patches - /* } /* + PL:patches + */ if($type) /* + PL:patches + */ { /* + PL:patches + */ $list = "\n<ol type=\"$type\" class=\"mycode_list\">$message</ol>\n"; /* + PL:patches + */ $list = str_replace("<ol type=\"$type\" class=\"mycode_list\">\n</li>", "<ol type=\"$type\" class=\"mycode_list\">\n", $list); /* + PL:patches + */ } /* + PL:patches + */ else /* + PL:patches + */ { /* + PL:patches + */ $list = "<ul class=\"mycode_list\">$message</ul>\n"; /* + PL:patches + */ $list = str_replace("<ul class=\"mycode_list\">\n</li>", "<ul class=\"mycode_list\">\n", $list); /* + PL:patches + */ } $list = preg_replace("#<(ol type=\"$type\"|ul)>\s*</li>#", "<$1>", $list); return $list; }
/** * Parses list MyCode. * * @param array $matches Matches * @return string The parsed message. */ function mycode_parse_list_callback($matches) { return $this->mycode_parse_list($matches[3], $matches[2]); }
Mit freundlichen Grüßen
Für etwaige Tipps, Vorschläge oder Anleitungen von mir gebe ich keine Gewähr. Die Durchführung erfolgt auf eigene Gefahr!
Beiträge: 2.041
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
18.06.2017, 17:05
(Dieser Beitrag wurde zuletzt bearbeitet: 18.06.2017, 17:05 von doylecc.)
Hm...keine Ahnung warum bei dir der Zeilenumbruch bei der Ausgabe fehlt. Versuche es mal testweise, ob es damit geht:
PHP-Code: if($type) { $list = "\n<ol type=\"$type\" class=\"mycode_list\">$message</ol>\n"; $list = str_replace("<ol type=\"$type\" class=\"mycode_list\">\n</li>", "<ol type=\"$type\" class=\"mycode_list\">\n", $list); $list = str_replace("<ol type=\"$type\" class=\"mycode_list\"></li>", "<ol type=\"$type\" class=\"mycode_list\">", $list); } else { $list = "<ul class=\"mycode_list\">$message</ul>\n"; $list = str_replace("<ul class=\"mycode_list\">\n</li>", "<ul class=\"mycode_list\">\n", $list); $list = str_replace("<ul class=\"mycode_list\"></li>", "<ul class=\"mycode_list\">", $list); }
Beiträge: 1.734
Themen: 232
Registriert seit: 12.02.2014
MyBB-Version: 1.8.x
18.06.2017, 17:11
(Dieser Beitrag wurde zuletzt bearbeitet: 18.06.2017, 17:12 von hkkp.)
damit erscheint der </li> nicht mehr ....
Danke... werde es trotzdem weiter beobachten...
Mit freundlichen Grüßen
Für etwaige Tipps, Vorschläge oder Anleitungen von mir gebe ich keine Gewähr. Die Durchführung erfolgt auf eigene Gefahr!
|