Loading modules/mailchimp_marketing_subscribe_ct/config/install/mailchimp_marketing_subscribe_ct.settings.yml +5 −1 Original line number Diff line number Diff line mailchimp_ct_audience_id: '' mailchimp_ct_group_id: '' mailchimp_ct_mapping: [] mailchimp_ct_campaign_template_from_name: 'Test Email' mailchimp_ct_campaign_template_from_email: '' mailchimp_ct_campaign_template_subject: 'Campaign subject' mailchimp_ct_campaign_template_body: '<h3>Campaign</h3>' mailchimp_ct_groups_sync: '' mailchimp_ct_groups: [] mailchimp_ct_target_no_categories: 0 No newline at end of file modules/mailchimp_marketing_subscribe_ct/config/schema/mailchimp_marketing_subscribe_ct.schema.yml +14 −2 Original line number Diff line number Diff line Loading @@ -28,12 +28,24 @@ mailchimp_marketing_subscribe_ct.settings: sequence: type: string label: 'Mailchimp Group Id' mailchimp_ct_campaign_template_from_name: type: string label: 'Campaign from name' mailchimp_ct_campaign_template_from_email: type: string label: 'Campaign from email' mailchimp_ct_campaign_template_subject: type: string label: 'Campaign Template Subject' label: 'Campaign subject' mailchimp_ct_campaign_template_body: type: string label: 'Campaign Template Body' label: 'Campaign body' mailchimp_ct_groups_sync: type: string label: 'Campaign body' mailchimp_ct_target_no_categories: type: string label: 'Target no categories subscription' # Simplenews issue field type schema. #field.storage_settings.mailchimp_issue: Loading modules/mailchimp_marketing_subscribe_ct/mailchimp_marketing_subscribe_ct.install +51 −2 Original line number Diff line number Diff line Loading @@ -20,8 +20,8 @@ function mailchimp_marketing_subscribe_ct_uninstall() { */ function mailchimp_marketing_subscribe_ct_update_9001() { $storage_definition = BaseFieldDefinition::create('string') ->setLabel(t('Mailchimp campaign')) ->setDescription(t('Mailchimp campaign.')) ->setLabel(t('Mailchimp campaign ID')) ->setDescription(t('Mailchimp test campaign ID.')) ->setRevisionable(TRUE) ->setSettings([ 'max_length' => 255, Loading Loading @@ -76,3 +76,52 @@ function mailchimp_marketing_subscribe_ct_update_9003(&$sandbox) { ->set('mailchimp_ct_groups', []) ->save(); } /** * Update settings: add from name and from email. */ function mailchimp_marketing_subscribe_ct_update_9004(&$sandbox) { $config = \Drupal::configFactory() ->getEditable('mailchimp_marketing_subscribe_ct.settings'); $config ->set('mailchimp_ct_campaign_template_from_name', 'Test Email') ->set('mailchimp_ct_campaign_template_from_email', '') ->save(); } /** * Add mailchimp_campaign_created field. */ function mailchimp_marketing_subscribe_ct_update_9005() { $storage_definition = BaseFieldDefinition::create('integer') ->setLabel(t('Mailchimp test campaign created')) ->setDescription(t('Mailchimp test campaign created timestamp.')) ->setRevisionable(TRUE) ->setSetting('unsigned', TRUE) ->setDisplayOptions('view', [ 'label' => 'hidden', 'region' => 'hidden', ]) ->setDisplayOptions('form', [ 'region' => 'hidden', ]) ->setDisplayConfigurable('form', FALSE) ->setDisplayConfigurable('view', FALSE); \Drupal::entityDefinitionUpdateManager() ->installFieldStorageDefinition('mailchimp_campaign_created', 'node', 'system', $storage_definition); } /** * Update settings: add mailchimp_ct_groups_sync. */ function mailchimp_marketing_subscribe_ct_update_9006(&$sandbox) { $config = \Drupal::configFactory() ->getEditable('mailchimp_marketing_subscribe_ct.settings'); $config ->set('mailchimp_ct_groups_sync', '') ->set('mailchimp_ct_target_all_categories', FALSE) ->save(); } No newline at end of file modules/mailchimp_marketing_subscribe_ct/mailchimp_marketing_subscribe_ct.module +8 −2 Original line number Diff line number Diff line Loading @@ -28,8 +28,8 @@ function mailchimp_marketing_subscribe_ct_entity_base_field_info(EntityTypeInter $fields = []; $fields['mailchimp_campaign'] = BaseFieldDefinition::create('string') ->setLabel(t('Mailchimp campaign')) ->setDescription(t('Mailchimp campaign.')) ->setLabel(t('Mailchimp campaign ID')) ->setDescription(t('Mailchimp test campaign ID.')) ->setRevisionable(TRUE) ->setSettings([ 'max_length' => 255, Loading @@ -42,6 +42,12 @@ function mailchimp_marketing_subscribe_ct_entity_base_field_info(EntityTypeInter ->setRevisionable(TRUE) ->setSetting('unsigned', TRUE); $fields['mailchimp_campaign_created'] = BaseFieldDefinition::create('integer') ->setLabel(t('Mailchimp test campaign created')) ->setDescription(t('Mailchimp test campaign created timestamp.')) ->setRevisionable(TRUE) ->setSetting('unsigned', TRUE); return $fields; } } modules/mailchimp_marketing_subscribe_ct/src/Form/MailchimpSubscribeCtSettingsForm.php +54 −3 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Drupal\mailchimp_marketing_subscribe_ct\Form; use Drupal\Component\Serialization\Json; use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; Loading Loading @@ -182,8 +183,10 @@ class MailchimpSubscribeCtSettingsForm extends ConfigFormBase { // Container for categories dropdown for Ajax callback. $form['container_ct_types'] = [ '#type' => 'container', '#type' => 'details', '#open' => TRUE, '#attributes' => ['id' => 'refresh-ct-mapping'], '#title' => $this->t('Content types mappings'), ]; if ($this->isConfigValueDifferent('mailchimp_ct_group_id')) { Loading Loading @@ -212,11 +215,27 @@ class MailchimpSubscribeCtSettingsForm extends ConfigFormBase { ]; } $form['mailchimp_ct_campaign_template_from_name'] = [ '#required' => TRUE, '#type' => 'textfield', '#title' => t('Campaign from name'), '#description' => t('Campaign from name.'), '#default_value' => $config->get('mailchimp_ct_campaign_template_from_name'), ]; $form['mailchimp_ct_campaign_template_from_email'] = [ '#required' => TRUE, '#type' => 'textfield', '#title' => t('Campaign from email'), '#description' => t('Campaign from email'), '#default_value' => $config->get('mailchimp_ct_campaign_template_from_email'), ]; $form['mailchimp_ct_campaign_template_subject'] = [ '#required' => TRUE, '#type' => 'textfield', '#title' => t('Campaign Template Subject'), '#description' => t('Campaign Template Subject. Available tokens: '), '#title' => t('Campaign subject'), '#description' => t('Campaign template subject. Available tokens: '), '#default_value' => $config->get('mailchimp_ct_campaign_template_subject'), ]; Loading @@ -228,6 +247,27 @@ class MailchimpSubscribeCtSettingsForm extends ConfigFormBase { '#default_value' => $config->get('mailchimp_ct_campaign_template_body'), ]; $syncCategories = $categories; try { foreach ($categories as $groupId => $category) { $syncCategories[$groupId] = [ 'title' => $category, 'item' => $this->mailchimp->getGroupItems($ct_audience_id, $groupId), ]; } } catch (ClientException $e) { } $decodedCategories = Json::encode($syncCategories); $form['mailchimp_ct_groups_sync'] = [ '#type' => 'textarea', '#title' => t('Groups (Read only)'), '#description' => t('Syncronised mailchimp groups'), '#default_value' => $decodedCategories, ]; unset($categories[$ct_group_id]); $form['mailchimp_ct_groups'] = [ '#multiple' => TRUE, '#type' => 'select', Loading @@ -237,6 +277,13 @@ class MailchimpSubscribeCtSettingsForm extends ConfigFormBase { '#options' => $categories, ]; $form['mailchimp_ct_target_no_categories'] = [ '#type' => 'checkbox', '#title' => t('Target no categories subscription'), '#description' => t('Generate additional campaign for content type for subscribers with no categories.'), '#default_value' => $decodedCategories, ]; $form['#validate'][] = [$this, 'validateForm']; return $form; Loading Loading @@ -278,9 +325,13 @@ class MailchimpSubscribeCtSettingsForm extends ConfigFormBase { $config->set('mailchimp_ct_audience_id', $audienceId); $config->set('mailchimp_ct_group_id', $groupId); $config->set('mailchimp_ct_mapping', $mappingValues); $config->set('mailchimp_ct_campaign_template_from_name', $form_state->getValue('mailchimp_ct_campaign_template_from_name')); $config->set('mailchimp_ct_campaign_template_from_email', $form_state->getValue('mailchimp_ct_campaign_template_from_email')); $config->set('mailchimp_ct_campaign_template_subject', $form_state->getValue('mailchimp_ct_campaign_template_subject')); $config->set('mailchimp_ct_campaign_template_body', $form_state->getValue('mailchimp_ct_campaign_template_body')); $config->set('mailchimp_ct_groups_sync', $form_state->getValue('mailchimp_ct_groups_sync')); $config->set('mailchimp_ct_groups', $form_state->getValue('mailchimp_ct_groups')); $config->set('mailchimp_ct_target_no_categories', $form_state->getValue('mailchimp_ct_target_no_categories')); $config->save(); $this->messenger() Loading Loading
modules/mailchimp_marketing_subscribe_ct/config/install/mailchimp_marketing_subscribe_ct.settings.yml +5 −1 Original line number Diff line number Diff line mailchimp_ct_audience_id: '' mailchimp_ct_group_id: '' mailchimp_ct_mapping: [] mailchimp_ct_campaign_template_from_name: 'Test Email' mailchimp_ct_campaign_template_from_email: '' mailchimp_ct_campaign_template_subject: 'Campaign subject' mailchimp_ct_campaign_template_body: '<h3>Campaign</h3>' mailchimp_ct_groups_sync: '' mailchimp_ct_groups: [] mailchimp_ct_target_no_categories: 0 No newline at end of file
modules/mailchimp_marketing_subscribe_ct/config/schema/mailchimp_marketing_subscribe_ct.schema.yml +14 −2 Original line number Diff line number Diff line Loading @@ -28,12 +28,24 @@ mailchimp_marketing_subscribe_ct.settings: sequence: type: string label: 'Mailchimp Group Id' mailchimp_ct_campaign_template_from_name: type: string label: 'Campaign from name' mailchimp_ct_campaign_template_from_email: type: string label: 'Campaign from email' mailchimp_ct_campaign_template_subject: type: string label: 'Campaign Template Subject' label: 'Campaign subject' mailchimp_ct_campaign_template_body: type: string label: 'Campaign Template Body' label: 'Campaign body' mailchimp_ct_groups_sync: type: string label: 'Campaign body' mailchimp_ct_target_no_categories: type: string label: 'Target no categories subscription' # Simplenews issue field type schema. #field.storage_settings.mailchimp_issue: Loading
modules/mailchimp_marketing_subscribe_ct/mailchimp_marketing_subscribe_ct.install +51 −2 Original line number Diff line number Diff line Loading @@ -20,8 +20,8 @@ function mailchimp_marketing_subscribe_ct_uninstall() { */ function mailchimp_marketing_subscribe_ct_update_9001() { $storage_definition = BaseFieldDefinition::create('string') ->setLabel(t('Mailchimp campaign')) ->setDescription(t('Mailchimp campaign.')) ->setLabel(t('Mailchimp campaign ID')) ->setDescription(t('Mailchimp test campaign ID.')) ->setRevisionable(TRUE) ->setSettings([ 'max_length' => 255, Loading Loading @@ -76,3 +76,52 @@ function mailchimp_marketing_subscribe_ct_update_9003(&$sandbox) { ->set('mailchimp_ct_groups', []) ->save(); } /** * Update settings: add from name and from email. */ function mailchimp_marketing_subscribe_ct_update_9004(&$sandbox) { $config = \Drupal::configFactory() ->getEditable('mailchimp_marketing_subscribe_ct.settings'); $config ->set('mailchimp_ct_campaign_template_from_name', 'Test Email') ->set('mailchimp_ct_campaign_template_from_email', '') ->save(); } /** * Add mailchimp_campaign_created field. */ function mailchimp_marketing_subscribe_ct_update_9005() { $storage_definition = BaseFieldDefinition::create('integer') ->setLabel(t('Mailchimp test campaign created')) ->setDescription(t('Mailchimp test campaign created timestamp.')) ->setRevisionable(TRUE) ->setSetting('unsigned', TRUE) ->setDisplayOptions('view', [ 'label' => 'hidden', 'region' => 'hidden', ]) ->setDisplayOptions('form', [ 'region' => 'hidden', ]) ->setDisplayConfigurable('form', FALSE) ->setDisplayConfigurable('view', FALSE); \Drupal::entityDefinitionUpdateManager() ->installFieldStorageDefinition('mailchimp_campaign_created', 'node', 'system', $storage_definition); } /** * Update settings: add mailchimp_ct_groups_sync. */ function mailchimp_marketing_subscribe_ct_update_9006(&$sandbox) { $config = \Drupal::configFactory() ->getEditable('mailchimp_marketing_subscribe_ct.settings'); $config ->set('mailchimp_ct_groups_sync', '') ->set('mailchimp_ct_target_all_categories', FALSE) ->save(); } No newline at end of file
modules/mailchimp_marketing_subscribe_ct/mailchimp_marketing_subscribe_ct.module +8 −2 Original line number Diff line number Diff line Loading @@ -28,8 +28,8 @@ function mailchimp_marketing_subscribe_ct_entity_base_field_info(EntityTypeInter $fields = []; $fields['mailchimp_campaign'] = BaseFieldDefinition::create('string') ->setLabel(t('Mailchimp campaign')) ->setDescription(t('Mailchimp campaign.')) ->setLabel(t('Mailchimp campaign ID')) ->setDescription(t('Mailchimp test campaign ID.')) ->setRevisionable(TRUE) ->setSettings([ 'max_length' => 255, Loading @@ -42,6 +42,12 @@ function mailchimp_marketing_subscribe_ct_entity_base_field_info(EntityTypeInter ->setRevisionable(TRUE) ->setSetting('unsigned', TRUE); $fields['mailchimp_campaign_created'] = BaseFieldDefinition::create('integer') ->setLabel(t('Mailchimp test campaign created')) ->setDescription(t('Mailchimp test campaign created timestamp.')) ->setRevisionable(TRUE) ->setSetting('unsigned', TRUE); return $fields; } }
modules/mailchimp_marketing_subscribe_ct/src/Form/MailchimpSubscribeCtSettingsForm.php +54 −3 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Drupal\mailchimp_marketing_subscribe_ct\Form; use Drupal\Component\Serialization\Json; use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; Loading Loading @@ -182,8 +183,10 @@ class MailchimpSubscribeCtSettingsForm extends ConfigFormBase { // Container for categories dropdown for Ajax callback. $form['container_ct_types'] = [ '#type' => 'container', '#type' => 'details', '#open' => TRUE, '#attributes' => ['id' => 'refresh-ct-mapping'], '#title' => $this->t('Content types mappings'), ]; if ($this->isConfigValueDifferent('mailchimp_ct_group_id')) { Loading Loading @@ -212,11 +215,27 @@ class MailchimpSubscribeCtSettingsForm extends ConfigFormBase { ]; } $form['mailchimp_ct_campaign_template_from_name'] = [ '#required' => TRUE, '#type' => 'textfield', '#title' => t('Campaign from name'), '#description' => t('Campaign from name.'), '#default_value' => $config->get('mailchimp_ct_campaign_template_from_name'), ]; $form['mailchimp_ct_campaign_template_from_email'] = [ '#required' => TRUE, '#type' => 'textfield', '#title' => t('Campaign from email'), '#description' => t('Campaign from email'), '#default_value' => $config->get('mailchimp_ct_campaign_template_from_email'), ]; $form['mailchimp_ct_campaign_template_subject'] = [ '#required' => TRUE, '#type' => 'textfield', '#title' => t('Campaign Template Subject'), '#description' => t('Campaign Template Subject. Available tokens: '), '#title' => t('Campaign subject'), '#description' => t('Campaign template subject. Available tokens: '), '#default_value' => $config->get('mailchimp_ct_campaign_template_subject'), ]; Loading @@ -228,6 +247,27 @@ class MailchimpSubscribeCtSettingsForm extends ConfigFormBase { '#default_value' => $config->get('mailchimp_ct_campaign_template_body'), ]; $syncCategories = $categories; try { foreach ($categories as $groupId => $category) { $syncCategories[$groupId] = [ 'title' => $category, 'item' => $this->mailchimp->getGroupItems($ct_audience_id, $groupId), ]; } } catch (ClientException $e) { } $decodedCategories = Json::encode($syncCategories); $form['mailchimp_ct_groups_sync'] = [ '#type' => 'textarea', '#title' => t('Groups (Read only)'), '#description' => t('Syncronised mailchimp groups'), '#default_value' => $decodedCategories, ]; unset($categories[$ct_group_id]); $form['mailchimp_ct_groups'] = [ '#multiple' => TRUE, '#type' => 'select', Loading @@ -237,6 +277,13 @@ class MailchimpSubscribeCtSettingsForm extends ConfigFormBase { '#options' => $categories, ]; $form['mailchimp_ct_target_no_categories'] = [ '#type' => 'checkbox', '#title' => t('Target no categories subscription'), '#description' => t('Generate additional campaign for content type for subscribers with no categories.'), '#default_value' => $decodedCategories, ]; $form['#validate'][] = [$this, 'validateForm']; return $form; Loading Loading @@ -278,9 +325,13 @@ class MailchimpSubscribeCtSettingsForm extends ConfigFormBase { $config->set('mailchimp_ct_audience_id', $audienceId); $config->set('mailchimp_ct_group_id', $groupId); $config->set('mailchimp_ct_mapping', $mappingValues); $config->set('mailchimp_ct_campaign_template_from_name', $form_state->getValue('mailchimp_ct_campaign_template_from_name')); $config->set('mailchimp_ct_campaign_template_from_email', $form_state->getValue('mailchimp_ct_campaign_template_from_email')); $config->set('mailchimp_ct_campaign_template_subject', $form_state->getValue('mailchimp_ct_campaign_template_subject')); $config->set('mailchimp_ct_campaign_template_body', $form_state->getValue('mailchimp_ct_campaign_template_body')); $config->set('mailchimp_ct_groups_sync', $form_state->getValue('mailchimp_ct_groups_sync')); $config->set('mailchimp_ct_groups', $form_state->getValue('mailchimp_ct_groups')); $config->set('mailchimp_ct_target_no_categories', $form_state->getValue('mailchimp_ct_target_no_categories')); $config->save(); $this->messenger() Loading