跳转到主要内容
东方龙马 提交于 25 June 2009
在annotate模块中,我们给了管理员以设置哪些节点类型可以支持注释功能的权限。(如图2-1)。现在让我们深入了解一下其工作原理吧。   当一个网站管理员想要改变对annotata模块的设定的时候,我们就要显示一个表单,好让他对我们提供的选项进行选择。在我们的菜单项中,我们将page callback指向了drupal_get_form()函数,并将page arguments设置成一个包含了annotate_admin_settings的数组。这意味着。当用户访问http://example.com/?q=admin/annotate/settings的时候就会调用drupal_get_form ('annotate_admin_settings')函数,这个过程就是让Drupal建立annotate_admin_settings()函数所定义的表单的过程。   让我们看一下这个函数,它定义了一个关于节点类型的复选框(见图2-1),以及添加了另外两个可选择性区域。它就在sites/all/modules/ custom/annotate/annotate.a- dmin.inc文件中(黑体部分为现在要添加的):   /** * Form builder. Configure annotations. * * @ingroup forms * @see system_settings_form(). */   function annotate_admin_settings() { // Get an array of node types with internal names as keys and // "friendly names" as values. E.g., // array('page' => 'Page', 'story' => 'Story') $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('page')), '#description' => t('A text field will be available on these content types to make user-specific notes.'), );   $form['annotate_deletion'] = array( '#type' => 'radios', '#title' => t('Annotations will be deleted'), '#description' => t('Select a method for deleting annotations.'), '#options' => array( t('Never'), t('Randomly'), t('After 30 days') ), '#default_value' => variable_get('annotate_deletion', 0)  // Default to Never );   $form['annotate_limit_per_node'] = array( '#type' => 'textfield', '#title' => t('Annotations per node'), '#description' => t('Enter the maximum number of annotations allowed per node (0 for no limit).'), '#default_value' => variable_get('annotate_limit_per_node', 1), '#size' => 3 );   return system_settings_form($form); }   我们增加了一个单选按钮让用户选择何时删除这个注释,还有一个文本输入区来限制注释所能输入的字符数量(在模块中实现这些就作为一个练习留给你吧)。我们没有直接管理我们表单的流程,而是调用了system_settings_form()函数来让系统加了几个按钮来对表单进行管理验证和提交。图2-4显示了表单现在应该是个什么样子:      图2-4 使用了复选框、单选键、文本设置区的表单
Taxonomy upgrade extras