Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Реализация hook_entity_info()
- */
- function staff_entity_info() {
- return array(
- 'staff' => array( // Системное имя сущности
- 'label' => t('Staff Manager'), // Человеко-понятное имя сущности
- 'entity class' => 'Entity', // Класс сущности
- 'controller class' => 'EntityAPIController', // Контроллер сущности
- 'base table' => 'staffs', // Таблица, в которой хранится информация о сотрудниках
- 'entity keys' => array(
- 'id' => 'hid', // Название поля, в котором распологаются идентификаторы альбомов
- 'label' => 'name' // Название поля, в котором распологаются ФИО сотрудника
- ),
- 'admin ui' => array(
- 'path' => 'admin/structure/staffs' // Путь, по которому будет доступна админка
- ),
- 'fieldable' => true, // добавили эту строку
- 'bundles' => array( // ...и этот массив
- 'staff' => array(
- 'label' => t('staff'),
- 'admin' => array(
- 'path' => 'admin/structure/staffs',
- 'access arguments' => array('administer site configuration'),
- ),
- ),
- ),
- 'access callback' => 'staff_access', // Имя функции, отвечающей за проверку прав доступа
- 'module' => 'staff',
- ),
- );
- }
- /**
- * Проверка прав доступа
- */
- function staff_access($op, $entity, $account = NULL, $entity_type = 'staff') {
- return user_access('administer site configuration'); // сущность будет доступна только администратору сайта
- }
- /**
- * Возвращает альбом по его идентификатору
- */
- function staff_load($hid) {
- $result = entity_load('staff', array($hid));
- return $result ? reset($result) : FALSE;
- }
- /**
- * Форма создания/редактирования записи сотрудника
- */
- function staff_form($form, &$form_state, $staff, $op = 'edit') {
- $form = array(
- '#attributes' => array('enctype' => 'multipart/form-data'),
- );
- $form['name'] = array(
- '#title' => 'ФИО',
- '#description' => 'Фамилия и инициалы сотрудника',
- '#type' => 'textfield',
- '#default_value' => isset($staff->name) ? $staff->name : '',
- '#required' => true,
- );
- $form['post'] = array(
- '#title' => 'Должность',
- '#description' => 'Должность сотрудника',
- '#type' => 'textfield',
- '#default_value' => isset($staff->post) ? $staff->post : '',
- '#required' => true,
- );
- $form['rank'] = array(
- '#title' => 'Квалификация',
- '#description' => 'Квалификация сотрудника',
- '#type' => 'textfield',
- '#default_value' => isset($staff->rank) ? $staff->rank : '',
- '#required' => true,
- '#size' => 5,
- );
- $form['exp'] = array(
- '#title' => 'Стаж',
- '#description' => 'Стаж сотрудника',
- '#type' => 'textfield',
- '#default_value' => isset($staff->exp) ? $staff->exp : '',
- '#required' => true,
- '#size' => 5,
- );
- $form['salary'] = array(
- '#title' => 'Зарплата',
- '#description' => 'Зарплата сотрудника',
- '#type' => 'textfield',
- '#default_value' => isset($staff->salary) ? $staff->salary : '',
- '#required' => true,
- '#size' => 5,
- );
- $form['file'] = array(
- '#title' => 'Изображение',
- '#description' => 'Загрузите изображение',
- '#type' => 'file',
- //'#required' => true,
- //'#size' => normal,
- );
- $form['actions']['submit'] = array(
- '#type' => 'actions',
- );
- $form['actions']['submit'] = array(
- '#type' => 'submit',
- '#value' => 'Сохранить',
- );
- return $form;
- }
- /**
- * Form validate callback
- */
- function staff_form_validate($form, &$form_state) {
- $validators = array(
- 'file_validate_is_image' => array(), // Проверка, действительно ли файл является изображением
- 'file_validate_extensions' => array('png gif jpg jpeg'), // Проверка на расширения
- 'file_validate_size' => array(1 * 1024 * 1024), // Проверка на размер файла (максимум 1mb)
- );
- // Загружаем файл в sites/default/files (по умолчанию)
- if ($file = file_save_upload('file', $validators, 'public://')) {
- $form_state['values']['file'] = $file; // передаём информацию о файле в ф-ю mymodule_form_submit()
- }
- else {
- form_set_error('file', 'Файл не был загружен');
- }
- }
- /**Background entity form submit callback
- * Form submit callback
- */
- function staff_form_submit($form, &$form_state) {
- $file = $form_state['values']['file'];
- $file->status = FILE_STATUS_PERMANENT; // Изменяем статус файла на "Постоянный"
- file_save($file); // Сохраняем новый статус
- drupal_set_message('Картинка загружена');
- $staff = entity_ui_form_submit_build_entity($form, $form_state);
- $staff->save();
- $form_state['redirect'] = 'admin/structure/staffs';
- }
- /**
- * Background entity form submit callback
- *
- function staff_form_submit(&$form, &$form_state) {
- $staff = entity_ui_form_submit_build_entity($form, $form_state);
- $staff->save();
- $form_state['redirect'] = 'admin/structure/staffs';
- }
- */
- /**
- * Реализация hook_menu()
- */
- function staff_menu() {
- $items['admin/structure/staffs/list'] = array(
- 'title' => 'List',
- 'type' => MENU_DEFAULT_LOCAL_TASK,
- 'weight' => -10,
- );
- return $items;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement