فهرست منبع

Add 'Subscribe' button on 'formation' nodes

Yves Chedemois 14 سال پیش
والد
کامیت
fb0a64dec4
2فایلهای تغییر یافته به همراه74 افزوده شده و 1 حذف شده
  1. 69 0
      fgcf.module
  2. 5 1
      theme/css/fgcf.css

+ 69 - 0
fgcf.module

@@ -163,6 +163,12 @@ function fgcf_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
             '#value' => theme('fgcf_thematiques', $cats),
           );
 
+          // Add 'Subscribe' button.
+          $node->content['fgcf_subscribe'] = array(
+            '#value' => drupal_get_form('fgcf_subscribe_form', $node),
+            '#weight' => -100,
+          );
+
           $bc = drupal_get_breadcrumb();
           $bc[] = l(t('Catalogue formations'), 'fgcf');
           $bc[] = l(t('Thématiques'), 'fgcf/thematique');
@@ -323,6 +329,69 @@ function theme_fgcf_thematiques($terms) {
   return $ret;
 }
 
+/**
+ * Subscribe form displayed on 'formations' nodes.
+ */
+function fgcf_subscribe_form($form_state, $node) {
+  $form['node'] = array(
+    '#type' => 'value',
+    '#value' => $node,
+  );
+  $form['subscribe'] = array(
+    '#type' => 'submit',
+    '#value' => t('Inscrivez-moi'),
+  );
+
+  return $form;
+}
+
+/**
+ * Submit handler for the subscribe form.
+ *
+ * Send an email to site administrators.
+ */
+function fgcf_subscribe_form_submit($form, &$form_state) {
+  global $user;
+
+  // Prevent flooding.
+  if (flood_is_allowed('fgcg_subscribe', 10)) {
+    $to = variable_get('site_mail', ini_get('sendmail_from'));
+    $params = array(
+      'account' => $user,
+      'node' => $form_state['values']['node'],
+    );
+
+    $message = drupal_mail('fgcf', 'subscribe', $to, language_default(), $params);
+    if ($message['result']) {
+      drupal_set_message(t("Votre demande a été transmise aux administrateurs du site."));
+      flood_register_event('fgcg_subscribe');
+    }
+  }
+}
+
+/**
+ * Implemanbtation of hook_mail().
+ */
+function fgcf_mail($key, &$message, $params) {
+  $language = $message['language'];
+
+  switch ($key) {
+    case 'subscribe':
+      // Generate base replacement strings.
+      $variables = user_mail_tokens($params['account'], $language);
+      // Add our own.
+      $node = $params['node'];
+      $variables['@node_title'] = $node->title;
+      $variables['@node_reference'] = $node->field_fgcf_fiche_reference[0]['value'];
+      $variables['!node_uri'] = url('node/' . $node->nid, array('absolute' => TRUE));
+      $variables['!user_ip'] = ip_address();
+
+      $message['subject'] = t('[France-galop] Inscription à une formation', $variables, $language->language);
+      $message['body'][] = t("Formation: @node_reference - @node_title (!node_uri)\nUtilisateur: !username\nMail: !mailto\nIP de connection: !user_ip", $variables, $language->language);
+      break;
+  }
+}
+
 /**
  * Shared filter form for course lists.
  *

+ 5 - 1
theme/css/fgcf.css

@@ -14,9 +14,13 @@
   padding: 0.5em 0 0 0;
 }
 
+#fgcf-subscribe-form #edit-subscribe {
+	float: right;
+}
+
 .node-thematique {
   float: right;
-  margin: 0 0 1em 1em;
+  margin: 10px 0 1em 1em;
 }
 
 .node-thematique .item-list ul li {