From fa08109830cd14bb4459341b8c75263a135d827f Mon Sep 17 00:00:00 2001 From: Peter Liebetrau Date: Sun, 20 Jan 2019 10:04:25 +0100 Subject: [PATCH] new addon - cookienotice - configure, show and handle a simple cookie usage notice --- cookienotice/README | 7 ++ cookienotice/cookienotice.css | 23 +++++ cookienotice/cookienotice.php | 109 ++++++++++++++++++++++++ cookienotice/templates/cookienotice.tpl | 23 +++++ cookienotice/templates/head.tpl | 40 +++++++++ cookienotice/templates/settings.tpl | 15 ++++ nbproject/project.properties | 7 ++ nbproject/project.xml | 9 ++ 8 files changed, 233 insertions(+) create mode 100644 cookienotice/README create mode 100644 cookienotice/cookienotice.css create mode 100644 cookienotice/cookienotice.php create mode 100644 cookienotice/templates/cookienotice.tpl create mode 100644 cookienotice/templates/head.tpl create mode 100644 cookienotice/templates/settings.tpl create mode 100644 nbproject/project.properties create mode 100644 nbproject/project.xml diff --git a/cookienotice/README b/cookienotice/README new file mode 100644 index 00000000..2eebff66 --- /dev/null +++ b/cookienotice/README @@ -0,0 +1,7 @@ +Cookie Notice + +For server admins only. + +Configure, show and handle a simple cookie usage notice. + +Author: Peter liebetrau diff --git a/cookienotice/cookienotice.css b/cookienotice/cookienotice.css new file mode 100644 index 00000000..9c8cf539 --- /dev/null +++ b/cookienotice/cookienotice.css @@ -0,0 +1,23 @@ +#cookienotice-label { + float: left; + width: 300px; + margin-top: 10px; +} + +#cookienotice-text { + float: left; + margin-top: 10px; + width: 400px; + height: 150px; +} + +#cookienotice-submit { + margin-top: 15px; +} + +.cookienotice { + text-align: center; + width: 100%; + margin-top: 25px; + font-size: 20px; +} diff --git a/cookienotice/cookienotice.php b/cookienotice/cookienotice.php new file mode 100644 index 00000000..e8c573ee --- /dev/null +++ b/cookienotice/cookienotice.php @@ -0,0 +1,109 @@ + + * + */ +use Friendica\Core\Addon; +use Friendica\Core\Config; +use Friendica\Core\L10n; + +function cookienotice_install() +{ + $file = 'addon/cookienotice/cookienotice.php'; + Addon::registerHook('page_content_top', $file, 'cookienotice_page_content_top'); + Addon::registerHook('page_end', $file, 'cookienotice_page_end'); + Addon::registerHook('addon_settings', $file, 'cookienotice_addon_settings'); + Addon::registerHook('addon_settings_post', $file, 'cookienotice_addon_settings_post'); +} + +function cookienotice_uninstall() +{ + $file = 'addon/cookienotice/cookienotice.php'; + Addon::unregisterHook('page_content_top', $file, 'cookienotice_page_content_top'); + Addon::unregisterHook('page_end', $file, 'cookienotice_page_end'); + Addon::unregisterHook('addon_settings', $file, 'cookienotice_addon_settings'); + Addon::unregisterHook('addon_settings_post', $file, 'cookienotice_addon_settings_post'); +} + +function cookienotice_addon_settings(&$a, &$s) +{ + if (!is_site_admin()) + return; + + /* Add our stylesheet to the page so we can make our settings look nice */ + + $a->page['htmlhead'] .= '' . "\r\n"; + + + $text = Config::get('cookienotice', 'text'); + if (!$text) { + $text = ''; + } + $oktext = Config::get('cookienotice', 'oktext'); + if (!$oktext) { + $oktext = ''; + } + + $t = get_markup_template("settings.tpl", "addon/cookienotice/"); + $s .= replace_macros($t, [ + '$title' => L10n::t('"cookienotice" Settings'), + '$description' => L10n::t('Configure your cookie usage notice. It should just be a notice, saying that the website uses cookies. It is shown as long as a user didnt confirm clicking the OK button.'), + '$text' => ['cookienotice-text', L10n::t('Cookie Usage Notice'), $text, L10n::t('The cookie usage notice')], + '$oktext' => ['cookienotice-oktext', L10n::t('OK Button Text'), $oktext, L10n::t('The OK Button text')], + '$submit' => L10n::t('Save Settings') + ]); + + return; +} + +function cookienotice_addon_settings_post(&$a, &$b) +{ + + if (!is_site_admin()) + return; + + if ($_POST['cookienotice-submit']) { + Config::set('cookienotice', 'text', trim(strip_tags($_POST['cookienotice-text']))); + Config::set('cookienotice', 'oktext', trim(strip_tags($_POST['cookienotice-oktext']))); + info(L10n::t('cookienotice Settings saved.') . EOL); + } +} + +/** + * adds the link and script to the page head + * + * @param App $a + * @param string $b - The page html before page_content_top + */ +function cookienotice_page_content_top($a, &$b) +{ + $head = file_get_contents(__DIR__ . '/templates/head.tpl'); + $a->page['htmlhead'] .= $head; +} + +/** + * adds the html to page end + * page_end hook function + * + * @param App $a + * @param string $b - The page html + */ +function cookienotice_page_end($a, &$b) +{ + + $text = (string) Config::get('cookienotice', 'text'); + $oktext = (string) Config::get('cookienotice', 'oktext'); + + $page_end_tpl = get_markup_template("cookienotice.tpl", "addon/cookienotice/"); + + $page_end = replace_macros($page_end_tpl, [ + '$text' => $text, + '$oktext' => $oktext, + ]); + + $b .= $page_end; +} diff --git a/cookienotice/templates/cookienotice.tpl b/cookienotice/templates/cookienotice.tpl new file mode 100644 index 00000000..19ab471e --- /dev/null +++ b/cookienotice/templates/cookienotice.tpl @@ -0,0 +1,23 @@ + +

{{$text}}

+ diff --git a/cookienotice/templates/head.tpl b/cookienotice/templates/head.tpl new file mode 100644 index 00000000..7640b28d --- /dev/null +++ b/cookienotice/templates/head.tpl @@ -0,0 +1,40 @@ + + diff --git a/cookienotice/templates/settings.tpl b/cookienotice/templates/settings.tpl new file mode 100644 index 00000000..6fa8f176 --- /dev/null +++ b/cookienotice/templates/settings.tpl @@ -0,0 +1,15 @@ + +

{{$title}}

+
+ +
diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 00000000..911a7b8b --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,7 @@ +include.path=${php.global.include.path} +php.version=PHP_70 +source.encoding=UTF-8 +src.dir=. +tags.asp=false +tags.short=false +web.root=. diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 00000000..d3fa6afd --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,9 @@ + + + org.netbeans.modules.php.project + + + friendica addons + + +