/[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.8, Tue May 26 15:09:52 2009 UTC revision 1.9, Fri Aug 7 01:00:04 2009 UTC
# Line 1  Line 1 
1  <?php // $Id: send.form.inc,v 1.7 2009/05/25 20:25:56 vauxia Exp $  <?php // $Id: send.form.inc,v 1.8 2009/05/26 15:09:52 vauxia Exp $
2    
3  /**  /**
4   * The default submission page for user-initiated send activities.   * The default submission page for user-initiated send activities.
5   */   */
6  function send_form($form_state, $profile, $options = array(), $nids = array()) {  function send_form($form_state, $profile, $options = array(), $nids = array()) {
7      $profile = (object) $profile;
8      $profile->nids = ($nids && !is_array($nids)) ? explode(' ', $nids) : $nids;
9      $profile->from_element = 'send_user';
10      $profile->to_element = 'send_contact';
11      $profile->message_element = 'send_message';
12    
13    return array(    return array(
14      '#send_element' => 'send',      '#send_element' => 'send',
15      'send' => array(      'send' => array(
16        '#type' => 'send',        '#type' => 'send',
17        '#send_profile' => $profile,        '#send' => $profile,
       '#send_nids' => ($nids && !is_array($nids)) ? explode(' ', $nids) : $nids,  
       '#send_options' => $options,  
18      ),      ),
19    );    );
20  }  }
# Line 38  function send_form_set_values($form, $fo Line 42  function send_form_set_values($form, $fo
42   * Added by send_element_process().   * Added by send_element_process().
43   */   */
44  function send_submit($form, &$form_state) {  function send_submit($form, &$form_state) {
45      // Override the send profile's default values with POSTed ones.
46      foreach ($form_state['values'] as $name => $value) {
47        if ($name) $form_state['send']->$name = $value;
48      }
49    
50    // We only care about elements and values within the send element.    // We only care about elements and values within the send element.
51    $key = $form['#send_element'];    $key = $form['#send_element'];
52      $key = 'send';
53    
54    $values = send_form_set_values($form, $form_state, $key);    $values = send_form_set_values($form, $form_state, $key);
   //$values = $form_state['values'][$key];  
55    
56    $profile = $form[$key]['#send_profile'];    $send = $form_state['send'];
   $nids = $form[$key]['#send_nids'];  
57    
58    // Set up the message values.    // Set up the message values.
59    $message = $values['message'];    $message = $values['message'];
60    $message['sender'] = $values['from'][0];    $message['sender'] = $values['from'][0];
61    
62    // Call the send API with our processed values.    if (!isset($form_state['send_deliver']) || $form_state['send_deliver']) {
63    if ($ret = send($profile, $values['to'], $nids, $message)) {      // Call the send API with our processed values.
64      flood_register_event("send $profile");      if ($ret = send($send, $values['to'], $send->nids, $message)) {
65    }        flood_register_event("send $send->name");
   
   // Redirect the user, if there's not already a redirect on this form.  
   if (!isset($form_state['redirect'])) {  
     if (count($nids) == 1) {  
       $form_state['redirect'] = 'node/'. $nids[0];  
66      }      }
67      else {  
68        $form_state['redirect'] = '<front>';      // Redirect the user, if there's not already a redirect on this form.
69        if (!isset($form_state['redirect'])) {
70          if (count($nids) == 1) {
71            $form_state['redirect'] = 'node/'. $nids[0];
72          }
73          else {
74            $form_state['redirect'] = '<front>';
75          }
76      }      }
77    }    }
78  }  }
79    
80  function send_submit_refresh($form, &$form_state) {  function send_submit_refresh($form, &$form_state) {
81    $form_state['send'] = $form_state['values'];    $form_state['send_deliver'] = FALSE;
82      send_submit($form, $form_state);
83    
84    $form_state['rebuild'] = TRUE;    $form_state['rebuild'] = TRUE;
85      $form_state['redirect'] = FALSE;
86  }  }
87    
88  /**  /**
89   * The #process handler for a "send" element.   * The #process handler for the main "send" element.
90   */   */
91  function send_element_process($element, $edit, &$form_state, $form) {  function send_element_process($element, $edit, &$form_state, $form) {
92    global $user;    global $user;
93    
94    $profile = $element['#send_profile'];    if (!isset($form_state['send'])) {
95    //$id = 'send-'. $profile .'-form';      $form_state['send'] = (object) $element['#send'];
96    $id = 'send-form';    }
97      $send = $form_state['send'];
98    
99    // 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.
100    if (!isset($form_state['submit_handlers'])) {    if (!isset($form_state['submit_handlers'])) {
# Line 93  function send_element_process($element, Line 107  function send_element_process($element,
107    if (!isset($element['#parents'])) $element['#parents'] = array();    if (!isset($element['#parents'])) $element['#parents'] = array();
108    $element['#parents'] = array();    $element['#parents'] = array();
109    
   $o = $element['#send_options'];  
   
110    $element['#tree'] = TRUE;    $element['#tree'] = TRUE;
   $element['#prefix'] = '<div id="'. $id .'">';  
   $element['#suffix'] = '</div>';  
111    
112    $element['from'] = array(    $element['from'] = array(
113      '#type' => isset($o['from_element']) ? $o['from_element'] : 'send_user',      '#type' => $send->from_element,
114    );    );
115    $element['to'] = array(    $element['to'] = array(
116      '#type' => isset($o['to_element']) ? $o['to_element'] : 'send_contact',      '#type' => $send->to_element,
117    );    );
118    
119    $element['message'] = array(    $element['message'] = array(
120      '#type' => isset($o['message_element']) ? $o['message_element'] : 'send_message',      '#type' => $send->message_element,
     '#send_profile' => $profile,  
121    );    );
122    $element['message']['nids'] = array(    $element['message']['nids'] = array(
123      '#type' => 'value',      '#type' => 'value',
124      '#value' => $element['#send_nids']      '#value' => $send->nids,
125    );    );
126    
127    return $element;    return $element;
# Line 143  module_load_include('form.inc', 'news', Line 152  module_load_include('form.inc', 'news',
152    $form = drupal_rebuild_form($form_id, $form_state, $args, $form_build_id);    $form = drupal_rebuild_form($form_id, $form_state, $args, $form_build_id);
153    
154    $send_form = $form[$key];    $send_form = $form[$key];
155    if ($element) $send_form = $send_form[$element];    if ($element) {
156        foreach (element_children($send_form) as $i) {
157          if ($i != $element) $send_form[$i]['#access'] = FALSE;
158        }
159      }
160      //watchdog('debug', '<pre>'.print_r($send_form, 1));
161    
162    unset($send_form['#prefix'], $send_form['#suffix']);    unset($send_form['#prefix'], $send_form['#suffix']);
163    $output = theme('status_messages') . drupal_render($send_form);    $output = theme('status_messages') . drupal_render($send_form);
# Line 271  function send_multiple_element_validate( Line 285  function send_multiple_element_validate(
285  function send_message_element_process($element, $edit, &$form_state, $form) {  function send_message_element_process($element, $edit, &$form_state, $form) {
286    module_load_include('inc', 'send', 'includes/send.template');    module_load_include('inc', 'send', 'includes/send.template');
287    
288      //$post = isset($form_state['send']) ? $form_state['send']['message'] : array();
289      $send = $form_state['send'];
290    
291    $templates = array();    $templates = array();
292    foreach (send_template_list($profile) as $t) {    foreach (send_template_list($send) as $t) {
293      $templates[$t->stid] = $t->name;      $templates[$t->stid] = $t->name;
294    }    }
295    
296    if (isset($form_state['send']['message']['template'])) {    if (isset($send->message['template'])) {
297      $template = send_template_load($form_state['send']['message']['template']);      $template = $send->message['template'];
298    }    }
299    elseif ($stid = send_value('template', $profile)) {    elseif (isset($send->template)) {
300      $template = send_template_load($templates['stid']);      $template = $send->template;
301    }    }
302    if (!$template) {    if (!$template) {
303      $template = send_template_load(key($templates));      $template = key($templates);
304    }    }
305      $template = send_template_load($template);
306    
307    $element['template'] = array(    $element['template'] = array(
308      '#type'          => 'select',      '#type'          => 'select',
# Line 300  function send_message_element_process($e Line 318  function send_message_element_process($e
318      '#submit'        => array('send_submit_refresh'),      '#submit'        => array('send_submit_refresh'),
319      '#attributes'    => array('onload' => '$(this).hide();'),      '#attributes'    => array('onload' => '$(this).hide();'),
320      '#ahah' => array(      '#ahah' => array(
321        //'path' => 'send/js/send_form/message',        'path' => 'send/js/send_form/message',
322        'path' => 'send/js/send_form',        //'path' => 'send/js/send_form',
       //'wrapper' => $id,  
323        'wrapper' => 'send-form',        'wrapper' => 'send-form',
324          'wrapper' => 'edit-message-wrapper',
325        'method' => 'replace',        'method' => 'replace',
326        'effect' => 'fade',        'effect' => 'fade',
327      ),      ),
# Line 322  function send_message_element_process($e Line 340  function send_message_element_process($e
340    }    }
341    
342    if ($template->subject_editable) {    if ($template->subject_editable) {
343        if (!$subject = $send->message['subject']) $subject = $template->subject;
344      $element['subject_display'] = array(      $element['subject_display'] = array(
345        '#type' => 'textfield',        '#type' => 'textfield',
346        '#title' => t('Subject'),        '#title' => t('Subject'),
347        '#default_value' => $template->subject,        '#default_value' => $subject,
348      );      );
349      $element['subject'] = array(      $element['subject'] = array(
350        '#type' => 'value',        '#type' => 'value',
351        '#value' => $template->subject,        '#value' => $subject,
352      );      );
353    }    }
354    else {    else {
# Line 343  function send_message_element_process($e Line 362  function send_message_element_process($e
362    $element['message'] = array(    $element['message'] = array(
363      '#type'  => 'textarea',      '#type'  => 'textarea',
364      '#title' => t('Message'),      '#title' => t('Message'),
365      '#default_value' => $template->message,      '#default_value' => $send->message['message'],
366    );    );
367    if (isset($form_state['send']['message']['build_mode'])) {  
368      $build_mode = $form_state['send']['message']['build_mode'];    if (isset($send->message['build_mode'])) {
369    }      $build_mode = $send->message['build_mode'];
   elseif (isset($element['#value']['build_mode'])) {  
     $build_mode = $element['#value']['build_mode'];  
370    }    }
371    else {    else {
372      $build_mode = $template->build_mode ? $template->build_mode : 'teaser';      $build_mode = $template->build_mode ? $template->build_mode : 'teaser';
# Line 369  function send_message_element_process($e Line 386  function send_message_element_process($e
386    
387    $body = '';    $body = '';
388    
389    foreach ($element['nids']['#value'] as $nid) {    foreach ($send->nids as $nid) {
390      $node = node_load($nid);      $node = node_load($nid);
391      $node->build_mode = $build_mode;      $node->build_mode = $build_mode;
392      $teaser = $node->build_mode == 'teaser';      $teaser = $node->build_mode == 'teaser';
# Line 379  function send_message_element_process($e Line 396  function send_message_element_process($e
396        '#value' => $content,        '#value' => $content,
397      );      );
398    
399        // TODO make this conditional.
400        $element['nodes']['#theme'] = 'send_draggable';
401    
402      $body .= $content;      $body .= $content;
403    }    }
404    $element['body'] = array(    $element['body'] = array(
# Line 391  function send_message_element_process($e Line 411  function send_message_element_process($e
411    
412  /**  /**
413   * An #after_build handler for a send_message element.   * An #after_build handler for a send_message element.
414   * Set the element value to something that will   * Set the element value to something that will be understood by the Send API.
415   */   */
416  function send_message_element_set_value($element, &$form_state) {  function send_message_element_set_value($element, &$form_state) {
417    $subject = $element['#value']['subject'];    $send    = $form_state['send'];
418    $profile = $element['#send_profile'];    $message = $send->message;
419    $message = $form_state['values']['message'];    $subject = $send->message['subject'];
420    $template = send_template_load($form_state['values']['message']['template']);    $template = send_template_load($send->message['template']);
421    $params  = array_merge($form_state['values'], $form_state['values']['message']);    $params  = $send->message;
422    
423    $element['#value'] = array(    $element['#value'] = array(
424      'subject' => theme('send_subject', $subject, $profile, $template, $params),      'subject' => theme('send_subject', $subject, $profile, $template, $params),

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.2