Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.28 veröffentlicht (26.10.21)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Postbit Problem mit quick_jump Klasse
#1
Ich habe in unserem Forum eine CSS-Anpassung vorgenommen, damit interne und externe Links unterschieden werden. Dazu habe ich in der global.css folgende Zeilen eingefügt:
Code:
.postmsg a[href^="http:"] {
    background: url(images/ext_link.png) top right no-repeat;
    color: #4b8052;
    padding-right: 9px;
}
.postmsg a[href^="http:"]:hover {
    text-decoration: underline !important;
    color: #bebebe;
}
.postmsg a[href^="http://www.domain.com"] {
    background: transparent;
    color: #4b8052;
    padding-right: 0px;
}

Dazu habe ich die postmsg-Klasse im postbit wie folgt eingefügt:
Code:
<div class="post_body scaleimages postmsg" id="pid_{$post['pid']}">
{$post['message']}
</div>

Problem ist nun, dass zwar die Links korrekt angezeigt werden, dass aber nach dem Einfügen der postmsg-Klasse die Zitat-Funktion bzgl. der Klasse quick_jump (im Template postbit_gotopost) nicht mehr richtig dargestellt wird. In einem Zitat fehlt nun der Pfeil, der auf den zitierten Beitrag verlinkt.
Auch hier habe ich mir im Parser eine Wolf gesucht, leider erfolglos.....

Über einen Tipp würde ich mich freuen.....
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#2
Jockl, versuche es doch mal mit:
Code:
.postmsg a[href^="http:"].mycode_url,
.postmsg a[href^="https:"].mycode_url{
    background: url(images/ext_link.png) top right no-repeat;
    color: #4b8052;
    padding-right: 9px;
}
.postmsg a[href^="http:"].mycode_url:hover,
.postmsg a[href^="https:"].mycode_url:hover{
    text-decoration: underline !important;
    color: #bebebe;
}
.postmsg a[href^="http://www.domain.com"].mycode_url {
    background: transparent;
    color: #4b8052;
    padding-right: 0px;
}
Zitieren
#3
Hallo Sven. Danke Dir für den Vorschlag, der hat super geholfen! Smile

Ich muss aber leider gestehen, dass ich nicht verstehe, warum die "Zugabe" von .mycode_url die Lösung bringt. Wo ist das denn definiert?
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#4
Beim Parsen von Links aus der Editor-Textbox wird das Template "mycode_url" eingebunden. Dort ist auch die CSS-Klasse "mycode_url" definiert. Der Link zum Beitrag im Kopf der Zitatbox wird direkt erstellt (ohne vorher über den Link-Parser zu laufen) und über das Template "mycode_quote_post" ausgegeben.

So kann man genau definieren, dass nur eingegebene Link erkannt und entsprechend deiner CSS-Vorgaben angezeigt werden.
Zitieren
#5
Danke dir für die Erklärung, Sven!

Ich scheine mich aber leider schon zu lange nicht mehr mit dem MyBB intensiv auseinandergesetzt zu haben. Sad Deshalb verstehe ich zwar den Hintergrund der Einbindung des o.a. Templates aber mit der darin verwendeten CSS-Klasse mycode_url komme ich nicht klar oder stehe komplett auf dem Schlauch. Wo ist die denn definiert? Ich kann dazu nichts finden.....
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#6
Jockl, schau doch einfach mal in deinen Theme Templates > MyCode Templates > mycode_url .... da sollte die CSS-Klasse definiert sein.

PHP-Code:
// Template mycode_url 
<a href="{$url}target="_blank"{$rel} class="mycode_url">{$name}</a

Aufgerufen wird das Template über die Funktionen in der class_parser.php
PHP-Code:
/**
    * Parses URL MyCode.
    *
    * @param string $url The URL to link to.
    * @param string $name The name of the link.
    * @return string The built-up link.
    */
    
function mycode_parse_url($url$name="")
    {
        global 
$templates;
        if(!
preg_match("#^[a-z0-9]+://#i"$url))
        {
            
$url "http://".$url;
        }

        if(!empty(
$this->options['allow_html']))
        {
            
$url $this->parse_html($url);
        }

        if(!
$name)
        {
            
$name $url;
        }

        if(
$name == $url && (!isset($this->options['shorten_urls']) || !empty($this->options['shorten_urls'])))
        {
            
$name htmlspecialchars_decode($name);
            if(
my_strlen($name) > 55)
            {
                
$name my_substr($name 040).'...'.my_substr($name , -10);
            }
            
$name htmlspecialchars_uni($name);
        }

        if(!empty(
$this->options['nofollow_on']))
        {
            
$rel " rel=\"noopener nofollow\"";
        }
        else
        {
            
$rel " rel=\"noopener\"";
        }

        
// Fix some entities in URLs
        
$url $this->encode_url($url);
        
$name $this->parse_badwords(preg_replace("#&amp;\#([0-9]+);#si""&#$1;"$name)); // Fix & but allow unicode, filter bad words

        
eval("\$mycode_url = \"".$templates->get("mycode_url"10)."\";");
        return 
$mycode_url;
    }

    
/**
    * Parses URL MyCode.
    *
    * @param array $matches Matches.
    * @return string The built-up link.
    */
    
function mycode_parse_url_callback1($matches)
    {
        if(!isset(
$matches[3]))
        {
            
$matches[3] = '';
        }
        return 
$this->mycode_parse_url($matches[1].$matches[2], $matches[3]);
    }

    
/**
    * Parses URL MyCode.
    *
    * @param array $matches Matches.
    * @return string The built-up link.
    */
    
function mycode_parse_url_callback2($matches)
    {
        if(!isset(
$matches[2]))
        {
            
$matches[2] = '';
        }
        return 
$this->mycode_parse_url($matches[1], $matches[2]);
    } 
Zitieren