Plugin Privacy mit Button erneut öffnen

Ein CMSimple Support Forum für deutsch sprechende Nutzer und Entwickler
SiNiTaSa
Posts: 114
Joined: Tue Jan 03, 2017 10:33 am
Location: BW|GERMANY

Plugin Privacy mit Button erneut öffnen

Post by SiNiTaSa » Fri Apr 28, 2023 11:22 am

Hallo zusammen,
wie ist es möglich mit einem Button erneut die Cookie Meldung aufzurufen ?

Etwa so wie bei https://www.getraenke-hoffmann.de/ unten links der Button.
aka smaxle | plugin_XH 1.7

lck
Posts: 2967
Joined: Wed Mar 23, 2011 11:43 am
Contact:

Re: Plugin Privacy mit Button erneut öffnen

Post by lck » Sat Apr 29, 2023 5:06 pm

SiNiTaSa wrote:
Fri Apr 28, 2023 11:22 am
wie ist es möglich mit einem Button erneut die Cookie Meldung aufzurufen ?
Dazu müsste das gesetzte Cookie "privacy_agreed" gelöscht werden und die Seite neu geladen werden. Also ein dritter Button mit dieser Funktion. Wie das technisch umgesetzt werden müsste, weiß ich leider nicht. Da bräuchten wir Christoph oder jemanden mit PHP-Kenntnissen.
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“   👉 Ludwig's XH-Templates for MultiPage & OnePage

Tata
Posts: 3587
Joined: Tue May 20, 2008 5:34 am
Location: Slovakia
Contact:

Re: Plugin Privacy mit Button erneut öffnen

Post by Tata » Sat Apr 29, 2023 5:56 pm

Interessante Möglichkeit. Folgendes habe ich gefunden und im Template versucht. Leider macht es nicht das gewünschte.
https://stackoverflow.com/questions/318 ... rrent-page
CMSimple.sk
It's no shame to ask for an answer if all efforts failed.
But it's awful to ask without any effort to find the answer yourself.

knollsen
Posts: 459
Joined: Wed Nov 06, 2013 2:28 pm

Re: Plugin Privacy mit Button erneut öffnen

Post by knollsen » Sat Apr 29, 2023 8:23 pm

Naja, eigentlich ist es ja nicht ganz so schwierig.
im Template wo der Button hin soll machst Du

Code: Select all

<?=privacy_button()?>
in der index.php
machst Du eine neue Funktion

Code: Select all

function privacy_button() {
  $o = '<form id="privacy_button" name="privacybtn" method="post">
    <div class="privacy_submit">
      <button type="submit" class="submit" name="privacy_view" value="view">NEW</button>
    </div>
  </form>';
  return $o;
}
Damit der Button sein Zweck erfüllt erweiterst Du die privacy funktion in der index.php

Code: Select all

function privacy()
{
    if (XH_ADM) {
        return;
    }
    if (isset($_POST['privacy_view'])) {
      if ($_POST['privacy_view'] === 'view') {
        ob_start();
        (new Privacy\MainController)->viewAction();
        return ob_get_clean();
      }
    }
    $action = isset($_POST['privacy_agree']) ? 'submitAction' : 'defaultAction';
    ob_start();
    (new Privacy\MainController)->$action();
    return ob_get_clean();
}
Damit die viewAction funktioniert musst Du die MainController.php erweitern

Code: Select all

class MainController
{
    public function viewAction()
    {
        global $plugin_tx;
        $view = new View('privacy');
        $view->message = new HtmlString($plugin_tx['privacy']['message']);
        $view->render();
    }
    /**
     * @return void
     */
    public function defaultAction()
...
und wenn Du willst, das die Button auch die vorige Auswahl beibehalten, kann man die privacy.php noch anpassen.
Viel Spaß!

SiNiTaSa
Posts: 114
Joined: Tue Jan 03, 2017 10:33 am
Location: BW|GERMANY

Re: Plugin Privacy mit Button erneut öffnen

Post by SiNiTaSa » Sun Apr 30, 2023 5:00 pm

@ knollsen,
Danke hat wunderbar geklappt. Chapeau ;)
aka smaxle | plugin_XH 1.7

Motsch
Posts: 97
Joined: Tue Dec 10, 2019 10:18 am

Re: Plugin Privacy mit Button erneut öffnen

Post by Motsch » Mon May 08, 2023 8:15 am

Hallo,
leider funktioniert es nicht überall.
Alleine schon, wenn man das befolgt:

im Template wo der Button hin soll machst Du
Code: Alles auswählen
<?=privacy_button()?>

und egal wohin man diesen Ausdruck setzt, kommt der Debug-Modus und die Seite steht still. Nur das Löschen führt wieder zur korrekten Ansicht der Internetseite.
Ob es nun an einem Plugin oder am Template liegt ist mir nicht klar und wüsste auch nicht wie man das lösen könnte.
War für mich ein reiner Test, aber negativ.

olape
Posts: 2746
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Plugin Privacy mit Button erneut öffnen

Post by olape » Mon May 08, 2023 8:32 am

Motsch wrote:
Mon May 08, 2023 8:15 am
leider funktioniert es nicht überall.
Alleine schon, wenn man das befolgt:
Du musst alle Änderungen / Erweiterungen, die knollsen beschreibt, machen.
Wenn du nur die Funktion aufrufst, ohne, dass es diese gibt, dann gibt das einen PHP-Fehler.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

Motsch
Posts: 97
Joined: Tue Dec 10, 2019 10:18 am

Re: Plugin Privacy mit Button erneut öffnen

Post by Motsch » Mon May 08, 2023 9:00 am

Hallo olape,
danke. Fehler von mir, Laienverständnis.
Also alles in die jeweilige Datei kompiert und auf den Server geladen und aufgerufen: Seite bringt keinen Fehler ist aber schneeweiß.

Wahrscheinlich wieder etwas laienhaft gearbeitet oder ?

Hier zur Info:
index.php sieht so aus
<?php

if (is_readable('./cmsimple/userprelude.php')) {
include './cmsimple/userprelude.php';
}
include('./cmsimple/cms.php');

function privacy_button() {
$o = '<form id="privacy_button" name="privacybtn" method="post">
<div class="privacy_submit">
<button type="submit" class="submit" name="privacy_view" value="view">NEW</button>
</div>
</form>';
return $o;
}
function privacy()
{
if (XH_ADM) {
return;
}
if (isset($_POST['privacy_view'])) {
if ($_POST['privacy_view'] === 'view') {
ob_start();
(new Privacy\MainController)->viewAction();
return ob_get_clean();
}
}
$action = isset($_POST['privacy_agree']) ? 'submitAction' : 'defaultAction';
ob_start();
(new Privacy\MainController)->$action();
return ob_get_clean();
}

und die MainController.php schaut so aus:
<?php

/**
* Copyright (C) Christoph M. Becker
*
* This file is part of Privacy_XH.
*
* Privacy_XH is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Privacy_XH is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Privacy_XH. If not, see <http://www.gnu.org/licenses/>.
*/

namespace Privacy;

class MainController
{
/**
* @return void
*/
public function defaultAction()
{
global $plugin_tx;

if (!isset($_COOKIE['privacy_agreed'])) {
$view = new View('privacy');
$view->message = new HtmlString($plugin_tx['privacy']['message']);
$view->render();
}
}

/**
* @return void
*/
public function submitAction()
{
if ($_POST['privacy_agree'] === 'yes') {
setcookie('privacy_agreed', 'yes', $this->getExpirationTime(), CMSIMPLE_ROOT);
} else {
setcookie('privacy_agreed', 'no', 0, CMSIMPLE_ROOT);
}
header('Location: ' . $this->getLocationURL(), true, 303);
exit;
}

/**
* @return int
*/
private function getExpirationTime()
{
global $plugin_cf;

return !empty($plugin_cf['privacy']['duration'])
? time() + 24 * 60 * 60 * $plugin_cf['privacy']['duration']
: 0;
}

/**
* @return string
*/
private function getLocationURL()
{
$url = CMSIMPLE_URL;
if ($_SERVER['QUERY_STRING'] != '') {
$url .= "?{$_SERVER['QUERY_STRING']}";
}
return $url;
}
}
class MainController
{
public function viewAction()
{
global $plugin_tx;
$view = new View('privacy');
$view->message = new HtmlString($plugin_tx['privacy']['message']);
$view->render();
}
/**
* @return void
*/
public function defaultAction()


Die Funkion selbst habe ich iim footer eingefügt.

olape
Posts: 2746
Joined: Fri Mar 13, 2015 8:47 am
Contact:

Re: Plugin Privacy mit Button erneut öffnen

Post by olape » Mon May 08, 2023 9:54 am

Motsch wrote:
Mon May 08, 2023 9:00 am
Also alles in die jeweilige Datei kompiert und auf den Server geladen und aufgerufen: Seite bringt keinen Fehler ist aber schneeweiß.

Wahrscheinlich wieder etwas laienhaft gearbeitet oder ?
laienhaft oder nicht, das kann ich von hier aus nicht beurteilen, eine weiße Seite heißt in aller Regel Serverfehler 500
Die Beschreibung von knollsen ist vielleicht auch etwas kurz gehalten.
Aber ich vermute, auch bei index.php meint er die index.php des Plugins (Privacy_XH), nicht die von CMSimple_XH.
Und aufpassen, eine Funktion kommt dazu, eine ist schon vorhanden und muss nur entsprechend erweitert werden.

Und immer wichtig, einen Editor verwenden, der UTF8 kann.
Gruß Olaf, Plugins for CMSimple_XH

Ich habe schon lange den Verdacht, dass so viele so eifrig auf Gender, Trans und Queer machen:
Weil sie für das Fachliche ganz einfach zu doof sind.

Motsch
Posts: 97
Joined: Tue Dec 10, 2019 10:18 am

Re: Plugin Privacy mit Button erneut öffnen

Post by Motsch » Mon May 08, 2023 10:22 am

olape wrote:
Mon May 08, 2023 9:54 am
Und immer wichtig, einen Editor verwenden, der UTF8 kann.
Ich arbeite grundsätzlich mit notepad ++ und das funktioniert auch einwandfrei.

Erklärung eines Fachmannes oder Entwickler seines Programmes geht bei seinen Beschreibungen meist davon aus, dass jeder sich auskennt mit dem was gemeint ist.

Ein Laie tut sich da schwer ...

Post Reply