Development Version On Drupal 8
This commit is contained in:
parent
a2bee5f980
commit
80fb9de84f
@ -1,11 +1,11 @@
|
||||
HFS (Header Footer Scripts) module for Drupal 7.x.
|
||||
HFS (Header Footer Scripts) module for Drupal 8.x.
|
||||
This module allows you to add style and scripts in different region of the page
|
||||
from the front-end. You don't need to open any file for this purpose.
|
||||
|
||||
INSTALLATION INSTRUCTIONS
|
||||
-------------------------
|
||||
1. Copy the files included in the tarball into a directory named "hfs" in
|
||||
your Drupal sites/all/modules/ directory.
|
||||
1. Copy the files included in the tarball into a directory named "header_and_footer_scripts" in
|
||||
your Drupal modules/ directory.
|
||||
2. Login as site administrator.
|
||||
3. Enable the HFS (Header Footer Scripts) module on the Administer -> Modules
|
||||
page.
|
||||
@ -15,6 +15,6 @@ INSTALLATION INSTRUCTIONS
|
||||
|
||||
NOTES
|
||||
-----
|
||||
This module adds the styles and scripts on all over the site. There are 3
|
||||
This module adds the styles and scripts on all over the site. There are 2
|
||||
setting pages.
|
||||
These setting pages are allow you add the scripts in the desired region.
|
||||
|
8
header_and_footer_scripts.info.yml
Normal file
8
header_and_footer_scripts.info.yml
Normal file
@ -0,0 +1,8 @@
|
||||
name: HFS (Header Footer Scripts)
|
||||
description: This plugin allows you to add the scripts and styles on overall site from the front-end. No need to open files and add them there.
|
||||
package: HFS
|
||||
|
||||
type: module
|
||||
core: 8.x
|
||||
|
||||
configure: hfs.admin.body_settings
|
14
header_and_footer_scripts.install
Normal file
14
header_and_footer_scripts.install
Normal file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Uninstall functions for header_and_footer_scripts module.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Implements hook_uninstall().
|
||||
*/
|
||||
function header_and_footer_scripts_uninstall() {
|
||||
\Drupal::service('config.factory')->getEditable('hfs_body_scripts.settings')->delete();
|
||||
\Drupal::service('config.factory')->getEditable('hfs_footer_scripts.settings')->delete();
|
||||
}
|
5
header_and_footer_scripts.links.menu.yml
Normal file
5
header_and_footer_scripts.links.menu.yml
Normal file
@ -0,0 +1,5 @@
|
||||
hfs.admin.body_settings:
|
||||
title: 'HFS (Header Footer Scripts)'
|
||||
description: 'Allow to add scripts and styles from the frontend at the start of body tag.'
|
||||
parent: system.admin_config_development
|
||||
route_name: hfs.admin.body_settings
|
8
header_and_footer_scripts.links.task.yml
Normal file
8
header_and_footer_scripts.links.task.yml
Normal file
@ -0,0 +1,8 @@
|
||||
hfs.admin.body_settings:
|
||||
route_name: hfs.admin.body_settings
|
||||
title: 'Body Scripts'
|
||||
base_route: hfs.admin.body_settings
|
||||
hfs.admin.footer_settings:
|
||||
route_name: hfs.admin.footer_settings
|
||||
title: 'Footer Scripts'
|
||||
base_route: hfs.admin.body_settings
|
220
header_and_footer_scripts.module
Normal file
220
header_and_footer_scripts.module
Normal file
@ -0,0 +1,220 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Enables Drupal to add scripts and styles from frontend on all over the site.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Implements hook_page_top().
|
||||
*
|
||||
* Add scripts after the body tag on overall the site which are defined on the settings page.
|
||||
*/
|
||||
function header_and_footer_scripts_page_top(array &$page_top) {
|
||||
$body_section = \Drupal::config('hfs_body_scripts.settings')->get();
|
||||
if (isset($body_section['styles']) && !empty($body_section['styles'])) {
|
||||
$output_styles = preg_split("/(<\/style>|\/>)/", $body_section['styles']);
|
||||
$i = 1;
|
||||
foreach ($output_styles as $row) {
|
||||
|
||||
if (empty($row)) continue;
|
||||
|
||||
$style_tag = 'style';
|
||||
$style_attr = '';
|
||||
$value = '';
|
||||
|
||||
$style_attributes = preg_replace('/(<style|<link)/', '', $row, 1);
|
||||
$get_style_attr = preg_split('/(>)/', $style_attributes, 2);
|
||||
|
||||
if (isset($get_style_attr[1]))
|
||||
$value = $get_style_attr[1];
|
||||
|
||||
$get_style_tag = preg_split('/<link/', $row, 2);
|
||||
|
||||
if (isset($get_style_tag[1]))
|
||||
$style_tag = 'link';
|
||||
|
||||
if (isset($get_style_attr[0]) && !empty($get_style_attr[0])) {
|
||||
$get_attr = preg_replace('/(\'|\")/', '', $get_style_attr[0]);
|
||||
$get_attr = preg_replace('/\s+/', ',', $get_attr);
|
||||
$get_attr = preg_replace('/(,=,|,=|=,)/', '=', $get_attr);
|
||||
$fetch_attr = explode(',', $get_attr);
|
||||
|
||||
foreach ($fetch_attr as $attr) {
|
||||
if (empty($attr)) continue;
|
||||
|
||||
$attr_key_value = explode('=', $attr);
|
||||
if (isset($attr_key_value[0]) && isset($attr_key_value[1]))
|
||||
$style_attr[$attr_key_value[0]] = $attr_key_value[1];
|
||||
else
|
||||
$style_attr[$attr_key_value[0]] = $attr_key_value[0];
|
||||
}
|
||||
}
|
||||
|
||||
$page_top['top_styles_'.$i] = [
|
||||
'#type' => 'html_tag',
|
||||
'#tag' => $style_tag,
|
||||
'#value' => $value
|
||||
];
|
||||
if (is_array($style_attr))
|
||||
$page_top['top_styles_'.$i]['#attributes'] = $style_attr;
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
if (isset($body_section['scripts']) && !empty($body_section['scripts'])) {
|
||||
$output_scripts = preg_split("/(<\/script>|<\/noscript>)/", $body_section['scripts']);
|
||||
$i = 1;
|
||||
foreach ($output_scripts as $row) {
|
||||
|
||||
if (empty($row)) continue;
|
||||
|
||||
$script_tag = 'script';
|
||||
$script_attr = '';
|
||||
$value = '';
|
||||
|
||||
$script_attributes = preg_replace('/(<script|<noscript)/', '', $row, 1);
|
||||
$get_script_attr = preg_split('/(>)/', $script_attributes, 2);
|
||||
|
||||
if (isset($get_script_attr[1]))
|
||||
$value = $get_script_attr[1];
|
||||
|
||||
$get_script_tag = preg_split('/<noscript/', $row, 2);
|
||||
|
||||
if (isset($get_script_tag[1]))
|
||||
$script_tag = 'noscript';
|
||||
|
||||
if (isset($get_script_attr[0]) && !empty($get_script_attr[0])) {
|
||||
$get_attr = preg_replace('/(\'|\")/', '', $get_script_attr[0]);
|
||||
$get_attr = preg_replace('/\s+/', ',', $get_attr);
|
||||
$get_attr = preg_replace('/(,=,|,=|=,)/', '=', $get_attr);
|
||||
$fetch_attr = explode(',', $get_attr);
|
||||
|
||||
foreach ($fetch_attr as $attr) {
|
||||
if (empty($attr)) continue;
|
||||
|
||||
$attr_key_value = explode('=', $attr);
|
||||
if (isset($attr_key_value[0]) && isset($attr_key_value[1]))
|
||||
$script_attr[$attr_key_value[0]] = $attr_key_value[1];
|
||||
else
|
||||
$script_attr[$attr_key_value[0]] = $attr_key_value[0];
|
||||
}
|
||||
}
|
||||
|
||||
$page_top['top_scripts_'.$i] = [
|
||||
'#type' => 'html_tag',
|
||||
'#tag' => $script_tag,
|
||||
'#value' => $value
|
||||
];
|
||||
if (is_array($script_attr))
|
||||
$page_top['top_scripts_'.$i]['#attributes'] = $script_attr;
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_page_bottom().
|
||||
*
|
||||
* Add scripts before the Footer tag on overall the site which are defined on the settings page.
|
||||
*/
|
||||
function header_and_footer_scripts_page_bottom(array &$page_bottom) {
|
||||
$footer_section = \Drupal::config('hfs_footer_scripts.settings')->get();
|
||||
if (isset($footer_section['styles']) && !empty($footer_section['styles'])) {
|
||||
$output_styles = preg_split("/(<\/style>|\/>)/", $footer_section['styles']);
|
||||
$i = 1;
|
||||
foreach ($output_styles as $row) {
|
||||
|
||||
if (empty($row)) continue;
|
||||
|
||||
$style_tag = 'style';
|
||||
$style_attr = '';
|
||||
$value = '';
|
||||
|
||||
$style_attributes = preg_replace('/(<style|<link)/', '', $row, 1);
|
||||
$get_style_attr = preg_split('/(>)/', $style_attributes, 2);
|
||||
|
||||
if (isset($get_style_attr[1]))
|
||||
$value = $get_style_attr[1];
|
||||
|
||||
$get_style_tag = preg_split('/<link/', $row, 2);
|
||||
|
||||
if (isset($get_style_tag[1]))
|
||||
$style_tag = 'link';
|
||||
|
||||
if (isset($get_style_attr[0]) && !empty($get_style_attr[0])) {
|
||||
$get_attr = preg_replace('/(\'|\")/', '', $get_style_attr[0]);
|
||||
$get_attr = preg_replace('/\s+/', ',', $get_attr);
|
||||
$get_attr = preg_replace('/(,=,|,=|=,)/', '=', $get_attr);
|
||||
$fetch_attr = explode(',', $get_attr);
|
||||
|
||||
foreach ($fetch_attr as $attr) {
|
||||
if (empty($attr)) continue;
|
||||
|
||||
$attr_key_value = explode('=', $attr);
|
||||
if (isset($attr_key_value[0]) && isset($attr_key_value[1]))
|
||||
$style_attr[$attr_key_value[0]] = $attr_key_value[1];
|
||||
else
|
||||
$style_attr[$attr_key_value[0]] = $attr_key_value[0];
|
||||
}
|
||||
}
|
||||
|
||||
$page_bottom['bottom_styles_'.$i] = [
|
||||
'#type' => 'html_tag',
|
||||
'#tag' => $style_tag,
|
||||
'#value' => $value
|
||||
];
|
||||
if (is_array($style_attr))
|
||||
$page_bottom['bottom_styles_'.$i]['#attributes'] = $style_attr;
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
if (isset($footer_section['scripts']) && !empty($footer_section['scripts'])) {
|
||||
$output_scripts = preg_split("/(<\/script>|<\/noscript>)/", $footer_section['scripts']);
|
||||
$i = 1;
|
||||
foreach ($output_scripts as $row) {
|
||||
|
||||
if (empty($row)) continue;
|
||||
|
||||
$script_tag = 'script';
|
||||
$script_attr = '';
|
||||
$value = '';
|
||||
|
||||
$script_attributes = preg_replace('/(<script|<noscript)/', '', $row, 1);
|
||||
$get_script_attr = preg_split('/(>)/', $script_attributes, 2);
|
||||
|
||||
if (isset($get_script_attr[1]))
|
||||
$value = $get_script_attr[1];
|
||||
|
||||
$get_script_tag = preg_split('/<noscript/', $row, 2);
|
||||
|
||||
if (isset($get_script_tag[1]))
|
||||
$script_tag = 'noscript';
|
||||
|
||||
if (isset($get_script_attr[0]) && !empty($get_script_attr[0])) {
|
||||
$get_attr = preg_replace('/(\'|\")/', '', $get_script_attr[0]);
|
||||
$get_attr = preg_replace('/\s+/', ',', $get_attr);
|
||||
$get_attr = preg_replace('/(,=,|,=|=,)/', '=', $get_attr);
|
||||
$fetch_attr = explode(',', $get_attr);
|
||||
|
||||
foreach ($fetch_attr as $attr) {
|
||||
if (empty($attr)) continue;
|
||||
|
||||
$attr_key_value = explode('=', $attr);
|
||||
if (isset($attr_key_value[0]) && isset($attr_key_value[1]))
|
||||
$script_attr[$attr_key_value[0]] = $attr_key_value[1];
|
||||
else
|
||||
$script_attr[$attr_key_value[0]] = $attr_key_value[0];
|
||||
}
|
||||
}
|
||||
|
||||
$page_bottom['bottom_scripts_'.$i] = [
|
||||
'#type' => 'html_tag',
|
||||
'#tag' => $script_tag,
|
||||
'#value' => $value
|
||||
];
|
||||
if (is_array($script_attr))
|
||||
$page_bottom['bottom_scripts_'.$i]['#attributes'] = $script_attr;
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
}
|
4
header_and_footer_scripts.permissions.yml
Normal file
4
header_and_footer_scripts.permissions.yml
Normal file
@ -0,0 +1,4 @@
|
||||
header_and_footer_scripts_settings:
|
||||
title: 'Add Scripts all over the site'
|
||||
description: 'Users who have this permission can add and remove the scripts from the site.'
|
||||
restrict access: TRUE
|
14
header_and_footer_scripts.routing.yml
Normal file
14
header_and_footer_scripts.routing.yml
Normal file
@ -0,0 +1,14 @@
|
||||
hfs.admin.body_settings:
|
||||
path: '/admin/config/development/hfs/body'
|
||||
defaults:
|
||||
_form: '\Drupal\header_and_footer_scripts\Form\BodyForm'
|
||||
_title: 'HFS (Header Footer Scripts)'
|
||||
requirements:
|
||||
_permission: 'header_and_footer_scripts_settings'
|
||||
hfs.admin.footer_settings:
|
||||
path: '/admin/config/development/hfs/footer'
|
||||
defaults:
|
||||
_form: '\Drupal\header_and_footer_scripts\Form\FooterForm'
|
||||
_title: 'HFS (Header Footer Scripts) for Footer'
|
||||
requirements:
|
||||
_permission: 'header_and_footer_scripts_settings'
|
153
hfs.admin.inc
153
hfs.admin.inc
@ -1,153 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Administrative page code for the Header Footer Script module.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Administrative settings.
|
||||
*
|
||||
* @return array
|
||||
* Add styles and scripts in header.
|
||||
*/
|
||||
function hfs_header_settings_form($form, &$form_state) {
|
||||
$header_section = variable_get('hfs_header_scripts');
|
||||
|
||||
$form['hfs_header'] = array(
|
||||
'#type' => 'fieldset',
|
||||
'#title' => t('Add Scripts and Styles in Header'),
|
||||
'#description' => t('All the defined scripts and styles in this section would be added under the <strong>head</strong> tag.'),
|
||||
);
|
||||
|
||||
$form['hfs_header']['styles'] = array(
|
||||
'#type' => 'textarea',
|
||||
'#title' => t('Header Styles'),
|
||||
'#default_value' => isset($header_section['styles']) ? $header_section['styles'] : '',
|
||||
'#description' => t('<p>You can add multiple <strong>stylesheets</strong> here with multiple ways, For example: </p><p>1. <link type="text/css" rel="stylesheet" href="http://www.example.com/style.css" media="all" /></p><p> 2. <link type="text/css" rel="stylesheet" href="/style.css" media="all" /></p><p> 3. <style>#header { color: grey; }</style></p>'),
|
||||
'#rows' => 10,
|
||||
);
|
||||
|
||||
$form['hfs_header']['scripts'] = array(
|
||||
'#type' => 'textarea',
|
||||
'#title' => t('Header Scripts'),
|
||||
'#default_value' => isset($header_section['scripts']) ? $header_section['scripts'] : '',
|
||||
'#description' => t('<p>You can add multiple <strong>scripts</strong> here with multiple ways, For example: </p><p>1. <script type="text/javascript" src="http://www.example.com/script.js"></script></p><p> 2. <script type="text/javascript" src="/script.js"></script></p><p> 3. <script type="text/javascript"><!--//--><![CDATA[//><!--// close script tag //--><!]]></script></p>'),
|
||||
'#rows' => 10,
|
||||
);
|
||||
|
||||
$form['submit'] = array(
|
||||
'#type' => 'submit',
|
||||
'#value' => 'Save Header Settings',
|
||||
);
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Submit handler().
|
||||
*/
|
||||
function hfs_header_settings_form_submit($form, &$form_state) {
|
||||
$header['styles'] = $form_state['values']['styles'];
|
||||
$header['scripts'] = $form_state['values']['scripts'];
|
||||
serialize($header);
|
||||
variable_set('hfs_header_scripts', $header);
|
||||
}
|
||||
|
||||
/**
|
||||
* Administrative settings.
|
||||
*
|
||||
* @return array
|
||||
* Add styles and scripts at the start of the body tag.
|
||||
*/
|
||||
function hfs_body_settings_form($form, &$form_state) {
|
||||
$body_section = variable_get('hfs_body_scripts');
|
||||
|
||||
$form['hfs_body'] = array(
|
||||
'#type' => 'fieldset',
|
||||
'#title' => t('Add Scripts and Styles in body'),
|
||||
'#description' => t('All the defined scripts and styles in this section would be added next to <strong>body</strong> tag.'),
|
||||
);
|
||||
|
||||
$form['hfs_body']['styles'] = array(
|
||||
'#type' => 'textarea',
|
||||
'#title' => t('Body Styles'),
|
||||
'#default_value' => isset($body_section['styles']) ? $body_section['styles'] : '',
|
||||
'#description' => t('<p>You can add multiple <strong>stylesheets</strong> here with multiple ways, For example: </p><p>1. <link type="text/css" rel="stylesheet" href="http://www.example.com/style.css" media="all" /></p><p> 2. <link type="text/css" rel="stylesheet" href="/style.css" media="all" /></p><p> 3. <style>#header { color: grey; }</style></p>'),
|
||||
'#rows' => 10,
|
||||
);
|
||||
|
||||
$form['hfs_body']['scripts'] = array(
|
||||
'#type' => 'textarea',
|
||||
'#title' => t('Body Scripts'),
|
||||
'#default_value' => isset($body_section['scripts']) ? $body_section['scripts'] : '',
|
||||
'#description' => t('<p>On mostly sites, this section is used to add the <strong>Google Tag Manager</strong>. <strong>Like:</strong></p><p>1. <!-- Google Tag Manager --><noscript><strong>Write Your code here</strong></script><!-- End Google Tag Manager --></p><p>You can also add multiple <strong>scripts</strong> here with multiple ways, For example: </p><p>1. <script type="text/javascript" src="http://www.example.com/script.js"></script></p><p> 2. <script type="text/javascript" src="/script.js"></script></p><p> 3. <script type="text/javascript"><!--//--><![CDATA[//><!--// close script tag //--><!]]></script></p>'),
|
||||
'#rows' => 10,
|
||||
);
|
||||
|
||||
$form['submit'] = array(
|
||||
'#type' => 'submit',
|
||||
'#value' => 'Save Body Settings',
|
||||
);
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Submit handler().
|
||||
*/
|
||||
function hfs_body_settings_form_submit($form, &$form_state) {
|
||||
$body['styles'] = $form_state['values']['styles'];
|
||||
$body['scripts'] = $form_state['values']['scripts'];
|
||||
serialize($body);
|
||||
variable_set('hfs_body_scripts', $body);
|
||||
}
|
||||
|
||||
/**
|
||||
* Administrative settings.
|
||||
*
|
||||
* @return array
|
||||
* Add styles and scripts in footer (before closing the body tag).
|
||||
*/
|
||||
function hfs_footer_settings_form($form, &$form_state) {
|
||||
$footer_section = variable_get('hfs_footer_scripts');
|
||||
|
||||
$form['hfs_footer'] = array(
|
||||
'#type' => 'fieldset',
|
||||
'#title' => t('Add Scripts and Styles in Footer'),
|
||||
'#description' => t('All the defined scripts and styles in this section would be added just before closing the <strong>body</strong> tag.'),
|
||||
);
|
||||
|
||||
$form['hfs_footer']['styles'] = array(
|
||||
'#type' => 'textarea',
|
||||
'#title' => t('Footer Styles'),
|
||||
'#default_value' => isset($footer_section['styles']) ? $footer_section['styles'] : '',
|
||||
'#description' => t('<p>You can add multiple <strong>stylesheets</strong> here with multiple ways, For example: </p><p>1. <link type="text/css" rel="stylesheet" href="http://www.example.com/style.css" media="all" /></p><p> 2. <link type="text/css" rel="stylesheet" href="/style.css" media="all" /></p><p> 3. <style>#header { color: grey; }</style></p>'),
|
||||
'#rows' => 10,
|
||||
);
|
||||
|
||||
$form['hfs_footer']['scripts'] = array(
|
||||
'#type' => 'textarea',
|
||||
'#title' => t('Footer Scripts'),
|
||||
'#default_value' => isset($footer_section['scripts']) ? $footer_section['scripts'] : '',
|
||||
'#description' => t('<p>You can add multiple <strong>scripts</strong> here with multiple ways, For example: </p><p>1. <script type="text/javascript" src="http://www.example.com/script.js"></script></p><p> 2. <script type="text/javascript" src="/script.js"></script></p><p> 3. <script type="text/javascript"><!--//--><![CDATA[//><!--// close script tag //--><!]]></script></p>'),
|
||||
'#rows' => 10,
|
||||
);
|
||||
|
||||
$form['submit'] = array(
|
||||
'#type' => 'submit',
|
||||
'#value' => 'Save Footer Settings',
|
||||
);
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Submit handler().
|
||||
*/
|
||||
function hfs_footer_settings_form_submit($form, &$form_state) {
|
||||
$footer['styles'] = $form_state['values']['styles'];
|
||||
$footer['scripts'] = $form_state['values']['scripts'];
|
||||
serialize($footer);
|
||||
variable_set('hfs_footer_scripts', $footer);
|
||||
}
|
5
hfs.info
5
hfs.info
@ -1,5 +0,0 @@
|
||||
name = HFS (Header Footer Scripts)
|
||||
description = "This plugin allows you to add the scripts and styles on overall site from the front-end. No need to open files and add them there"
|
||||
core = 7.x
|
||||
package = HFS
|
||||
configure = admin/config/development/hfs
|
15
hfs.install
15
hfs.install
@ -1,15 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Uninstall functions for hfs module.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Implements hook_uninstall().
|
||||
*/
|
||||
function hfs_uninstall() {
|
||||
variable_del("hfs_header_scripts");
|
||||
variable_del("hfs_body_scripts");
|
||||
variable_del("hfs_footer_scripts");
|
||||
}
|
109
hfs.module
109
hfs.module
@ -1,109 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Enables Drupal to add scripts and styles from frontend on all over the site.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Implements hook_menu().
|
||||
*/
|
||||
function hfs_menu() {
|
||||
|
||||
$items['admin/config/development/hfs'] = array(
|
||||
'title' => 'HFS (Header Footer Scripts)',
|
||||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('hfs_header_settings_form'),
|
||||
'access arguments' => array('administer hfs module'),
|
||||
'description' => 'Allow to add scripts and styles from the frontend under Head section.',
|
||||
'file' => 'hfs.admin.inc',
|
||||
'weight' => 10,
|
||||
);
|
||||
|
||||
$items['admin/config/development/hfs/header'] = array(
|
||||
'title' => 'Header Scripts',
|
||||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('hfs_header_settings_form'),
|
||||
'access arguments' => array('administer hfs module'),
|
||||
'description' => 'Allow to add scripts and styles from the frontend under Head section.',
|
||||
'file' => 'hfs.admin.inc',
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 20,
|
||||
);
|
||||
|
||||
$items['admin/config/development/hfs/body'] = array(
|
||||
'title' => 'Body Scripts',
|
||||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('hfs_body_settings_form'),
|
||||
'access arguments' => array('administer hfs module'),
|
||||
'description' => 'Allow to add scripts and styles from the frontend at the start of BODY Tag.',
|
||||
'file' => 'hfs.admin.inc',
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 30,
|
||||
);
|
||||
|
||||
$items['admin/config/development/hfs/footer'] = array(
|
||||
'title' => 'Footer Scripts',
|
||||
'page callback' => 'drupal_get_form',
|
||||
'page arguments' => array('hfs_footer_settings_form'),
|
||||
'access arguments' => array('administer hfs module'),
|
||||
'description' => 'Allow to add scripts and styles from the frontend just before the end of BODY Tag.',
|
||||
'file' => 'hfs.admin.inc',
|
||||
'type' => MENU_LOCAL_TASK,
|
||||
'weight' => 40,
|
||||
);
|
||||
|
||||
return $items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_permission().
|
||||
*/
|
||||
function hfs_permission() {
|
||||
|
||||
$permissions['administer hfs module'] = array(
|
||||
'title' => t('Add Scripts all over the site'),
|
||||
'restrict access' => TRUE,
|
||||
'description' => t('Users who have this permission can add and remove the scripts from the site.'),
|
||||
);
|
||||
|
||||
return $permissions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_process_html().
|
||||
*
|
||||
* Add scripts on overall the site which are defined on the settings page.
|
||||
*/
|
||||
function hfs_process_html(&$variables) {
|
||||
|
||||
$header_scripts = variable_get('hfs_header_scripts');
|
||||
$body_scripts = variable_get('hfs_body_scripts');
|
||||
$footer_scripts = variable_get('hfs_footer_scripts');
|
||||
|
||||
if (isset($body_scripts) && !empty($body_scripts)) {
|
||||
if (!empty($body_scripts['styles'])) {
|
||||
$variables['page_top'] .= $body_scripts['styles'] . PHP_EOL;
|
||||
}
|
||||
if (!empty($body_scripts['scripts'])) {
|
||||
$variables['page_top'] .= $body_scripts['scripts'] . PHP_EOL;
|
||||
}
|
||||
}
|
||||
if (isset($header_scripts) && !empty($header_scripts)) {
|
||||
if (!empty($header_scripts['styles'])) {
|
||||
$variables['styles'] .= $header_scripts['styles'] . PHP_EOL;
|
||||
}
|
||||
if (!empty($header_scripts['scripts'])) {
|
||||
$variables['scripts'] .= $header_scripts['scripts'] . PHP_EOL;
|
||||
}
|
||||
}
|
||||
if (isset($footer_scripts) && !empty($footer_scripts)) {
|
||||
if (!empty($footer_scripts['styles'])) {
|
||||
$variables['page_bottom'] .= $footer_scripts['styles'] . PHP_EOL;
|
||||
}
|
||||
if (!empty($footer_scripts['scripts'])) {
|
||||
$variables['page_bottom'] .= $footer_scripts['scripts'] . PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
70
src/Form/BodyForm.php
Normal file
70
src/Form/BodyForm.php
Normal file
@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace Drupal\header_and_footer_scripts\Form;
|
||||
|
||||
use Drupal\Core\Form\ConfigFormBase;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Drupal\Core\Form\FormStateInterface;
|
||||
|
||||
class BodyForm extends ConfigFormBase {
|
||||
/**
|
||||
* Implements FormBuilder::getFormId
|
||||
*/
|
||||
public function getFormId() {
|
||||
return 'hfs_body_settings';
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements ConfigFormBase::getEditableConfigNames
|
||||
*/
|
||||
protected function getEditableConfigNames() {
|
||||
return ['hfs_body_scripts.settings'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements FormBuilder::buildForm
|
||||
*/
|
||||
public function buildForm(array $form, FormStateInterface $form_state, Request $request = NULL) {
|
||||
$body_section = \Drupal::config('hfs_body_scripts.settings')->get();
|
||||
|
||||
$form['hfs_body'] = array(
|
||||
'#type' => 'fieldset',
|
||||
'#title' => t('Add Scripts and Styles in body'),
|
||||
'#description' => t('All the defined scripts and styles in this section would be added next to <strong>body</strong> tag.'),
|
||||
);
|
||||
|
||||
$form['hfs_body']['styles'] = array(
|
||||
'#type' => 'textarea',
|
||||
'#title' => t('Body Styles'),
|
||||
'#default_value' => isset($body_section['styles']) ? $body_section['styles'] : '',
|
||||
'#description' => t('<p>You can add multiple <strong>stylesheets</strong> here with multiple ways, For example: </p><p>1. <link type="text/css" rel="stylesheet" href="http://www.example.com/style.css" media="all" /></p><p> 2. <link type="text/css" rel="stylesheet" href="/style.css" media="all" /></p><p> 3. <style>#header { color: grey; }</style></p>'),
|
||||
'#rows' => 10,
|
||||
);
|
||||
|
||||
$form['hfs_body']['scripts'] = array(
|
||||
'#type' => 'textarea',
|
||||
'#title' => t('Body Scripts'),
|
||||
'#default_value' => isset($body_section['scripts']) ? $body_section['scripts'] : '',
|
||||
'#description' => t('<p>On mostly sites, this section is used to add the <strong>Google Tag Manager</strong>. <strong>Like:</strong></p><p>1. <!-- Google Tag Manager --><noscript><strong>Write Your code here</strong></script><!-- End Google Tag Manager --></p><p>You can also add multiple <strong>scripts</strong> here with multiple ways, For example: </p><p>1. <script type="text/javascript" src="http://www.example.com/script.js"></script></p><p> 2. <script type="text/javascript" src="/script.js"></script></p><p> 3. <script type="text/javascript">console.log("HFS Body");</script></p>'),
|
||||
'#rows' => 10,
|
||||
);
|
||||
|
||||
return parent::buildForm($form, $form_state);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements FormBuilder::submitForm().
|
||||
*
|
||||
* Serialize the user's settings and save it to the Drupal's config Table.
|
||||
*/
|
||||
public function submitForm(array &$form, FormStateInterface $form_state) {
|
||||
$values = $form_state->getValues();
|
||||
|
||||
\Drupal::service('config.factory')->getEditable('hfs_body_scripts.settings')
|
||||
->set('styles', $values['styles'])
|
||||
->set('scripts', $values['scripts'])
|
||||
->save();
|
||||
|
||||
drupal_set_message($this->t('Your Settings have been saved.'), 'status');
|
||||
}
|
||||
}
|
70
src/Form/FooterForm.php
Normal file
70
src/Form/FooterForm.php
Normal file
@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace Drupal\header_and_footer_scripts\Form;
|
||||
|
||||
use Drupal\Core\Form\ConfigFormBase;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Drupal\Core\Form\FormStateInterface;
|
||||
|
||||
class FooterForm extends ConfigFormBase {
|
||||
/**
|
||||
* Implements FormBuilder::getFormId
|
||||
*/
|
||||
public function getFormId() {
|
||||
return 'hfs_footer_settings';
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements ConfigFormBase::getEditableConfigNames
|
||||
*/
|
||||
protected function getEditableConfigNames() {
|
||||
return ['hfs_footer_scripts.settings'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements FormBuilder::buildForm
|
||||
*/
|
||||
public function buildForm(array $form, FormStateInterface $form_state, Request $request = NULL) {
|
||||
$footer_section = \Drupal::config('hfs_footer_scripts.settings')->get();
|
||||
|
||||
$form['hfs_footer'] = array(
|
||||
'#type' => 'fieldset',
|
||||
'#title' => t('Add Scripts and Styles in Footer'),
|
||||
'#description' => t('All the defined scripts and styles in this section would be added just before closing the <strong>body</strong> tag.'),
|
||||
);
|
||||
|
||||
$form['hfs_footer']['styles'] = array(
|
||||
'#type' => 'textarea',
|
||||
'#title' => t('Footer Styles'),
|
||||
'#default_value' => isset($footer_section['styles']) ? $footer_section['styles'] : '',
|
||||
'#description' => t('<p>You can add multiple <strong>stylesheets</strong> here with multiple ways, For example: </p><p>1. <link type="text/css" rel="stylesheet" href="http://www.example.com/style.css" media="all" /></p><p> 2. <link type="text/css" rel="stylesheet" href="/style.css" media="all" /></p><p> 3. <style>#header { color: grey; }</style></p>'),
|
||||
'#rows' => 10,
|
||||
);
|
||||
|
||||
$form['hfs_footer']['scripts'] = array(
|
||||
'#type' => 'textarea',
|
||||
'#title' => t('Footer Scripts'),
|
||||
'#default_value' => isset($footer_section['scripts']) ? $footer_section['scripts'] : '',
|
||||
'#description' => t('<p>You can add multiple <strong>scripts</strong> here with multiple ways, For example: </p><p>1. <script type="text/javascript" src="http://www.example.com/script.js"></script></p><p> 2. <script type="text/javascript" src="/script.js"></script></p><p> 3. <script type="text/javascript">console.log("HFS Footer");</script></p>'),
|
||||
'#rows' => 10,
|
||||
);
|
||||
|
||||
return parent::buildForm($form, $form_state);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements FormBuilder::submitForm().
|
||||
*
|
||||
* Serialize the user's settings and save it to the Drupal's config Table.
|
||||
*/
|
||||
public function submitForm(array &$form, FormStateInterface $form_state) {
|
||||
$values = $form_state->getValues();
|
||||
|
||||
\Drupal::service('config.factory')->getEditable('hfs_footer_scripts.settings')
|
||||
->set('styles', $values['styles'])
|
||||
->set('scripts', $values['scripts'])
|
||||
->save();
|
||||
|
||||
drupal_set_message($this->t('Your Settings have been saved.'), 'status');
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user