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);
//}
