Joomla.it Forum
Non solo Joomla... => Sviluppo => : darioc 10 Nov 2009, 22:13:16
-
Ho la necessità di far entrare nell'area amministrativa delle persone e VOGLIO che non tocchino NULLA.
Ho trovato il modo, ma ho bisogno di un aiuto perchè, credo, sia necessario conoscere qualcosa di PHP e forse Javascript.
Se tutto funziona, prometto che creo una mini guida.
L'idea è questa...
Anzitutto:
ho installato il componente Custom Quick Icon
http://extensions.joomla.org/extensions/administration/admin-interface/463 (http://extensions.joomla.org/extensions/administration/admin-interface/463)
Ho tenuto abilitati solo i pulsanti necessari agli utenti che accederanno all'area amministrativa.
Ora ho il Pannello di Controllo con SOLO quei pulsanti, nel mio caso solamente SqUeReO.
Dopo:
Nella cartella /administrator/templates/khepri/
troviamo tra gli altri, i file:
- cpanel.php
- index.php
- login.php
- cartella js contenente i file :
- index.js
- menu.js
Aperto il file cpanel.php cerchiamo la riga di codice :
<script type="text/javascript" src="templates/<?php echo $this->template ?>/js/menu.js"></script>
Cancellandola e salvando il file, ho constatato che il menu orrizontale dell'interfaccia amministrativa del sito non funzionava più.
Però l'icona che avevo deciso di attivare con il componente Custom Quick Icon era funzionante al 100%.
OTTIMO!!!
Il problema sarebbe risolto se non fosse che anche io devo utilizzare il sito...
Quindi chiedo un aiuto a qualcuno che sa qualcosa di PHP!
L'idea mia è questa:
includere la riga di codice soprastante in un if(___){___}
if(login.getText()=="dario"){
<script type="text/javascript" src="templates/<?php echo $this->template ?>/js/menu.js"></script>
}
Dove login.getText() è un comando scritto solo per chiarezza.
Serve una funzione che ritorni il "NOME UTENTE" che ho dato al login.
Per esempio:
mi loggo come "dario" e sono amministratore, allora la funzione deve restituire "dario" in modo che
login.getText()=="dario" restituisca "true" e l'esecuzione possa entrare nel corpo dell'if eseguendo la riga di codice per caricare il menu orrizontale.
se invece mi loggo come "marika" e Marika non è Amministratore, allora
login.getText()=="dario" mi deve restituire "false" e non entrare nel corpo dell'if.
In pratica in questo modo solo gli amministratori potranno utilizzare il menu orrizontale, ma nel contempo si potrà dare accesso all'area amministrativa anche ad altri utenti senza rischiare che combinino un casino.
Sono stato abbastanza chiaro?
C'è qualcuno che può dare una mano a questa causa comune?
Grazie a tutti per il contributo.
-
può essere utile usare l'oggetto "utente corrente" ?
http://docs.joomla.org/Accessing_the_current_user_object
-
Grazie per il link!
Potrebbe proprio essere utile allo scopo.
Proverò a capirne qualcosa di più non appena ho un po' di tempo.
Nel frattempo, altre idee sono ben accette, anche perchè non si escudono (e ci mancherebbe) altre strade, magari più semplici (come creare 2 differenti file di cPanel, boh..!)
-
Ciao :)
Ho fatto qualche prova e...sembra ci sia una soluzione, diciamo accettabile.
Ho modificato il file /administrator/templates/khepri/cpanel.php
Sostituendo tale parte di codice:
<?php if(JModuleHelper::isEnabled('menu')) : ?>
<script type="text/javascript" src="templates/<?php echo $this->template ?>/js/menu.js"></script>
<script type="text/javascript" src="templates/<?php echo $this->template ?>/js/index.js"></script>
Con questo:
<?php $user =& JFactory::getUser();?>
<?php if ($user->username == nomeutente_che_vuoi_limitare) { ?>
<?php if(JModuleHelper::isEnabled('menu')): ?>
<script type="text/javascript" src="templates/<?php echo $this->template ?>/js/index.js"></script>
<?php endif; ?>
<?php } else { ?>
<?php if(JModuleHelper::isEnabled('menu')) : ?>
<script type="text/javascript" src="templates/<?php echo $this->template ?>/js/menu.js"></script>
<script type="text/javascript" src="templates/<?php echo $this->template ?>/js/index.js"></script>
<?php endif; ?>
<?php } ?>
In questo modo, se l'utente collegato è quello specificato, non da accesso ai varii menù del cpanel ma...visualizza soltanto le icone che ho, precedentemente, selezionato con Custom Quick Icon assegnandole all'utente in questione.
Un neo di questa soluzione tampone è che, collegandomi io come super administrator non vedrò più le icone nella pagina di partenza del pannello di amministrazione.
Tutto il resto funziona regolarmente, però.
Diciamo che così, limito parecchio gli eventuali danni al sito.
Insomma, tra i due ho scelto il male minore!
:)
-
Errata corrige:
Ho modificato anche il file /administrator/templates/khepri/index.php
Facendo la stessa modifica. Cioè sostituendo tale parte di codice:
<?php if(JModuleHelper::isEnabled('menu')) : ?>
<script type="text/javascript" src="templates/<?php echo $this->template ?>/js/menu.js"></script>
<script type="text/javascript" src="templates/<?php echo $this->template ?>/js/index.js"></script>
Con questo:
<?php $user =& JFactory::getUser();?>
<?php if ($user->username == nomeutente_che_vuoi_limitare) { ?>
<?php if(JModuleHelper::isEnabled('menu')): ?>
<script type="text/javascript" src="templates/<?php echo $this->template ?>/js/index.js"></script>
<?php endif; ?>
<?php } else { ?>
<?php if(JModuleHelper::isEnabled('menu')) : ?>
<script type="text/javascript" src="templates/<?php echo $this->template ?>/js/menu.js"></script>
<script type="text/javascript" src="templates/<?php echo $this->template ?>/js/index.js"></script>
<?php endif; ?>
<?php } ?>
Il problema è che per tale utente limitato la navigazione nel pannello di amministrazione diventa improbabile, in questo modo.
Infatti una volta entrato in uno dei componenti visibili non ha alcun pulsante per tornare nella pagina iniziale (dove sono visibili le icone dei componenti).
Allora (sempre nel file /administrator/templates/khepri/index.php) ho inserito brutalmente un link che rimandi alla pagina iniziale del pannello di amministrazione.
Ora la testo un pò.
Mhm...che ne pensate?
:)
-
Grazie mian per la risposta! Ora provo, ma secondo me sarebbe ottimale invertire l'IF(.....)
if(sono amministratore) allora lasciami il menu, ecc..
else togli tutto
In questo modo vado a limitare più utenti tranne l'amministratore.
Che ne dici?
-
Salve a tutti
ho lo stesso problema,devo limitare l'accesso nel backend.
Mi aiutate!!!!!!
-
Heilà salve a tutti, poi come avete fatto x sbrogliare questa cosa?
dai...scrivetelo please!
-
sai che mi sono riletto tutti i post ma non riesco a capire... i non amministratori hanno già delle limitazioni.
Le soluzioni che ho visto equivalgono a mettere un pezzo di scotch sul monitor sopra il menù ma non sono hack.
M.
-
uhm? ma certo ti do ragione per lo scotch, ma difatto, io credo che l'intento sia proprio quello di mascherare alcune funzionalità a utenti non esperti e irrazionali che magari possono mettersi a "cliccare quà e là" variando qualcosa. o almeno credo.... no?
-
http://forum.joomla.it/index.php/topic,123172.0.html (aldilà del titolo cannato del post...)
M.
-
grazie mille del link amico; anche se cmq mi era già molto chiara la diversità dei vari livelli di utenti.
Provo a includere lo script dell'if, ti do tutte le ragioni del mondo, ma a volte mascherare bottoni, menu e link serve anche per semplificare (e non far confondere) le idee a chi gestirà il sito - specie se sono persone non proprio abituate a fare ste cose.
E' questo lo scopo di tutto... almeno per me.
-
Ciao di nuovo a tutti.
Sto facendo una prova su un backend joomla 1.0 ma questo script non funge e genere pagina bianca:
<div class="mod_fullmenu">
<?php
$user =& JFactory::getUser();
if ($user->username == admin) {
mosLoadAdminModule( 'fullmenu' )
}
?>
</div>
Qualcuno sa consigliarmi come fare?
-
:-(( ..dai ragazzi non mi risponde nessuno??
So benissimo che sono "antico" a chiedere x la 1.0 ma purtroppo ho per forza questa esigenza.....
PLEASE ...
-
$user =& JFactory::getUser();
era già nella 1.0 ?
M.
guarda qui
http://forum.joomla.org/viewtopic.php?p=1225360
..veso la fine
-
Grazie sei un mito corro a leggere!!!!!
-
mau_develop ti volevo ringraziare dell'aiuto, grazie a te sono riuscito nell'intento modificando la index.php nel template del backend in joomla 1.0 - copio quindi le mie righe che possono servire ad altri.
Grazie a questo si identifica l'user e si decide se caricare il modulo del menu in alto oppure no:
<div class="mod_fullmenu">
<?php
global $my;
$my->username;
if ($my->username == admin) {
mosLoadAdminModule( 'fullmenu' );
}
?>
</div>
GRAZIE ANCORA!