project_wiki-1.x-dev/project_wiki.module
project_wiki.module
<?php
/**
* @file
* Primary module hooks for Project Wiki module.
*/
use Drupal\Component\Utility\Html;
use Drupal\Core\Routing\RouteMatchInterface;
/**
* Implements hook_theme().
*/
function project_wiki_theme() {
return [
'project_wiki_list' => [
'variables' => [
'projectWikiEntries' => [],
'items' => [],
],
],
'project_wiki_entry' => [
'variables' => [
'provider' => NULL,
'id' => NULL,
'langcode' => NULL,
'category' => NULL,
'title' => NULL,
'content' => NULL,
'isDeveloperContent' => NULL,
],
],
];
}
/**
* Implements hook_preprocess_THEME().
*/
function project_wiki_preprocess_project_wiki_list(&$variables) {
foreach ($variables['projectWikiEntries'] as $projectWikiValueObject) {
$variables['items'][] = [
'#theme' => 'project_wiki_entry',
'#provider' => $projectWikiValueObject->getProvider(),
'#id' => $projectWikiValueObject->getId(),
'#langcode' => $projectWikiValueObject->getLangcode(),
'#category' => $projectWikiValueObject->getCategory(),
'#title' => $projectWikiValueObject->getTitle(),
'#content' => $projectWikiValueObject->getContent(),
'#isDeveloperContent' => $projectWikiValueObject->isDeveloperContent(),
];
}
}
/**
* Implements hook_help().
*/
function project_wiki_help($route_name, RouteMatchInterface $route_match) {
switch ($route_name) {
case 'help.page.project_wiki':
$text = file_get_contents(__DIR__ . '/README.md');
if (!\Drupal::moduleHandler()->moduleExists('markdown')) {
return '<pre>' . Html::escape($text) . '</pre>';
}
else {
// Use the Markdown filter to render the README.
$filter_manager = \Drupal::service('plugin.manager.filter');
$settings = \Drupal::configFactory()->get('markdown.settings')->getRawData();
$config = ['settings' => $settings];
$filter = $filter_manager->createInstance('markdown', $config);
return $filter->process($text, 'en');
}
}
return NULL;
}
