From ae62c1d1ea1296e2fcb134debe290aa4e769f9ea Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 19 May 2018 18:52:23 +0200 Subject: [PATCH 1/6] admin panel: added privacy statement preview --- mod/admin.php | 4 ++++ view/templates/admin/tos.tpl | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/mod/admin.php b/mod/admin.php index bc5d9d507d..912d8d43be 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -20,6 +20,7 @@ use Friendica\Model\Contact; use Friendica\Model\Item; use Friendica\Model\User; use Friendica\Module\Login; +use Friendica\Module\Tos; use Friendica\Util\DateTimeFormat; use Friendica\Util\Temporal; @@ -296,12 +297,15 @@ function admin_content(App $a) */ function admin_page_tos(App $a) { + $tos = new Tos(); $t = get_markup_template('admin/tos.tpl'); return replace_macros($t, [ '$title' => L10n::t('Administration'), '$page' => L10n::t('Terms of Service'), '$displaytos' => ['displaytos', L10n::t('Display Terms of Service'), Config::get('system', 'tosdisplay'), L10n::t('Enable the Terms of Service page. If this is enabled a link to the terms will be added to the registration form and the general information page.')], '$displayprivstatement' => ['displayprivstatement', L10n::t('Display Privacy Statement'), Config::get('system','tosprivstatement'), L10n::t('Show some informations regarding the needed information to operate the node according e.g. to EU-GDPR.','https://en.wikipedia.org/wiki/General_Data_Protection_Regulation')], + '$preview' => L10n::t('Privacy Statement Preview'), + '$privtext' => $tos->privblock, '$tostext' => ['tostext', L10n::t('The Terms of Service'), Config::get('system', 'tostext'), L10n::t('Enter the Terms of Service for your node here. You can use BBCode. Headers of sections should be [h2] and below.')], '$form_security_token' => get_form_security_token("admin_tos"), '$submit' => L10n::t('Save Settings'), diff --git a/view/templates/admin/tos.tpl b/view/templates/admin/tos.tpl index 14fe68d7b9..75244924bd 100644 --- a/view/templates/admin/tos.tpl +++ b/view/templates/admin/tos.tpl @@ -8,5 +8,9 @@ {{include file="field_textarea.tpl" field=$tostext}}
+

{{$preview}}

+ {{for $i=1 to 3}} +

{{$privtext[$i]}}

+ {{/for}} From dd629d5fa429e5c0cd152fd7f9449fefbbad68db Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 19 May 2018 18:53:54 +0200 Subject: [PATCH 2/6] registration: added display of privacy statement if enabled --- mod/register.php | 5 +++++ view/templates/register.tpl | 6 ++++++ view/theme/frio/templates/register.tpl | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/mod/register.php b/mod/register.php index 9de7a0ca38..cc1c8dc7d9 100644 --- a/mod/register.php +++ b/mod/register.php @@ -12,6 +12,7 @@ use Friendica\Core\PConfig; use Friendica\Core\System; use Friendica\Core\Worker; use Friendica\Model\User; +use Friendica\Module\Tos; use Friendica\Util\DateTimeFormat; require_once 'include/enotify.php'; @@ -252,6 +253,8 @@ function register_content(App $a) $tpl = $arr['template']; + $tos = new Tos(); + $o = replace_macros($tpl, [ '$oidhtml' => $oidhtml, '$invitations' => Config::get('system', 'invitation_only'), @@ -286,6 +289,8 @@ function register_content(App $a) '$importt' => L10n::t('Import your profile to this friendica instance'), '$showtoslink' => Config::get('system', 'tosdisplay'), '$tostext' => L10n::t('Terms of Service'), + '$showprivstatement' => Config::get('system', 'tosprivstatement'), + '$privstatement' => $tos->privblock, '$baseurl' => System::baseurl(), '$form_security_token' => get_form_security_token("register") ]); diff --git a/view/templates/register.tpl b/view/templates/register.tpl index eddc551325..6be4208d31 100644 --- a/view/templates/register.tpl +++ b/view/templates/register.tpl @@ -67,6 +67,12 @@ {{if $showtoslink}}

{{$tostext}}

{{/if}} + {{if $showprivstatement}} +

{{$privstatement.0}}

+ {{for $i=1 to 3}} +

{{$privstatement[$i]}}

+ {{/for}} + {{/if}}
diff --git a/view/theme/frio/templates/register.tpl b/view/theme/frio/templates/register.tpl index 30ead3c4bb..670f5d11ef 100644 --- a/view/theme/frio/templates/register.tpl +++ b/view/theme/frio/templates/register.tpl @@ -63,6 +63,12 @@ {{if $showtoslink}}

{{$tostext}}

{{/if}} + {{if $showprivstatement}} +

{{$privstatement.0}}

+ {{for $i=1 to 3}} +

{{$privstatement[$i]}}

+ {{/for}} + {{/if}}
From e02093c7ea1c03a332a92df3cc7523773d54c2bd Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 19 May 2018 18:55:29 +0200 Subject: [PATCH 3/6] text of the priv. statement can now be shown outside of the module --- src/Module/Tos.php | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/src/Module/Tos.php b/src/Module/Tos.php index e08e5a1f45..8e135b71aa 100644 --- a/src/Module/Tos.php +++ b/src/Module/Tos.php @@ -16,6 +16,27 @@ use Friendica\Content\Text\BBCode; class Tos extends BaseModule { + // Some text elements we need more then once to keep updating them easy. + public $privoperate; + public $privdistribute; + public $privdelete; + public $privblock; + /* @brief constructor for the module, initializing the text variables + * + * To make the text variables available outside of the module, they need to + * be properties of the class, however cannot be set directly as the property + * cannot depend on a function result when declaring the variable. + **/ + public function __construct() + { + $this->privoperate = L10n::t('At the time of registration, and for providing communications between the user account and their contacts, the user has to provide a display name (pen name), an username (nickname) and a working email address. The names will be accessible on the profile page of the account by any visitor of the page, even if other profile details are not displayed. The email address will only be used to send the user notifications about interactions, but wont be visibly displayed. The listing of an account in the node\'s user directory or the global user directory is optional and can be controlled in the user settings, it is not necessary for communication.'); + $this->privdistribute = L10n::t('This data is required for communication and is passed on to the nodes of the communication partners and stored there. Users can enter additional private data that may be transmitted to the communication partners accounts.'); + $this->privdelete = L10n::t('At any point in time a logged in user can export their account data from the account settings. If the user wants to delete their account they can do so at %1$s/removeme. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners.', System::baseurl()); + // In some cases we don't need every single one of the above separate, but all in one block. + // So here is an array to look over + $this->privblock = [L10n::t('Privacy Statement'), $this->privoperate, $this->privdistribute, $this->privdelete]; + } + /** * @brief initialize the TOS module. * @@ -44,15 +65,14 @@ class Tos extends BaseModule $tpl = get_markup_template('tos.tpl'); if (Config::get('system', 'tosdisplay')) { - return replace_macros($tpl, [ - '$title' => L10n::t("Terms of Service"), - '$tostext' => BBCode::convert(Config::get('system', 'tostext')), - '$displayprivstatement' => Config::get('system', 'tosprivstatement'), - '$privstatementtitle' => L10n::t("Privacy Statement"), - '$privoperate' => L10n::t('At the time of registration, and for providing communications between the user account and their contacts, the user has to provide a display name (pen name), an username (nickname) and a working email address. The names will be accessible on the profile page of the account by any visitor of the page, even if other profile details are not displayed. The email address will only be used to send the user notifications about interactions, but wont be visibly displayed. The listing of an account in the node\'s user directory or the global user directory is optional and can be controlled in the user settings, it is not necessary for communication.'), - '$privdistribute' => L10n::t('This data is required for communication and is passed on to the nodes of the communication partners. Users can enter additional private data that may be transmitted to the communication partners accounts.'), - '$privdelete' => L10n::t('At any point in time a logged in user can export their account data from the account settings. If the user wants to delete their account they can do so at %1$s/removeme. The deletion of the account will be permanent.', System::baseurl()) - ]); + return replace_macros($tpl, [ + '$title' => L10n::t("Terms of Service"), + '$tostext' => BBCode::convert(Config::get('system', 'tostext')), + '$displayprivstatement' => Config::get('system', 'tosprivstatement'), + '$privoperate' => L10n::t('At the time of registration, and for providing communications between the user account and their contacts, the user has to provide a display name (pen name), an username (nickname) and a working email address. The names will be accessible on the profile page of the account by any visitor of the page, even if other profile details are not displayed. The email address will only be used to send the user notifications about interactions, but wont be visibly displayed. The listing of an account in the node\'s user directory or the global user directory is optional and can be controlled in the user settings, it is not necessary for communication.'), + 'privdistribute' => L10n::t('This data is required for communication and is passed on to the nodes of the communication partners and stored there. Users can enter additional private data that may be transmitted to the communication partners accounts.'), + '$privdelete' => L10n::t('At any point in time a logged in user can export their account data from the account settings. If the user wants to delete their account they can do so at %1$s/removeme. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners.', System::baseurl()) + ]); } else { return; } From 4f8530070b0a27762a41218bd8f376166c54df97 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 19 May 2018 19:07:13 +0200 Subject: [PATCH 4/6] removed one line too much --- src/Module/Tos.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Module/Tos.php b/src/Module/Tos.php index 8e135b71aa..06a31c8750 100644 --- a/src/Module/Tos.php +++ b/src/Module/Tos.php @@ -69,6 +69,7 @@ class Tos extends BaseModule '$title' => L10n::t("Terms of Service"), '$tostext' => BBCode::convert(Config::get('system', 'tostext')), '$displayprivstatement' => Config::get('system', 'tosprivstatement'), + '$privstatementtitle' => L10n::t("Privacy Statement"), '$privoperate' => L10n::t('At the time of registration, and for providing communications between the user account and their contacts, the user has to provide a display name (pen name), an username (nickname) and a working email address. The names will be accessible on the profile page of the account by any visitor of the page, even if other profile details are not displayed. The email address will only be used to send the user notifications about interactions, but wont be visibly displayed. The listing of an account in the node\'s user directory or the global user directory is optional and can be controlled in the user settings, it is not necessary for communication.'), 'privdistribute' => L10n::t('This data is required for communication and is passed on to the nodes of the communication partners and stored there. Users can enter additional private data that may be transmitted to the communication partners accounts.'), '$privdelete' => L10n::t('At any point in time a logged in user can export their account data from the account settings. If the user wants to delete their account they can do so at %1$s/removeme. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners.', System::baseurl()) From 2798d4ea4d57b8175518214c70bebd6ce33eddd0 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 19 May 2018 19:08:50 +0200 Subject: [PATCH 5/6] missing sign --- src/Module/Tos.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Module/Tos.php b/src/Module/Tos.php index 06a31c8750..f71c9d2302 100644 --- a/src/Module/Tos.php +++ b/src/Module/Tos.php @@ -71,7 +71,7 @@ class Tos extends BaseModule '$displayprivstatement' => Config::get('system', 'tosprivstatement'), '$privstatementtitle' => L10n::t("Privacy Statement"), '$privoperate' => L10n::t('At the time of registration, and for providing communications between the user account and their contacts, the user has to provide a display name (pen name), an username (nickname) and a working email address. The names will be accessible on the profile page of the account by any visitor of the page, even if other profile details are not displayed. The email address will only be used to send the user notifications about interactions, but wont be visibly displayed. The listing of an account in the node\'s user directory or the global user directory is optional and can be controlled in the user settings, it is not necessary for communication.'), - 'privdistribute' => L10n::t('This data is required for communication and is passed on to the nodes of the communication partners and stored there. Users can enter additional private data that may be transmitted to the communication partners accounts.'), + '$privdistribute' => L10n::t('This data is required for communication and is passed on to the nodes of the communication partners and stored there. Users can enter additional private data that may be transmitted to the communication partners accounts.'), '$privdelete' => L10n::t('At any point in time a logged in user can export their account data from the account settings. If the user wants to delete their account they can do so at %1$s/removeme. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners.', System::baseurl()) ]); } else { From f7c24a20ae8bb8ef093f91dba0254bdbff556ac4 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 20 May 2018 08:43:43 +0200 Subject: [PATCH 6/6] cite: just some small styling thing --- mod/admin.php | 2 +- mod/register.php | 2 +- src/Module/Tos.php | 35 ++++++++++++++++++----------------- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 912d8d43be..bba46c9f3a 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -305,7 +305,7 @@ function admin_page_tos(App $a) '$displaytos' => ['displaytos', L10n::t('Display Terms of Service'), Config::get('system', 'tosdisplay'), L10n::t('Enable the Terms of Service page. If this is enabled a link to the terms will be added to the registration form and the general information page.')], '$displayprivstatement' => ['displayprivstatement', L10n::t('Display Privacy Statement'), Config::get('system','tosprivstatement'), L10n::t('Show some informations regarding the needed information to operate the node according e.g. to EU-GDPR.','https://en.wikipedia.org/wiki/General_Data_Protection_Regulation')], '$preview' => L10n::t('Privacy Statement Preview'), - '$privtext' => $tos->privblock, + '$privtext' => $tos->privacy_complete, '$tostext' => ['tostext', L10n::t('The Terms of Service'), Config::get('system', 'tostext'), L10n::t('Enter the Terms of Service for your node here. You can use BBCode. Headers of sections should be [h2] and below.')], '$form_security_token' => get_form_security_token("admin_tos"), '$submit' => L10n::t('Save Settings'), diff --git a/mod/register.php b/mod/register.php index cc1c8dc7d9..f1f8b7caa9 100644 --- a/mod/register.php +++ b/mod/register.php @@ -290,7 +290,7 @@ function register_content(App $a) '$showtoslink' => Config::get('system', 'tosdisplay'), '$tostext' => L10n::t('Terms of Service'), '$showprivstatement' => Config::get('system', 'tosprivstatement'), - '$privstatement' => $tos->privblock, + '$privstatement' => $tos->privacy_complete, '$baseurl' => System::baseurl(), '$form_security_token' => get_form_security_token("register") ]); diff --git a/src/Module/Tos.php b/src/Module/Tos.php index f71c9d2302..e8a152b507 100644 --- a/src/Module/Tos.php +++ b/src/Module/Tos.php @@ -16,12 +16,14 @@ use Friendica\Content\Text\BBCode; class Tos extends BaseModule { - // Some text elements we need more then once to keep updating them easy. - public $privoperate; - public $privdistribute; - public $privdelete; - public $privblock; - /* @brief constructor for the module, initializing the text variables + // Some text elements we need more than once to keep updating them easy. + public $privacy_operate; + public $privacy_distribute; + public $privacy_delete; + public $privacy_complete; + + /** + * @brief constructor for the module, initializing the text variables * * To make the text variables available outside of the module, they need to * be properties of the class, however cannot be set directly as the property @@ -29,12 +31,12 @@ class Tos extends BaseModule **/ public function __construct() { - $this->privoperate = L10n::t('At the time of registration, and for providing communications between the user account and their contacts, the user has to provide a display name (pen name), an username (nickname) and a working email address. The names will be accessible on the profile page of the account by any visitor of the page, even if other profile details are not displayed. The email address will only be used to send the user notifications about interactions, but wont be visibly displayed. The listing of an account in the node\'s user directory or the global user directory is optional and can be controlled in the user settings, it is not necessary for communication.'); - $this->privdistribute = L10n::t('This data is required for communication and is passed on to the nodes of the communication partners and stored there. Users can enter additional private data that may be transmitted to the communication partners accounts.'); - $this->privdelete = L10n::t('At any point in time a logged in user can export their account data from the account settings. If the user wants to delete their account they can do so at %1$s/removeme. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners.', System::baseurl()); + $this->privacy_operate = L10n::t('At the time of registration, and for providing communications between the user account and their contacts, the user has to provide a display name (pen name), an username (nickname) and a working email address. The names will be accessible on the profile page of the account by any visitor of the page, even if other profile details are not displayed. The email address will only be used to send the user notifications about interactions, but wont be visibly displayed. The listing of an account in the node\'s user directory or the global user directory is optional and can be controlled in the user settings, it is not necessary for communication.'); + $this->privacy_distribute = L10n::t('This data is required for communication and is passed on to the nodes of the communication partners and is stored there. Users can enter additional private data that may be transmitted to the communication partners accounts.'); + $this->privacy_delete = L10n::t('At any point in time a logged in user can export their account data from the account settings. If the user wants to delete their account they can do so at %1$s/removeme. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners.', System::baseurl()); // In some cases we don't need every single one of the above separate, but all in one block. // So here is an array to look over - $this->privblock = [L10n::t('Privacy Statement'), $this->privoperate, $this->privdistribute, $this->privdelete]; + $this->privacy_complete = [L10n::t('Privacy Statement'), $this->privacy_operate, $this->privacy_distribute, $this->privacy_delete]; } /** @@ -63,16 +65,15 @@ class Tos extends BaseModule **/ public static function content() { $tpl = get_markup_template('tos.tpl'); - if (Config::get('system', 'tosdisplay')) - { + if (Config::get('system', 'tosdisplay')) { return replace_macros($tpl, [ - '$title' => L10n::t("Terms of Service"), + '$title' => L10n::t('Terms of Service'), '$tostext' => BBCode::convert(Config::get('system', 'tostext')), '$displayprivstatement' => Config::get('system', 'tosprivstatement'), - '$privstatementtitle' => L10n::t("Privacy Statement"), - '$privoperate' => L10n::t('At the time of registration, and for providing communications between the user account and their contacts, the user has to provide a display name (pen name), an username (nickname) and a working email address. The names will be accessible on the profile page of the account by any visitor of the page, even if other profile details are not displayed. The email address will only be used to send the user notifications about interactions, but wont be visibly displayed. The listing of an account in the node\'s user directory or the global user directory is optional and can be controlled in the user settings, it is not necessary for communication.'), - '$privdistribute' => L10n::t('This data is required for communication and is passed on to the nodes of the communication partners and stored there. Users can enter additional private data that may be transmitted to the communication partners accounts.'), - '$privdelete' => L10n::t('At any point in time a logged in user can export their account data from the account settings. If the user wants to delete their account they can do so at %1$s/removeme. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners.', System::baseurl()) + '$privstatementtitle' => L10n::t('Privacy Statement'), + '$privacy_operate' => L10n::t('At the time of registration, and for providing communications between the user account and their contacts, the user has to provide a display name (pen name), an username (nickname) and a working email address. The names will be accessible on the profile page of the account by any visitor of the page, even if other profile details are not displayed. The email address will only be used to send the user notifications about interactions, but wont be visibly displayed. The listing of an account in the node\'s user directory or the global user directory is optional and can be controlled in the user settings, it is not necessary for communication.'), + '$privacy_distribute' => L10n::t('This data is required for communication and is passed on to the nodes of the communication partners and is stored there. Users can enter additional private data that may be transmitted to the communication partners accounts.'), + '$privacy_delete' => L10n::t('At any point in time a logged in user can export their account data from the account settings. If the user wants to delete their account they can do so at %1$s/removeme. The deletion of the account will be permanent. Deletion of the data will also be requested from the nodes of the communication partners.', System::baseurl()) ]); } else { return;