Hilfe - Suche - Mitglieder - Kalender
Vollansicht: GoogleMap2 v.01.02.00
Forum Sefrengo.org > Downloads > Module
FireFlyer
Modulname:
GoogleMap2 v01.02.00

Status:
Stable

Bechreibung:

Mit diesem Modul wird das Einbinden von Googlemap auf der eigenen Seite ermöglicht. Sehr gut zur Anwendung für Anfahrtsbeschreibungen.
Nötig ist nur ein Key, der bei Google kostenlos beantragt werden kann (Link direkt im Modul).
Jetzt muß nur noch eine gewünschte Adresse, ein Titel des Infowindows und den dazugehörige Text eingegeben werden.

Features:
- direkte Eingabe des anzuzeigenden Ortes
- Größenangabe der Karte im Modul

Autor(en):
pawel
FireFlyer

Lizenz:
GPL

Benötigte Sefrengo Version:
>= 01.03.00 (Sefrengo 1.4 beta2)

Installation:
Wechseln Sie in Ihrer Sefrengo Version in den Bereich "Design->Module". Am
unteren Ende des Bereichs befindet sich ein Uploadfeld. Wählen Sie hier die
gewünschte "*.cmsmod"- Datei aus. Mit einem Klick auf das Diskettensymbol
wird das Modul in das CMS importiert. Das Modul ist nun innerhalb des CMS
nutzbar.

Dokumentation:
Keine vorhanden

QUELLTEXT
Changelog legend:
# -> Bug Fix
+ -> Addition
^ -> Change
- -> Removed
! -> Note


Current versionnumber is  01.02.00 - released 22.07.2008
------------------------------------------------------------------------------------------------
+ Einstellmöglichkeiten für Beschriftungsfelder erstellt
+ Modul in Tabs aufgeteilt


Current versionnumber is  01.01.00 - released 14.07.2008
------------------------------------------------------------------------------------------------
# JS-Fehler: document.getElementById("sidebar_map") has no properties behoben


Current versionnumber is  01.00.00 - released 07.07.2008
------------------------------------------------------------------------------------------------
# DIV nimmt Größenangaben des Moduls an


Current versionnumber is  00.02.00 - released 05.07.2008
------------------------------------------------------------------------------------------------
# Google-Key Link => target _blank
# GoogleMapAPI-2.5 ins Modul gepackt
# Breite und Höhen können im Modul angegeben werden


Current versionnumber is  00.01.00 - released 14.12.2006
------------------------------------------------------------------------------------------------
! Erstausgabe


Klicken um den Anhang anzusehen
bjoern
Cool, vielen Dank! Endlich mal wieder ein richtig cooles stable Modul! Danke smile.gif
andi
cool, aber mein provider spielt da leider nicht mit:
QUELLTEXT
Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in /home/maccaron/public_html/sefrengo/cms/inc/frontend.php(250) : eval()'d code on line 1369


gruss andi

pawel
Kannst du mal ausprobieren, ob file geht?
Dann wäre evtl. das eine Alternative:(so um 1341)

QUELLTEXT
function fetchURL($url) {
return implode("",file($url));
    }
andi
hilft auch nix. dann bekomme ich diese meldungen
QUELLTEXT
Warning: file() [function.file]: URL file-access is disabled in the server configuration in /home/maccaron/public_html/sefrengo/cms/inc/frontend.php(250) : eval()'d code on line 1368

QUELLTEXT
Warning: implode() [function.implode]: Invalid arguments passed in /home/maccaron/public_html/sefrengo/cms/inc/frontend.php(250) : eval()'d code on line 1368


edit1: aber ich kann meine php.ini anpassen und allow_url_fopen aktivieren, obwohl das standardmässig von meinem hoster deaktiviert ist.

edit2: wäre schön, wenn man das modul auch gleich noch strict-valide machen könnte:
QUELLTEXT
<script language="javascript" type="text/javascript" charset="utf-8">window.

das attribut language ist in strict nicht mehr erlaubt

QUELLTEXT
<noscript><b>Javascript must be enabled in order to use Google Maps.</b></no

inline-elemente (<b>) sind in <noscript> nicht mehr zulässig in strict.




gruss andi
bjoern
Damit das mit allow_url_fopen = FALSE auch funktioniert, muss das über Sockets implementiert werden.
pawel
Kannst Du ini_set verwenden? Dann geht es auch zur Laufzeit. Wenn du curl installiert hast, sieh dir mal das an.
bjoern
Könnte sein, das es damit funktioniert:

QUELLTEXT
function curlFetchURL($url){
            // create a new curl resource
            $ch = curl_init();
            
            // set URL and other appropriate options
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
            // grab URL and pass it to the browser
            $content= curl_exec($ch);
            
            // close curl resource, and free up system resources
            curl_close($ch);
            return $content;
        }
pawel
Ja, aber dann sollte die function fetchURL, (wie im Beispiel) erweitert werden.

QUELLTEXT
function fetchURL($url) {
    
    if(ini_get('allow_url_fopen')==true)
                {
            return file_get_contents($url);
                }else{
                    return $this->curlFetchURL($url);
                
                }
                
    }
bjoern
stimmt, das wäre die Ideallösung.
gunwalt
Mir zerschiesst das Modul das Layout:

In die Doctype Deklaration schreibt dasd Modul Code
ZITAT
<!DOCTYPE html PU<script src="http://maps.google.com/maps?file=api&amp;v=2&
(..)
markers[idx].openInfoWindowHtml(from_htmls[idx]);
}
//]]>
</script>
<script language="javascript" type="text/javascript" charset="utf-8">window.onload=onLoad;</script>BLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
Rest der Seite

www.unterbacher-kulturtage.de/galerie-am-zault/anfahrt.html

Sefrengo Installation mit mehreren Projekten. Das Backend wird über eine Hauptdomain aufgerufen, die einzelnen Projekte dann über eigene Domains. Die Gogglemaps API ist für eine ProjektAPI beantragt. Das Modul sitzt hinter der Listennavigation und ContentFlex. Die Reihenfolge der Module spielt keine Rolle. Auch Gogglemaps als einzelnes Modul erzeugt den gleichen Fehler.
Eine Sefrengoinstallation mit gleicher Haupt und Projektdomain erzeugt diesen Fehler nicht.
bkm
ZITAT(gunwalt @ Fri. 25. July 2008, 10:46) *
Mir zerschiesst das Modul das Layout:

Eine Sefrengoinstallation mit gleicher Haupt und Projektdomain erzeugt diesen Fehler nicht.

könnte die ursache nicht eher auf darauf beruhen das du <!--START head//--><!--END head//--> entfernt hast und
somit das modul gar nicht den output nachträglich manipulieren kann ?

gunwalt
ZITAT(bkm @ Fri. 25. July 2008, 11:20) *
könnte die ursache nicht eher auf darauf beruhen das du <!--START head//--><!--END head//--> entfernt hast und
somit das modul gar nicht den output nachträglich manipulieren kann ?

Also, auf die Lösung wäre ich nicht gekommen. Ich dacht START head wäre eine Kommentarmarke ohne tieferen Sinn.
Auf jeden Fall war Dein Tipp ein Schuss ins Schwarze. Danke.
bjoern
Ohne die HTML Kommentare funktioniert das Druckmodul nicht mehr und alle Funktionalitäten die da dran gehängt sind. Das Goofgle map Modul gehört dazu.

Ich fände es klüger, wenn das Modul anstatt nach dem Kommentar das </head> Tag suchen würde und den Google Maps Code da einfügt. Die Kommentartags werden sicher in einer der nächsten Sefrengo Versionen verschwinden.
smail
ZITAT
Ich fände es klüger, wenn das Modul anstatt nach dem Kommentar das </head> Tag suchen würde und den Google Maps Code da einfügt. Die Kommentartags werden sicher in einer der nächsten Sefrengo Versionen verschwinden.


Oder man nutzt gleich die Funktionalität des Plugins Add Headerelement v01.05.00 smile.gif

Gruß
Jan
bjoern
Nein, würde Abhängigkeiten vermeiden. Sonst ist das wieder das gleiche in grün.
pawel
Nun ja, addheader kann ja eine Alternative sein, wenn es installiert ist, so eine Prüfung habe ich hier ja auch eingebaut.
Aber nach </head> zu suchen ist sicher eine Alternative.

Ich denke, so sollte es gehen (im Frontend ändern)
QUELLTEXT
...
$link2_head = array($head);
    
            $mod['manipulate_output']  = '$magic = "</head>";';
            $mod['manipulate_output'] .= '$start = strpos($output, $magic);';
            $mod['manipulate_output'] .= '$new_output  = substr($output, 0, $start);';
            $mod['manipulate_output'] .= '$new_output .= implode("", $link2_head);';
            $mod['manipulate_output'] .= '$new_output .= substr($output, $start);';
            $mod['manipulate_output'] .= '$output = $new_output;';
            $cfg_client['manipulate_output'] = $mod['manipulate_output'] . $cfg_client['manipulate_output'];

}
..
smail
ZITAT(bjoern @ Fri. 25. July 2008, 13:54) *
Nein, würde Abhängigkeiten vermeiden. Sonst ist das wieder das gleiche in grün.


Dann macht das ganze Plugin keinen Sinn. Und wenn jedes Modul/Plugin die Funktionalität selbst einbauen muss, dann trifft das nicht mein Verständnis von wiederverwendbarem Code.

Außerdem:
  • wenn der Output standardmäßig manipuliert wird, hast Du die Scripte auch auf den Seiten drin, die Google-Maps überhaupt nicht verwenden - und das dürften im Zweifelsfall deutlich mehr sein.
  • Das letzte Modul auf der Seite bindet dann als letztes seine Scripte, CSS, etc. ein - das ist nicht immer sinnvoll. Aber die Reihenfolge lässt sich so nicht mehr steuern.
Ich erinnere nochmals daran, dass die Entwicklung des Plugins maßgeblich dadurch bedingt war, dass viele Anwender aus Modulen auf einfache Weise auf den Header zugreifen wollten - dieses FR aber durch die Core-Entwicklung in absehbarer Zeit nicht abgedeckt werden würde. Das Plugin ermöglicht dies nun über die SF-Events - und das ohne Hack des Cores.

Wenn das nun nicht genutzt werden soll, dann ist mir das ein Rätsel...

Gruß
Jan
bjoern
Damit das Modul macht was es soll, ist nur eine minimale Änderung am Modulcode notwendig. Von daher macht es keinen Sinn mit Kanonen auf Spatzen zu schießen. Werde ich jetzt nicht weiter diskutieren.

Die Funktionalität des Headerplugins sehe ich zukünftig im Core. Implementierung wird sich allerdings unterscheiden.
pawel
ZITAT
wenn der Output standardmäßig manipuliert wird, hast Du die Scripte auch auf den Seiten drin, die Google-Maps überhaupt nicht verwenden - und das dürften im Zweifelsfall deutlich mehr sein


Wie kommst du denn da drauf? Der output wird nur dann manipuliert, wenn das Modul verwendet wird. Ich habe nur eine Anpassung zum jetzigen Code von gm gepostet, der als Marke </head> verwendet.

Von addheader bin ich auch begeistert, wenn es später im Core ist voila.
Hier mal ein snippet:
QUELLTEXT
if(file_exists($cfg_cms['cms_path']."plugins/headerelement/class.headerelement.php")){
fire_event("add_js", array("file" => "..."));
else {
$link2_head = array($head);
...
}
bjoern
Klassische WIN/ WIN Lösung. Danke Pawel.
smail
ZITAT(bjoern @ Fri. 25. July 2008, 19:54) *
Klassische WIN/ WIN Lösung. Danke Pawel.


Seh ich auch so smile.gif
bkm
ZITAT(smail @ Sat. 26. July 2008, 01:44) *
Seh ich auch so smile.gif

wink.gif
FireFlyer
d.h. ich soll alles was bisher gepostet wurde mal zu einer neuen Version schustern, oder fehlt da noch was?
bjoern
Ich fände das mit dem Templatemechanismus ja noch super. Der ist super leicht zu integrieren. Du mußt die Mapausgabe statt mit der Print- Methode nur mit der Get Methode in einer Variable speichern. Ein einfaches, aber effektives Templatesystem geht so:

Konfiguration:

QUELLTEXT
// Template
$mip_form['2']['desc'] = 'Template';
$mip_form['2']['cat'] = 'txtarea';
$mip_form['2']['rows'] = '6';
$mip_form['2']['type'] = 'long';
$mip_form['2']['cms_var'] = 'MOD_VAR[2]';
$mip_form['2']['cms_val'] = $cms_mod['value']['2'];
$mip_form['2']['cms_val_default'] = '{wert1} blabla {wert2}';

mip_formsp($mip_form['2']);


Frontendausgabe:

QUELLTEXT
$my_tpl = "MOD_VALUE[2]";

$tplvars['wert1'] = 'blub1';
$tplvars['wert2'] = 'blub2';

foreach ($tplvars AS $k=>$v)
{
    $my_tpl = str_replace('{'.$k.'}', $v, $my_tpl);
}

echo $my_tpl;


Was mir noch auffällt ist, dass der Infoboxtitel wieder komplett sinnlos ist, den die Sidebar ist ja mit $map->disableSidebar(); deaktiviert. Wäre schön, wenn das konfigurierbar ist.
Dieses ist eine vereinfachte Darstellung unseres Foreninhaltes. Um die detaillierte Vollansicht mit Formatierung und Bildern zu betrachten, bitte hier klicken.
Invision Power Board © 2001-2024 Invision Power Services, Inc.