Guest User

staff

a guest
Apr 17th, 2012
162
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 staff_entity_info() {
  7.   return array(
  8.     'staff' => array(                               // Системное имя сущности
  9.       'label' => t('Staff Manager'),                // Человеко-понятное имя сущности
  10.       'entity class' => 'Entity',                   // Класс сущности
  11.       'controller class' => 'EntityAPIController',  // Контроллер сущности
  12.       'base table' => 'staffs',                     // Таблица, в которой хранится информация о сотрудниках
  13.       'entity keys' => array(
  14.         'id' => 'hid',                              // Название поля, в котором распологаются идентификаторы альбомов
  15.         'label' => 'name'                          // Название поля, в котором распологаются ФИО сотрудника
  16.       ),
  17.       'admin ui' => array(
  18.         'path' => 'admin/structure/staffs'          // Путь, по которому будет доступна админка
  19.       ),
  20.      
  21.       'fieldable' => true,  // добавили эту строку
  22.       'bundles' => array( // ...и этот массив
  23.          'staff' => array(
  24.             'label' => t('staff'),
  25.                 'admin' => array(
  26.                     'path' => 'admin/structure/staffs',
  27.                     'access arguments' => array('administer site configuration'),
  28.                                 ),
  29.                          ),
  30.                         ),
  31.       'access callback' => 'staff_access',          // Имя функции, отвечающей за проверку прав доступа
  32.       'module' => 'staff',
  33.     ),
  34.   );
  35. }
  36.  
  37. /**
  38.  * Проверка прав доступа
  39.  */
  40. function staff_access($op, $entity, $account = NULL, $entity_type = 'staff') {
  41.   return user_access('administer site configuration'); // сущность будет доступна только администратору сайта
  42. }
  43.  
  44. /**
  45.  * Возвращает альбом по его идентификатору
  46.  */
  47. function staff_load($hid) {
  48.   $result = entity_load('staff', array($hid));
  49.   return $result ? reset($result) : FALSE;
  50. }
  51.  
  52. /**
  53.  * Форма создания/редактирования записи сотрудника
  54.  */
  55. function staff_form($form, &$form_state, $staff, $op = 'edit') {
  56.   $form = array(
  57.     '#attributes' => array('enctype' => 'multipart/form-data'),
  58.   );
  59.   $form['name'] = array(
  60.      '#title' => 'ФИО',
  61.      '#description' => 'Фамилия и инициалы сотрудника',
  62.      '#type' => 'textfield',
  63.      '#default_value' => isset($staff->name) ? $staff->name : '',
  64.      '#required' => true,
  65.   );
  66.   $form['post'] = array(
  67.       '#title' => 'Должность',
  68.       '#description' => 'Должность сотрудника',
  69.       '#type' => 'textfield',
  70.       '#default_value' => isset($staff->post) ? $staff->post : '',
  71.       '#required' => true,
  72.     );
  73.   $form['rank'] = array(
  74.       '#title' => 'Квалификация',
  75.       '#description' => 'Квалификация сотрудника',
  76.       '#type' => 'textfield',
  77.       '#default_value' => isset($staff->rank) ? $staff->rank : '',
  78.       '#required' => true,
  79.       '#size' => 5,
  80.     );
  81.   $form['exp'] = array(
  82.       '#title' => 'Стаж',
  83.       '#description' => 'Стаж сотрудника',
  84.       '#type' => 'textfield',
  85.       '#default_value' => isset($staff->exp) ? $staff->exp : '',
  86.       '#required' => true,
  87.       '#size' => 5,
  88.     );
  89.   $form['salary'] = array(
  90.       '#title' => 'Зарплата',
  91.       '#description' => 'Зарплата сотрудника',
  92.       '#type' => 'textfield',
  93.       '#default_value' => isset($staff->salary) ? $staff->salary : '',
  94.       '#required' => true,
  95.       '#size' => 5,
  96.     );
  97.     $form['file'] = array(
  98.       '#title' => 'Изображение',
  99.       '#description' => 'Загрузите изображение',
  100.       '#type' => 'file',
  101.      
  102.       //'#required' => true,
  103.       //'#size' => normal,
  104.     );
  105.  
  106.  
  107.   $form['actions']['submit'] = array(
  108.     '#type' => 'actions',
  109.   );
  110.  
  111.   $form['actions']['submit'] = array(
  112.     '#type' => 'submit',
  113.     '#value' => 'Сохранить',
  114.   );
  115.  
  116.   return $form;
  117. }
  118.  
  119. /**
  120.  * Form validate callback
  121.  */
  122. function staff_form_validate($form, &$form_state) {
  123.   $validators = array(
  124.     'file_validate_is_image' => array(), // Проверка, действительно ли файл является изображением
  125.     'file_validate_extensions' => array('png gif jpg jpeg'), // Проверка на расширения
  126.     'file_validate_size' => array(1 * 1024 * 1024), // Проверка на размер файла (максимум 1mb)
  127.   );
  128.   // Загружаем файл в sites/default/files (по умолчанию)
  129.   if ($file = file_save_upload('file', $validators, 'public://')) {
  130.     $form_state['values']['file'] = $file; // передаём информацию о файле в ф-ю mymodule_form_submit()
  131.   }
  132.   else {
  133.     form_set_error('file', 'Файл не был загружен');
  134.   }
  135. }
  136. /**Background entity form submit callback
  137.  * Form submit callback
  138.  */
  139. function staff_form_submit($form, &$form_state) {
  140.   $file = $form_state['values']['file'];
  141.   $file->status = FILE_STATUS_PERMANENT; // Изменяем статус файла на "Постоянный"
  142.   file_save($file); // Сохраняем новый статус
  143.   drupal_set_message('Картинка загружена');
  144.  
  145.   $staff = entity_ui_form_submit_build_entity($form, $form_state);
  146.   $staff->save();
  147.   $form_state['redirect'] = 'admin/structure/staffs';
  148.    
  149. }
  150.  
  151. /**
  152.  * Background entity form submit callback
  153.  *
  154. function staff_form_submit(&$form, &$form_state) {
  155.   $staff = entity_ui_form_submit_build_entity($form, $form_state);
  156.   $staff->save();
  157.   $form_state['redirect'] = 'admin/structure/staffs';
  158.  
  159. }
  160. */
  161. /**
  162.  * Реализация hook_menu()
  163.  */
  164. function staff_menu() {
  165.   $items['admin/structure/staffs/list'] = array(
  166.     'title' => 'List',
  167.     'type' => MENU_DEFAULT_LOCAL_TASK,
  168.     'weight' => -10,
  169.   );
  170.   return $items;
  171. }
RAW Paste Data