diff -upr ../work/signup/includes/signup_cancel.inc signup/includes/signup_cancel.inc --- ../work/signup/includes/signup_cancel.inc 2009-01-24 19:10:58.000000000 -0800 +++ signup/includes/signup_cancel.inc 2009-10-11 16:20:53.325584112 -0700 @@ -9,6 +9,20 @@ function signup_cancel_signup_page($signup, $token) { if (signup_valid_token($token, $signup->sid, 'cancel')) { + // Logic for checking cancel time window + $node = node_load($signup->nid); + // Check permissions. + $admin = _signup_menu_access($node, 'admin'); + $open = !_signup_node_completed($node); + $can_cancel = $admin || $open; + if (!$can_cancel) { // check if signups closed + // page for closed signups + $type = 'tab'; // 'node'? 'tab'? 'admin'? + module_load_include('inc', 'signup', 'includes/node_output'); + $current_signup = _signup_render_signup_edit_form($signup, $type); + return theme('signup_signups_closed', $node, $current_signup); + } + return drupal_get_form('signup_cancel_link_confirm_form', $signup->sid); } drupal_set_message(t('Invalid link to cancel a signup.'), 'error'); diff -upr ../work/signup/includes/signup_edit_form.inc signup/includes/signup_edit_form.inc --- ../work/signup/includes/signup_edit_form.inc 2009-09-18 17:33:42.000000000 -0700 +++ signup/includes/signup_edit_form.inc 2009-10-11 16:19:33.000000000 -0700 @@ -30,8 +30,9 @@ function signup_edit_form($form_state, $ // Check permissions. $admin = _signup_menu_access($node, 'admin'); $own = !empty($user->uid) && $user->uid == $signup->uid; - $can_cancel = $admin || (user_access('cancel own signups') && $own); - $can_edit = $admin || (user_access('edit own signups') && $own); + $open = !_signup_node_completed($node); + $can_cancel = $admin || (user_access('cancel own signups') && $own && $open); + $can_edit = $admin || (user_access('edit own signups') && $own && $open); if ($type == 'admin') { $title = t("Information for !user's signup to !node", array('!user' => _signup_get_username($signup, TRUE), '!node' => l($node->title, 'node/'. $node->nid))); diff -upr ../work/signup/modules/signup_confirm_email/signup_confirm_email.inc signup/modules/signup_confirm_email/signup_confirm_email.inc --- ../work/signup/modules/signup_confirm_email/signup_confirm_email.inc 2009-09-20 23:56:40.000000000 -0700 +++ signup/modules/signup_confirm_email/signup_confirm_email.inc 2009-10-11 16:17:57.000000000 -0700 @@ -30,7 +30,8 @@ function signup_confirm_email_alter_sign $node = node_load($signup->nid); $admin = _signup_menu_access($node, 'admin'); $own = !empty($user->uid) && $user->uid == $signup->uid; - $can_edit = $admin || (user_access('edit own signups') && $own); + $open = !_signup_node_completed($node); + $can_edit = $admin || (user_access('edit own signups') && $own && $open); if (!$can_edit) { return; }