Sie sind nicht angemeldet.

    1

    Samstag, 12. Dezember 2009, 12:23

    Link in neuem Fenster im Script?

    Ich bin gerade dabei die DeviantArt-Schnittstelle zu reparieren. Also auf klick öffnen sich bereits die Werke in der Vollansicht bei DeviantArt, was ja bisher noch nicht ging.
    Da ich aber 0 Ahnung von PHP habe, wäre es möglich, am Script was zu machen, sodass das DaviantArt-Fenster nach dem Klick in nem neuen Tab aufgeht?

    PHP-Quelltext

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    
    <?php
    require_once(WCF_DIR.'lib/data/message/bbcode/BBCodeParser.class.php');
    require_once(WCF_DIR.'lib/data/message/bbcode/BBCode.class.php');
    
    /**
     * BBCode for [deviantart] Tag
     *
     * @author      Torben Brodt
     * @package     com.woltlab.wcf.data.message.bbcode.deviantart
     * @licenseGNU Lesser General Public License <http://opensource.org/licenses/lgpl-3.0.html>
     */
    class DeviantArtBBCode implements BBCode {
    protected $code '<object width="%d" height="%d"><param name="movie" value="http://backend.deviantart.com/embed/view.swf" /><param name="flashvars" value="id=%d" /><param name="allowScriptAccess" value="always" /><embed src="http://backend.deviantart.com/embed/view.swf" type="application/x-shockwave-flash" width="%d" height="%d" flashvars="id=%d" allowscriptaccess="always"></embed></object>';
    
    protected $width=450$height=450;
    
    /**
     * @see BBCode::getParsedTag()
     */
    public function getParsedTag($openingTag$content$closingTagBBCodeParser $parser) {
    if(is_numeric($content)) {
    // id as input
    $id intval($content);
    } else if(strpos($content'http://') == && preg_match('/-(\d+)$/'$content$hits)){
    // url as input
    $id intval($hits[1]);
    } else if(strpos($content'<object') !== false){
    // html as input
    if(preg_match('/^<object width\="(\d+)" height\="(\d+)">.+value\="id\=(\d+)/'$content$hits)) {
    $width intval($hits[1]);
    $height intval($hits[2]);
    $id intval($hits[3]);
    }
    }
    
    if(!isset($id)) return;
    
    // overwrite width/height from attribute
    if(isset($openingTag['attributes'][0])) {
    list($width,$height) = explode("x"$openingTag['attributes'][0]);
    }
    
    $width = isset($width) ? $width $this->width;
    $height = isset($height) ? $height $this->height;
    
    $code sprintf($this->code$width$height$id$width$height$id);
    
    if ($parser->getOutputType() == 'text/html') {
    return $code;
    }
    else if ($parser->getOutputType() == 'text/plain') {
    return $content;
    }
    }
    }
    ?>
    Willst du das Grufix-Board unterstützen? Dann ließ dir diese Hilfe durch!







    Kein Support via PN, E-Mail, Skype oder ICQ. Ein Forum ist zum posten da! ;)

    2

    Samstag, 12. Dezember 2009, 13:00

    Ahoy. ich hab mir das grad angeschaut, aber das öffnen des links geschieht nicht über html, sondern wird von flash ausgelöst. ich hab grad nachgeschaut, ob man das verhalten irgendwie über flash-attribute verändern kann, bin aber spontan nicht fündig geworden. insofern bleibt die einzige möglichkeit das ganze objekt-teil in nen link zu hüllen. Ich hab das eben mit ner statschen version von dem html hier probiert, und damit ging das. ich hoffe ich hab das plugin richtig verändert, kanns ja leider nicht ausprobieren.

    PHP-Quelltext

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    
    <?php
    require_once(WCF_DIR.'lib/data/message/bbcode/BBCodeParser.class.php');
    require_once(WCF_DIR.'lib/data/message/bbcode/BBCode.class.php');
    
    /**
     * BBCode for [deviantart] Tag
     *
     * @author      Torben Brodt
     * @package     com.woltlab.wcf.data.message.bbcode.deviantart
     * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-3.0.html>
     */
    class DeviantArtBBCode implements BBCode {
        protected $code '<a href="%d" target="_blank"><object width="%d" height="%d"><param name="movie" value="http://backend.deviantart.com/embed/view.swf" /><param name="flashvars" value="id=%d" /><param name="allowScriptAccess" value="always" /><embed src="http://backend.deviantart.com/embed/view.swf" type="application/x-shockwave-flash" width="%d" height="%d" flashvars="id=%d" allowscriptaccess="always"></embed></object></a>';
        
        protected $width=450$height=450;
    
        /**
         * @see BBCode::getParsedTag()
         */
        public function getParsedTag($openingTag$content$closingTagBBCodeParser $parser) {
            if(is_numeric($content)) {
            // id as input
                $id intval($content);
            } else if(strpos($content'http://') == && preg_match('/-(\d+)$/'$content$hits)){
            // url as input
                $id intval($hits[1]);
            } else if(strpos($content'<object') !== false){
            // html as input
                if(preg_match('/^<object width\="(\d+)" height\="(\d+)">.+value\="id\=(\d+)/'$content$hits)) {
                    $width intval($hits[1]);
                    $height intval($hits[2]);
                    $id intval($hits[3]);
                }
            }
            
            if(!isset($id)) return;
            
            // overwrite width/height from attribute
            if(isset($openingTag['attributes'][0])) {
                list($width,$height) = explode("x"$openingTag['attributes'][0]);
            }
            
            $width = isset($width) ? $width $this->width;
            $height = isset($height) ? $height $this->height;
            
            $code sprintf($this->code$content$width$height$id$width$height$id);
    
            if ($parser->getOutputType() == 'text/html') {
                return $code;
            }
            else if ($parser->getOutputType() == 'text/plain') {
                return $content;
            }
        }
    }
    ?>


    Übrigens: als ich mir eben den quelltext angeschaut hab, ist mir unheimlich viel kram aufgefallen der da eigentlich garnicht sein müsste. z.B. kommt vor jedem einzelnen post n riesiger css-block mit den gleichen regeln. Wenn die templates im wbb3 noch so heissen wie im wbb2, guck mal im post-view-template.

    3

    Samstag, 12. Dezember 2009, 14:01

    Also das mit der Schnittstelle hat leider nicht funktioniert. Der Link öffnet sich leider immernoch im selben Fenster.

    Was das mit den post-view-Template anbelangt, so können wir das ja per ICQ klären!
    Willst du das Grufix-Board unterstützen? Dann ließ dir diese Hilfe durch!







    Kein Support via PN, E-Mail, Skype oder ICQ. Ein Forum ist zum posten da! ;)

    4

    Samstag, 12. Dezember 2009, 14:21

    ich müsste mir dann mal angucken wie der output von dem script ist. wenn du das mal kurz so aktivierst, und mir dann einfach den html-output kopierst und schickst wär das bestens. ich hatte das halt so manuell ins html reingeschrieben, und da gings dann.

    5

    Samstag, 12. Dezember 2009, 14:46

    Wenns dir hilft, wäre hier nen Thread in dem der Code verwendet wird.
    Willst du das Grufix-Board unterstützen? Dann ließ dir diese Hilfe durch!







    Kein Support via PN, E-Mail, Skype oder ICQ. Ein Forum ist zum posten da! ;)

    6

    Samstag, 12. Dezember 2009, 15:51

    Also meiner Meinung nach dürfte das relativ schwer werden, da das Verhalten und das Aussehen von
    Deviantart bestimmt wird.

    Das gesamte Plugin für das wbb3 zieht nur den Rahmen drum rum und bettet es automatisch ein.
    *Aber überlegen kann man ja trotzdem deswegen werd ich mal schauen ob mir was einfällt.


    MfG Fredooo
    (x)HTML: 98%

    PHP: 45%

    CSS: 60%

    AutoIt: 85%


    Projekte

    Shoutbox-Server: 20%

    Ticketsystem: 15%


    7

    Samstag, 12. Dezember 2009, 15:58

    Ich hab mir das nicht angeguckt , aber die URL sollte doch in irgendeienr Variable abgelegt worden sein, dann könnt man doch theoretisch über ein Klick-Event ein neues Fenster mit der URl öffnen können.

    8

    Samstag, 12. Dezember 2009, 16:16

    @Fred
    Das Problem war dass man das Link-Verhalten des deviantart-flash-embeds nicht anpassen kann. ich hab eben sogar die SWF decompiliert und geguckt ob da irgend was machbar ist, aber das ist alles fest darauf eingestellt, dass sich der link im eigenen fenster öffnet. Wie Fredooo schon sagte, kann man da nichts machen. Ich hab jetzt nen kleinen Workaround gebastelt der sämtliche clicks auf das Embed blockt und nen eigenen link drüber legt. Ist zwar nicht die schönste Lösung, aber mir fällt nichts besseres ein. ;D

    Code veröffentliche ich hier gleich, nachdem Terra das getestet hat.

    Edit: Der workaround hat aufm Mac zwar wunderbar funktioniert, jedoch ließ sich das windows-flash-plugin nicht so einfach unterdrücken. :/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »arc« (12. Dezember 2009, 16:57)


    Ähnliche Themen

  • Grufix-Board.de - GFX Webdesign Foto & Coding Community

    Grafik-Tutorials | Coding-Tutorials | Ressourcen | SEO | Webdesign | HTML5
    W3C Validator