Hejsa
Jeg forsøger - i Drupal 6.x - at gemme menupunkter i oversigten over mulige redigeringsmuligheder for alle andre roller end rolle 8... Jeg indsætter følgende kodebid i template.php:
function user_menu_alter(&$items) {
if ($user->uid=8){
$items['user/$user/edit/Kontigent'];
}
}Men Kontigent-menu vises stadig for alle roller...
Hvad gøre jeg galt?
//Adam
bjaxelsen
26. august 2010 - 16:48
Permalink
Bruger ID vs. rolle ID
I din kode indgår $user->uid, det er brugerens ID, og altså ikke et ID for en rolle. Så jeg tror, du skal rette til
if ($user->roles[8]) {adam42
26. august 2010 - 21:15
Permalink
hmmm... ingen forskel...
Hej bjaxelsen
jeg har sat følgende kode ind i template.php:
function user_menu_alter(&$items) {
if ($user->roles[8]){
$items['user/$user/edit/Kontigent'];
}
}
... men intet sker
(jeg har ikke slået caching til da vi stadig er i development/testing-mode...)
Mvh Adam
mikl
27. august 2010 - 13:12
Permalink
Koden gør ikke noget – og bliver ikke kørt…
Hej Adam,
Den kode du har postet her gør ikke noget.
$items['user/$user/edit/Kontigent'];er som at sige navnet på en person, uden at sige andet :)Der ud over kan du ikke bruge hooks som hook_menu_alter i template-laget, det gøres i et modul…
adam42
29. august 2010 - 21:48
Permalink
det jeg vil...
Hej Mikl
Det jeg vil er at gemme menupunktet 'user/$user/edit/Kontigent' for alle andre end brugere med roles[8]
Jeg har prøvet med unset() men uden held...
Andre funktion der kan gøre det for mig?
'Kontigent' er en kategori skabt i modulet 'profiles' men bruges af 'user' - så det er vel i user.module jeg skal place user_menu_alter?
//Adam
Morten Najbjerg
30. august 2010 - 9:41
Permalink
Hvis du mener at du vil putte
Hvis du mener at du vil putte din egen kode ind i user.module, så tager du fejl: http://drupal.org/node/144376
Du skal oprette dit eget modul og placere din kode der.
Du kan evt. starte med denne tutorial: http://drupal.org/node/231276
Et hurtigt fingerpeg er, at du i sites/all/modules/myveryownmodule opretter myveryownmodule.info og myveryownmodule.module, og erstatter myveryownmodule med navnet på dit eget modul. Skriv så disse informationer i .info filen:
http://drupal.org/node/231036
og læg så din PHP kode i .module filen.
Husk at slå dit modul til til sidst på modules siden i backenden.
adam42
3. september 2010 - 10:35
Permalink
Nej jeg vil ikke hacke koden...
... det ved jeg godt at man ikke gør ...
Det jeg 'bare' vil er udelukke faneblade og elementer på brugerredigeringsområdet...
Jeg har læst om hvordan man kunne gøre det, men det virker åbenbart alligevel ikke når jeg forsøger at gøre det i en Open Atrium-installation...
Er den eneste vej at jeg skal lave mit eget modul for at det kommer til at virke? Det kan ikke gøres i template.php?
Mvh Adam
mikl
3. september 2010 - 10:52
Permalink
Moduler
Ja, sådan som systemet er tænkt, er det meningen at themet kun skal blande sig I hvordan tingene ser ud, ikke hvordan de virker :)
adam42
3. september 2010 - 11:08
Permalink
Jamen
Det jeg forsøger at gøre er at gemme noget væk i præsentationslaget - jeg vil som så ikke lave om på hvordan noget virker... sådan som jeg ser det i hvert fald herfra :)
mikl
3. september 2010 - 11:32
Permalink
…
Ja, sådan kan man selvfølgelig også se på det… Hvis du endelig vil lave det i themet, kan du overskrive theme_menu_item og så lave noget matching på linket :)
Vertikal.dk
3. september 2010 - 11:38
Permalink
Adam og I andre, Jeg er
Adam og I andre,
Jeg er kommet lidt sent ind i diskussionen, men lige en grundlæggende ting:
Er den rette måde at formene nogle roller adgang til en given funktion ikke at fjerne deres adgang ved hjælp af tilladelser?
Hvis du blot skjuler menupunktet eller fanen kræver det ikke stor fantasi at taste den rette URL ind, og dermed alligevel komme til den skjulte funktion.
Nu ved jeg ikke hvad dit menupunkt leder til andet en adressen user/$user/edit/Kontigent Hvis denne funktion laves af et modul, er det modulets rolle at skjule den for visse brugere. Derigennem opnår du også, at du ikke behøver bekymre dig om menuen, for hvis alt andet er korrekt lavet, så sørger Drupal i sin visdom for, at brugerne ikke kan se menupunktet eller fanebladet, hvis ikke de må bruge funktionen.
Måske kan et modul som http://drupal.org/project/menu_per_role vise vej?
Blot en tanke...
Martin
adam42
3. september 2010 - 21:47
Permalink
menu per rolle
... er rettet i mod 'menu'-modulet - det jeg skulle have fjernet var blevet oprettet i profile-modulet (hvori man kan oprette ekstra felt til brugernes profil i kategorier...) jeg har nu installeret to ekstra moduler der giver nogle ekstra funktioner til hovedmodulet:
Profile Permission >> gør at man kan begrænse adgang til at kunne redigere og se felter
Profile Role >> gør at man kan begrænse adgang til at se kategorier << det sidste er lige hvad jeg havde brug for...
Tak for hjælpen til at finde frem til det jeg søgte.
Hilsen Adam