[Contribution to Doc] Generate SSH keys (Windows/msysgit)

-

http://drupal.org/node/1066762/revisions/view/1363182/1365204

Log:
1. as of 2011-02-22, msysgit Git-1.7.4-preview20110204.exe use /u instead of /c/Doc...
2. change of location "Add a public key"
3. After 28 Feb 2011, Git migration, the location of "Add a public key" changes again

改變 form 的 template

這次修改的是 views 的 exposed form
需要比較大的修改便想要使用 tpl 而不使用 template.php
舊文 form 也可以使用template (*.tpl.php)也有說明, 但已經不是 Drupal6.x 作法了

以下更新為 Drupal6.x 的作法:
先自建一個模組, 使用 hook_theme
定義如下:

<?php
function mymodule_theme($existing, $type, $theme, $path) {
  return array(
   
//form id
   
'form_id' => array(
     
'arguments' => array('node' => NULL),
     
'template' => 'search_form', //表示使用 search_form.tpl.php
   
),
  );
}
?>

重點在於提供一個 template 的值, 你便可以在該 tpl 檔使用 <?php $form; ?>
再使用 <?php drupal_render($form['title']); ?> 之類完成 form 的 各欄位和 html 碼

最後, 實作的時候記得清緩存就可以了

查找一個選單的欄位的可選項 Get display values of a dropdown list

在 views 的 $views->exposed filter 可以提取已經提交的表單值
但除了值之外, 一般還需要欄位的其他資料,
例如欄位旳值和顯示值不一樣的時候,

可以使用:

<?php
//field_hotel_group 是欄位名
$mappings = optionwidgets_options(content_fields('field_hotel_group'));
?>

可得到類似:

你便可以自己再處理了


You can get the value of view's exposed filter value by $views->exposed filter
But other than value, the display value is also needed
Especially when the submit value is not the same as display value:

Actually you can use:

<?php
//field_hotel_group is the field name
$mappings = optionwidgets_options(content_fields('field_hotel_group'));
?>

and you will obtain:

and then you can map back those values for your own use.
AttachmentSize
Image icon form-options-sample.JPG25.1 KB
Image icon form-options.JPG27.49 KB

[Contribution to Doc] Webform confirmation page

需要修改 webform 模組的完成頁面,
而且需要根據 webform 的內容客製化,
例如 "感謝[firstname] [lastname] 的聯絡, 我們會盡快回覆."
Google 一下, 找到 Confirmation Page Usage of Form Components or Variables

但根據了指示仍不得要領, 發現了一個 bug,
webform.submissions.inc 的路徑改變了, 所以就成就了以下的修改
http://drupal.org/node/600696/revisions/view/738336/1354722

2011-02-07 為 form 增加新的 validation 規則

hook_form_alter() 本來是為了修改 form 的各種屬性
例如增加欄位, 修改欄位的預設值等等
但其實還可以增加 validation 規則和增加提交後的處理

增加 validation 規則:

<?php
function mymodule_form_alter(&$form,$form_state, $form_id) {
  if(
$form_id=='user_register') { //只是一個例子, 你可以填入需要的 form id
    //為 #validate 陣列增加一個元素, 元素的值就是新的 validate 函數名
   
$form['#validate'][] = 'mymodule_new_user_register_validation';
  }
}

//然後定義新的 validate 函數, 帶入兩個參數
function mymodule_new_user_register_validation($form, &$form_state) {
 
//$form_state['values'] 儲存用戶提交的數據
 
if(strpos('admin',$form_state['values']['username'])===false) {
   
//用戶名字不可以有 admin 的字眼
   
form_set_error('username', '用戶名字不可以有 admin 的字眼');
  }
}
?>

增加提交後的處理:

<?php
function mymodule_form_alter(&$form,$form_state, $form_id) {
  if(
$form_id=='user_register') {
   
//為 #submit 陣列增加一個元素, 元素的值就是新的提交後處理函數
   
$form['#submit'][] = 'mymodule_new_user_register_submit';
  }
}

//然後定義新的 validate 函數, 帶入兩個參數
function mymodule_new_user_register_submit($form, &$form_state) {
 
//$form_state['values'] 儲存用戶提交的數據
 
drupal_set_message('Welcome, '.$form_state['values']['username']);
}
?>

相關:
Drupal form API
hook_submit, hook_form_alter, hook_validate in Drupal 6.x

Pages

Google