Plugin cssMarquee [Testversion]

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Plugin cssMarquee [Testversion]

Post by lck » Thu Jan 12, 2023 9:06 pm

Hallo Community,

nachdem ja Marquees wieder modern sind ;) , habe ich gedacht ich versuche/mache mal ein kleines simples Plugin.
Tja und wie das so ist, eins kam zum anderen und am Ende kam das heraus. Nicht mehr ganz so simpel aber immer noch beherrschbar. :)

Schaut es euch mal an, spielt damit. Ich habe auch 5 eigene Bilder („CC0 by lck“) mit reingepackt um es gleich damit testen zu können (so wie in der Demo). In der Demo findet ihr auch alles Wissenswerte und auch ein paar Beispiele zum Spielen.

Viel Spaß!
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

olape
Posts: 2731
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Plugin cssMarquee [Testversion]

Post by olape » Fri Jan 13, 2023 8:34 am

lck wrote:
Thu Jan 12, 2023 9:06 pm
nachdem ja Marquees wieder modern sind
na endlich, darauf habe ich ja schon seit Jahren gewartet ... ;)

Sehr beruhigend, deine Demo-Site :mrgreen:

Aber gut, wir haben ja kürzlich erst erfahren, dass der eine oder andere das doch noch einsetzen möchte.
Ich vermute daher entstammt die Idee dazu.

Ich habe es jetzt nicht selber getestet. Der Beschreibung nach muss man aber die Inhalte im Backend angeben.
So ist also derzeit nur eine inhaltliche Variante möglich. Das solltest du noch erweitern.

Entweder so, dass man Inhalte auch beim Aufruf mitgeben kann, was sicher schnell unübersichtlich wird,
oder i.e. du legst im Backend mehrere Variablen an und rufst es dann mit:

Code: Select all

{{{showCssMarquee('var_1', 'vertical');}}}

Code: Select all

{{{showCssMarquee('var_2', 'vertical');}}}
usw. auf.
Mit AJAX könnte man die Anzahl der Varianten im Backend noch variabel gestalten.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Plugin cssMarquee [Testversion]

Post by frase » Fri Jan 13, 2023 10:02 am

olape wrote:
Fri Jan 13, 2023 8:34 am
na endlich, darauf habe ich ja schon seit Jahren gewartet ... ;)
Ich auch! :lol:

Im Ernst:
Ich finde es großartig, dass es nun auch diese Möglichkeit gibt, bequem per Plugin.
Jede zusätzliche Gestaltungs-Option bringt CMSimple_XH weiter voran!
(Das klingt zwar etwas „ideologisch verbrämt“, stimmt aber trotzdem.)

Olafs Vorschlag, unterschiedliche Inhalte in unterschiedlichen Marquees, wäre schön.

Nebenbei:
Früher war alles einfacher!
Man schaue sich nur das CSS an. Flex, CSS-Variablen, …
Aber für den Anwender bringt es auf jeden Fall Vorteile.
Gute Arbeit, Ludwig!

lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Plugin cssMarquee [Testversion]

Post by lck » Fri Jan 13, 2023 11:20 am

frase wrote:
Fri Jan 13, 2023 10:02 am
olape wrote:
Fri Jan 13, 2023 8:34 am
na endlich, darauf habe ich ja schon seit Jahren gewartet ... ;)
Ich auch! :lol:
Na siehste, alles wird gut. ;)
olape wrote:
Fri Jan 13, 2023 8:34 am
Sehr beruhigend, deine Demo-Site :mrgreen:
So spart man Kaffee. Ihr sollt ja hier nicht schlafen, sondern hellwach und kreativ sein!
( :? Ich sollte mal eine Kaffeekasse einrichten.)
olape wrote:
Fri Jan 13, 2023 8:34 am
Entweder so, dass man Inhalte auch beim Aufruf mitgeben kann, was sicher schnell unübersichtlich wird,
oder i.e. du legst im Backend mehrere Variablen an
So was hatte ich schon drin. Hab's aber wieder rausgenommen weil es ja was einfaches werden sollte. Aber damit habe ich schon gerechnet, dass da einer oder zwei kommen und das gerne hätten. Ich schreibe es mal auf die Agenda unter "nice to have".
frase wrote:
Fri Jan 13, 2023 10:02 am
Früher war alles einfacher!
Man schaue sich nur das CSS an. Flex, CSS-Variablen, …
Ja, einfach is nix mehr. Das ist mit "Knoff-Hoff" (die älteren unter uns können sich evtl. noch daran erinnern) und Trick 17 realisiert.

BTW: Respekt an euch Plugin-Entwickler! Das ist echt tricky.


Nebenher:
Jetzt hatte ich doch glatt mehr als 5 Smilies in diesem Beitrag und das mag das Forum gar nicht. Wusste ich bisher nicht, dass die begrenzt sind und ich bin jetzt schon fast 12 Jahre dabei.
Forum wrote:Dein Beitrag enthält zu viele Smilies. Die maximal erlaubte Anzahl von Smilies ist 5.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Plugin cssMarquee [Testversion]

Post by lck » Sat Jan 14, 2023 4:31 pm

olape wrote:
Fri Jan 13, 2023 8:34 am
So ist also derzeit nur eine inhaltliche Variante möglich. Das solltest du noch erweitern.

Entweder so, dass man Inhalte auch beim Aufruf mitgeben kann, was sicher schnell unübersichtlich wird,
oder i.e. du legst im Backend mehrere Variablen an und rufst es dann mit:
Kannst du mir dazu ein Beispiel geben für den Funktionsaufruf und zur Abfrage?

Mein Versuch klappt soweit mit zwei verschiedenen Inhalten aber die vertikale Ausgabe wird ignoriert.

Code: Select all

function showCssMarquee($message='', $vertical='') {

//...

    if (!empty($message) and $message == 'message') {
        $message = $plugin_tx['css_marquee']['marquee_message'];
        $output = '<div class="lck_cssMarquee" style="' . $marquee_style . '"><div class="marqueeContent" style="' . $marqueeContent_style . '">' . $message . '</div></div>';
    return $output;
    }
    
    if (!empty($message) and $message == 'message_second') {
        $message = $plugin_tx['css_marquee']['marquee_message_second'];
        $output = '<div class="lck_cssMarquee" style="' . $marquee_style . '"><div class="marqueeContent" style="' . $marqueeContent_style . '">' . $message . '</div></div>';
    return $output;
    }
    
    // Vertical > Text ausgabe ok. Problem: die Ausgabe wird ignoriert. Sattdessen wird das horizontale Marquee angezeigt
    if (!empty($message) and $message == 'message' and $vertical == 'vertical') {
        $message = $plugin_tx['css_marquee']['marquee_message'];
        $output = '<div class="lck_cssMarquee vertical" style="' . $marquee_style . $marquee_vertical . '"><div class="marqueeContent" style="' . $marqueeContent_style . '">' . $message . '</div></div>';
    return $output;
    }
    
    if (!empty($message) and $message == 'message_second' and $vertical == 'vertical') {
        $message = $plugin_tx['css_marquee']['marquee_message_second'];
        $output = '<div class="lck_cssMarquee vertical" style="' . $marquee_style . $marquee_vertical . '"><div class="marqueeContent" style="' . $marqueeContent_style . '">' . $message . '</div></div>';
    return $output;
    }


„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

frase
Posts: 5085
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: Plugin cssMarquee [Testversion]

Post by frase » Sat Jan 14, 2023 5:40 pm

Bitte warte, bis ein Fachmann antwortet!

Meine Laienantwort wäre, dass die Bedingungen nicht ganz richtig sind (Klammern).
Besser wäre wohl:

Code: Select all

if (!empty($message) and $message == 'message') and ($vertical == 'vertical') {
Und wahrscheinlich müsste wohl „&&“ statt „and“ verwendet werden (Operator-Rangfolge).
Also so:

Code: Select all

if (!empty($message) and $message == 'message') && ($vertical == 'vertical') {

olape
Posts: 2731
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Plugin cssMarquee [Testversion]

Post by olape » Sun Jan 15, 2023 12:07 pm

Das kommt mir sehr verkompliziert vor.
Schicke mir mal den ganzen Entwurf, dann schau ich mir das morgen mal an (hoffe ich).

Ich verstehe i.e. nicht, warum du diese Variable mit einem fest definierten String vergleichst.

Code: Select all

 $message == 'message'
Diese Variable sollte doch in diesem Fall auch wirklich variabel sein.
Es wäre doch eigentlich, ganz vereinfacht erst mal nur zu prüfen, ob zwei Parameter angegeben sind,
dass $message nicht leer ist,
und zusätzlich, ob die Ausrichtung vertical oder horizontal entspricht.

Später könnte man noch darüber nachdenken, ob man bei dein Parametern noch gezielt auf Böswilligkeiten filtert, wobei es ja hier um Eingaben durch den Admin geht und nicht durch Besucher, also nicht wirklich unbedingt notwendig.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Plugin cssMarquee [Testversion]

Post by cmb » Sun Jan 15, 2023 1:38 pm

olape wrote:
Sun Jan 15, 2023 12:07 pm
Diese Variable sollte doch in diesem Fall auch wirklich variabel sein.
Na ja, das ist möglich, könnte aber für Nutzer dann doch recht seltsam sein, insbesondere, wenn der Inhalt umfangreich ist. Und die Eingabe von Markup dürfte für User kaum handhabbar sein; da spielen die WYSIWYG-Editor nicht wirklich mit.

Ludwigs Idee hier ist, dass man mehrere Sprachvariablen hat, und eine bestimmte davon nutzen kann. Ich denke, das kann man ganz einfach umsetzen:

Code: Select all

function showCssMarquee($message='', $vertical='') {
    // …
    $message = $plugin_tx['css_marquee']["marquee_message$message"];
    // …
}
Pluginaufruf wäre dann:

Code: Select all

{{{showCssMarquee("")}}}
{{{showCssMarquee("_second")}}}
Wenn der Unterstrich stört, könnte man den auch noch wegbekommen. Und man könnte natürlich auch prüfen, ob es den vom User gewählten Sprachtext überhaupt gibt.

Aber ich bin eigentlich der Meinung, dass Sprachtexte kein HTML enthalten sollten; das hebelt nämlich die Möglichkeit aus, diese automatisch zu escapen (XH_hsc()), wenn sie in einem HTML-Kontext ausgegeben werden. Und es ist auch eher nur was für fortgeschrittene Anwender (da sie eben Sonderzeichen wie & manuell escapen müssen).

Alternativ könnte man auch die Möglichkeit bieten, dass User den gewünschten Inhalt auf einer News-Seite eingeben, und diesen anzeigen. Etwa:

Code: Select all

function showCssMarquee($vertical='', $newspage='') {
    // …
    if ($newspage === '') {
        $message = $plugin_tx['css_marquee']["marquee_message"];
    } else {
        $message = newsbox($newspage);
    }
    // …
}
Da habe ich die Parameter vertauscht; vielleicht nicht die beste Idee. Und vielleicht ist das auch Overkill für kurze Inhalte; aber es lässt sich eben leicht umsetzen.
lck wrote:
Fri Jan 13, 2023 11:20 am
Das ist mit "Knoff-Hoff" (die älteren unter uns können sich evtl. noch daran erinnern)
Das waren noch Zeiten! Heutzutage gibt's so nützliches wie das Dschungel-Camp. :(
Christoph M. Becker – Plugins for CMSimple_XH

lck
Posts: 2963
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Plugin cssMarquee [Testversion]

Post by lck » Sun Jan 15, 2023 1:54 pm

Hallo Jungs.
Besten Dank für eure Antworten! Leider gerade erst gelesen :shock: , wo ich euch mitteilen wollte, das ich jetzt eine Lösung gefunden habe und es soweit funktioniert.

index.php

Code: Select all

function showCssMarquee($message='', $vertical='') {

//...

    // Horizontal marquee
    if (!empty($message) && $vertical !== 'vertical') {
    
    if ($message == 'message') {
        $message = $plugin_tx['css_marquee']['marquee_message'];
        $output = '<div class="lck_cssMarquee" style="' . $marquee_style . '"><div class="marqueeContent" style="' . $marqueeContent_style . '">' . $message . '</div></div>';
        return $output;
    }
    
    if ($message == 'message_2') {
        $message = $plugin_tx['css_marquee']['marquee_message_2'];
        $output = '<div class="lck_cssMarquee" style="' . $marquee_style . '"><div class="marqueeContent" style="' . $marqueeContent_style . '">' . $message . '</div></div>';
        return $output;
    }
    
    }
    
    // Vertical marquee
    if (!empty($message) && $vertical == 'vertical') {
        
    if ($message == 'message') {
        $message = $plugin_tx['css_marquee']['marquee_message'];
        $output = '<div class="lck_cssMarquee vertical" style="' . $marquee_style . $marquee_vertical . '"><div class="marqueeContent" style="' . $marqueeContent_style . '">' . $message . '</div></div>';
    return $output;
    }
    
    if ($message == 'message_2') {
        $message = $plugin_tx['css_marquee']['marquee_message_2'];
        $output = '<div class="lck_cssMarquee vertical" style="' . $marquee_style . $marquee_vertical . '"><div class="marqueeContent" style="' . $marqueeContent_style . '">' . $message . '</div></div>';
    return $output;
    }
    
    }
Die Lösung lag in dieser Abfrage

Code: Select all

if (!empty($message) && $vertical !== 'vertical') {
ohne das wurde immer das horizontale Marquee angezeigt.

Was meint ihr Profis, kann man das so machen?

Eure Vorschläge werde ich auf alle Fälle auch noch anschauen.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

cmb
Posts: 14225
Joined: Tue Jun 21, 2011 11:04 am
Location: Bingen, RLP, DE
Contact:

Re: Plugin cssMarquee [Testversion]

Post by cmb » Sun Jan 15, 2023 3:08 pm

lck wrote:
Sun Jan 15, 2023 1:54 pm
Was meint ihr Profis, kann man das so machen?
Das sieht unnötig kompliziert aus, da die Zuweisung von $message unabhängig von der Ausrichtung (vertikal oder horizontal) immer gleich ist. Sollte auch so gehen:

Code: Select all

function showCssMarquee($message='', $vertical='') {

//...

    if ($message == 'message') {
        $message = $plugin_tx['css_marquee']['marquee_message'];
    } elseif ($message == 'message_2') {
        $message = $plugin_tx['css_marquee']['marquee_message_2'];
    }

    // Horizontal marquee
    if ($vertical !== 'vertical') {
        $output = '<div class="lck_cssMarquee" style="' . $marquee_style . '"><div class="marqueeContent" style="' . $marqueeContent_style . '">' . $message . '</div></div>';
        return $output;
    }
    
    // Vertical marquee
    if ($vertical == 'vertical') {
        $output = '<div class="lck_cssMarquee vertical" style="' . $marquee_style . $marquee_vertical . '"><div class="marqueeContent" style="' . $marqueeContent_style . '">' . $message . '</div></div>';
        return $output;
    }
    
}#
So braucht man auch das leidige empty() nicht, was leider nicht wirklich tut, was es zu tun scheint, denn empty("0") ist true.

Aber siehe auch meinen vorigen Post.
Christoph M. Becker – Plugins for CMSimple_XH

Post Reply