logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll

hook_permission Drupal 7 dozvole za pristup za različite uloge

26/05/2025, by Ivan

U prethodnim lekcijama prikazivali smo stranice i blokove na različitim mestima, koristili smo svojstva 'access arguments', 'access callback' za postavljanje ograničenja pristupa stranicama. U ovoj lekciji ćemo napraviti mogućnost fleksibilnijeg uređivanja prava pristupa operacijama putem administratorskih stranica. Za to ćemo koristiti hook_permission() (u Drupalu 6 to je bio hook_perm()).

hook_permission()

Definiše dozvole za korisnike.

Ovaj hook može dodati dozvole koje vaš modul definiše, a koje se prikazuju na stranici dozvola korisnika. Takođe se koristi za potpun ili delimičan pristup akcijama koje modul izvodi.

Dozvole se proveravaju pomoću user_access().

Vraćene vrednosti

Niz čiji su ključevi imena dozvola, a vrednosti su nizovi sa sledećim parovima ključ-vrednost:

title: Čitljivo ime dozvole koje se prikazuje na stranici dozvola. Ova vrednost treba da bude obmotana funkcijom t() radi prevoda.

description: (opciono) Opis šta dozvola radi. Takođe treba biti obmotan funkcijom t() za prevod.

restrict access: (opciono) Boolean (true ili false) koji označava da treba ograničiti pristup ovoj dozvoli samo poverenim korisnicima. Koristi se da se spreče sigurnosni propusti. Kada je TRUE, standardna poruka o grešci će biti prikazana na stranici dozvola. Podrazumevano je FALSE.

warning: (opciono) Prikazuje prevedenu poruku upozorenja za ovu dozvolu na stranici administracije. Poseduje prioritet nad 'restrict access' i treba ga koristiti retko radi konzistentnosti prikaza poruka o bezbednosnim rizicima. Za dodatne informacije koristite description.

Dodajmo ovaj hook u kod iz prethodne lekcije:

function sitemade_permission(){     
   return array(
     'view page example' => array(
       'title' => t('View page example'),
       'description' => t('View simple page example'),
     ),
   ); 
}

function sitemade_menu(){
    $items = array(); // inicijalizujemo niz menija    
    $items['admin/config/content/page_example'] = array(  // dodajemo stranicu na putanji 'admin/config/content/page_example'
      'title' => 'Primer stranice', // naslov stranice
      'description' => 'Obična stranica', // opis stranice
      'page callback' => '_page_example', // funkcija koja vraća sadržaj stranice
      'access arguments' => array('view page example'), // prava pristupa kao u hook_permission
    );    
    return $items; // vraćamo listu stranica
}

function _page_example($content = NULL) {
    $content = ''; // inicijalizujemo prazan sadržaj
    $query = db_select('node_revision', 'n'); // biramo tabelu node_revision u kojoj se nalaze trenutne revizije dokumenata
    $query->innerJoin('field_revision_body', 'b', 'b.revision_id = n.vid'); // pridružujemo tabelu field_revision_body gde je body
    $query->innerJoin('node', 'd', 'n.nid=d.nid'); // pridružujemo tabelu node gde je title noda
    $query->fields('n', array('title'), array('nid'), array('vid')); // biramo polja
    $query->fields('b', array('body_value'));
    $query->condition('d.type', 'news'); // filtriramo po tipu sadržaja
    $query->orderBy('n.timestamp', 'DESC'); // sortiramo po vremenu od najnovijih
    $query->range(0, 10); // biramo poslednjih 10
    $result = $query->execute(); // izvršavamo upit
    while($nodes = $result->fetch()){ // obrađujemo rezultat
        $content .= '<h3>' . $nodes->title . '</h3>'; // prikazujemo naslov
        $content .= $nodes->body_value; // prikazujemo body
    }
    return $content; // vraćamo sadržaj
}

Sada će na stranici dozvola admin/people/permissions biti prikazana nova dozvola:

Drupal add permission

Dozvolu dodeljujemo samo administratoru da obični korisnici ne bi mogli videti ovu stranicu. Sada, kada obični korisnik pokuša da pristupi stranici admin/config/content/page_example, Drupal će odbiti pristup sa greškom 403.

U sledećoj lekciji napravićemo administratorsku stranicu sa formom za izbor podešavanja sajta koristeći Drupal Forms API.