From 838fb0ecda713c7f21fb54bd10686d8a786efc9e Mon Sep 17 00:00:00 2001
From: Capi Etheriel <barraponto@gmail.com>
Date: Sun, 7 Apr 2013 17:54:35 -0300
Subject: Issue #1963870 by barraponto: Expose Webform settings
 in content type form

---
 js/node-type-form.js | 20 ++++++++++++++++++++
 webform.module       | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 67 insertions(+)
 create mode 100644 js/node-type-form.js

diff --git a/js/node-type-form.js b/js/node-type-form.js
new file mode 100644
index 0000000..569d8dd
--- /dev/null
+++ b/js/node-type-form.js
@@ -0,0 +1,20 @@
+(function ($) {
+
+Drupal.behaviors.WebformNodeTypeForm = {
+  attach: function (context) {
+    // Provide the vertical tab summaries.
+    $('fieldset#edit-display', context).drupalSetSummary(function(context) {
+      var vals = [];
+      $('input:checked', context).next('label').each(function() {
+        vals.unshift(Drupal.t("Webform enabled."));
+      });
+      if (!$('#edit-node-submitted', context).is(':checked')) {
+        vals.unshift(Drupal.t("Webform disabled."));
+      }
+      return vals.join(', ');
+    });
+  }
+};
+
+})(jQuery);
+
diff --git a/webform.module b/webform.module
index 5ec7400..beafa91 100644
--- a/webform.module
+++ b/webform.module
@@ -1591,6 +1591,53 @@ function webform_form_submit($form, &$form_state) {
 }
 
 /**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function webform_form_node_type_form_alter(&$form, &$form_state) {
+  $type = $form['#node_type'];
+  $webform_node_types = webform_variable_get('webform_node_types');
+
+  $form['webform'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Webform settings'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+    '#group' => 'additional_settings',
+    '#attached' => array(
+      'js' => array(drupal_get_path('module', 'webform') . '/js/node-type-form.js'),
+    ),
+  );
+  $form['webform']['webform_settings'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Enable Webform'),
+    '#default_value' => in_array($type, $webform_node_types),
+    '#description' => t('Webform-enabled content types can have Webform components associated to it.'),
+  );
+
+  // Specific-submit must come before regular form submit.
+  array_unshift($form['#submit'], 'webform_node_type_form_submit');
+}
+
+/**
+ * Submit callback for the node type form.
+ */
+function webform_node_type_form_submit($form, &$form_state) {
+  $webform_node_types = webform_variable_get('webform_node_types');
+  $type = trim($form_state['values']['type']);
+
+  if ($form_state['values']['webform']) {
+    $webform_node_types = array_unique(array_merge($webform_node_types, array($type)));
+  }
+  else {
+    $webform_node_types = array_diff($webform_node_types, array($type));
+  }
+  variable_set('webform_node_types', $webform_types);
+
+  // Unset the values to prevent default form submit from creating variables out of them.
+  unset($form_state['values']['webform']);
+}
+
+/**
  * Implements hook_node_view().
  */
 function webform_node_view($node, $view_mode) {
-- 
1.8.2

