Add credits page

This commit is contained in:
David Molineus
2015-01-09 20:57:19 +01:00
parent 820d2a8067
commit 3ff2fca215
7 changed files with 309 additions and 3 deletions

View File

@@ -0,0 +1,93 @@
<?php
/**
* @package dev
* @author David Molineus <david.molineus@netzmacht.de>
* @copyright 2015 netzmacht creative David Molineus
* @license LGPL 3.0
* @filesource
*
*/
namespace Netzmacht\Contao\Leaflet\Backend;
class Credits
{
public function generate()
{
$template = new \BackendTemplate('be_leaflet_credits');
$template->headline = 'Leaftlet maps integration for Contao CMS';
$template->libraries = $this->getLibraries();
list($template->version, $template->dependencies) = $this->extractFromComposer();
return $template->parse();
}
private function getLibraries()
{
return array_map(
function ($library) {
$library = array_merge(
array(
'homepage' => null,
'version' => null,
),
$library
);
if ($library['homepage']) {
$library['homepage'] = sprintf(
'<a href="%s" %s>%s</a>',
$library['homepage'],
LINK_NEW_WINDOW,
preg_replace('#^(https?://(www)?)#i', '', $library['homepage'])
);
}
return $library;
},
array_filter(
$GLOBALS['LEAFLET_LIBRARIES'],
function ($library) {
return isset($library['name']) && isset($library['license']);
}
)
);
}
private function extractFromComposer()
{
$local = TL_ROOT . '/composer/vendor/netzmacht/contao-leaflet-maps/composer.json';
$composer = TL_ROOT . '/composer/composer.lock';
if (!file_exists($local)) {
return array();
}
$local = json_decode(file_get_contents($local), true);
$installed = json_decode(file_get_contents($composer), true);
$deps = array();
$version = null;
foreach ($installed['packages'] as $package) {
if ($package['name'] === 'netzmacht/contao-leaflet-maps') {
$version = $package['version'];
} elseif (isset($local['require'][$package['name']])) {
$deps[] = array(
'name' => $package['name'],
'version' => $package['version'],
'license' => !empty($package['license']) ? implode(', ', $package['license']) : '',
'homepage' => sprintf(
'<a href="https://packagist.org/packages/%s" target="_blank">Visit packagist</a>',
$package['name']
)
);
}
}
return array($version, $deps);
}
}

View File

@@ -94,7 +94,7 @@ class BootSubscriber implements EventSubscriberInterface
{
$builder = $event->getBuilder();
foreach ($GLOBALS['LEAFLET_ASSETS'] as $name => $assets) {
foreach ($GLOBALS['LEAFLET_LIBRARIES'] as $name => $assets) {
if (!empty($assets['css'])) {
list ($source, $type) = (array) $assets['css'];
$builder->registerStylesheet($name, $source, $type ?: Assets::TYPE_FILE);