Jump to content

[RISOLTO] Link diretti nell'admin alla configurazione dei moduli


Recommended Posts

Ciao a tutti,
sto cercando di creare nuove tabs in admin per risolvere un piccolo problema con i moduli e con la gestione sviluppatori.

Per crearli non c'è nessun problema, basta andare nel BO -> utilità -> tabs -> Aggiungi nuovo

A questo punto abbiamo una nuova fantastica tabs (anche nel database si può notare nella tabella PREFISSO_tab) ma adesso come si fa a scriverci il codice dentro?

ho provato ad andare nella cartella dell'admin quindi in tabs e a inserirne una con nome della tab creata (su modello delle tabs di default) ma anche questa strategia non funziona, viene sempre fuori "Scheda inesistente".

Ho pensato che avesse bisogno di estendere qualche AdminTab etc e quindi ho provato a sparagli il contenuto di un'altra tab giusto per vedere se funzionava ma anche così niente da fare!

Adesso vado avanti a ragionarci, ma se qualcuno ha già affrontato il problema sono tutto orecchie (o meglio occhi).

Saluti a tutti

Link to comment
Share on other sites

Me la canto e me la suono... era abbastanza ovvio credo che i [spam-filter] non mi hanno risposto per l'eccessiva banalità...
cmq bastava mettere

include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php');
class NOMECLASS extends AdminTab


dove il NOMECLASS della class è quello che si è settato nel BO...

ma ora la domanda è un'altra:
Una volta creata la tab io voglio metterci un redirect a una configurazione di un modulo e il codice della classe potrebbe essere:

<?php
include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php');

class prova extends AdminTab
{
   public function __construct()
   {
       parent::__construct();
   }

   public function display()
   {
       header('location:INDIRIZZO');
       return true;
   }
}

?>


e tutto funziona correttamente se non fosse per quel dannato token che bisogna passare in get.
ho visto che ho una funzione per creare il token, in particolare:

&token;='.Tools::getAdminToken($item['class_name'].intval($item['id_tab']).intval($cookie->id_employee)).'


che ovviamente non funziona o meglio funziona ma da il risultato cannato perchè come class_name prende la nostra nuova class_name e come id_tab prende il nostro, ovviamente dovremmo mettere quello di destinazione!

Riassumendo la mia domanda è:

come faccio a sapere il nome e l'id_tab di classe che configura un modulo? o in altre parole come creo dinamicamente questo link?

index.php?tab=AdminModules&configure=productcomments&token=97a77ba9a3aefc968c337cc1acfd1b25


?

Link to comment
Share on other sites

Finito, sono riuscito a risolvere i miei problemi, posto una miniguida per i posteri o per gli interessati:

OBBIETTIVO: avere delle tabs nell'admin per alcuni utenti che portano direttamente alla configurazione di moduli selezionati. Impedire per questi utenti l'accesso diretto alla tabs moduli

SOLUZIONE: prima di tutto si crea nel BO una tab per ogni configurazione che si vuole un accesso veloce
BO -> Utility -> Tabs -> Aggiungi nuovo
Per esempio se volessimo creare un accesso veloce per il testo della home page (modulo editorial) creaeremo una tab che si chiama "Testo Home", come classe le diamo per esempio "DV_AdminModuliHome" e come Capogruppo "Home".

A questo punto editiamo header.inc.php e circa alla riga 100 modifichiamo il foreach con

foreach ($tabs AS $t)
   {
   if ($t['class_name'] == $tab)
       $id_parent = $t['id_tab'];
       if (checkTabRights($t['id_tab']) === true){
           if ($t['class_name']=="AdminModules" and $cookie->id_employee!=1){
               $link_moduli = 'index.php?tab='.$t['class_name'].'&token;='.Tools::getAdminToken($t['class_name'].intval($t['id_tab']).intval($cookie->id_employee));
           }else{
               echo 'id_employee)).'"> '.$t['name'].'
';
                           }
                       }
                   }



in particolare

if ($t['class_name']=="AdminModules" and $cookie->id_employee!=1){


l'1 nel mio caso rappresenta lo sviluppatore mentre tutti gli altri chi inserisce i testi etc.

ora creiamo all'interno della cartella dell'admin -> tabs un file php che si chiama come la classe che abbiamo impostato nel BO (nell'esempio DV_AdminModuliHome) con il seguente contenuto

<?php

include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php');

class DV_AdminModuliHome extends AdminTab
{
   public function __construct()
   {
       parent::__construct();
   }

   public function display()
   {
       global $link_moduli;
       header("location: $link_moduli&configure=editorial");
       return true;
   }
}

?>


Per ogni altra configurazione basta cambiare "editorial" con il nome del modulo.

Per finire disattiviamo per l'amministratore le schede che abbiamo appena creato così da non creare confusione e le attiviamo per gli altri utenti

Spero di essere stato chiaro, saluti e

Enjoy

Simone

Link to comment
Share on other sites

  • 4 years later...

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...