[BETA] Image First Postletters 2.0.0

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
Perlchamp
Gesperrt
Beiträge: 431
Registriert: 27.02.2012 17:15

Re: [BETA] Image First Postletters 2.0.0

Beitrag von Perlchamp »

@BNa,
ich habe keinerlei Puls. Alles im grünen Bereich.
Es eilt auch nicht.
Danke für Eure Mühe, dies live zu testen, super !

so long
*** wer lesen kann ist klar im Vorteil ***
Cruisin' Orange - die Krönung unter den Styles
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: [BETA] Image First Postletters 2.0.0

Beitrag von Miriam »

Die ganze Codegeschichte vorher von Würzi (?) hatte ich mir garnicht angeschaut. Das sollte eher was Eigenständiges (also ohne den anderen Code) werden.
Der von mir gepostete Codeansatz kümmert sich auch NUR um das erste Zeichen im Text und auch nur um die dt. Umlaute... Das könnte also alles noch etwas erweitert werden. War ja nur als Idee gedacht.

Wenn Du auch noch die Sache mit BBCode oder anderen Sonderzeichen vor "regulären" Buchstaben abdecken möchtest, mußt Du etwas tiefer in die Materie abtauchen:
Abriß der Möglichkeiten, ein Posting anzufangen:

¿Holla Welt?
[u]Hallo Welt[/u]
[size=150]Hallo Welt[/size]
[url=viewtopic.php?f=88&t=222018]hallo welt[/url]
[quote="miriam"]Hallo Welt[/quote]
:grin: Hallo Welt
:geek: :lol: Hallo Welt

Wo soll das enden?.. Und dann kommst Du um "RegExen" nicht herum.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
Perlchamp
Gesperrt
Beiträge: 431
Registriert: 27.02.2012 17:15

Re: [BETA] Image First Postletters 2.0.0

Beitrag von Perlchamp »

@Miri(am):
mich beschleicht manchmal das Gefühl, dass du nicht immer alle Beiträge (richtig) liest:
ich hatte geschrieben:
[...] Dies sollte mit RegExen zu lösen sein, aber ich kenne mich diesbezüglich noch gar nicht aus.
... da wird es sich meiner Meinung nach in erster Linie um HTML-Code handeln, also <b>...</b> anstelle von

Code: Alles auswählen

[b]...[/b]
, oder? Die Variable

Code: Alles auswählen

$message
sollte zu diesem Augenblick bereits in HTML vorliegen, bin mir aber nicht sicher !
Die ganze Codegeschichte vorher von Würzi (?) hatte ich mir garnicht angeschaut. [...]
... dies hatte ich bereits bei deinem ersten Beitrag bemerkt (als du mit einem Beispielsatz angefangen hast - war trotzdem hilfreich, obwohl dies schon alles vorhanden war im Original) ...

Miri(am) schrieb:
Hallo Welt
... oder

Code: Alles auswählen

[u]astalavista baby[/u]
:lol:
Ich bleibe weiterhin am Ball - vielleicht geht bei mir dann die Sonne auf, mal sehen ...
Danke weiterhin für deine Hilfe !

so long
*** wer lesen kann ist klar im Vorteil ***
Cruisin' Orange - die Krönung unter den Styles
Benutzeravatar
Perlchamp
Gesperrt
Beiträge: 431
Registriert: 27.02.2012 17:15

Re: [BETA] Image First Postletters 2.0.0

Beitrag von Perlchamp »

@BNa:
Hi, ich wollte mal nachfragen, was bei deinen Tests herausgekommen ist.
Ich habe bisher noch keine Lösung gefunden.

so long
*** wer lesen kann ist klar im Vorteil ***
Cruisin' Orange - die Krönung unter den Styles
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: [BETA] Image First Postletters 2.0.0

Beitrag von BNa »

Perlchamp hat geschrieben:Ich habe bisher noch keine Lösung gefunden.
Für was denn eigentlich nochmal?
Die Umlaute sollten ja geklärt sein, oder?
Benutzeravatar
Perlchamp
Gesperrt
Beiträge: 431
Registriert: 27.02.2012 17:15

Re: [BETA] Image First Postletters 2.0.0

Beitrag von Perlchamp »

@BNa,
habe ich etwas übersehen ?
nein, es geht mir um die Umlaute, BNa. Hattest du dafür bereits eine Lösung gefunden ?

so long
*** wer lesen kann ist klar im Vorteil ***
Cruisin' Orange - die Krönung unter den Styles
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: [BETA] Image First Postletters 2.0.0

Beitrag von BNa »

Erstelle drei neue *.gif > ae.gif, oe.gif, ue.gif. Dann nehme folgende Änderung am Original Code vor:

Finde

Code: Alles auswählen

        $first_letter     = substr(($message), 0, 1);
        $rest_text        = substr(($message), 1, $letter_count);
        $letter_image     = strtolower ($first_letter);
        $letter_path      = "{$phpbb_root_path}styles/" . $user->theme['imageset_path'] . '/imageset/' . $user->data['user_lang'] . '/ifpl_images/';

        if (preg_match('/^[a-zA-Z]/', $first_letter))
        {
            $first_letter = '<img src="' . $letter_path  . $letter_image  . '.gif" alt="' . $first_letter . '" /> ';
        } 
Ersetze mit

Code: Alles auswählen

        $first_letter     = mb_substr(($message), 0, 1);
        $rest_text        = mb_substr(($message), 1, $letter_count);
        $letter_image     = strtolower ($first_letter);
        $letter_path      = "{$phpbb_root_path}styles/" . $user->theme['imageset_path'] . '/imageset/' . $user->data['user_lang'] . '/ifpl_images/';

        $letter_image = str_replace(array('Ä','Ö','Ü','ä','ö','ü'), array('ae','oe','ue','ae','oe','ue'), $letter_image);    
    
        $first_letter = '<img src="' . $letter_path  . $letter_image  . '.gif" alt="' . $first_letter . '" /> '; 
Dieser Code ist getestet.

Das Problem war der fehlende Multibyte Support von substr() und das preg_match() was nur Nicht Umlaute zuliess.
Der Rest war dann ein schlichtes str_replace() für die Umwandlung.
Benutzeravatar
Perlchamp
Gesperrt
Beiträge: 431
Registriert: 27.02.2012 17:15

Re: [BETA] Image First Postletters 2.0.0

Beitrag von Perlchamp »

@BNa,
ein fettes "Merci" - auf dich kann man sich wirklich verlassen - Danke !

so long
*** wer lesen kann ist klar im Vorteil ***
Cruisin' Orange - die Krönung unter den Styles
Benutzeravatar
Perlchamp
Gesperrt
Beiträge: 431
Registriert: 27.02.2012 17:15

Re: [BETA] Image First Postletters 2.0.0

Beitrag von Perlchamp »

@BNa,
da ich beim Überprüfen einen Fehler entdeckt habe, möchte ich hier nun meine vorläufige "Endlösung" vorstellen.

Code: Alles auswählen

// [+] #22 PHPBB-MOD Image First Postletters #2.0.0
	// Image First Postletter Begin
	if ($user->data['user_first_letter'])
	{
	// [+] CODG-Modifikation #1 (@Miriam): trimmen 
		$message	      = ltrim($message);
	// [-] CODG-Modifikation #1 (@Miriam): trimmen 
		$letter_count 	= (strlen($message));
		$letter_count 	= $letter_count -1;
  // [+] CODG-Modifikation #2 (@BNa): Multibyte-Support
		$first_letter 	= mb_substr(($message), 0, 1);
		$rest_text		  = mb_substr(($message), 1, $letter_count);
	// [-] CODG-Modifikation #2 (@BNa): Multibyte-Support
		$letter_image 	= strtolower ($first_letter);
		$letter_path 	  = "{$phpbb_root_path}styles/" . $user->theme['imageset_path'] . '/imageset/' . $user->data['user_lang'] . '/ifpl_images/';
  // [+] CODG-Modifikation #3a: BBCode ausschliessen
    if (preg_match('/^[a-zA-ZäöüÄÖÜ]/', $first_letter))
    {
  // [-] CODG-Modifikation #3a: BBCode ausschliessen
  // [+] CODG-Modifikation #4 (@BNa): Umlaute verarbeiten
	    $letter_image   = str_replace(array('Ä','Ö','Ü','ä','ö','ü'), array('ae','oe','ue','ae','oe','ue'), $letter_image);
  // [-] CODG-Modifikation #4 (@BNa): Umlaute verarbeiten
	    $first_letter   = '<img src="' . $letter_path  . $letter_image  . '.gif" alt="' . $first_letter . '" /> ';
			$message = $first_letter . $rest_text;
  // [+] CODG-Modifikation #3b: BBCode ausschliessen
		}
  // [-] CODG-Modifikation #3b: BBCode ausschliessen
	}
	// Image First Postletter End
// [-] #22 PHPBB-MOD Image First Postletters #2.0.0
das Problem nach BNa's Beitrag ist, dass z.B. BBCode als "einseitiger" HTML-Tag ausgegeben wurde. Durch das Filtern mittels "preg_match" (man kann auch andere Filter benutzen) werden also nur Buchstaben geändert, und BBCode dadurch übergangen.
Bna, dies kannst du einfach testen, indem du den ersten Buchstaben eines Beitrags mittels BBCode z.B. fett formatierst.
In diesem Sinne ...

so long
*** wer lesen kann ist klar im Vorteil ***
Cruisin' Orange - die Krönung unter den Styles
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: [BETA] Image First Postletters 2.0.0

Beitrag von BNa »

Wenn Du mir dieses "BBCode Problem" vorher geschildert hättest, hätte ich es berücksichtigen können.

Bin ja kein Gedankenleser, weil:
Perlchamp hat geschrieben:nein, es geht mir um die Umlaute, BNa.
Von BBCodes war keine Rede.

Dann also mal die komplette Lösung, ohne github Syntax.

Erstelle drei neue *.gif > ae.gif, oe.gif, ue.gif. Dann nehme folgende Änderung am Original Code vor:

Finde

Code: Alles auswählen

        $first_letter     = substr(($message), 0, 1);
        $rest_text        = substr(($message), 1, $letter_count);
        $letter_image     = strtolower ($first_letter);
        $letter_path      = "{$phpbb_root_path}styles/" . $user->theme['imageset_path'] . '/imageset/' . $user->data['user_lang'] . '/ifpl_images/';

        if (preg_match('/^[a-zA-Z]/', $first_letter))
        {
            $first_letter = '<img src="' . $letter_path  . $letter_image  . '.gif" alt="' . $first_letter . '" /> ';
        } 
Ersetze mit

Code: Alles auswählen

        $first_letter     = mb_substr(($message), 0, 1);
        $rest_text        = mb_substr(($message), 1, $letter_count);
        $letter_image     = strtolower ($first_letter);
        
        $letter_path      = "{$phpbb_root_path}styles/" . $user->theme['imageset_path'] . '/imageset/' . $user->data['user_lang'] . '/ifpl_images/';

        if (preg_match('/^[a-zA-ZäöüÄÖÜ]/', $first_letter))
        {
            $letter_image = str_replace(array('Ä','Ö','Ü','ä','ö','ü'), array('ae','oe','ue','ae','oe','ue'), $letter_image);
            $first_letter = '<img src="' . $letter_path  . $letter_image  . '.gif" alt="' . $first_letter . '" /> ';
        } 
Antworten

Zurück zu „[3.0.x] Mods in Entwicklung“