Frage zu Eingabeformaten...[gelöst]
am 25.04.2009 - 11:20 Uhr in
Hallo zusammen,
ich habe mich jetzt doch etwas schlauer lesen können und möchte meine Frage hier nochmal versuchen verständlich einzustellen.
Ich schreibe an einem Modul, das eigentlich nichts weiter als einen Titel (Text) und einen Body aus HTML und Text enthält.
Nun zu meinem Problem:
Nachdem ich alles nötige erstellen konnte, auch das Formular und ein eigener Inhaltstyp erstellt habe (nicht geerbt) und dazu die *.install Datei für die DB auch funktioniert, komme ich einfach nicht mehr weiter.
Meine Idee war dass ich einen Google-Map Code (einer öffentlichen Map) mitsamt dem HTML-Markup in einen Artikel einstelle, dies funktioniert auch wenn ich den Code in eine Page oder Story stelle, nur bei meinem eigenen Datentypen kriege ich es nicht hin, die Eingabe mit dem Filter "Full-HTML" zu verwenden.
Kann mir jemand vielleicht einen Denkanstoss geben, das wäre wirklich sehr hilfreich...
Das Modul besteht momentan aus folgenden Inhalten, Fehler sind gut möglich und dieses Beispiel ist auch noch nicht ganz vollständig.
Erstmal die "normale" *.info wo das "mapdrei" angemeldet wird bei Drupal.
Dann die *.install:
<?php
// $Id$
function mapdrei_install() {
drupal_install_schema('mapdrei');
}
function mapdrei_uninstall() {
drupal_uninstall_schema('mapdrei');
}
function mapdrei_schema() {
$schema['mapdrei'] = array(
'description' => t("Make a Map with the public Google Map."),
'fields' => array(
'nid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
'description' => t('The Map {node}.nid')
),
'vid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
'description' => t('The Map {node_revisions}.vid')
),
'maptext' => array(
'type' => 'text',
'not null' => TRUE,
'description' => t('Code from the Map.')
),
),
'primary key' => array(nid),
'unique keys' => array(
vid => array('vid')
),
);
return $schema;
}
Die *.module
<?php
// $Id$
function mapdrei_perm() {
return array('create mapdrei entry', 'delete mapdrei entry', 'edit mapdrei entry', 'view mapdrei entry');
}
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 entry', $account) && $account->uid ? TRUE : NULL;
case 'update':
return user_access('edit mapdrei entry', $account) || (user_access('edit mapdrei entry', $account) && ($node->uid == $account->uid)) ? TRUE : NULL;
case 'delete':
return user_access('delete mapdrei entry', $account) || (user_access('delete mapdrei entry', $account) && ($node->uid == $account->uid)) ? TRUE : NULL;
case 'view':
return user_access('view mapdrei entry') == TRUE;
}
}
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;
}
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('Mapcode'),
'min_word_count' => 5,
'locked' => FALSE
)
);
}
function mapdrei_form($node) {
$type = node_get_types('mapdrei', $node);
$form['title'] = array(
'#type' => 'textfield',
'#title' => t('Google Map'),
'#required' => TRUE,
'#default_value' => $edit['title'],
'#weight' => -5,
'#maxlength' => 100
);
$form['gtext'] = array(
'#type' => 'textarea',
'#title' => t('write or paste the Code'),
'#default_value' => $edit['gtext'],
'#rows' => 7,
'#required' => TRUE,
);
return $form;
}
Und hier die admin.inc.php, ich glaube hier müsste wohl noch etwas anders gemacht werden?!?
<?php
// $Id$
function mapdrei_admin_settings() {
node_set_types('mapdrei', 'MapDrei');
$options = node_get_types('names');
$form['mapdrei_node_types'] = array(
'#type' => 'hidden',
'#title' => t('Please activate the checkbox for a new Google public map'),
'#default_value' => variable_get('mapdrei_node_types', array('mapdrei', 2)), //Hier noch ev. etwas ändern...
'#description' => t(''),
'#value' => drupal_get_form('mapdrei_entry_form', $form)
);
return $form;
}
Das Problem ist einfach, dass ich die Map nicht richtig (Markup wird vom filtered-HTML entfernt???)
angezeigt bekomme, weil anscheinend der Filter "filtered-HTML" angewendet wird, was mache ich da falsch??
Oder anders gefragt; wäre es besser, ich würde den HTML-Markup getrennt einfügen und Felder für Namen, Längen- und Breitengrad, Abo-Key usw. einzeln anlegen würde??
Vielen Dank für eure Hilfe, wäre wirklich nett wenn mir jemand wenigstens die Funktion oder Variablen nennen könnte, die fehlen oder falsch sind...
Gruss
Fredi
P.S. ich musste die Kommentare zur Funktionsbeschreibung leider entfernen, diese wurden falsch dargestellt!
- Anmelden oder Registrieren um Kommentare zu schreiben
zu kommentaren <code><?php
am 25.04.2009 - 12:07 Uhr
zu kommentaren
<code>
<?php
// foobar
?>
Damit geht es doch. Nu gut auf zu deinem Problem:
<?php
function mapdrei_form($node) {
$type = node_get_types('mapdrei', $node);
$form['title'] = array(
'#type' => 'textfield',
'#title' => t('Google Map'),
'#required' => TRUE,
'#default_value' => $edit['title'],
'#weight' => -5,
'#maxlength' => 100
);
$form['gtext_filter']['gtext'] = array(
'#type' => 'textarea',
'#title' => t('write or paste the Code'),
'#default_value' => $edit['gtext'],
'#rows' => 7,
'#required' => TRUE,
);
$form['gtext_filter']['format'] = filter_form(FILTER_FORMAT_DEFAULT);
return $form;
}
?>
s.h. z.B. http://api.drupal.org/api/function/comment_form/6
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.de
SirFiChi ist auch dein Halbgott.
danke...:-)
am 25.04.2009 - 15:47 Uhr
Hallo,
vielen Dank für den Code, genau das habe ich gesucht und kam einfach nicht weiter.
das werde ich bestimmt nicht wieder vergessen :-)
Noch zu den "Kommentaren", ich meinte damit die Funktionskommentare:
/**
*
*/
Gruss
Fredi
ah stimmt da war eiin
am 25.04.2009 - 18:58 Uhr
ah stimmt da war eiin Bug.
Vlt könnte man hier den Geshi Filter installieren.
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.de
SirFiChi ist auch dein Halbgott.
Super...
am 27.04.2009 - 09:45 Uhr
Hallo,
ich habe den Code nun eingebaut und siehe da; ich bekomme wirklich das Formular für die Eingabetypen angezeigt.
Es ist mir bewusst, dass man eigentlich keine Markup oder sonstige Codes in die Eingabe einbeziehen sollte, aber da die Anfahrt gewöhnlich ein Artikel vom Admin selber ist sollte es mit der Sicherheit keine allzu grossen Hürden geben.
Es geht mir erstmal darum, mehr Routine mit Drupal zu bekommen...
Du hast mir echt sehr geholfen!
Danke und Gruss
Fredi