[gelöst] Zugang zu eigenem Modul verweigert

am 28.02.2013 - 11:15 Uhr in
Guten Tag Zusammen
Ich bin nahe am Wutausbruch, wäre froh wenn mir jemand helfen könnte.
Um mich mit der Modulentwicklung vertraut zu machen habe ich ein kleines Tutorial nachgemacht, welches allerdings für Drupal 6 entwickelt wurde, aber es sollte auch in Drupal 7 funktionieren.
Was läuft falsch?
Wenn ich den Pfad .../admin/config/system/annotate aufrufe, erscheint die Meldung, «Sie haben keine Zugriffsberechtigung für diese Seite.» Drupal findet das Modul also unter diesem Pfad, verweigert mir aber den Zugriff. Die acces-arguments meines Menu-Hooks habe ich schon etliche mal geändert,,, nichts hilft.... Was ist falsch?
annotate.info
name = Annotate
description = Anmerkungen von Benutzern zu Nodes
core = 7.x
package = Drupal Entwickler Buch
annotate.module
function annotate_menu() {
$items['admin/config/system/annotate'] = array(
'title' => 'Anmerkungen',
'description' => 'Konfigurieren Sie die Anmerkungen.',
'page callback' => 'drupal_get_from',
'page arguments' => array('annotate_admin_settings'),
'acces arguments' => array('administer site configuration'),
'type' => MENU_NORMAL_ITEM,
'file' => 'annotate.admin.inc',
);
return $items;
}
annotate.admin.inc
function annotate_admin_settings(){
$options = node_get_types('names');
$form['annotate_node_types'] = array(
'#type' => 'checkboxes',
'#title' => t('Users may annotate these content types'),
'#options' => $options,
'#default_value' => variable_get('annotate_node_types', array('article')),
'#description' => t('A text field will be available on these content types to make user-specific notes.'),
);
return system_settings_form($form);
}
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo, du hast da einen
am 28.02.2013 - 13:52 Uhr
Hallo,
du hast da einen Buchstabendreher drinnen:
'page callback' => 'drupal_get_from',
muss
'page callback' => 'drupal_get_form',
heissen.
Gruß
Christian
Vielen Dank Christian für den
am 28.02.2013 - 14:10 Uhr
Vielen Dank Christian für den Hinweis (Schreibfehler,,, peinlich peinlich), leider besteht aber immer noch dieselbe Situation, dass unter ...admin/config/system/annotate «Zugriff verweigert» kommt. Ich bin ja als Admin eingeloggt und die acces arguments stimmen auch. Cache wurde komplett gelöscht, Cron mehrmals ausgeführt. Stimmt sonst noch etwas nicht?
Du hast NOCH einen
am 28.02.2013 - 14:39 Uhr
Du hast NOCH einen Schreibfehler drin:
acces arguments
könnte noch ein "s" mehr vertragen.Beim Programmieren ist es nun mal enorm wichtig, dass jedes einzelne Zeichen korrekt ist - da gibt's einfach keine Fehlertoleranz im Code! Computer sind nun mal keine Menschen, die sowas beim Lesen intern korrigieren.
Ich bin jetzt auch nichr der
am 28.02.2013 - 14:43 Uhr
Ich bin jetzt auch nichr der große Modulentwickler aber im Beispiel von "Pro Drupal 7 Development" schaut das schon anders aus:
function annotate_menu() {
$items['admin/config/annotate'] = array(
'title' => 'Node annotation',
'description' => 'Adjust node annotation options.',
'position' => 'right',
'weight' => -5,
'page callback' => 'system_admin_menu_block_page',
'access arguments' => array('administer site configuration'),
'file' => 'system.admin.inc',
'file path' => drupal_get_path('module', 'system'),
);
$items['admin/config/annotate/settings'] = array(
'title' => 'Annotation settings',
'description' => 'Change how annotations behave.',
'page callback' => 'drupal_get_form',
'page arguments' => array('annotate_admin_settings'),
'access arguments' => array('administer site configuration'),
'type' => MENU_NORMAL_ITEM,
'file' => 'annotate.admin.inc',
);
return $items;
}
function annotate_admin_settings() {
// Get an array of node types with internal names as keys and
// "friendly names" as values. E.g.,
// array('page' => 'Basic Page', 'article' => 'Articles')
$types = node_type_get_types();
foreach($types as $node_type) {
$options[$node_type->type] = $node_type->name;
}
$form['annotate_node_types'] = array(
'#type' => 'checkboxes',
'#title' => t('Users may annotate these content types'),
'#options' => $options,
'#default_value' => variable_get('annotate_node_types', array('page')),
'#description' => t('A text field will be available on these content types
to make user-specific notes.'),
);
Eieieieiei vielen Dank, und
am 28.02.2013 - 14:49 Uhr
Eieieieiei vielen Dank, und sorry für die schlechte Qualität dieses Codes, das nächste Mal durchleuchte ich jeden einzelnen Buchstaben bevor ich es ins Netz stelle.
Die komplette Auflösung:
node_get_types funktioniert in D7 nicht, node_type_get_names wäre korrekt, und nun funzt es auch. VIelen Dank, ein hoch auf die Community!
Gruss Feanor
Oteno Danke dir für dein
am 28.02.2013 - 14:55 Uhr
Oteno Danke dir für dein Posting, ich besitze leider nur das deutsche Entwicklerhandbuch (D6), und in deinem Buch wurde wohl ein ähnliches Beispiel verwendet, was zeigt dass das Standardwerk von John K. VanDyk immer noch die Bibel unter den Drupal-Büchern ist :) Aber am besten lege ich mir Pro Drupal 7 Development auch noch zu.
PS: Mein Modul ist auch noch nicht fertig, erst die Auswahl wurde definiert, und JETZT gehts weiter.
Gruss Feanor
Ja das Buch ist schon ganz
am 28.02.2013 - 15:08 Uhr
Ja das Buch ist schon ganz grundlegend, aber "The Definitive Guide to Drupal 7" (auch Apress) sollte man sich auch mal anschauen, finde ich noch praxisorientierter...
Gruß
Christian
(nicht vergessen, den Thread auf [gelöst] zu stellen)