SHARE
TWEET

d7module

a guest Apr 6th, 2012 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. /**
  4.  * Реализация hook_entity_info()
  5.  */
  6. function album_entity_info() {
  7.   return array(
  8.     'album' => array(                               // Системное имя сущности
  9.       'label' => t('Album'),                        // Человеко-понятное имя сущности
  10.       'entity class' => 'Entity',                   // Класс сущности
  11.       'controller class' => 'EntityAPIController',  // Контроллер сущности
  12.       'base table' => 'albums',                     // Таблица, в которой хранится информация об альбомах
  13.       'entity keys' => array(
  14.         'id' => 'aid',                              // Название поля, в котором распологаются идентификаторы альбомов
  15.         'label' => 'title'                          // Название поля, в котором распологаются названия альбомов
  16.       ),
  17.       'admin ui' => array(
  18.         'path' => 'admin/structure/albums'          // Путь, по которому будет доступна админка
  19.       ),
  20.       'access callback' => 'album_access',          // Имя функции, отвечающей за проверку прав доступа
  21.       'module' => 'album',
  22.     ),
  23.   );
  24. }
  25.  
  26. /**
  27.  * Проверка прав доступа
  28.  */
  29. function album_access($op, $entity, $account = NULL, $entity_type = 'album') {
  30.   return user_access('administer site configuration'); // сущность будет доступна только администратору сайта
  31. }
  32.  
  33. /**
  34.  * Возвращает альбом по его идентификатору
  35.  */
  36. function album_load($aid) {
  37.   $result = entity_load('album', array($aid));
  38.   return $result ? reset($result) : FALSE;
  39. }
  40.  
  41. /**
  42.  * Форма создания/редактирования альбома
  43.  */
  44. function album_form($form, &$form_state, $album, $op = 'edit') {
  45.   $form['title'] = array(
  46.     '#title' => 'Название',
  47.     '#description' => 'Название альбома',
  48.     '#type' => 'textfield',
  49.     '#default_value' => isset($album->title) ? $album->title : '',
  50.     '#required' => true,
  51.   );
  52.  
  53.   $form['group'] = array(
  54.     '#title' => 'Группа',
  55.     '#description' => 'Название группы',
  56.     '#type' => 'textfield',
  57.     '#default_value' => isset($album->group) ? $album->group : '',
  58.     '#required' => true,
  59.   );
  60.  
  61.   $form['year'] = array(
  62.     '#title' => 'Год',
  63.     '#description' => 'Год выхода альбома',
  64.     '#type' => 'textfield',
  65.     '#default_value' => isset($album->year) ? $album->year : '',
  66.     '#required' => true,
  67.     '#size' => 5,
  68.   );
  69.  
  70.   $form['actions']['submit'] = array(
  71.     '#type' => 'actions',
  72.   );
  73.  
  74.   $form['actions']['submit'] = array(
  75.     '#type' => 'submit',
  76.     '#value' => 'Сохранить',
  77.   );
  78.  
  79.   return $form;
  80. }
  81.  
  82. /**
  83.  * Background entity form submit callback
  84.  */
  85. function album_form_submit(&$form, &$form_state) {
  86.   $album = entity_ui_form_submit_build_entity($form, $form_state);
  87.   $album->save();
  88.   $form_state['redirect'] = 'admin/structure/albums';
  89. }
  90. /**
  91.  * Реализация hook_menu()
  92.  */
  93. function album_menu() {
  94.   $items['admin/structure/albums/list'] = array(
  95.     'title' => 'List',
  96.     'type' => MENU_DEFAULT_LOCAL_TASK,
  97.     'weight' => -10,
  98.   );
  99.   return $items;
  100. }
  101. /**
  102.  * Реализация hook_field_extra_fields().
  103.  */
  104.  
  105. function album_field_extra_fields() {
  106.   $return = array();
  107.   $return['album']['album'] = array(
  108.     'form' => array(
  109.       'title' => array(
  110.         'label' => t('Title'),
  111.         'description' => t('Album title'),
  112.         'weight' => -10,
  113.       ),
  114.           'group' => array(
  115.         'label' => t('Group'),
  116.         'description' => t('group'),
  117.         'weight' => -10,
  118.       ),
  119.       'year' => array(
  120.         'label' => t('Year'),
  121.         'description' => t('Album year'),
  122.         'weight' => -10,
  123.       ),
  124.     ),
  125.   );
  126.  
  127.   return $return;
  128. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top