Jump to content

[gelöst] Den Help-Button entfernen für alle Benutzer ausser Super-User?


Recommended Posts

Hallo,

ich möchte den Help-Button für alle Benutzer ausser Super-User entfernen.

 

Hier gibt es Vorschlag mit Codeänderung in der Standart-Thema und die Idee durch eine if-Bedingung

unterscheiden zwischen dem Superuser und den anderen Benutzer:

https://www.prestashop.com/forums/topic/334626-need-to-disable-help-function-in-16-backoffice/

 

Und hier der User bellini132 schlägt vor eine Lösung, die hängt gar nicht von Templates aber ich verstand nicht wie genau das geht und die Lösung wiederum unterscheidet gar nicht wer ist im Backoffice gerade angemeldet:

https://www.prestash...in-admin-panel/

 

Kann jemand die richtige Lösung samt vollständigem Code und kurzer Anleitung anbieten?

Ich habe den Prestashop 1.6.1.14.

Edited by Viaceslav (see edit history)
Link to comment
Share on other sites

Der erste Link führt nicht zu einem Beitrag.

 

Hast du es denn nach der Anleitung versucht?

 

Verwendest du denn verschiedene BackOffice-Themes? Mit dem Front-Office-Theme dürfte das ja nichts zu tun haben.

 

Sorry, ich habe gerade den Link korregiert.

Was betrifft den zweiten Ansatz, ich habe es einfach nicht verstanden wo genau muss ich den Code rein schreiben - ich verstehe noch nicht wie man mit Overrides umgeht.

Wobei, wie gesagt, die Lösung unterscheidet gar nicht zwischen dem Superuser unde den anderen Users,

also da fehlt die IF-Bedingung.

Edited by Viaceslav (see edit history)
Link to comment
Share on other sites

Was du in dem Zusammenhang mit Templates willst, verstehe ich nach wie vor nicht, normalerweise hast du das gleiche BackOffice-Theme wie alle anderen, mit unterschiedlichen FrontOffice-Themes hat das nichts zu tun.

 

In dem jetzt verlinkten Beitrag steht nichts von Overrides, du erfährst dort in welcher Datei du den Code für den Help-Button entfernen kannst, diese Änderung ist dann nach einem Update möglicherweise wieder weg und muß wiederholt werden (mit Overrides kann man das verhindern, wenn du da Wert drauf legst, mußt du dich in diese Thematik einlesen).

 

Ob du direkt eine Variable zur Verfügung hast, aus der hervorgeht, ob du als Admin die Seite besuchst (und damit dann eine if-Bedingung formulieren kannst) weiß ich nicht (ich arbeite ganz allein am Shop ...), vielleicht kann jemand anderes dazu etwas schreiben. Der kurze Beitrag von vekia dazu kann bedeuten, daß das ganz einfach ist und eigentlich nicht näher erläutert werden muß oder daß das eine etwas aufwändigere Programmierung erfordert, weil man da noch andere Dateien ändern muß (ich vermute letzteres).

 

Was die ganze Aktion für einen praktischen Sinn haben soll, ist mir nebenbei bemerkt sowieso ein Rätsel.

Edited by rictools (see edit history)
Link to comment
Share on other sites

Was du in dem Zusammenhang mit Templates willst, verstehe ich nach wie vor nicht, normalerweise hast du das gleiche BackOffice-Theme wie alle anderen, mit unterschiedlichen FrontOffice-Themes hat das nichts zu tun.

 

Richtig. Das war meine Denkfehler. Ich habe den Beitrag korregiert.

 

Wer könnte verraten wie man die Email des eingellogten im Backoffice User ermittelt?

Ich brauche den Code dafür. Den Rest hoffentlich schaffe ich selbst.

Link to comment
Share on other sites

Ich würde es nicht an der konkreten Mailadresse aufhängen. Hier mal ein Beispiel, wie es generell funkioniert.
 

if (Context::getContext()->employee->id_profile == 1) {

  /* Bestehenden Code für Button hier belassen */

}

 

Das Feld id_profile == 1 entspricht der Gruppe Super Admin.

Alle User mit diesem Profil sehen nach wie vor alles wie normal, andere User sehen dann nichts.

Edited by Scully (see edit history)
  • Like 1
Link to comment
Share on other sites

Ganze Lösung hier:

 

/classes/controller/AdminController.php ab ca. Line 1545:

 

Die Zeilen 1 und 4 gemäss obigem Link sind neu eingefügt.

 

if (Context::getContext()->employee->id_profile == 1) {

        $this->context->smarty->assign('help_link', 'http://help.prestashop.com/'.Language::getIsoById($this->context->employee->id_lang).'/doc/'

            .Tools::getValue('controller').'?version='._PS_VERSION_.'&country='.Language::getIsoById($this->context->employee->id_lang));

}

Danke für einen Like, wenn es funktioniert.

Edited by Scully (see edit history)
  • Like 1
Link to comment
Share on other sites

Ganze Lösung hier:

 

/classes/controller/AdminController.php ab ca. Line 1545:

 

Die Zeilen 1 und 4 gemäss obigem Link sind neu eingefügt.

 

 

Danke für einen Like, wenn es funktioniert.

 

Super! Ich kann es erst später oder morgen auszutesten aber sieht gut aus. Ich werde dann über die Ergebnisse berichten.

Edited by Viaceslav (see edit history)
Link to comment
Share on other sites

Ich würde es nicht an der konkreten Mailadresse aufhängen. Hier mal ein Beispiel, wie es generell funkioniert.

 

 

Das Feld id_profile == 1 entspricht der Gruppe Super Admin.

Alle User mit diesem Profil sehen nach wie vor alles wie normal, andere User sehen dann nichts.

 

Leider funktioniert nicht.

Danach keine Seite des Backoffices geladen wird. HTTP ERROR 500.

Edited by Viaceslav (see edit history)
Link to comment
Share on other sites

Dass wäre dann ein Syntax Fehler in der geänderten PHP-Datei. Prüfe diese doch mal mit einem Syntax Checker zB hier:

 

http://www.meandeviation.com/tutorials/learnphp/php-syntax-check/

 

Hier ist Ausschnitt aus der geänderter Datei /classes/controller/AdminController.php:

        $this->addPageHeaderToolBarModulesListButton();
		
if (Context::getContext()->employee->id_profile == 1) {
        $this->context->smarty->assign('help_link', 'http://help.prestashop.com/'.Language::getIsoById($this->context->employee->id_lang).'/doc/'
            .Tools::getValue('controller').'?version='._PS_VERSION_.'&country='.Language::getIsoById($this->context->employee->id_lang));
}

	/**
     * assign default action in toolbar_btn smarty var, if they are not set.
     * uses override to specifically add, modify or remove items
     *
     */

Und der Link funktioniert nicht, keine Seite geladen wird.

Link to comment
Share on other sites

Ich habe inzwischen den obigen Code-Auszug selbst getestet. Funktioniert hier einwandfrei.

Also nochmals den Tipp, einen Code-Validator zu Hilfe nehmen, z.B. auch diesen hier:

 

https://de.piliapp.com/php-syntax-check/

 

Ergab bei mir Null Fehler. Wenn es trotzdem nicht klappt, mit dem fehlerhaften Code eingespielt nochmals ein Login versuchen und anschliessend auf dem Server das Error-Logfile überprüfen. Dort kann man dann nachlesen, was genau zum Fehler führte.

  • Like 1
Link to comment
Share on other sites

Bitte die gesamte Datei hier einstellen.

 

Die ganze Datei im Anhang.

 

AdminController_HELP4SuperUser.php

 

Und der Checker sagt:

"Parse error: syntax error, unexpected 'public' (T_PUBLIC) in CODE on line 1555

Errors parsing CODE".

 

Ich habe es für die Versionen pHP 5.3, 5.6 und 7.1 getestet.

Ich wende an meinem PrestaShop 1.6.1.15 die PHP 7.1 an.

Edited by Viaceslav (see edit history)
Link to comment
Share on other sites

Du hast am Code mehr geändert, als instruiert von mir. Schau mal Deine Klammersetzung an.

Es fehlt eine schliessende Klammer, die Du durch die Änderung weggelassen hast.

 

Einmal diejenige für den neuen IF, dann aber die "alte" bestehende Klammer um die Funktion initPageHeaderToolbar() abzuschliessen.

 

Parse error: syntax error, unexpected T_PUBLIC in CODE on line 1555
Errors parsing CODE

  • Like 1
Link to comment
Share on other sites

So wäre korrekt:

        $this->addPageHeaderToolBarModulesListButton();

        if (Context::getContext()->employee->id_profile == 1) {
        $this->context->smarty->assign('help_link', 'http://help.prestashop.com/'.Language::getIsoById($this->context->employee->id_lang).'/doc/'
            .Tools::getValue('controller').'?version='._PS_VERSION_.'&country='.Language::getIsoById($this->context->employee->id_lang));
        }
    }   /* diese schliessende Klammer beendet die Funktion */

    /**
     * assign default action in toolbar_btn smarty var, if they are not set.
     * uses override to specifically add, modify or remove items
     *
     */
  • Like 1
Link to comment
Share on other sites

Du hast am Code mehr geändert, als instruiert von mir. Schau mal Deine Klammersetzung an.

Es fehlt eine schliessende Klammer, die Du durch die Änderung weggelassen hast.

 

Einmal diejenige für den neuen IF, dann aber die "alte" bestehende Klammer um die Funktion initPageHeaderToolbar() abzuschliessen.

 

Parse error: syntax error, unexpected T_PUBLIC in CODE on line 1555

Errors parsing CODE

 

Hurrrraaaa!!! Jetzt funktioniert es und zwar genau wie ich es wollte! Besten Dank und meine Likes!

Edited by Viaceslav (see edit history)
Link to comment
Share on other sites

  • 5 weeks later...

Hallo Viaceslav,

 

Ich muss leider passen, wir haben diese Version nicht im Einsatz.

Vielleicht kannst Du es aber anhand der Lösung für 1.6. adaptieren?

Generell wäre die Frage, ob der Controller in 1.7. noch gleich heisst bzw. wo der liegt.

Dann wäre die Sache nicht sehr kompliziert.

 

Viele Grüsse.

  • Like 1
Link to comment
Share on other sites

Hallo Viaceslav,

 

Ich muss leider passen, wir haben diese Version nicht im Einsatz.

Vielleicht kannst Du es aber anhand der Lösung für 1.6. adaptieren?

Generell wäre die Frage, ob der Controller in 1.7. noch gleich heisst bzw. wo der liegt.

Dann wäre die Sache nicht sehr kompliziert.

 

Viele Grüsse.

 

Hallo,

 

ich habe es an der Version 1.7.1.2 geprüft. Version 1.7.2.0 installiere ich später.

Erstaunlicherweise, nicht nur die gleiche Datei an gleichem Ort existiert,

sondern auch die entsprechende Zeilen unverändert da sind.

 

Ich habe die gleiche Änderungen, wie für die PS-Version 1.6.1.14, vorgenommen und es funktioniert.

Also noch mal ein Danke schön :)

Edited by Viaceslav (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...