| 1 |
<?php // $Id: send.form.inc,v 1.9 2009/08/07 01:00:04 vauxia Exp $ |
<?php // $Id: send.form.inc,v 1.10 2009/08/17 21:38:15 vauxia Exp $ |
| 2 |
|
|
| 3 |
/** |
/** |
| 4 |
* The default submission page for user-initiated send activities. |
* The default submission page for user-initiated send activities. |
| 8 |
$profile->nids = ($nids && !is_array($nids)) ? explode(' ', $nids) : $nids; |
$profile->nids = ($nids && !is_array($nids)) ? explode(' ', $nids) : $nids; |
| 9 |
$profile->from_element = 'send_user'; |
$profile->from_element = 'send_user'; |
| 10 |
$profile->to_element = 'send_contact'; |
$profile->to_element = 'send_contact'; |
| 11 |
$profile->message_element = 'send_message'; |
$profile->message_element = 'send_message_compose'; |
| 12 |
|
|
| 13 |
return array( |
return array( |
| 14 |
'#send_element' => 'send', |
'#send_element' => 'send', |
| 24 |
|
|
| 25 |
// The #after_build functions may have changed the values. Use those instead. |
// The #after_build functions may have changed the values. Use those instead. |
| 26 |
function send_form_set_values($form, $form_state, $key) { |
function send_form_set_values($form, $form_state, $key) { |
|
/* |
|
|
$values = array(); |
|
|
$values[$item] = $form[$key][$item]['#value']; |
|
|
} |
|
|
*/ |
|
| 27 |
$values = array(); |
$values = array(); |
| 28 |
foreach (element_children($form[$key]) as $item) { |
foreach (element_children($form[$key]) as $item) { |
| 29 |
$element = $form[$key][$item]; |
$element = $form[$key][$item]; |
| 40 |
* Added by send_element_process(). |
* Added by send_element_process(). |
| 41 |
*/ |
*/ |
| 42 |
function send_submit($form, &$form_state) { |
function send_submit($form, &$form_state) { |
| 43 |
|
|
| 44 |
// Override the send profile's default values with POSTed ones. |
// Override the send profile's default values with POSTed ones. |
| 45 |
foreach ($form_state['values'] as $name => $value) { |
foreach ($form_state['values'] as $name => $value) { |
| 46 |
if ($name) $form_state['send']->$name = $value; |
if ($name) $form_state['send']->$name = $value; |
| 65 |
} |
} |
| 66 |
|
|
| 67 |
// Redirect the user, if there's not already a redirect on this form. |
// Redirect the user, if there's not already a redirect on this form. |
| 68 |
|
unset($form_state['rebuild'], $form_state['storage']); |
| 69 |
if (!isset($form_state['redirect'])) { |
if (!isset($form_state['redirect'])) { |
| 70 |
if (count($nids) == 1) { |
if (count($nids) == 1) { |
| 71 |
$form_state['redirect'] = 'node/'. $nids[0]; |
$form_state['redirect'] = 'node/'. $nids[0]; |
| 77 |
} |
} |
| 78 |
} |
} |
| 79 |
|
|
| 80 |
|
/** |
| 81 |
|
* A submit handler that doesn't actually submit the send request. Useful |
| 82 |
|
* for AHAH callbacks and buttons that change the form's state or appearance. |
| 83 |
|
*/ |
| 84 |
function send_submit_refresh($form, &$form_state) { |
function send_submit_refresh($form, &$form_state) { |
| 85 |
$form_state['send_deliver'] = FALSE; |
$form_state['send_deliver'] = FALSE; |
| 86 |
send_submit($form, $form_state); |
send_submit($form, $form_state); |
| 87 |
|
|
| 88 |
$form_state['rebuild'] = TRUE; |
$form_state['rebuild'] = TRUE; |
| 89 |
$form_state['redirect'] = FALSE; |
$form_state['redirect'] = FALSE; |
| 90 |
|
return; |
| 91 |
} |
} |
| 92 |
|
|
| 93 |
/** |
/** |
| 95 |
*/ |
*/ |
| 96 |
function send_element_process($element, $edit, &$form_state, $form) { |
function send_element_process($element, $edit, &$form_state, $form) { |
| 97 |
global $user; |
global $user; |
| 98 |
|
module_load_include('inc', 'send', 'includes/send.template'); |
| 99 |
|
|
| 100 |
if (!isset($form_state['send'])) { |
if (!isset($form_state['send'])) { |
| 101 |
$form_state['send'] = (object) $element['#send']; |
$form_state['send'] = (object) $element['#send']; |
| 102 |
} |
} |
|
$send = $form_state['send']; |
|
| 103 |
|
|
| 104 |
// Make sure that the send item's submit handler is added to the form. |
// Make sure that the send item's submit handler is added to the form. |
| 105 |
if (!isset($form_state['submit_handlers'])) { |
if (!isset($form_state['submit_handlers'])) { |
| 115 |
$element['#tree'] = TRUE; |
$element['#tree'] = TRUE; |
| 116 |
|
|
| 117 |
$element['from'] = array( |
$element['from'] = array( |
| 118 |
'#type' => $send->from_element, |
'#type' => $form_state['send']->from_element, |
| 119 |
); |
); |
| 120 |
$element['to'] = array( |
$element['to'] = array( |
| 121 |
'#type' => $send->to_element, |
'#type' => $form_state['send']->to_element, |
| 122 |
|
'#required' => TRUE, |
| 123 |
); |
); |
| 124 |
|
|
| 125 |
$element['message'] = array( |
$element['message'] = array( |
| 126 |
'#type' => $send->message_element, |
'#type' => $form_state['send']->message_element, |
| 127 |
); |
); |
| 128 |
$element['message']['nids'] = array( |
$element['message']['nids'] = array( |
| 129 |
'#type' => 'value', |
'#type' => 'value', |
| 130 |
'#value' => $send->nids, |
'#value' => $form_state['send']->nids, |
| 131 |
); |
); |
|
|
|
| 132 |
return $element; |
return $element; |
| 133 |
} |
} |
| 134 |
|
|
| 162 |
if ($i != $element) $send_form[$i]['#access'] = FALSE; |
if ($i != $element) $send_form[$i]['#access'] = FALSE; |
| 163 |
} |
} |
| 164 |
} |
} |
|
//watchdog('debug', '<pre>'.print_r($send_form, 1)); |
|
| 165 |
|
|
| 166 |
unset($send_form['#prefix'], $send_form['#suffix']); |
unset($send_form['#prefix'], $send_form['#suffix']); |
| 167 |
|
|
| 168 |
|
// Clear out the form_errors array. We're not here for validation. |
| 169 |
|
drupal_get_messages('error', TRUE); |
| 170 |
|
|
| 171 |
$output = theme('status_messages') . drupal_render($send_form); |
$output = theme('status_messages') . drupal_render($send_form); |
| 172 |
|
|
| 173 |
// Final rendering callback. |
// Final rendering callback. |
| 288 |
/** |
/** |
| 289 |
* A #process handler for a send_message element. |
* A #process handler for a send_message element. |
| 290 |
*/ |
*/ |
| 291 |
function send_message_element_process($element, $edit, &$form_state, $form) { |
function send_message_compose_element_process($element, $edit, &$form_state, $form) { |
|
module_load_include('inc', 'send', 'includes/send.template'); |
|
| 292 |
|
|
| 293 |
$send = $form_state['send']; |
$send =& $form_state['send']; |
| 294 |
|
if ($edit) $send->message = $edit; |
| 295 |
|
|
| 296 |
$templates = array(); |
$templates = array(); |
| 297 |
foreach (send_template_list($send) as $t) { |
foreach (send_template_list($send) as $t) { |
| 321 |
'#value' => t('Change template'), |
'#value' => t('Change template'), |
| 322 |
'#access' => $element['template']['#access'], |
'#access' => $element['template']['#access'], |
| 323 |
'#submit' => array('send_submit_refresh'), |
'#submit' => array('send_submit_refresh'), |
|
'#attributes' => array('onload' => '$(this).hide();'), |
|
| 324 |
'#ahah' => array( |
'#ahah' => array( |
| 325 |
'path' => 'send/js/send_form/message', |
'path' => 'send/js/send_form/'. $element['#parents'][0], |
| 326 |
//'path' => 'send/js/send_form', |
'wrapper' => $element['#id'] .'-wrapper', |
|
'wrapper' => 'send-form', |
|
|
'wrapper' => 'edit-message-wrapper', |
|
| 327 |
'method' => 'replace', |
'method' => 'replace', |
| 328 |
'effect' => 'fade', |
'effect' => 'fade', |
| 329 |
), |
), |
| 332 |
// Add an auto-submit action to the template selection. |
// Add an auto-submit action to the template selection. |
| 333 |
if ($element['template']['#access']) { |
if ($element['template']['#access']) { |
| 334 |
$js = 'Drupal.behaviors.sendMessageForm = function(context) { |
$js = 'Drupal.behaviors.sendMessageForm = function(context) { |
| 335 |
$("#edit-message-template-submit").hide(); |
$("#'. $element['#id'] .'-template-submit").hide(); |
| 336 |
$("select").change( function() { |
$("select").change( function() { |
| 337 |
$("#edit-message-template-submit").mousedown(); |
$("#'. $element['#id'] .'-template-submit").mousedown(); |
| 338 |
$("#edit-message-template-submit").click(); |
$("#'. $element['#id'] .'-template-submit").click(); |
| 339 |
}); |
}); |
| 340 |
}'; |
}'; |
| 341 |
drupal_add_js($js, 'inline'); |
drupal_add_js($js, 'inline'); |
| 342 |
} |
} |
| 343 |
|
|
| 344 |
|
if (isset($send->message['build_mode'])) { |
| 345 |
|
$build_mode = $send->message['build_mode']; |
| 346 |
|
} |
| 347 |
|
else { |
| 348 |
|
$build_mode = $template->build_mode ? $template->build_mode : 'teaser'; |
| 349 |
|
} |
| 350 |
|
|
| 351 |
|
$element['build_mode'] = array( |
| 352 |
|
'#type' => 'select', |
| 353 |
|
'#title' => t('Display nodes as'), |
| 354 |
|
'#options' => send_template_build_modes(), |
| 355 |
|
'#default_value' => $build_mode, |
| 356 |
|
'#access' => ($template->build_mode_editable == 1) && $element['nids']['#value'], |
| 357 |
|
); |
| 358 |
|
|
| 359 |
if ($template->subject_editable) { |
if ($template->subject_editable) { |
| 360 |
if (!$subject = $send->message['subject']) $subject = $template->subject; |
if (!$subject = $send->message['subject']) $subject = $template->subject; |
| 361 |
$element['subject_display'] = array( |
$element['subject_display'] = array( |
| 377 |
); |
); |
| 378 |
} |
} |
| 379 |
|
|
|
if (isset($send->message['build_mode'])) { |
|
|
$build_mode = $send->message['build_mode']; |
|
|
} |
|
|
else { |
|
|
$build_mode = $template->build_mode ? $template->build_mode : 'teaser'; |
|
|
} |
|
|
|
|
|
$element['build_mode'] = array( |
|
|
'#type' => 'select', |
|
|
'#options' => send_build_modes(), |
|
|
'#default_value' => $build_mode, |
|
|
'#access' => ($template->build_mode_editable == 1) && $element['nids']['#value'], |
|
|
); |
|
|
|
|
| 380 |
$element['content'] = array( |
$element['content'] = array( |
| 381 |
'#prefix' => '<div id="message-content">', |
'#prefix' => '<div id="message-content">', |
| 382 |
'#suffix' => '</div>', |
'#suffix' => '</div>', |
| 383 |
); |
); |
| 384 |
$element['content']['message'] = array( |
|
| 385 |
|
// Respect the order that was sent through by table-dragging code. |
| 386 |
|
if (isset($send->message['content'])) { |
| 387 |
|
foreach ($send->message['content'] as $key => $val) { |
| 388 |
|
$element['content'][$key] = array(); |
| 389 |
|
} |
| 390 |
|
} |
| 391 |
|
|
| 392 |
|
$element['content']['message']['content'] = array( |
| 393 |
'#type' => 'textarea', |
'#type' => 'textarea', |
| 394 |
'#title' => t('Message'), |
'#title' => t('Message'), |
| 395 |
'#default_value' => $send->message['message'], |
'#default_value' => $send->message['content']['message']['content'], |
|
); |
|
|
$element['content']['message']['weight'] = array( |
|
|
'#type' => 'textfield', |
|
|
'#size' => 3, |
|
|
//'#attributes' => array('class' => 'message-content-weight'), |
|
| 396 |
); |
); |
| 397 |
|
$element['content']['message']['weight'] = array( '#type' => 'hidden' ); |
| 398 |
|
|
| 399 |
$body = ''; |
$body = ''; |
| 400 |
|
|
| 403 |
$node->build_mode = $build_mode; |
$node->build_mode = $build_mode; |
| 404 |
$teaser = $node->build_mode == 'teaser'; |
$teaser = $node->build_mode == 'teaser'; |
| 405 |
$content = node_view($node, $teaser); |
$content = node_view($node, $teaser); |
| 406 |
$element['content'][$nid] = array( |
$element['content']['node-'. $nid] = array( |
| 407 |
'#type' => 'markup', |
'#type' => 'markup', |
| 408 |
'#value' => $content, |
'#value' => $content, |
| 409 |
); |
); |
| 410 |
$element['content'][$nid]['weight'] = array( |
$element['content']['node-'. $nid]['nid'] = array( |
| 411 |
'#type' => 'textfield', |
'#type' => 'hidden', |
| 412 |
'#size' => 3, |
'#value' => $nid, |
|
'#attributes' => array('class' => 'message-content-weight'), |
|
| 413 |
); |
); |
| 414 |
|
|
| 415 |
// TODO make this conditional. |
// TODO make this conditional. |
| 416 |
$element['content']['#theme'] = 'send_draggable'; |
$element['content']['node-'. $nid]['weight'] = array('#type' => 'hidden'); |
| 417 |
|
} |
| 418 |
|
|
| 419 |
$body .= $content; |
// TODO make this conditional. |
| 420 |
|
$element['content']['#theme'] = 'send_draggable'; |
| 421 |
|
|
| 422 |
|
return $element; |
| 423 |
|
} |
| 424 |
|
|
| 425 |
|
/** |
| 426 |
|
* A #process handler for a send_message element. |
| 427 |
|
*/ |
| 428 |
|
function send_message_edit_element_process($element, $edit, &$form_state, $form) { |
| 429 |
|
$send =& $form_state['send']; |
| 430 |
|
if ($edit) $send->message = $edit; |
| 431 |
|
|
| 432 |
|
if (!$send->message['body']) { |
| 433 |
|
$value = send_message_compose_element_set_value($element, $form_state); |
| 434 |
|
$send->message['body'] = $value['#value']; |
| 435 |
} |
} |
| 436 |
|
$element['subject'] = array( |
| 437 |
|
'#type' => 'textfield', |
| 438 |
|
'#default_value' => $send->message['body']['subject'], |
| 439 |
|
); |
| 440 |
$element['body'] = array( |
$element['body'] = array( |
| 441 |
'#type' => 'value', |
'#type' => 'textarea', |
| 442 |
'#value' => $body, |
'#default_value' => $send->message['body']['body'], |
| 443 |
|
'#rows' => 50, |
| 444 |
); |
); |
| 445 |
|
$element['format'] = filter_form(FILTER_FORMAT_DEFAULT); |
| 446 |
return $element; |
return $element; |
| 447 |
} |
} |
| 448 |
|
|
| 450 |
* An #after_build handler for a send_message element. |
* An #after_build handler for a send_message element. |
| 451 |
* Set the element value to something that will be understood by the Send API. |
* Set the element value to something that will be understood by the Send API. |
| 452 |
*/ |
*/ |
| 453 |
function send_message_element_set_value($element, &$form_state) { |
function send_message_compose_element_set_value($element, &$form_state) { |
| 454 |
$send = $form_state['send']; |
$send = $form_state['send']; |
| 455 |
$message = $send->message; |
$message = $send->message['content']['message']['content']; |
| 456 |
$subject = $send->message['subject']; |
$subject = $send->message['subject']; |
| 457 |
$template = send_template_load($send->message['template']); |
$template = send_template_load($send->message['template']); |
| 458 |
$params = $send->message; |
$params = $send->message; |