📄 webform.module
字号:
} // Print the correct field type specification // We always need: name and description. $form .= form_hidden('webform_edited_type', $currfield['type']); $form .= form_hidden('webform_edited_key', $currfield['key']); $form .= form_textfield(t("Name"), "webform_edited_name", $currfield['name'], 60, 127, t('Name of the field. This is used as a descriptive label and as the key when saving data in the database.').($error['webform_edited_name'] ? $error['webform_edited_name'] : '')); $form .= form_textfield(t("Description"), "webform_edited_extra][description", $currfield['extra']['description'], 60, 127, t('A short description of the field used as help for the user when he/she uses the form.').'<br />'. webform_help('webform/helptext#variables'). ($error['webform_edited_extra'] ? $error['webform_edited_extra'] : '')); // Extra for textfield switch($currfield['type']) { case 'email': $form .= form_item(t('Default value'), NULL, t('The default value of a email field is always the users email address if he/she is logged in.')); $form .= form_textfield(t("Width"), "webform_edited_extra][width", $currfield['extra']['width'], 5, 10, t('Width of the textfield.'). ($error['webform_edited_extra'] ? $error['webform_edited_extra'] : '')); break; case 'textfield': $form .= form_textfield(t("Default value"), "webform_edited_default", $currfield['default'], 60, 127, t('The default value of the field.').'<br />'. webform_help('webform/helptext#variables'). ($error['webform_edited_default'] ? $error['webform_edited_default'] : '')); $form .= form_textfield(t("Width"), "webform_edited_extra][width", $currfield['extra']['width'], 5, 10, t('Width of the textfield.'). ($error['webform_edited_extra'] ? $error['webform_edited_extra'] : '')); break; case 'hidden': $form .= form_textfield(t("Default value"), "webform_edited_default", $currfield['default'], 60, 127, t('The value of the field.').'<br />'. webform_help('webform/helptext#variables'). ($error['webform_edited_default'] ? $error['webform_edited_default'] : '')); break; case 'textarea': $form .= form_textarea(t("Default value"), "webform_edited_default", $currfield['default'], 60, 5, t('The default value of the area.').'<br />'. webform_help('webform/helptext#variables'). ($error['webform_edited_default'] ? $error['webform_edited_default'] : '')); $form .= form_textfield(t("Width"), "webform_edited_extra][cols", $currfield['extra']['cols'], 5, 10, t('Width of the textarea.'). ($error['webform_edited_extra'] ? $error['webform_edited_extra'] : '')); $form .= form_textfield(t("Height"), "webform_edited_extra][rows", $currfield['extra']['rows'], 5, 10, t('Height of the textarea.'). ($error['webform_edited_extra'] ? $error['webform_edited_extra'] : '')); break; case 'select': $form .= form_textarea(t("Options"), "webform_edited_extra][items", $currfield['extra']['items'], 60, 5, t('Enter one option per line.').'<br />'. webform_help('webform/helptext#variables'). ($error['webform_edited_default'] ? $error['webform_edited_default'] : '')); $form .= form_textfield(t("Default value"), "webform_edited_default", $currfield['default'], 60, 127, t('The preselected value.').'<br />'. webform_help('webform/helptext#variables'). ($error['webform_edited_default'] ? $error['webform_edited_default'] : '')); $form .= form_checkbox(t('Multiple'), "webform_edited_extra][multiple", 'Y', ($currfield['extra']['multiple']=='Y'?TRUE:FALSE), t('Check this option if the user should be allowed to choose multiple values.')); $form .= form_checkbox(t('Listbox'), "webform_edited_extra][aslist", 'Y', ($currfield['extra']['aslist']=='Y'?TRUE:FALSE), t('Check this option if you want the select component to be of listbox type instead of radiobuttons or checkboxes.')); break; /* case 'explanation': $form .= form_textarea(t("Options"), "webform_edited_extra][items", $currfield['extra']['items'], 60, 5, t('Enter the explaination text.').'<br />'. webform_help('webform/helptext#variables'). ($error['webform_edited_default'] ? $error['webform_edited_default'] : '')); break; */ } // End switch if( isset($_POST['edit']) ) { $edit = $_POST['edit']; foreach($edit as $key => $value) { if( is_array($edit[$key]) ) { foreach($edit[$key] as $key2 => $value2) { if( !empty($value2) ) $form .= form_hidden("$key][".$key2, $value2); } } else if( !empty($value) ) { $form .= form_hidden($key, $value); } } } $form .= form_button(t('Done'), 'webform_edit_done'); $form .= t("<br>Warning: This button will accept your changes as sub-part of the edit. You will still have to select <b>'submit'</b> on the next screen to make your changes permanent."); print theme('page', form($form));}function _webform_process_submit(&$node, &$errors) { global $user, $base_url; include_once("webform.inc"); // Check referer to deny posting from of sites. if ( variable_get('webform_allow_cross_site_posting', 0) == 1) { $referer = parse_url( urldecode($_SERVER['HTTP_REFERER'])); $base = parse_url( urldecode($base_url.'/')); if ( $referer['scheme'] != $base['scheme'] || $referer['host'] != $base['host'] ) { // The submission didn't originate from our own domain, return false watchdog('webform', t('Trying to post to webform from external domain.'), WATCHDOG_WARNING, '<a href="'.$_SERVER['HTTP_REFERER'].'">'.t('Visit referer').'</a>'); drupal_set_message(t('You are not allowed to post to this form from an external domain.'), 'error'); return false; } } // Check to see if the user has right to use the webform if ( !user_access('use all webforms') ){ if( !(is_array($node->roles) && array_intersect($node->roles, array_keys($user->roles)) ) ) { $message = t("You are not allowed to submit data using this form."); drupal_set_message($message, 'error'); return false; } } // Handle posting to the form and output status. $reply = $_POST['edit']['submitted']; _webform_save_submission($node, $reply); $message = _webform_create_mailmessage($reply); if (isset($node->email)) { $node->email = strip_tags($node->email); if (!empty($node->email)) { // Build arrays of possible return email addresses and email subject lines from elements on the form // This is a duplicate of the code that creates the arrays for selection. $email_from_string = "From: ". mime_header_encode(variable_get('site_mail', "webmail@{$_SERVER['SERVER_NAME']}"))."\r\n"; $email_subject_string = t('Form submission from: ').' '.$node->title; if( is_array($node->webformcomponents_name) && !empty($node->webformcomponents_name)) { foreach($node->webformcomponents_name as $key => $name) { $type = $node->webformcomponents_type[$key]; //$value = $node->webformcomponents_value[$key]; if( $type == 'email' || $type == 'hidden' ){ if($name == $node->email_from){ $email_from_string = "From: ".mime_header_encode(strip_tags("$reply[$name]"))."\r\n"; } } if( $type == 'textfield' || $type == 'hidden' ){ if($name == $node->email_subject){ $email_subject_string = strip_tags("$reply[$name]"); } } } } $headers = $email_from_string; $headers .= "Date: ".date("r")."\r\n". "X-Mailer: Drupal Webform (PHP/" . phpversion().")"; user_mail($node->email, $email_subject_string, $message, $headers); } } if (variable_get('webform_debug', 0) >= 2) { drupal_set_message("<pre>$message</pre>"); } if (variable_get('webform_debug', 0) >= 1) { watchdog('webform', t('Submission posted to ')."'$node->title'.<br />\n".nl2br(htmlentities($message)), WATCHDOG_NOTICE); //TODO: Add reference back to submitted webform } return true;}function _webform_thanks() { if ( arg(2) ) { $node = node_load(array('nid' => arg(2))); if ( node_access('view', $node) ) { $node->body = check_output($node->confirmation, $node->format); drupal_set_title($node->title); print theme('page', theme('node', $node, FALSE, TRUE)); } else { drupal_access_denied(); } } else { drupal_not_found(); }}/** * function _webform_create_widget Constructs a widget out of form items. A widget may have multiple form items * as in the case of a select component. * @param $name The name of the component as used for the database table and the display * @param $type * @param $mandatory A boolean indicating that entry is mandatory ad will be policed. * @param $value * @param $extra * @param $err * @param $nid * @param $sid The Session ID to get the default values from or 0 or NULL to use the component defaults * @returns An HTML string sufficient to render the widget */function _webform_create_widget($name, $type, $mandatory, $value, $extra, $err = '', $nid = 0, $sid = 0) { global $user; $componentname = "submitted][$name"; if($sid && $nid){ // This widget is to be set with data that is a reflection of a current sid therefore we must harvest the data //$sid_record = _webform_print_csv_string($title_string,arg(2),'record',NULL,$sid); $sid_query = 'SELECT sd.sid as sid, sd.name as name, sd.data as data '. 'FROM {webform_submitted_data} sd '. "WHERE sd.nid = %d AND sd.sid = %d AND sd.name = '%s'"; $main_result = db_query($sid_query, $nid, $sid, $name); // Most components will return only a single entry from this query // multiple choice objects may not however, and require a linear array of default values //print "<p>Found " . db_num_rows($main_result) . " records for component: $name."; $recs = db_num_rows($main_result); if($recs > 1){ // Error! Can occur if component types are changed by editing after data has been submitted. // This error is currently ignored and only the first of such multiple values // will be used. } $record = db_fetch_object($main_result); $value = ($extra['multiple'] == 'Y') ? unserialize($record->data):$record->data; } switch($type) { case 'textarea': return form_textarea($name, $componentname, $value, $extra['cols'], $extra['rows'], _webform_filtervalues($extra['description']), $extra['attributes'], $mandatory); break; case 'select': $items = explode("\n", _webform_filtervalues($extra['items'])); foreach($items as $k => $v) { $v = trim($v); if ( strlen($v) ) $options[$v] = $v; } if ( $extra['aslist'] == 'Y' ) { if ( !is_array($value) ) { $value = array($value); } return form_select($name, $componentname, $value, $options, _webform_filtervalues($extra['description']), $extra['attributes']['dummy'], ($extra['multiple'] == 'Y'), $mandatory); }else { if ( $extra['multiple'] == 'Y' ) { if ( !is_array($value) ) { $value = array($value); } return form_checkboxes($name, $componentname, $value, $options, _webform_filtervalues($extra['description']), $extra['attributes'], $mandatory); } else { return form_radios($name, $componentname, $value, $options, _webform_filtervalues($extra['description']), $mandatory, NULL); } } break; case 'label': return form_item($name, NULL, _webform_filtervalues($extra['description'])); case 'hidden': return form_hidden($componentname, $value); case 'email': if($user->uid && $user->mail && empty($value)) { $value = $user->mail; } default: // textfield $maxsize = 255; if ($extra['width'] && is_numeric($extra['width'])) { $maxsize = $extra['width']; } return form_textfield($name, $componentname, $value, ($extra['width']?$extra['width']:50), $maxsize, _webform_filtervalues($extra['description']), $extra['attributes'], ($mandatory==1?TRUE:FALSE)); break; }}function _webform_submission_ok($name, $type, $value, $mandatory) { // Check if it is mandatory and if so that it exists and have a value if($mandatory && !strlen(trim($value))) { form_set_error('submitted]['.$name, t('You have not completed the form. %s is a mandatory field.', array('%s' => $name))); return 1; } return 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -