vis rediger-menupunkter i user/%user/edit for bestemt roller

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

bjaxelsens billede

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]) {
adam42s billede

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

mikls billede

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…

adam42s billede

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 Najbjergs billede

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.

adam42s billede

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

mikls billede

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?

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 :)

adam42s billede

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 :)

mikls billede

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

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

adam42s billede

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