Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
qzminski committed Jul 26, 2019
2 parents 18e4517 + d82581e commit 9c2ea57
Show file tree
Hide file tree
Showing 14 changed files with 243 additions and 2 deletions.
53 changes: 53 additions & 0 deletions src/ContentElement/NodesContentElement.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@

namespace Terminal42\NodeBundle\ContentElement;

use Contao\BackendTemplate;
use Contao\ContentElement;
use Contao\StringUtil;
use Contao\System;
use Patchwork\Utf8;
use Terminal42\NodeBundle\Model\NodeModel;

class NodesContentElement extends ContentElement
{
Expand Down Expand Up @@ -50,6 +53,11 @@ public function generate()
return '';
}

// Display the backend wildcard
if (TL_MODE === 'BE') {
return static::generateBackendWildcard($this->arrData, $ids);
}

$this->nodes = System::getContainer()->get('terminal42_node.manager')->generateMultiple($ids);

if (0 === \count($this->nodes)) {
Expand All @@ -66,4 +74,49 @@ protected function compile()
{
$this->Template->nodes = $this->nodes;
}

/**
* Generate a wildcard in the backend
*
* @param array $data
* @param array $ids
*
* @return string
*/
public static function generateBackendWildcard(array $data, array $ids): string
{
$nodes = [];

$nodeModels = NodeModel::findBy(
['id IN ('.implode(',', $ids).')', 'type=?'],
[NodeModel::TYPE_CONTENT, implode(',', $ids)],
['order' => 'FIND_IN_SET(`id`, ?)']
);

if ($nodeModels !== null) {
$router = System::getContainer()->get('router');

/** @var NodeModel $nodeModel */
foreach ($nodeModels as $nodeModel) {
$nodes[] = sprintf(
'<a href="%s" class="tl_gray" target="_blank">%s (ID: %s)</a>',
$router->generate('contao_backend', ['do' => 'nodes', 'table' => 'tl_content', 'id' => $nodeModel->id]),
$nodeModel->name,
$nodeModel->id
);
}
}

$wildcard = '### ' . Utf8::strtoupper($GLOBALS['TL_LANG']['FMD'][$data['type']][0]) . ' ###';

// Add nodes
if (count($nodes) > 0) {
$wildcard .= '<br><p>' . implode('<br>', $nodes) . '</p>';
}

$template = new BackendTemplate('be_wildcard');
$template->wildcard = $wildcard;

return $template->parse();
}
}
6 changes: 6 additions & 0 deletions src/FrontendModule/NodesModule.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use Contao\Module;
use Contao\StringUtil;
use Contao\System;
use Terminal42\NodeBundle\ContentElement\NodesContentElement;

class NodesModule extends Module
{
Expand All @@ -39,6 +40,11 @@ public function generate()
return '';
}

// Display the backend wildcard
if (TL_MODE === 'BE') {
return NodesContentElement::generateBackendWildcard($this->arrData, $ids);
}

$this->nodes = System::getContainer()->get('terminal42_node.manager')->generateMultiple($ids);

if (0 === \count($this->nodes)) {
Expand Down
13 changes: 12 additions & 1 deletion src/Resources/contao/dca/tl_content.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@
/*
* Palettes
*/
$GLOBALS['TL_DCA']['tl_content']['palettes']['nodes'] = '{type_legend},type;{include_legend},nodes;{template_legend:hide},customTpl;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID;{invisible_legend:hide},invisible,start,stop';
$GLOBALS['TL_DCA']['tl_content']['palettes']['__selector__'][] = 'nodesWrapper';
$GLOBALS['TL_DCA']['tl_content']['palettes']['nodes'] = '{type_legend},type;{include_legend},nodes,nodesWrapper;{template_legend:hide},customTpl;{protected_legend:hide},protected;{expert_legend:hide},guests;{invisible_legend:hide},invisible,start,stop';

$GLOBALS['TL_DCA']['tl_content']['subpalettes']['nodesWrapper'] = 'cssID';

/*
* Fields
Expand All @@ -32,3 +35,11 @@
['terminal42_node.listener.content', 'onNodesSaveCallback'],
],
];

$GLOBALS['TL_DCA']['tl_content']['fields']['nodesWrapper'] = [
'label' => &$GLOBALS['TL_LANG']['tl_content']['nodesWrapper'],
'exclude' => true,
'inputType' => 'checkbox',
'eval' => ['submitOnChange' => true, 'tl_class' => 'clr'],
'sql' => ['type' => 'string', 'length' => 1, 'default' => ''],
];
6 changes: 5 additions & 1 deletion src/Resources/contao/dca/tl_module.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,13 @@
/*
* Palettes
*/
$GLOBALS['TL_DCA']['tl_module']['palettes']['nodes'] = '{title_legend},name,type;{include_legend},nodes;{template_legend:hide},customTpl;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID';
$GLOBALS['TL_DCA']['tl_module']['palettes']['__selector__'][] = 'nodesWrapper';
$GLOBALS['TL_DCA']['tl_module']['palettes']['nodes'] = '{title_legend},name,type;{include_legend},nodes,nodesWrapper;{template_legend:hide},customTpl;{protected_legend:hide},protected;{expert_legend:hide},guests';

$GLOBALS['TL_DCA']['tl_module']['subpalettes']['nodesWrapper'] = &$GLOBALS['TL_DCA']['tl_content']['subpalettes']['nodesWrapper'];

/*
* Fields
*/
$GLOBALS['TL_DCA']['tl_module']['fields']['nodes'] = &$GLOBALS['TL_DCA']['tl_content']['fields']['nodes'];
$GLOBALS['TL_DCA']['tl_module']['fields']['nodesWrapper'] = &$GLOBALS['TL_DCA']['tl_content']['fields']['nodesWrapper'];
19 changes: 19 additions & 0 deletions src/Resources/contao/languages/de/default.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

/*
* Node Bundle for Contao Open Source CMS.
*
* @copyright Copyright (c) 2019, terminal42 gmbh
* @author terminal42 <https://terminal42.ch>
* @license MIT
*/

/*
* Content elements
*/
$GLOBALS['TL_LANG']['CTE']['nodes'] = ['Nodes', 'Ein oder mehrere Nodes mit Inhaltselementen einbinden.'];

/*
* Errors
*/
$GLOBALS['TL_LANG']['ERR']['invalidNodes'] = 'Die Nodes vom Typ "Ordner" sind nicht erlaubt: %s';
19 changes: 19 additions & 0 deletions src/Resources/contao/languages/de/modules.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

/*
* Node Bundle for Contao Open Source CMS.
*
* @copyright Copyright (c) 2019, terminal42 gmbh
* @author terminal42 <https://terminal42.ch>
* @license MIT
*/

/*
* Backend modules
*/
$GLOBALS['TL_LANG']['MOD']['nodes'] = ['Nodes', 'Nodes mit Inhaltselementen erzeugen und verwalten.'];

/*
* Frontend modules
*/
$GLOBALS['TL_LANG']['FMD']['nodes'] = &$GLOBALS['TL_LANG']['CTE']['nodes'];
11 changes: 11 additions & 0 deletions src/Resources/contao/languages/de/tl_cfg_tag.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

/*
* Node Bundle for Contao Open Source CMS.
*
* @copyright Copyright (c) 2019, terminal42 gmbh
* @author terminal42 <https://terminal42.ch>
* @license MIT
*/

$GLOBALS['TL_LANG']['tl_cfg_tag']['sourceRef']['terminal42_node'] = 'Node';
13 changes: 13 additions & 0 deletions src/Resources/contao/languages/de/tl_content.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

/*
* Node Bundle for Contao Open Source CMS.
*
* @copyright Copyright (c) 2019, terminal42 gmbh
* @author terminal42 <https://terminal42.ch>
* @license MIT
*/

$GLOBALS['TL_LANG']['tl_content']['nodes'] = ['Nodes', 'Wählen Sie ein oder mehrere Nodes aus.'];
$GLOBALS['TL_LANG']['tl_content']['nodesWrapper'] = ['Wrapper hinzufügen', 'Einen Wrapper um die ausgewählten Nodes ausgeben.'];

44 changes: 44 additions & 0 deletions src/Resources/contao/languages/de/tl_node.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php

/*
* Node Bundle for Contao Open Source CMS.
*
* @copyright Copyright (c) 2019, terminal42 gmbh
* @author terminal42 <https://terminal42.ch>
* @license MIT
*/

$GLOBALS['TL_LANG']['tl_node']['name'] = ['Name', 'Bitte einen internen Namen des Nodes vergeben.'];
$GLOBALS['TL_LANG']['tl_node']['type'] = ['Typ', 'Hier können Sie den Typ des Nodes auswählen.'];
$GLOBALS['TL_LANG']['tl_node']['languages'] = ['Sprachen', 'Hier können Sprachen für den Noden eingestellt werden, nach denen im Backend gefiltert werden kann.'];
$GLOBALS['TL_LANG']['tl_node']['tags'] = ['Tags', 'Hier können Sie Tags für den Node vergeben, nach denen Im Backend gefiltert werden kann.'];
$GLOBALS['TL_LANG']['tl_node']['pid'] = ['Parent node'];
$GLOBALS['TL_LANG']['tl_node']['tstamp'] = ['Revision date'];

/*
* Legends
*/
$GLOBALS['TL_LANG']['tl_node']['name_legend'] = 'Name und Typ';
$GLOBALS['TL_LANG']['tl_node']['filter_legend'] = 'Filter Einstellungen';

/*
* Reference
*/
$GLOBALS['TL_LANG']['tl_node']['typeRef'] = [
\Terminal42\NodeBundle\Model\NodeModel::TYPE_CONTENT => 'Inhalt',
\Terminal42\NodeBundle\Model\NodeModel::TYPE_FOLDER => 'Ordner',
];

/*
* Buttons
*/
$GLOBALS['TL_LANG']['tl_node']['new'] = ['Neuer Node', 'Neuen Node erzeugen'];
$GLOBALS['TL_LANG']['tl_node']['show'] = ['Node Details', 'Details des Node ID %s anzeigen'];
$GLOBALS['TL_LANG']['tl_node']['edit'] = ['Node bearbeiten', 'Node ID %s bearbeiten'];
$GLOBALS['TL_LANG']['tl_node']['editheader'] = ['Node Einstellungen bearbeiten', 'Die Node Einstellungen bearbeiten'];
$GLOBALS['TL_LANG']['tl_node']['cut'] = ['Node verschieben', 'Node ID %s verschieben'];
$GLOBALS['TL_LANG']['tl_node']['copy'] = ['Node duplizieren', 'Node ID %s duplizieren'];
$GLOBALS['TL_LANG']['tl_node']['copyChilds'] = ['Node mit Subnodes duplizieren', 'Node ID %s inklusive Subnodes duplizieren'];
$GLOBALS['TL_LANG']['tl_node']['delete'] = ['Node löschen', 'Node ID %s löschen'];
$GLOBALS['TL_LANG']['tl_node']['pasteafter'] = ['Einfügen in', 'Nach dem Node ID %s einfügen'];
$GLOBALS['TL_LANG']['tl_node']['pasteinto'] = ['Einfügen nach', 'In den Node ID %s einfügen'];
28 changes: 28 additions & 0 deletions src/Resources/contao/languages/de/tl_user.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

/*
* Node Bundle for Contao Open Source CMS.
*
* @copyright Copyright (c) 2019, terminal42 gmbh
* @author terminal42 <https://terminal42.ch>
* @license MIT
*/

$GLOBALS['TL_LANG']['tl_user']['nodeMounts'] = ['Node-Mounts', 'Hier können Sie den Zugriff auf ein oder mehrere Nodes gewähren (Subnodes werden automatisch inkludiert).'];
$GLOBALS['TL_LANG']['tl_user']['nodePermissions'] = ['Node-Rechte', 'Hier können Sie die Node Rechte einstellen.'];

/*
* Reference
*/
$GLOBALS['TL_LANG']['tl_user']['nodePermissionsRef'] = [
\Terminal42\NodeBundle\PermissionChecker::PERMISSION_CREATE => 'Nodes erstellen',
\Terminal42\NodeBundle\PermissionChecker::PERMISSION_EDIT => 'Nodes bearbeiten',
\Terminal42\NodeBundle\PermissionChecker::PERMISSION_DELETE => 'Nodes löschen',
\Terminal42\NodeBundle\PermissionChecker::PERMISSION_CONTENT => 'Nodes verwalten',
\Terminal42\NodeBundle\PermissionChecker::PERMISSION_ROOT => 'Root Nodes verwalten',
];

/*
* Legends
*/
$GLOBALS['TL_LANG']['tl_user']['node_legend'] = 'Node Einstellungen';
16 changes: 16 additions & 0 deletions src/Resources/contao/languages/de/tl_user_group.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php

/*
* Node Bundle for Contao Open Source CMS.
*
* @copyright Copyright (c) 2019, terminal42 gmbh
* @author terminal42 <https://terminal42.ch>
* @license MIT
*/

\Contao\System::loadLanguageFile('tl_user_group');

/*
* Legends
*/
$GLOBALS['TL_LANG']['tl_user_group']['node_legend'] = &$GLOBALS['TL_LANG']['tl_user']['node_legend'];
1 change: 1 addition & 0 deletions src/Resources/contao/languages/en/tl_content.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@
*/

$GLOBALS['TL_LANG']['tl_content']['nodes'] = ['Nodes', 'Please choose one or more nodes.'];
$GLOBALS['TL_LANG']['tl_content']['nodesWrapper'] = ['Add wrapper element', 'Add a wrapper element to the nodes.'];
8 changes: 8 additions & 0 deletions src/Resources/contao/templates/elements/ce_nodes.html5
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
<?php if ($this->nodesWrapper): ?>
<div<?php if ($this->class): ?> class="<?= $this->class ?>"<?php endif; ?><?= $this->cssID ?>>
<?php endif; ?>

<?= implode("\n", $this->nodes) ?>

<?php if ($this->nodesWrapper): ?>
</div>
<?php endif; ?>
8 changes: 8 additions & 0 deletions src/Resources/contao/templates/modules/mod_nodes.html5
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
<?php if ($this->nodesWrapper): ?>
<div<?php if ($this->class): ?> class="<?= $this->class ?>"<?php endif; ?><?= $this->cssID ?>>
<?php endif; ?>

<?= implode("\n", $this->nodes) ?>

<?php if ($this->nodesWrapper): ?>
</div>
<?php endif; ?>

0 comments on commit 9c2ea57

Please sign in to comment.