commit
693b0382ba
5 changed files with 149 additions and 0 deletions
@ -0,0 +1,14 @@ |
|||||||
|
{ |
||||||
|
"name": "drupal/islandora_fits", |
||||||
|
"type": "drupal-module", |
||||||
|
"description": "Enables Technical Metadata derivative generation", |
||||||
|
"keywords": ["Drupal"], |
||||||
|
"license": "GPL-2.0+", |
||||||
|
"homepage": "https://www.drupal.org/project/islandora_fits", |
||||||
|
"minimum-stability": "dev", |
||||||
|
"support": { |
||||||
|
"issues": "https://www.drupal.org/project/issues/islandora_fits", |
||||||
|
"source": "http://cgit.drupalcode.org/islandora_fits" |
||||||
|
}, |
||||||
|
"require": { } |
||||||
|
} |
||||||
@ -0,0 +1,7 @@ |
|||||||
|
name: 'Islandora Fits' |
||||||
|
type: module |
||||||
|
description: 'Enables Technical Metadata derivative generation' |
||||||
|
core: 8.x |
||||||
|
package: 'Custom' |
||||||
|
dependencies: |
||||||
|
- islandora |
||||||
@ -0,0 +1,24 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/** |
||||||
|
* @file |
||||||
|
* Contains islandora_fits.module. |
||||||
|
*/ |
||||||
|
|
||||||
|
use Drupal\Core\Routing\RouteMatchInterface; |
||||||
|
|
||||||
|
/** |
||||||
|
* Implements hook_help(). |
||||||
|
*/ |
||||||
|
function islandora_fits_help($route_name, RouteMatchInterface $route_match) { |
||||||
|
switch ($route_name) { |
||||||
|
// Main module help for the islandora_fits module. |
||||||
|
case 'help.page.islandora_fits': |
||||||
|
$output = ''; |
||||||
|
$output .= '<h3>' . t('About') . '</h3>'; |
||||||
|
$output .= '<p>' . t('Enables Technical Metadata derivative generation') . '</p>'; |
||||||
|
return $output; |
||||||
|
|
||||||
|
default: |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,58 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace Drupal\islandora_fits\Plugin\Action; |
||||||
|
|
||||||
|
use Drupal\Core\Form\FormStateInterface; |
||||||
|
use Drupal\islandora\Plugin\Action\AbstractGenerateDerivative; |
||||||
|
|
||||||
|
/** |
||||||
|
* Emits a Node for generating fits derivatives event. |
||||||
|
* |
||||||
|
* @Action( |
||||||
|
* id = "generate_fits_derivative", |
||||||
|
* label = @Translation("Generate a Technical metadata derivative"), |
||||||
|
* type = "node" |
||||||
|
* ) |
||||||
|
*/ |
||||||
|
class GenerateFitsDerivative extends AbstractGenerateDerivative { |
||||||
|
|
||||||
|
/** |
||||||
|
* {@inheritdoc} |
||||||
|
*/ |
||||||
|
public function defaultConfiguration() { |
||||||
|
$config = parent::defaultConfiguration(); |
||||||
|
$config['path'] = '[date:custom:Y]-[date:custom:m]/[node:nid]-[term:name].xml'; |
||||||
|
$config['mimetype'] = 'application/xml'; |
||||||
|
$config['queue'] = 'islandora-connector-fits'; |
||||||
|
$config['destination_media_type'] = 'file'; |
||||||
|
return $config; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* {@inheritdoc} |
||||||
|
*/ |
||||||
|
public function buildConfigurationForm(array $form, FormStateInterface $form_state) { |
||||||
|
$form = parent::buildConfigurationForm($form, $form_state); |
||||||
|
$form['mimetype']['#description'] = t('Mimetype to convert to (e.g. application/xml, etc...)'); |
||||||
|
$form['mimetype']['#value'] = 'application/xml'; |
||||||
|
$form['mimetype']['#type'] = 'hidden'; |
||||||
|
|
||||||
|
unset($form['args']); |
||||||
|
return $form; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* {@inheritdoc} |
||||||
|
*/ |
||||||
|
public function validateConfigurationForm(array &$form, FormStateInterface $form_state) { |
||||||
|
parent::validateConfigurationForm($form, $form_state); |
||||||
|
$exploded_mime = explode('/', $form_state->getValue('mimetype')); |
||||||
|
if ($exploded_mime[0] != 'application') { |
||||||
|
$form_state->setErrorByName( |
||||||
|
'mimetype', |
||||||
|
t('Please enter file mimetype (e.g. application/xml.)') |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,46 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
namespace Drupal\Tests\islandora_fits\Functional; |
||||||
|
|
||||||
|
use Drupal\Core\Url; |
||||||
|
use Drupal\Tests\BrowserTestBase; |
||||||
|
|
||||||
|
/** |
||||||
|
* Simple test to ensure that main page loads with module enabled. |
||||||
|
* |
||||||
|
* @group islandora_fits |
||||||
|
*/ |
||||||
|
class LoadTest extends BrowserTestBase { |
||||||
|
|
||||||
|
/** |
||||||
|
* Modules to enable. |
||||||
|
* |
||||||
|
* @var array |
||||||
|
*/ |
||||||
|
public static $modules = ['islandora_fits']; |
||||||
|
|
||||||
|
/** |
||||||
|
* A user with permission to administer site configuration. |
||||||
|
* |
||||||
|
* @var \Drupal\user\UserInterface |
||||||
|
*/ |
||||||
|
protected $user; |
||||||
|
|
||||||
|
/** |
||||||
|
* {@inheritdoc} |
||||||
|
*/ |
||||||
|
protected function setUp() { |
||||||
|
parent::setUp(); |
||||||
|
$this->user = $this->drupalCreateUser(['administer site configuration']); |
||||||
|
$this->drupalLogin($this->user); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Tests that the home page loads with a 200 response. |
||||||
|
*/ |
||||||
|
public function testLoad() { |
||||||
|
$this->drupalGet(Url::fromRoute('<front>')); |
||||||
|
$this->assertSession()->statusCodeEquals(200); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
Loading…
Reference in new issue