MyBB.de Forum
Postbit Problem mit quick_jump Klasse - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: MyBB 1.8.x (https://www.mybb.de/forum/forum-87.html)
+--- Forum: Allgemeiner Support (https://www.mybb.de/forum/forum-88.html)
+--- Thema: Postbit Problem mit quick_jump Klasse (/thread-36926.html)



Postbit Problem mit quick_jump Klasse - Jockl - 06.01.2020

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.....


RE: Postbit Problem mit quick_jump Klasse - SvePu - 06.01.2020

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;
}



RE: Postbit Problem mit quick_jump Klasse - Jockl - 06.01.2020

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?


RE: Postbit Problem mit quick_jump Klasse - SvePu - 06.01.2020

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.


RE: Postbit Problem mit quick_jump Klasse - Jockl - 06.01.2020

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.....


RE: Postbit Problem mit quick_jump Klasse - SvePu - 06.01.2020

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]);
    }