kleines Modul für Google Maps [gelöst]

am 28.04.2009 - 12:52 Uhr in
Hallo zusammen,
Nun habe ich ein sehr einfaches Modul geschrieben, welches nur einige wenige Eingaben braucht (Titel, Menülink und Code). Für die Einstellung muss "Full HTML" angegeben werden, weil sonst wichtige Tags aussortiert werden (Artikel einstellen kann eh nur der Berechtigte).
Natürlich wäre hier die Trennung von Markup und Text möglich gewesen, ich habe das aber bewusst mit in den Artikel genommen, damit es wirklich von jedem/r verwendet werden kann.
Das Modul besteht aus drei Dateien (.info, .module, .admin.inc) und benötigt keine weiteren Hilfsmittel.
Vielleicht gibt es einige Leute, die das gerne mal antesten möchten und vielleicht auch noch Vorschläge und Verbesserungen einbringen möchten.
Die Installation läuft gleich ab, wie bei sonstigen Zusatzmodulen(sites/all/modules/custom/meinmodul). Eine Konfiguration ist nicht nötig, jedoch die Mapgrösse könnte im Artikelcode noch angepasst werden. Nach der Installation erscheint ein Modul "mapdrei" welches zuerst aktiviert werden muss.
Jetzt erscheint auch ein neuer Inhaltstyp mit dem Namen "Mapdrei", also einfach einen neuen Eintrag anlegen.
Den Google Code müsst ihr von eurem eigenen (gratis) Google-Konto (unter Google Maps) holen, wo ihr zuerst euren Anfahrtspunkt setzen und beschriften solltet.
Ist die Google Map erstellt, so kann ganz einfach durch den Klick auf "Link" (oben rechts in Google Maps) der Code kopiert werden. Nach dem Kopieren fügt ihr den Code einfach in den Artikel in Drupal ein, "Full HTML" als Eingabetyp nicht vergessen.
Es können auch mehrere Maps erzeugt werden...
Gruss
Fredi
P.S. einfach kurz anschreiben, wenn jemand interessiert ist (info1@my-webshop.ch).
- Anmelden oder Registrieren um Kommentare zu schreiben
ALso der richtige Ort für
am 28.04.2009 - 13:14 Uhr
Also der richtige Ort für neue öffentliche Module ist drupal.org ;-)
--
mortendk: everytime you use contemplate... Thor is striking down from above with his mighty hammer - crushing and killing a kitten!
webseiter.de
Das ist noch etwas früh
am 28.04.2009 - 13:22 Uhr
Hallo,
danke für den Tipp mit drupal.org, das habe ich unter Umständen dann auch vor.
Da dies mein erstes Klein-Modul ist, hätte ich eben gerne etwas Feedback gehabt bevor ich es der Community vorstelle.
Schöne Grüsse
Fredi
na dann lade es doch hier
am 03.05.2009 - 11:20 Uhr
na dann lade es doch hier hoch.
Als tipp im Voraus, ich glaube du solltest hier mit dem Filtersystem arbeiten, dann gibt es auch keine Probleme, vlt., mit den Tags.
Dem Benutzer FullHTML zu erlauben ist potenziell erstmal nicht gut, da du nicht mehr kontrollieren kannst was er macht.
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.de
SirFiChi ist auch dein Halbgott.
Filtersystem
am 04.05.2009 - 07:07 Uhr
Hallo dereine,
dein Einwand mit den Rechten ist natürlich schon zu beachten. Aber anscheinend habe ich mich in diesem Punkt unklar ausgedrückt.
Die Map ist eigentlich dafür gedacht, dass der Betreiber der Site eine Anfahrtsmap hat, also ist dies für andere User gar nicht aufrufbar, ausser die Rechte wurden vergeben.
Warum das bei mir nicht gegangen ist mit der Filteranzeige, da habe ich bis jetzt keine Erklärung dafür.
Für die Mapeinträge habe ich einen eigenen Inhaltstypen angelegt und dieser lief und läuft auch vollständig, bis auf den Umstand dass man den Filter nicht sah bzw. dieser einfach nicht zur Auswahl stand...
Bin natürlich auch noch absoluter Neuling, was die Modulerstellung angeht.
Ich stelle hier gerne den Stand der vorhandenen Dateien ein, es werden sicher noch unschöne Codierungen oder fehlender Code auffallen - würde mich nicht wundern. :-)
Gruss
Fredi
P.S. Sorry, mein english lässt mehr als zu wünschen übrig...
Und wegen dem Filter, könnte es sein dass ich die Variable "$format = -1", der Menüfunktion übergeben muss?!?
Die laufende Map findest du unter http://my-webshop.ch --> "Drupal 6.10".
Also:
Hier die mapdrei.info (sites/all/modules/custom/mapdrei/*)
; $Id$
name = MapDrei
description = eine einfache Map die mit Code der öffentlichen Google Map erstellt wird.
core = 6.x
Hier die mapdrei.module:
<?php
// $Id$
/**
* @file
* The User can create an Google Map, easy with your Example-Code in the public Map from your Google Account.
*
* This Module create an Article, copy and paste the public Code from Google Map!
*/
/**
* Implementation from hook_perm()
*/
function mapdrei_perm() {
return array('create mapdrei', 'delete mapdrei', 'edit mapdrei', 'view mapdrei');
}
/**
* Implementation of hook_access().
*/
function mapdrei_access($op, $node, $account) {
switch ($op) {
case 'create':
// Anonymous users cannot post even if they have the permission.
return user_access('create mapdrei', $account) && $account->uid ? TRUE : NULL;
break;
case 'update':
return user_access('edit mapdrei', $account) || (user_access('edit mapdrei', $account) && ($node->uid == $account->uid)) ? TRUE : NULL;
break;
case 'delete':
return user_access('delete mapdrei', $account) || (user_access('delete mapdrei', $account) && ($node->uid == $account->uid)) ? TRUE : NULL;
break;
case 'view':
return user_access('view mapdrei') == TRUE;
}
}
/**
* Implementation von hook_menu()
*/
function mapdrei_menu() {
$items['admin/settings/mapdrei'] = array(
'title' => 'Map Drei',
'description' => 'Konfigurieren der Map drei',
'page_callback' => 'drupal_get_form',
'page_arguments' => array('mapdrei_admin_settings'),
'access_arguments' => array('administer site configuration'),
'type' => MENU_NORMAL_ITEM,
'file' => 'mapdrei.admin.inc'
);
return $items;
}
/**
* Implementieren von hook_node_info().
*/
function mapdrei_node_info() {
return array(
'mapdrei' => array(
'name' => 'Mapdrei',
'module' => 'mapdrei',
'description' => t('Create a Map'),
'has_title' => TRUE,
'title_label' => t('Title'),
'has_body' => TRUE,
'body_label' => t('Body'),
'min_word_count' => 5,
'locked' => TRUE
)
);
}
/**
* Implementieren von hook_form()
*/
function mapdrei_form($node) {
$type = node_get_types('mapdrei', $node);
$form['title'] = array(
'#type' => 'textfield',
'#title' => t('Google Map Title'),
'#required' => TRUE,
'#default_value' => isset($node->title) ? $node->title : '',
'#weight' => -5,
'#maxlength' => 100
);
$form['mapdrei_filter']['body'] = array(
'#type' => 'textarea',
'#title' => t('write or paste code'),
'#default_value' => isset($node->body) ? $node->body : '',
'#rows' => 7,
'#required' => TRUE,
);
// Momentan erzwinge ich die Filteranzeige mit folgender Zeile (dank Hilfe)
$form['mapdrei_filter']['format'] = filter_form(FILTER_FORMAT_DEFAULT);
return $form;
}
?>
Hier noch die mapdrei.admin.inc: (Pfad wie oben)
<?php
// $Id$
/**
* @ingroup form
* see system_settings_form()
* This can see in the Admin Section.
*/
function mapdrei_admin_settings() {
node_set_types('mapdrei', 'MapDrei');
$options = node_get_types('names');
$form['mapdrei_node_types'] = array(
'#type' => 'hidden',
'#title' => t(''),
'#default_value' => variable_get('mapdrei_node_types', array('mapdrei', 'MapDrei')), //Hier noch ev. etwas ändern...
);
return $form;
}
?>
Modul
am 04.05.2009 - 08:01 Uhr
Moin!
Ersteinmal: schön, dass Du das Modul hinbekommen hast. Mit der Umsetzung solcher Ideen lernt man als Entwickler echt viel über Drupal.
Jedoch (nur mal so nebenbei gefragt; und ohne Deine Leistung schmälern zu wollen): gibt es irgendeinen Unterschied der Handhabung des Moduls zu folgender Vorgehensweise?
- ich erstelle mir einen Inhaltstyp mit
Titel
,Beschreibung
undMapCode
- ich erstelle mir eine neue Node des gerade erstellten Typs und trage dort den HTML-Code der google-Map ein
Stefan
--
2 Personen mit Halbwissen sind schlimmer als Einer, der gar nichts weiss.
Modul - Unterschied Artikel und Map
am 04.05.2009 - 08:33 Uhr
Hallo Stefan,
ja es gibt einen Unterschied :-)
Wenn man den Code direkt in einen Artikel schreibt so kann man diesen zwar so zum laufen bringen, möchte man aber die Mapgrösse oder sonstwas bearbeiten ist der Code defekt beim 2. abspeichern Warum genau das so ist weiss ich auch (noch) nicht genau, aber darum ja dieser Versuch. Ob das ev. nur am WYSYWYG-Editor liegt oder an einer eventuellen Umwandlung von Codeteilen in Entitäten (oder beidem), habe ich nicht geprüft.
Jedenfalls sollte man grundsätzlich diesen Inhaltstypen von der Editor-Bearbeitung ausschliessen.
Ich habe mir lange überlegt ob ich die Map getrennt aufbauen soll, also den Key, Geocode und Ansichtsgrösse als Variablen in den Rest einzufügen (mit einer entsprechenden *.tpl Datei). Doch es ging mir hier um einen wirklich einfachen und kinderleichten Einbau einer solchen Map...
Ohne das Modul muss man bei jeder Bearbeitung den gesamten Code neu einkopieren mitsamt Änderungen, weil sonst wie gesagt der Code "zerstört" wird. Das kann ich wohl mir zumuten, aber ist m.E. sehr unsauber und für Dritte kein Weg.
Danke für die Kritik, ich bin wirklich um jeden Ansatz froh, denn bei solchen Fragen lerne ich ja etwas. Die Frage ist ja auch berechtigt ("ginge es nicht einfacher?"), wäre ev. auch mein erster Gedanke gewesen, wenn ein anderer sowas vorgestellt hätte.
Ich habe doch schon einiges lernen können was geht und was nicht so gut machbar ist, aber das WARUM ist oft noch eine grosse Unbekannte.
Gruss
Fredi
P.S. du hast natürlich irgendwo recht, wenn du sagst dass dies auch ohne Modul möglich wäre. Aber hier käme dann schon gestellte Frage nach der Sicherheit. Dann müsste ich ja wirklich für den Inhaltstypen Page oder Story das Full-HTML zulassen. So habe ich eine klare Trennung zwischen diesem "Admin-Artikel" und den anderen möglichen Eingaben. Zudem muss ich ja auch den Editor ausschliessen...
gMao
am 04.05.2009 - 09:14 Uhr
Wenn man den Code direkt in einen Artikel schreibt so kann man diesen zwar so zum laufen bringen, möchte man aber die Mapgrösse oder sonstwas bearbeiten ist der Code defekt beim 2. abspeichern
Hm, konnte ich bei mir noch nicht feststellen. Ich kann die Parameter der Map beliebig bearbeiten und abspeichern.
Jedenfalls sollte man grundsätzlich diesen Inhaltstypen von der Editor-Bearbeitung ausschliessen.
Da spricht ja nichts dagegen.
Ohne das Modul muss man bei jeder Bearbeitung den gesamten Code neu einkopieren mitsamt Änderungen,
Siehe oben ...
Danke für die Kritik, ich bin wirklich um jeden Ansatz froh, denn bei solchen Fragen lerne ich ja etwas.
Das war nicht als Kritik gemeint, sondern als (ernstgemeinte) Frage. Das Modul nimmt mir (so seh ich das jedenfalls) nur den Schritt der Erstellung eines neuen Inhaltstypen ab :-).
Ich habe doch schon einiges lernen können was geht und was nicht so gut machbar ist, aber das WARUM ist oft noch eine grosse Unbekannte.
Und genau für solche Erfahrungen ist es m.E. wichtig, solche Module zu schreiben. Egal, ob sie nun Sinn machen, oder nicht :-).
Wichtig ist der Lerneffekt.
Dann müsste ich ja wirklich für den Inhaltstypen Page oder Story das Full-HTML zulassen.
Nö, Du hast ja dafür einen speziellen Inhaltstypen, der nur für diesen Zweck erstellt wird. Page und Story haben andere Aufgaben.
hth,
Stefan
--
2 Personen mit Halbwissen sind schlimmer als Einer, der gar nichts weiss.
Frage...
am 04.05.2009 - 09:54 Uhr
Hallo Stefan,
Ich möchte nochmal kurz antworten.
Zu deinen Versuchen:
arbeitest du mit fck- oder dem tinyeditor, die Probleme mit der Umschreibung des Codes bei der Bearbeitung traten vor allem damit auf (mit "page" als Inhaltstyp). Wie gesagt ob es ohne Editor geht habe ich nicht explizit getestet.
Inhaltstyp:
Das ist ja auch die angedachte Funktionalität des ganzen Modules, es soll einfach einen Inhaltstypen bereitstellen, der keine weiteren Aufwände benötigt.
Kritik:
habe mich wohl etwas kompliziert ausgedrückt, ich fand deine Frage pragmatisch. Also auch wenn ich es Kritik nannte, so meine ich das im positiven Sinne.
Page/Story:
Da stehe ich jetzt wohl auf dem Schlauch. Wie meinst du das, dass ich weder Page noch Story benötigen würde. Wenn ich kein Map-Modul installiert habe, so muss ich doch Page oder Story verwenden?
Oder habe ich dich hier falsch verstanden?
Das "Modul" soll ja auch nicht unbedingt öffentlich gemacht werden, gerade weil der Nutzen nur so klein ist. Dies war - wie du wahrscheinlich vermutest - als erster Test für mich gedacht, auch wenn das Modul "nutzlos" :-) ist.
Gruss
Fredi
Inhaltstypen
am 04.05.2009 - 09:59 Uhr
arbeitest du mit fck- oder dem tinyeditor, die Probleme mit der Umschreibung des Codes bei der Bearbeitung traten vor allem damit auf (mit "page" als Inhaltstyp). Wie gesagt ob es ohne Editor geht habe ich nicht explizit getestet.
Ich habs mit beiden Editoren versucht und auch ohne. Funktioniert jedes Mal.
Page/Story:
Da stehe ich jetzt wohl auf dem Schlauch. Wie meinst du das, dass ich weder Page noch Story benötigen würde. Wenn ich kein Map-Modul installiert habe, so muss ich doch Page oder Story verwenden?
Nö. Du kannst Dir doch beliebig viele eigene Inhaltstypen erstellen:
admin/content/types/add
. Ohne CCK ist man zwar bei den Feldern etwas limitiert, aber es funktioniert.Stefan
--
2 Personen mit Halbwissen sind schlimmer als Einer, der gar nichts weiss.
Inhaltstypen
am 04.05.2009 - 10:15 Uhr
Hallo Stefan,
da hast du natürlich recht, dass man weitere Inhaltstypen erstellen kann. Ich meinte damit eigentlich, dass es bei der Grundinstallation nur diese beiden Typen gibt und dass es Aufwand erfordert...
(bei meinen Aussagen nahm ich immer den User ohne irgendwelche Kenntnisse an.)
Das mit den Editoren kann ich mir nicht erklären, vielleicht liegt es an der Drupal Version, weil inzwischen anstatt des damals installierten 6.8 die Vers. 6.11 läuft. Ich könnte nicht mal mehr sicher sagen, ob es ev. auch nur in der 5.6er Version so war.
Wenn das nicht mehr auftritt umso besser...
Ich fand die Diskussion sehr interessant und für mich sehr informativ.
Gruss und schönen Dank für deine Zeit, die du sicher auch nicht im Überfluss übrig hast :-)
Fredi