Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 03. Januar 2011 01:29

SchwindelInside
Gast

[GELÖST] [gelöst] TinyMCE-codecleaning, embed-Tag funktioniert nicht

wunderschönen Abend,

ich möchte eine interaktive OpenStreetMap-Karte als iframe in meine Seite einbinden. Dieser sieht so in der Art aus:

[== html ==]

<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://www.openstreetmap.org/export/embed.html?bbox=13.376287,52.515457,13.379425,52.517067&amp;layer=mapnik&amp;marker=52.51629,13.37776" style="border: 1px solid black"></iframe>

Beim Einschalten des WYSIWYG-Modus wird der iframe-tag jedoch von TinyMCE aus dem Quelltext "herausgesäubert".
Bei Joomla kann man im Backend explizit bestimmte Elemente wie zBsp. iframe von der Quelltext-Säuberung ausnehmen. Bei CMSms hab ich keine Möglichkeit dazu gefunden. Wenn ich den WYSIWYG-Modus für die Seite ganz deaktiviere wird die eingebettete Karte auch im Frontend angezeigt, was mir aber zu unpraktisch ist.

Nach ein wenig Suchmaschinen-Durchwühlen hab ich etwas über den embed-tag gefunden und auch die Interne Hilfe im CMSms-Backend dazu gelesen.:
Also heb ich meinem iframe umgeschrieben in:

[== html ==]

{embed url="http://www.openstreetmap.org/export/embed.html?bbox=13.376287,52.515457,13.379425,52.517067&amp;layer=mapnik&amp;marker=52.51629,13.37776" style="border: 1px solid black" width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0"}

In meine Seiten-Template steht {metadata} und {embed header=true} im Head-Bereich. Außerdem hab ich in den Metadatenbereich der Seiten-Optionen ebenfalls {embed header=true} eingefügt. Das hat alles nicht geholfen. Im WYSIWYG-Editor bleibt das gesamte {embed url="..."} als Text angezeigt. Und die einzubettende Karte ist im Frontend nicht zu sehen. Mit GoogleMaps ist das nicht anders.
Ich dachte ich hätte alles so gemacht wie in der Hilfe und den Foren zum embed-tag beschrieben ist. Was zum Geier hab ich denn da übersehen oder falsch verstanden?

Wenn mir jemand helfen könnte, wäre ich sehr dankbar.

alles Gute im neuen Jahr noch.
SI

Beitrag geändert von SchwindelInside (03. Januar 2011 12:14)

#2 03. Januar 2011 06:45

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.930
Webseite

Re: [GELÖST] [gelöst] TinyMCE-codecleaning, embed-Tag funktioniert nicht

Es gibt ein modifizieres embed:

<?php
#CMS - CMS Made Simple
#(c)2004 by Ted Kulp (wishy@users.sf.net)
#This project's homepage is: http://cmsmadesimple.sf.net
#
#This program is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

#Author: Sorin Sbarnea / INTERSOL SRL
function smarty_cms_function_btembed($params, &$smarty) {
    global $gCms;

    $hide_iframe = 'no';
    if(isset($params['hide_iframe']) && ($params['hide_iframe']==true || $params['hide_iframe']=='true'))
        $hide_iframe = 'yes';
        
    $iframe_id = "myframe";
    if(isset($params['iframe_id']) && !empty($params['iframe_id']))
        $iframe_id = trim($params['iframe_id']);
    
    $width='width:99%;';
    $height='';
    if(isset($params['width']) && $params['width']!='') {
        $width = 'width:'.trim($params['width']);
        if (substr($width, -2) != "px" and substr($width, -2) != "%")
            $width.="px";
    }
    
    if(isset($params['height']) && $params['height']!=''){
        $height = 'height:'.trim($params['height']);
        if (substr($height, -2) != "px" and substr($height, -2) != "%")
            $height.="px";
    }
    
    $style='';
    if(isset($params['style']) && $params['style']!='')
        $style = trim($params['style']);
    

    if (!empty($params['url'])) {
        $url = $params['url'];
    } else 
        return "<pre>Invalid call for embed function.<pre>";

    return   "<iframe id='".$iframe_id."' src='$url' scrolling='no' marginwidth='0' marginheight='0' frameborder='0' vspace='0' hspace='0' style='overflow:visible; ".$width."; ".($hide_iframe=="yes"?'display:none;':'').($height!=''?$height.';':'').$style."'></iframe>";

}

function smarty_cms_help_function_btembed() {
    ?>
    <h3>What does this do?</h3>
    <p>Enable inclusion (embeding) of any other application into the CMS. The most usual use could be a forum. 
    This implementation is using IFRAMES so older browsers can have problems. Sorry bu this is the only known way 
    that works without modifing the embeded application.</p>
    <h3>How do I use it?</h3>
    <p>Just insert the tag into your template/page like: <code>{btembed}</code><br></p>
        <h3>What parameters does it take?</h3>
        <ul>
            <li><em>(required)</em>url - the url to be included 
            <li><em>(optional)</em>iframe_id - the id of the iframe
            <li><em>(optional)</em>iframe_id_list - a list of the iframe ids used in the template separated by a comma.</li>
            <li><em>(optional)</em>width - width of the iframe.</li>
            <li><em>(optional)</em>height - height of the iframe.</li>
            <li><em>(optional)</em>style - additional stylesheet.</li>
        </ul>
       <p>If you want dynamic height you must include in your page {embed url=..} and in the header section (advanced tab) you must put {embed header=true}</p>
                                                      
    <?php
}

function smarty_cms_about_function_btembed() {
    ?>
    <p>Author: Sorin Sbarnea&lt;sorin2000@intersol.ro&gt; (remove 2000)</p>
    <p>Version: 1.2 (modified by nockenfell)
    <p>Version: 1.1 (modified by NaN)</p>
    <p>
    Change History:<br/>
    <p>Version: 1.1 - added params width, height, additional styles, custom ids</p>
    <p>Version: 1.0 - initial release</p>
    </p>
    <?php
}

?>

Das Header=true kannst du vergessen. Bringt nichts und habe ich in meinem Mod weggelassen.

Einsetzen kannst du den Tag mit

{btembed url="http://www.openstreetmap.org/export/embed.html?bbox=13.376287,52.515457,13.379425,52.517067&amp;layer=mapnik&amp;marker=52.51629,13.37776" style="border: 1px solid black" width="425" height="350"}

[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#3 03. Januar 2011 10:43

SchwindelInside
Gast

Re: [GELÖST] [gelöst] TinyMCE-codecleaning, embed-Tag funktioniert nicht

nockenfell schrieb:

Es gibt ein modifizieres embed:

vielen Dank für die Antwort.

Füge ich Deinen Quelltext als Benutzerdefinierten Tag ein erscheint beim Absenden die Fehlermeldung:
"# Parse error: syntax error, unexpected '<' in /..../cms/admin/adduserplugin.php(100) : eval()'d code on line 60"

Dann hab ich eine Datei im Verzeichnis Plugins angelegt, Deinen Quelltext da rein geschrieben und die Datei entsprechend den anderen benannt. btembed erscheint nun auch in der tag-Liste.

Das Header=true kannst du vergessen. Bringt nichts und habe ich in meinem Mod weggelassen.

Einsetzen kannst du den Tag mit

{btembed url="http://www.openstreetmap.org/export/embed.html?bbox=13.376287,52.515457,13.379425,52.517067&amp;layer=mapnik&amp;marker=52.51629,13.37776" style="border: 1px solid black" width="425" height="350"}

hab ich nun so geändert. Nun steht ganz oben im Frontend: "Invalid call for embed function." Das Layout der ganzen Seite ist nun vollkommen zur Minna.
Was genau sollte mir denn dieser Mod eigentlich bringen, wenn mir die Frage gestattet ist?

Trotzdem nochmal vielen Dank.

Wichtig zu erwähnen wäre vielleicht noch, dass ich mit der CMSms-Version 1.9.1 "Toopua" arbeite.

#4 03. Januar 2011 10:54

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.930
Webseite

Re: [GELÖST] [gelöst] TinyMCE-codecleaning, embed-Tag funktioniert nicht

Da habe ich wohl ein klein wenig zu wenig geschrieben.

Speichere den Code als "function.btembed.php" ab und speichere diese im Ordner /plugins

Danach funktioniert es. (getestet unter 1.9.2)


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#5 03. Januar 2011 11:25

SchwindelInside
Gast

Re: [GELÖST] [gelöst] TinyMCE-codecleaning, embed-Tag funktioniert nicht

nockenfell schrieb:

Da habe ich wohl ein klein wenig zu wenig geschrieben.

Speichere den Code als "function.btembed.php" ab und speichere diese im Ordner /plugins

Danke. Genau das habe ich, wie oben schon erwähnt, bereits gemacht. Und das führte zu der genannten Fehlermeldung "Invalid call for embed function." und Darstellungsfehlern im Frontend.

nockenfell schrieb:

Danach funktioniert es. (getestet unter 1.9.2)

ich kann ja mal versuchen zu updaten und sehen ob das Besserung bringt.

Nachtrag: Eine Update auf 1.9.2 hat keine Besserung gebracht.

Beitrag geändert von SchwindelInside (03. Januar 2011 11:44)

#6 03. Januar 2011 11:36

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.930
Webseite

Re: [GELÖST] [gelöst] TinyMCE-codecleaning, embed-Tag funktioniert nicht

SchwindelInside schrieb:
nockenfell schrieb:

Da habe ich wohl ein klein wenig zu wenig geschrieben.

Speichere den Code als "function.btembed.php" ab und speichere diese im Ordner /plugins

Danke. Genau das habe ich, wie oben schon erwähnt, bereits gemacht. Und das führte zu der genannten Fehlermeldung "Invalid call for embed function." und Darstellungsfehlern im Frontend.

Komisch. Ich nehme an das du den Aufruf 1:1 aus meinem Beitrag kopiert hast und den Tag mit {btembed ... } aufrufst.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#7 03. Januar 2011 11:52

SchwindelInside
Gast

Re: [GELÖST] [gelöst] TinyMCE-codecleaning, embed-Tag funktioniert nicht

nockenfell schrieb:

Komisch. Ich nehme an das du den Aufruf 1:1 aus meinem Beitrag kopiert hast und den Tag mit {btembed ... } aufrufst.

bestätigt!

#8 03. Januar 2011 11:57

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.930
Webseite

Re: [GELÖST] [gelöst] TinyMCE-codecleaning, embed-Tag funktioniert nicht

Probiere mal folgendes. Kopiere folgenden Code in einen Benutzerdefinierten Tag. Nenne diesen "testembed" und füge den Tag entsprechend angepasst nochmals ein.

$hide_iframe = 'no';
    if(isset($params['hide_iframe']) && ($params['hide_iframe']==true || $params['hide_iframe']=='true'))
        $hide_iframe = 'yes';
        
    $iframe_id = "myframe";
    if(isset($params['iframe_id']) && !empty($params['iframe_id']))
        $iframe_id = trim($params['iframe_id']);
    
    $width='width:99%;';
    $height='';
    if(isset($params['width']) && $params['width']!='') {
        $width = 'width:'.trim($params['width']);
        if (substr($width, -2) != "px" and substr($width, -2) != "%")
            $width.="px";
    }
    
    if(isset($params['height']) && $params['height']!=''){
        $height = 'height:'.trim($params['height']);
        if (substr($height, -2) != "px" and substr($height, -2) != "%")
            $height.="px";
    }
    
    $style='';
    if(isset($params['style']) && $params['style']!='')
        $style = trim($params['style']);
    

    if (!empty($params['url'])) {
        $url = $params['url'];
    } else 
        return "<pre>Invalid call for embed function.<pre>";

    echo   "<iframe id='".$iframe_id."' src='$url' scrolling='no' marginwidth='0' marginheight='0' frameborder='0' vspace='0' hspace='0' style='overflow:visible; ".$width."; ".($hide_iframe=="yes"?'display:none;':'').($height!=''?$height.';':'').$style."'></iframe>";

PS: Nachfrage, du hast derzeit keinen benutzerdefinierten Tag der "btembed" heisst? Nur das es hier keine Friktionen zwischen dem UDT und dem Plugin gibt.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#9 03. Januar 2011 12:12

SchwindelInside
Gast

Re: [GELÖST] [gelöst] TinyMCE-codecleaning, embed-Tag funktioniert nicht

Hallo nochmal,

nach ein bisschen herumprobieren klappt es nun doch. Keine Ahnung wieso. Aber ich freue mich.  smile

Vielen Dank für die Hilfe

schöne Grüße
SI

#10 03. Januar 2011 12:36

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.930
Webseite

Re: [GELÖST] [gelöst] TinyMCE-codecleaning, embed-Tag funktioniert nicht

Freut zu hören  smile


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline