public function JuicerEmbedFeedBlock::blockForm in Juicer - Social Media Feed Aggregator 8
Returns the configuration form elements specific to this block plugin.
Blocks that need to add form elements to the normal block configuration form should implement this method.
Parameters
array $form: The form definition array for the block configuration form.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array The renderable form array representing the entire configuration form.
Overrides BlockPluginTrait::blockForm
File
- src/
Plugin/ Block/ JuicerEmbedFeedBlock.php, line 63
Class
- JuicerEmbedFeedBlock
- Provides a Juicer embed block.
Namespace
Drupal\juicerio\Plugin\BlockCode
public function blockForm($form, FormStateInterface $form_state) {
$delta = $this
->getDerivativeId();
$config = $this
->getConfiguration();
// Options array for later down in the form.
$post_number_array = [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
15,
20,
25,
50,
75,
100,
250,
500,
1000,
];
$pagination_array = [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
15,
20,
25,
50,
100,
];
$column_array = [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
];
$style_array = [
'modern' => 'Modern',
'night' => 'Night',
'polaroid' => 'Polaroid',
'image_grid' => 'Image Grid',
'widget' => 'Widget',
'slider' => 'Slider',
'hip' => 'Hip',
'living_wall' => 'Living Wall',
];
$form['juicer'] = [
'#type' => 'details',
'#title' => 'Juicer Feed Settings',
];
// Set the Juicer ID at the block level.
$form['juicer'][$delta . '_feed_id'] = [
'#type' => 'textfield',
'#title' => $this
->t('Juicer Username Override'),
'#default_value' => isset($config[$delta . '_feed_id']) ? $config[$delta . '_feed_id'] : '',
'#description' => $this
->t('Enter a block level Juicer username. If left blank the default will be taken from the global username.'),
];
// Feed style.
$form['juicer'][$delta . '_style'] = [
'#type' => 'select',
'#title' => $this
->t('Feed Style'),
'#options' => $style_array,
'#description' => $this
->t('Select the style in which the feed is displayed.'),
'#default_value' => isset($config[$delta . '_style']) ? $config[$delta . '_style'] : 'modern',
];
// Number of posts.
$form['juicer'][$delta . '_post_number'] = [
'#type' => 'select',
'#title' => $this
->t('Number of posts'),
'#options' => array_combine($post_number_array, $post_number_array),
'#description' => $this
->t('Set the total number of posts shown. Defaults to 100.'),
'#default_value' => isset($config[$delta . '_post_number']) ? $config[$delta . '_post_number'] : 0,
];
// Infinite scrolling pages.
$form['juicer'][$delta . '_infinite_pages'] = [
'#type' => 'select',
'#title' => $this
->t('Number of scrolling pages'),
'#default_value' => isset($config[$delta . '_infinite_pages']) ? $config[$delta . '_infinite_pages'] : 0,
'#options' => array_combine($pagination_array, $pagination_array),
'#description' => $this
->t('Set to 0 your feed will scroll infinitely: more and more posts will keep being added to the feed until all your posts are visible.<br />
If set to 1, only the first page of results will be visible. If set to 2, the feed will scroll just once.'),
];
// Space between posts.
$form['juicer'][$delta . '_gutter_amt'] = [
'#type' => 'textfield',
'#title' => $this
->t('Column gutter size'),
'#field_suffix' => $this
->t('pixels'),
'#size' => 5,
'#default_value' => isset($config[$delta . '_gutter_amt']) ? $config[$delta . '_gutter_amt'] : '',
'#description' => $this
->t('The column gutter is the horizontal space between columns of posts. Defaults to 20 pixels.'),
];
// Change number of columns.
$form['juicer'][$delta . '_column_number'] = [
'#type' => 'select',
'#title' => $this
->t('Number of columns'),
'#default_value' => isset($config[$delta . '_column_number']) ? $config[$delta . '_column_number'] : 1,
'#options' => array_combine($column_array, $column_array),
'#description' => $this
->t("Columns are not allowed to be less than 200px (as it doesn't look good). If the number of columns set here is not respected, increase the size of the containing element."),
];
// Filter the posts based on social account.
$form['juicer'][$delta . '_filter'] = [
'#type' => 'textfield',
'#title' => $this
->t('Filter the posts based on social account'),
'#default_value' => isset($config[$delta . '_filter']) ? $config[$delta . '_filter'] : '',
'#description' => $this
->t('To filter your posts, enter either the capitalized name of the source, or the account name of source source.<br />
Example: If you have an Instagram source of #tbt, enter either <em>tbt</em> or <em>Instagram</em> to only show posts from that source.<br />
Note: If you have multiple Instagram sources entering <em>Instagram</em> will show posts from all of them.'),
];
return $form;
}