niobi-8.x-2.0-alpha4/modules/niobi_form/modules/niobi_app/niobi_app.module

modules/niobi_form/modules/niobi_app/niobi_app.module
<?php

/**
 * @file
 * Contains niobi_app.module.
 */

use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;

/**
 * Implements hook_help().
 */
function niobi_app_help($route_name, RouteMatchInterface $route_match) {
  switch ($route_name) {
    // Main module help for the niobi_app module.
    case 'help.page.niobi_app':
      $output = '';
      $output .= '<h3>' . t('About') . '</h3>';
      $output .= '<p>' . t('Enables an application and review system for Niobi Research Center') . '</p>';
      return $output;

    default:
  }
}

/**
 * Implements hook_mail().
 */
function niobi_app_mail($key, &$message, $params) {
  $options = [
    'langcode' => $message['langcode'],
  ];
  switch ($key) {
    case 'niobi_app_mail':
      $message['from'] = $params['from'];
      $message['subject'] = $params['subject'];
      $message['body'] = $params['message'];
      break;
  }
}

/**
 * Implements hook_theme().
 */
function niobi_app_theme() {
  $theme = [];
  $theme['niobi_conflict_of_interest'] = [
    'render element' => 'elements',
    'file' => 'niobi_conflict_of_interest.page.inc',
    'template' => 'niobi_conflict_of_interest',
  ];
  $theme['niobi_conflict_of_interest_content_add_list'] = [
    'render element' => 'content',
    'variables' => ['content' => NULL],
    'file' => 'niobi_conflict_of_interest.page.inc',
  ];

  // define theme hook for the field NiobiApplicationAdminStatusActions,
  // based on the status of the application there will be different rendering template
  $theme['niobi_application_admin_status_actions_review'] = [
    'variables' => [
      'application' => NULL,
      'canAccess' => FALSE
    ],
  ];

  $theme['niobi_application_admin_status_actions_application'] = [
    'variables' => [
      'application' => NULL,
      'workflow' => NULL,
      'canAccess' => FALSE,
      'isApplicationCompleted' => FALSE,
      'isRequiredAddendaCompleted' => FALSE,
      'requiredAddendaForms' => NULL,
      'stageForms' => NULL,
      'isSupportLetterCompleted' => FALSE,
      'supportLetterInfo' => NULL,
      'completeStatus' => FALSE
    ],
  ];

  $theme['niobi_application_admin_status_actions_decision'] = [
    'variables' => [
      'application' => NULL,
      'arrCanAccess' => [],
      'decisions' => NULL
    ],
  ];

  $theme['niobi_application_admin_status_actions_complete'] = [
    'variables' => [
      'decision' => NULL
    ],
  ];

  $theme['niobi_application_admin_status_actions_nomination'] = [
    'variables' => [
      'completeStatus' => NULL
    ],
  ];

  $theme['niobi_application_admin_status_actions_nomination_claim'] = [
    'variables' => []
  ];

  $theme['niobi_review_assignments'] = [
    'variables' => [
      'reviews' => []
    ]
  ];

  return $theme;
}

/**
 * Implements hook_theme_suggestions_HOOK().
 */
function niobi_app_theme_suggestions_niobi_conflict_of_interest(array $variables) {
  $suggestions = [];
  $entity = $variables['elements']['#niobi_conflict_of_interest'];
  $sanitized_view_mode = strtr($variables['elements']['#view_mode'], '.', '_');

  $suggestions[] = 'niobi_conflict_of_interest__' . $sanitized_view_mode;
  $suggestions[] = 'niobi_conflict_of_interest__' . $entity->bundle();
  $suggestions[] = 'niobi_conflict_of_interest__' . $entity->bundle() . '__' . $sanitized_view_mode;
  $suggestions[] = 'niobi_conflict_of_interest__' . $entity->id();
  $suggestions[] = 'niobi_conflict_of_interest__' . $entity->id() . '__' . $sanitized_view_mode;
  return $suggestions;
}

/**
 * Implements hook_entity_extra_field_info() to add the view fields to relevant entities
 */
function niobi_app_entity_extra_field_info() {
  $ret = array();

  $ret['niobi_application']['niobi_application']['display']['niobi_app_submissions'] = [
    'label' => t('Application Submissions'),
    'description' => t('Shows all application submissions.'),
    'weight' => 100,
  ];

  return $ret;
}

/**
 * Implements hook_ENTITY_TYPE_view().
 */
function niobi_app_niobi_application_view(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode) {
  $build['niobi_app_submissions'] = \Drupal::formBuilder()->getForm('\Drupal\niobi_app\Form\NiobiApplicationSubmissions', $entity->id());
}


/**
 * Implements hook_menu_local_tasks_alter().
 */
function niobi_app_menu_local_tasks_alter(&$data, $route_name) {
  $localTaskPlugin = \Drupal::service('plugin.manager.menu.local_task');

  // insert local task for routes
  $tasks = [
    'niobi_application.manage_workflow' => [
      'niobi_application.manage_workflow.stages',
      'niobi_application.manage_workflow.checklists.email_templates',
      'niobi_application.manage_workflow.webform_access',
      'niobi_application.manage_workflow.close_applications',
      'niobi_application.manage_workflow.close_review_assignments',
    ],
    'niobi_application.workflow_reports' => [
      'niobi_application.workflow_reports.review_scores'
    ],
    'niobi_application.launch_checklists' => [
      'niobi_application.launch_checklists.form_completeness',
      'niobi_application.launch_checklists.email',
      'niobi_application.launch_checklists.review'
    ],
  ];

  foreach ($tasks as $key => $arrRoutes) {
    if (in_array($route_name, $arrRoutes)) {
      if (empty($data['tabs'])) {
        $d = $localTaskPlugin->getLocalTasks($key);
        $data['tabs'][] = $d['tabs'];
      }
      break;
    }
  }
}

/**
 * Implements hook_entity_type_alter().
 */
function niobi_app_entity_type_alter(array &$entity_types) {
  // override entity access handler of webform submission
  $entity_types['webform_submission']->setHandlerClass('access',
    \Drupal\niobi_app\Access\NiobiAppWebformSubmissionAccessControlHandler::class);

  // override entity access handler of task
  $entity_types['task']->setHandlerClass('access',
    \Drupal\niobi_app\Access\NiobiAppTaskAccessControlHandler::class);
}

///**
//// * Implements hook_entity_insert().
//// */
//function niobi_app_entity_insert(Drupal\Core\Entity\EntityInterface $entity) {
//  switch ($entity->getEntityTypeId()) {
//    case 'niobi_application_workflow':
//      /* @var $entity Drupal\niobi_app\Entity\NiobiApplicationWorkflow */
//      \Drupal\niobi_app\Utilities\NiobiAppAccessUtilities::updateAccessForWorkflow($entity);
//      break;
//    case 'niobi_application_reviewer_pool':
//      /* @var $entity Drupal\niobi_app\Entity\NiobiApplicationReviewerPool */
//      \Drupal\niobi_app\Utilities\NiobiAppAccessUtilities::updateAccessForReviewerPool($entity);
//      break;
//  }
//}
//
///**
// * Implements hook_entity_update().
// */
//function niobi_app_entity_update(Drupal\Core\Entity\EntityInterface $entity) {
//  // This is identical to the insert case.
//  niobi_app_entity_insert($entity);
//}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc