/[drupal]/contributions/modules/send/includes/send.form.inc
ViewVC logotype

Diff of /contributions/modules/send/includes/send.form.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.10, Mon Aug 17 21:38:15 2009 UTC revision 1.11, Wed Aug 26 01:18:14 2009 UTC
# Line 1  Line 1 
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.
# Line 8  function send_form($form_state, $profile Line 8  function send_form($form_state, $profile
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',
# Line 24  function send_form($form_state, $profile Line 24  function send_form($form_state, $profile
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];
# Line 45  function send_form_set_values($form, $fo Line 40  function send_form_set_values($form, $fo
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;
# Line 69  function send_submit($form, &$form_state Line 65  function send_submit($form, &$form_state
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];
# Line 80  function send_submit($form, &$form_state Line 77  function send_submit($form, &$form_state
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  /**  /**
# Line 93  function send_submit_refresh($form, &$fo Line 95  function send_submit_refresh($form, &$fo
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'])) {
# Line 113  function send_element_process($element, Line 115  function send_element_process($element,
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    
# Line 160  module_load_include('form.inc', 'news', Line 162  module_load_include('form.inc', 'news',
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.
# Line 283  function send_multiple_element_validate( Line 288  function send_multiple_element_validate(
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) {
# Line 316  function send_message_element_process($e Line 321  function send_message_element_process($e
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      ),      ),
# Line 330  function send_message_element_process($e Line 332  function send_message_element_process($e
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(
# Line 360  function send_message_element_process($e Line 377  function send_message_element_process($e
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    
# Line 396  function send_message_element_process($e Line 403  function send_message_element_process($e
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    
# Line 423  function send_message_element_process($e Line 450  function send_message_element_process($e
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;

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.2