您在這裡

Signup + Signup status + Signup schedualer

annting's 的頭像
annting 在 2008-05-23 (週五) 22:41 發表
模組介紹: 

這是一個可以提供報名(報到?)功能的模組。如果不想用webform那麼複雜的模組,signup絕對是你的選擇。為什麼要三個一起介紹?因為單是signup,功能有點陽春,要搭上Signup status 和 Signup schedualer 這兩個附加模組才有意思。

先說signup。他可以讓某個節點具有報名(signup, 暫譯)的功能,使用者報名之後,會寄一封確認電子郵件給報名者;接著在活動的前一天,如果有cron功能,會再寄一封提醒信件。具有管理這個節點的使用者,可以在節點上看到所有報名此活動的列表。
那麼,如果要分清楚,例如說,哪些人備取,哪些人正取呢?那就要用到 signup status了。在signup status中,可以訂定幾個status code,然後決定是使用者報名時一開始的狀態,或是讓使用者自己選,或是事後由管理者改變。接著,可以選擇當改變報名使用者的狀態時,寄一封電子郵件通知使用者。然後,在節點的管理頁,可以列出所有報名者的資料與狀態。
最後,假如要讓活動報名在某時間自動開啟、關閉呢?那就是signup schedualer的功能了。很簡單的,在決定這個節點具有報名功能時,就可以決定開啟與關閉報名的時間。這需要有cron來支持。

http://drupal.org/project/signup_status
http://drupal.org/project/signup_scheduler

模組分類:

模組版本:

回應

是的,如果選的是"simple signup",只有這些選項。
如果你要用這三個模組來做報名,提供葷素、交通狀態...等等這些選項的話,就必須用別的思考方式。
例如,你用"item"選項,雖然他的意思是「參加者要提供的」,不過你可以反過來說是「可以提供給參加者的」,把葷素這些加在「項目」裡,名額設大一些,就可以讓使用者在報名時選擇「提供的物品」--其實是提供給參加者的物品。英文改不了,不過你可以自己在翻譯時把這些詞句改成適合的意思。

我是MIS,略懂mail、http、dns、proxy server
習慣使用redhat系列linux
debian系列摸索中...

呼哇,超讚的,想不到可以應用到這種程度~~
問一下,課程列表應該是使用views拿出來的吧,可是後面的「我要報名」你是怎麼做的?

我是MIS,略懂mail、http、dns、proxy server
習慣使用redhat系列linux
debian系列摸索中...

自己回。

權限控制有四項:
administer all signups
administer signups for own content
sign up for content
view all signups

INSTALL.txt講得不一樣。

而且一定要開啟administer all signups,該role的會員才能在發表文章時設定讓大家報名,且能編輯所有報名(包含不是自己發表的)
但我希望是在這個內容分類的node都能報名。

真苦惱!

hanamizuki 您好
抱歉,我看不懂您的意思耶
我設定的地方有
1.
content type 的 signup 設定

2.權限控製

如果沒有回答到你想要的答案
請您在留言
謝謝您了

謝謝Nobody1225,
可能我們裝的版本不太一樣,我的是Drupal5,這是我裝的

然後signup有裝,signup status沒裝。

我的權限控制是這樣

有點耍笨了,因為你們討論的不是Event+Signup...真抱歉。
不過為何我的signup權限控制比較少呢?沒有cancel own signup, 好怪。

您好
我也是5.X版
您先裝 Signup + Signup status + Signup schedualer 這三個模組
就有那個權限了

Signup 可以讓您用在任何"內容類型" (包含 event,因為 event 也是"內容類型")

以下是我的作法:

新增內容類型
例如:想增加一個 courses 課程 內容類型
1.增加內容類型
管理 => 內容管理 => 內容類型 => 增加內容類型

2.編輯 活動訊息 分類
管理 => 內容管理 => 分類 => 編輯 活動訊息 分類

3.pathauto
管理 => 網站設定 => pathauto

4.增加欄位
管理 => 內容管理 => 內容類型 => 增加欄位

5.增加、啟動 signup 模組
管理 => 網站建置 => 模組

6.編輯 courses 課程 內容類型,啟用 signup 的支援 (Signup options)
管理 => 內容管理 => 內容類型 => 編輯 courses 課程 內容類型

7.增加 讀者填資料的欄位 "讀者備註"
修改 theme's template.php file

//修改 signup 模組
//增加 讀者填資料的欄位 "讀者備註"
function golden_hour_signup_user_form() {
global $user;

// This line is required for this form to function -- DO NOT EDIT OR REMOVE.
$form['signup_form_data']['#tree'] = TRUE;

$form['signup_form_data']['Name'] = array(
'#type' => 'textfield',
'#title' => t('借閱證號碼'),
'#size' => 40, '#maxlength' => 64,
//'#required' => true,
'#disabled' => true,
);
$form['signup_form_data']['Patron_Note'] = array(
'#type' => 'textarea',
'#title' => t('讀者備註'),
'#cols' => 40, '#rows' => 4,
'#description' => t('可以在此填入您的備註。無須備註的話,直接按下『報名』按鈕,即可報名。'),
);

// If the user is logged in, fill in their name by default.
if ($user->uid) {
$form['signup_form_data']['Name']['#default_value'] = $user->name;
}

return $form;
}

8.增加欄位 - 公告截止日期 field__52,為了放在 "訊息公告"
管理 => 內容管理 => 內容類型 => 增加欄位

9.修改 signup_scheduler.module 模組,因為 報名日期 都會變成 11-30-1990

/**
* Insert or Update
*/
裡的
$open = signup_scheduler_date_to_timestamp($node->signup_scheduler_open);
$close = signup_scheduler_date_to_timestamp($node->signup_scheduler_close);
替換成
$open = $node->signup_scheduler_open;
$close = $node->signup_scheduler_close;

10.修改 signup\signup.module 模組,讓線上報名區塊,不要顯示,已報名的個人資料
將 以下這段 註解掉
/* ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
*
* 讓線上報名區塊,不要顯示,已報名的個人資料
*
* ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
// If the user has the view signups perm, display the current signups.
// Pull all users signed up for this event, and start table creation.
if (user_access('view all signups')) {
$registered_signups = db_query("SELECT u.uid, u.name, s.signup_time, s.form_data FROM {signup_log} s INNER JOIN {users} u ON u.uid = s.uid WHERE s.nid = %d AND u.uid <> 0", $node->nid);
$anon_signups = db_num_rows(db_query("SELECT anon_mail FROM {signup_log} WHERE nid = %d AND uid = 0", $node->nid));
$header = array(array('data' => t('!users signed up', array('!users' => format_plural((db_num_rows($registered_signups) + $anon_signups), '1 individual', '@count individuals')))));
$rows = array();
while ($signed_up_user = db_fetch_object($registered_signups)) {
$rows[] = array(theme('username', $signed_up_user));
}
if ($anon_signups) {
$rows[] = array(t('!count anonymous', array('!count' => $anon_signups)));
}
$output .= theme('table', $header, $rows);
}
*/

11.增加 signup_user_list 的 views
檔案在 http://drupal.org/node/243035#comment-994747
243035_signup_user_list.view-php.8.txt 1.82 KB

嗯!裝成功了,不過有個截止時間的問題。
這個截止設定不會在一般會員發新文章的時候出現耶!只會在編輯文章的時候出現。
另外有辦法讓他跟Event的結束時間結合嗎?
Event的End Day一到,就不能再Signup了。

這是我的code,沒什麼特別。

function phptemplate_signup_user_form($node = NULL) {

global $user;

// This line is required for this form to function -- DO NOT EDIT OR REMOVE.
$form['signup_form_data']['#tree'] = TRUE;
$default_product_value = '鹿肝50gx2
花肝x6
';

$form['signup_form_data']['真實姓名'] = array(
'#type' => 'textfield',
'#title' => t('真實姓名'),
'#size' => 40, '#maxlength' => 64,
'#required' => true,
);
$form['signup_form_data']['聯絡電話'] = array(
'#type' => 'textfield',
'#title' => t('聯絡電話'),
'#size' => 40, '#maxlength' => 64,
'#required' => true,
);
$form['signup_form_data']['要的商品'] = array(
'#type' => 'textarea',
'#title' => t('要的商品'),
'#default_value' => $default_product_value,
'#description' => t('產品名稱x數量(每行一個)'),
'#size' => 40, '#maxlength' => 64,
'#required' => true,
);
$form['signup_form_data']['小計'] = array(
'#type' => 'textfield',
'#title' => t('自己算小計'),
'#size' => 40, '#maxlength' => 64,
'#required' => true,
);
$form['signup_form_data']['面交時間'] = array(
'#type' => 'textarea',
'#title' => t('面交時間'),
'#description' => t('根據主購的面交說明填寫方便的面交時間'),
'#size' => 20, '#maxlength' => 64,
);
$form['signup_form_data']['是否郵寄'] = array(
'#type' => 'checkbox',
'#title' => t('是否郵寄?'),
'#default_value' => $node->signup_send_confirmation,
'#description' => t('記得看清楚主購說的郵資喔!若有勾選的話,請填寫下列表單。'),
);

$form['signup_form_data']['收件姓名'] = array(
'#type' => 'textfield',
'#title' => t('收件姓名'),
'#size' => 40, '#maxlength' => 64,
);
$form['signup_form_data']['收件電話'] = array(
'#type' => 'textfield',
'#title' => t('收件電話'),
'#size' => 40, '#maxlength' => 64,
);
$form['signup_form_data']['收件地址'] = array(
'#type' => 'textfield',
'#title' => t('收件地址'),
'#size' => 40, '#maxlength' => 64,
);

// If the user is logged in, fill in their name by default.
if ($user->uid) {
//$form['signup_form_data']['Name']['#default_value'] = $user->name;
}

return $form;
}

問題一:這個截止設定不會在一般會員發新文章的時候出現耶!只會在編輯文章的時候出現。
回答:我的有耶,你有開權限給一般會員嗎?

問題二:另外有辦法讓他跟Event的結束時間結合嗎?
回答:這問題也是困擾著我,有誰可以解決嗎?
如圖
"上課結束時間"是Event 的結束時間
"報名結束時間"是signup 的截止時間
但是 signup 的截止時間 只能幾年幾月幾日,沒有幾點幾分
所以現在都是 08:00

對不起
沒注意到您在2/13日有問問題
增加欄位要修改您的版型 theme's template.php file
例如
http://drupaltaiwan.org/module/signup_signup_status_signup_schedualer#co...
7.增加 讀者填資料的欄位 "讀者備註"
修改 theme's template.php file
function 您的版型名稱_signup_user_form() {
...

或者另外一個範例
http://drupaltaiwan.org/module/signup_signup_status_signup_schedualer#co...
function 您的版型名稱_signup_user_form($node = NULL) {
...

試試看吧

我想詢問報名欄位的資訊欄如果要增加一個欄位的話,就像以下的方式增加。
但是不用改寫入資料表。連同在報名時的處理?
----------------------------------------------------------------------------------------
$form['signup_form_data']['Patron_Note'] = array(
'#type' => 'textarea',
'#title' => t('讀者備註'),
'#cols' => 40, '#rows' => 4,
'#description' => t('可以在此填入您的備註。無須備註的話,直接按下『報名』按鈕,即可報名。'),
);
--------------------------------------------------------------------------------------------------------------------

照著上面的步奏的第七點不理解為什麼要於template.php新增讀者備註~
7.增加 讀者填資料的欄位 "讀者備註"
修改 theme's template.php file

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

nobody1225我大概懂你的意思了。就是不要修改模組,而是說能以template.php的方式。
就好像modules和site/all/modules那種感覺! (=_="對吧)
但我有疑問哦~如果有很多報名的資料類型,但是所需的欄位不同,是不是也能以template.php的方式來操作呢?
例:a課程報名(填得報名資訊只有1.2.3)
b課程報名(填得報名資訊只有1.2.3.4)

那麼它在template.php的方式是不是分別是如下方式呢?

a課程報名:function phptemplate_signup_course_a_form($node = NULL) { XXXX}

b課程報名function phptemplate_signup_course_b_form($node = NULL) { XXXX}

再請大家指點疑問。非常的感謝

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

是哦! 若我有結果會po上來的~因為最近也在弄這部份。
那nobody1225可再請教一些問題哦。
那像以template的的方式新增完一個新的欄位後。那在這個新欄位是不是得改那個地方將資料insert進入呢?(而你有寫入db這部份你是改那些的模組呢。
然後這樣子就也能node和看目前的報名人數後也新增加一個欄位了嘛?
-----------------------------------------------------------------------------------------------------------------
// If the user has the view signups perm, display the current signups.
// Pull all users signed up for this event, and start table creation.
if (user_access('view all signups')) {
$registered_signups = db_query("SELECT u.uid, u.name, s.signup_time, s.form_data FROM {signup_log} s INNER JOIN {users} u ON u.uid = s.uid WHERE s.nid = %d AND u.uid <> 0", $node->nid);

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

詢問使用者報了名後的信件通知問題。
(1)出現了Unable to send e-mail. Please contact the site administrator if the problem persists.(附圖1)
在smtp的架設是使用SMTP Authentication Support
而且在SMTP server settings還E-mail options都有設對,並且寄Send test e-mail也有到自已的信箱去~
並收到「主旨:Drupal test e-mail
If you receive this message it means your site is capable of sending e-mail.」

那如果我的上面發信的設定都沒問題的情況下~

那是我Signup模組設定的問題嘛?
還是因為
而且錯誤訊息指向 includes\form.inc on line 1328.
如附圖1328.png

>w<再請求解答~謝謝

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

於template中加入以下方式,在報名資訊無資加欄位。我是使用6版的signup
而且去signup模組中搜尋golden_hour_signup_user_form無這個部份說
>w<…

function golden_hour_signup_user_form() {
global $user;

// This line is required for this form to function -- DO NOT EDIT OR REMOVE.
$form['signup_form_data']['#tree'] = TRUE;

$form['signup_form_data']['Name'] = array(
'#type' => 'textfield',
'#title' => t('xxxx01'),
'#size' => 40, '#maxlength' => 64,
//'#required' => true,
'#disabled' => true,
);

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

我使用template的方式一直無法新增欄位。所以就找到直接修改signup的theme的signup_form.inc去新增了欄位。
覺得滿神奇的是…只是新增欄位就能讓資料寫入~也不用下db~…

那我現在剩寄信有問題了~~>w<尋求大家的幫忙了~~~

因為當使用者報了名後。結果出現如下畫面~
但是我系統管理員的寄收發信是正常的~~
如下
http://drupaltaiwan.org/module/signup_signup_status_signup_schedualer#comment-12691

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

新增了如下欄位~但~不知要如方式將所選的值於附圖中秀出~

$form['idcategory']['idcategory'] = array(
'#type' => 'radios',
'#title' => t('idcategory'),
'#required' => TRUE,
'#options' => array(
'0' => t('course01'),
'1' => t('course02'),
'2' => t('course03'),
),
'#default_value' => '1',
);

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

nobody1225謝謝您 >w<…想說都問無人了…
但是圖看不清楚>w<…

而且在cck的報名時間限定,不管怎設格式都會跑掉~

然後想詢問如附圖中的設定~是不是這個意思

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

了解~意思是指那裡填得應的要給管理者要看的訊息。

還有遇到一估新問題了~
如果使用者註冊才能報名

在註冊完使用者-->能收到一封確認信
但進入報名後-->有收到報名確認信,但是卻出現如附件的圖示~~(但只有報名後那裡才會跑這訊息)

而且學校的都能收到信~但是在gmail和yahoo就都收不到~~

也有看過自已的php.ini的設定
[mail function]
; For Win32 only.
SMTP = xx.xx.xx.xx
smtp_port = 25

; For Win32 only.
sendmail_from = jj@xxx.com.tw

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

想詢問像最近在做區塊中特定頁面顯示訊息~
但是使用了singup模組建立了內容類型,在裡面的「登入」的連結是連到以下這頁~

登入頁的連結是連到「/user/login?destination=node/8」

但正常應是/user這頁才是~~有人遇過這問題嘛?

因為我設區塊顯示特定頁面user/login?destination=node/8結果沒效用~

謝謝

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

我想請問大家都是用drupal6去安裝signup和他的輔助模組嗎?
因為schedular模組似乎沒有出drupal6的版本
這樣就看不出來他的作用在哪裡了
而我安裝了很多其他的輔助模組
可是像我在安裝"Signup integration for Ubercart"時
他顯示"Uc_product (missing), Ca (missing)"
但我有去查了沒有這兩種模組是怎麼一回事呢?

感覺很深奧呢ˊ ˋ
我看各位大大都好厲害QQ
是不是我太弱了((哭