Page 4 of 12

Re: Code - Fragen

Posted: Tue Nov 28, 2017 5:16 pm
by lck
@Frank
Das funktionierte ja vorher schon! Da braucht man nichts ändern, das passt schon.
Ich wollte es nur simpler machen, um das zu umgehen:
cmb wrote:Hm, so wie es ist, ist es aber dennoch fragil. Z.B. wurde in XH 1.7 ein eigenständiger Password-Ändern-Screen eingeführt – konsistent zum Rest mit der neuen Variable $xh_change_password. Wenn weitere solche Funktionen eingeführt werden, müsste immer wieder extern nachgebessert werden. Oder wenn z.B. der Linkchecker mal als Plugin ausgelagert wird, dann würde die Verwendung von $validate eine Notice erzeugen. Da sollte also schon eine Abstraktion angeboten werden. Die Frage ist halt wie detailliert diese nutzbar sein müsste. Mir sieht es so aus als ob das was hi_admin bezüglich des Admintemplates konfigurierbar macht, schon eher die Obergrenze darstellt.
Wenn man die Einbindung anders gestalten könnte, so wäre dieses Problem bei Änderungen nichtig.

Re: Code - Fragen

Posted: Tue Nov 28, 2017 6:48 pm
by lck
cmb wrote:Im Template könntest du prüfen, ob $s >= 0 ist; falls ja, dann ist eine reguläre Seite gewählt. Bzw. halt umgekehrt, ob $s < 0 ist; dann handelt es sich um eine spezielle Seite
WOW, das ist es (hoffentlich). Scheint zu funktionieren mit diesem Code:

Code: Select all

<?php
if (XH_ADM && ($edit || ($s < 0))) {
    echo '<link rel="stylesheet" type="text/css" href="'.$pth['folder']['template'].'adminedit.css">'."\n";
}
?>
Dann wäre die 'function wantsAnyPluginAdministration()' auch nicht nötig.

Re: Code - Fragen

Posted: Tue Nov 28, 2017 8:51 pm
by cmss
Ich habe noch eine Kurze Bemerkung zu Hi_admin unter PHP 7.0 :

Ich erhalte die Fehlermeldung : DEPRECATED: Methods with the same name as their class will not be constructors in a future version of PHP; HI_adm_TextFileEdit has a deprecated constructor
H:\Xampp718\x718\htdocs\xh1610\plugins\hi_admin\templateeditor.inc.php:27

Dort steht : class HI_adm_TextFileEdit extends XH_TextFileEdit { function HI_adm_TextFileEdit($file) {...

Re: Code - Fragen

Posted: Tue Nov 28, 2017 10:16 pm
by cmb
lck wrote:WOW, das ist es (hoffentlich). Scheint zu funktionieren mit diesem Code:

Code: Select all

<?php
if (XH_ADM && ($edit || ($s < 0))) {
    echo '<link rel="stylesheet" type="text/css" href="'.$pth['folder']['template'].'adminedit.css">'."\n";
}
?>
Leider nicht wirklich, wie mir zwischenzeitlich eingefallen ist. Das Problem sind "implizite" Seiten, also Seiten, die dynamisch von manchen Plugins erzeugt werden. Bei solchen Seiten ist $s nämlich ebenfalls -1 (also < 0), und die würden dann mit den Adminstyles angezeigt werden. Es sind aber eher wenige Plugins, die solche "impliziten" Seiten nutzen (Register ist eine solche Ausnahme), so dass man u.U. damit leben kann.
cmss wrote:Ich erhalte die Fehlermeldung : DEPRECATED: Methods with the same name as their class will not be constructors in a future version of PHP; HI_adm_TextFileEdit has a deprecated constructor
H:\Xampp718\x718\htdocs\xh1610\plugins\hi_admin\templateeditor.inc.php:27

Dort steht : class HI_adm_TextFileEdit extends XH_TextFileEdit { function HI_adm_TextFileEdit($file) {...
DEPRECATED-Meldungen (im Gegensatz zu XH-DEPRECATED) kommen immer von PHP, und besagen, dass ein Feature nicht mehr verwendet werden sollte, und es möglicherweise in einer zukünftigen Version von PHP entfernt wird. In diesem Fall wird das frühestens bei PHP 8 der Fall sein (also noch kein Grund zur Panik). Du kannst aber auch in der aufgeführten Zeile `function HI_adm_TextFileEdit` einfach durch `function __construct` ersetzen (dann sind PHP 5 + 7 zufrieden).

Re: Code - Fragen

Posted: Wed Nov 29, 2017 10:28 am
by lck
cmb wrote:Leider nicht wirklich, wie mir zwischenzeitlich eingefallen ist. Das Problem sind "implizite" Seiten, also Seiten, die dynamisch von manchen Plugins erzeugt werden. Bei solchen Seiten ist $s nämlich ebenfalls -1 (also < 0), und die würden dann mit den Adminstyles angezeigt werden. Es sind aber eher wenige Plugins, die solche "impliziten" Seiten nutzen (Register ist eine solche Ausnahme), so dass man u.U. damit leben kann.
Habe Register mal installiert. Im Backend ist mir jetzt nichts ungewöhnliches aufgefallen (ausser das Speichern-Problem), Login-Seite habe ich nicht getestet. Welche Seiten wären das konkret.

Re: Code - Fragen

Posted: Wed Nov 29, 2017 12:13 pm
by cmb
lck wrote:Habe Register mal installiert. Im Backend ist mir jetzt nichts ungewöhnliches aufgefallen (ausser das Speichern-Problem), Login-Seite habe ich nicht getestet. Welche Seiten wären das konkret.
Konkret sind es die Spezialseiten (falls man diese nicht manuell anlegt), also z.B. die Seite, die nach erfolgreichem oder nicht erfolgreichem Anmeldeversuch erscheint.

Re: Code - Fragen

Posted: Wed Nov 29, 2017 1:23 pm
by cmss
Ich will eure Konversation eigentlich nicht stören, aber

class function __construct extends XH_TextFileEdit {

führt bei mir zu einem : Parse error: syntax error, unexpected 'function' (T_FUNCTION), expecting identifier (T_STRING) in H:\Xampp718\x718\htdocs\xh1610clea2_\plugins\hi_admin\templateeditor.inc.php on line 27

Re: Code - Fragen

Posted: Wed Nov 29, 2017 2:00 pm
by frase
viewtopic.php?f=16&t=13111&start=20#p63685

Der ganze Part müsste dann so lauten:

Code: Select all

class HI_adm_TextFileEdit extends XH_TextFileEdit {

    function HI_adm_TextFileEdit($file) {

        global $pth;

        //read and write only in templates-folder
        $this->filename = $pth['folder']['templates'] . $file;
        $this->params = array('admfile' => $file, 'action' => 'save');
        $this->redir = "?hi_admin&admfile=" . $file . "&action=edit&xh_success=file";
        $this->textareaName = 'hi_adm_textarea';
        //parent::XH_TextFileEdit(); // gestrichen nach cmb
        parent::__construct();
    }
}

Re: Code - Fragen

Posted: Wed Nov 29, 2017 2:04 pm
by lck
cmb wrote:Konkret sind es die Spezialseiten (falls man diese nicht manuell anlegt), also z.B. die Seite, die nach erfolgreichem oder nicht erfolgreichem Anmeldeversuch erscheint.
Ah ok:
?Angemeldet
?Registrieren
?Kennwort-vergessen
?Benutzereinstellungen
?Abgemeldet
...
Im Frontend sowieso kein Problem, im Backend evtl. ja, da adminedit.css geladen wird und auch nur dann, wenn man die Seiten im Backend testen will (damit kann man leben).
Aber in meinem Fall null Problem, da die adminedit.css keine seitenspzifischen Styles enthält, sondern nur für das mobile Menü und den Header.

Re: Code - Fragen

Posted: Wed Nov 29, 2017 3:11 pm
by cmb
frase wrote:Der ganze Part müsste dann so lauten:
Ah, an den Aufruf des geerbten Konstruktors hatte ich nicht gedacht. Allerdings wird die Deprecated-Meldung durch die eigentliche Funktionsdeklaration ausgelöst. Also:

Code: Select all

class HI_adm_TextFileEdit extends XH_TextFileEdit {

    function __construct($file) {

        global $pth;

        //read and write only in templates-folder
        $this->filename = $pth['folder']['templates'] . $file;
        $this->params = array('admfile' => $file, 'action' => 'save');
        $this->redir = "?hi_admin&admfile=" . $file . "&action=edit&xh_success=file";
        $this->textareaName = 'hi_adm_textarea';
        //parent::XH_TextFileEdit(); // gestrichen nach cmb
        parent::__construct();
    }
}
lck wrote:Aber in meinem Fall null Problem, da die adminedit.css keine seitenspzifischen Styles enthält, sondern nur für das mobile Menü und den Header.
Okay, dann sollte es so passen.