59 lines
2.6 KiB
PHP
59 lines
2.6 KiB
PHP
<?php
|
|
|
|
use Drupal\Core\Form\FormStateInterface;
|
|
|
|
function materio_simplenews_entity_type_alter(array &$entity_types) {
|
|
$entity_types['simplenews_subscriber']->setFormClass('materio_block', '\Drupal\materio_simplenews\Form\MaterioSubscriptionsBlockForm');
|
|
}
|
|
|
|
/**
|
|
* Implements hook_form_alter().
|
|
*
|
|
* Forces Honeypot protection on simplenews subscription block forms
|
|
* (form ID includes a dynamic block unique_id, e.g.
|
|
* simplenews_subscriptions_block_footersimplenewssubscriptionblock).
|
|
* This can never appear as a checkbox on Honeypot's own settings form
|
|
* (which only lists a fixed set of core/contact/node/comment forms), so
|
|
* config-based protection would silently disappear if that settings
|
|
* form is ever saved. Applying it here in code makes it permanent and
|
|
* covers any future block instance of this type automatically.
|
|
*/
|
|
function materio_simplenews_form_alter(&$form, FormStateInterface $form_state, $form_id) {
|
|
if (strpos($form_id, 'simplenews_subscriptions_block_') === 0 && \Drupal::moduleHandler()->moduleExists('honeypot')) {
|
|
\Drupal::service('honeypot')->addFormProtection($form, $form_state, ['honeypot', 'time_restriction']);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implements hook_form_alter().
|
|
*/
|
|
// node_simplenews_issue_edit_form
|
|
function materio_simplenews_form_node_simplenews_issue_form_alter(&$form, &$form_state, $form_id) {
|
|
if(isset($_REQUEST['newsletter'])){
|
|
$news_id = $_REQUEST['newsletter'];
|
|
$newsletters = array_keys(simplenews_newsletter_get_all());
|
|
if(in_array($news_id, $newsletters)){
|
|
|
|
// prepopulate type of news
|
|
$form['simplenews_issue']['widget']['target_id']['#default_value'] = $news_id;
|
|
$form['simplenews_issue']['widget']['target_id']['#disabled'] = true;
|
|
unset($form['simplenews_issue']['widget']['target_id']['#ajax']);
|
|
|
|
// change default template regarding type of news
|
|
$form['body']['widget'][0]['#default_value'] = materio_simplenews_getSimplenewsNodeBodyTemplate($news_id);
|
|
$form['body']['widget'][0]['#rows'] = 50;
|
|
$form['body']['widget'][0]['#format'] = 'full_html';
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
function materio_simplenews_getSimplenewsNodeBodyTemplate($news_id){
|
|
return file_get_contents(\Drupal::service('extension.list.module')->getPath('materio_simplenews').'/templates/simplenews_'.$news_id.'_node.html');
|
|
}
|
|
|
|
function materio_simplenews_form_node_simplenews_issue_edit_form_alter(&$form, &$form_state, $form_id) {
|
|
$default = $form['simplenews_issue']['widget']['target_id']['#default_value'];
|
|
$form['simplenews_issue']['widget']['target_id']['#default_value'] = $default[0];
|
|
$form['simplenews_issue']['widget']['target_id']['#disabled'] = true;
|
|
} |