Guest User

staff

a guest
Apr 17th, 2012
147
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

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×