Skip to content

Commit

Permalink
#174 Ajout du FileManager aux formulaires des contenus.
Browse files Browse the repository at this point in the history
  • Loading branch information
noelma committed Aug 6, 2020
1 parent 1cba834 commit ebf8d14
Show file tree
Hide file tree
Showing 4 changed files with 140 additions and 2 deletions.
10 changes: 10 additions & 0 deletions core/modules/Node/Config/service.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,16 @@
"config.edit.menu": "menu"
}
},
"node.hook.filemanager": {
"class": "SoosyzeCore\\Node\\Services\\HookFileManager",
"arguments": ["@core", "@module", "@router"],
"hooks": {
"node.create.form": "hookNodeCreateForm",
"node.edit.form": "hookNodeEditForm",
"entity.create.form": "hookEntityForm",
"entity.edit.form": "hookEntityForm"
}
},
"node.hook.app": {
"class": "SoosyzeCore\\Node\\Services\\HookApp",
"arguments": ["@core"],
Expand Down
99 changes: 99 additions & 0 deletions core/modules/Node/Services/HookFileManager.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
<?php

namespace SoosyzeCore\Node\Services;

use Psr\Http\Message\ResponseInterface;
use Soosyze\Components\Form\FormBuilder;

class HookFileManager
{
private $core;

private $hasFileManager;

/**
* @var \Soosyze\Components\Router\Router
*/
private $router;

public function __construct($core, $module, $router)
{
$this->core = $core;
$this->router = $router;

$this->hasFileManager = $module->has('FileManager');
}

public function hookNodeCreateForm(FormBuilder &$form, $content, $type)
{
if (!$this->hasFileManager) {
return;
}

$form->append('fields-fieldset', function ($form) {
$form->group('files-fieldset', 'div', function ($form) {
$response = '<div class="col-md-12">'
. '<div class="alert alert-info">'
. t('NOTE: You cannot add media files until you save the page. Just click \'Save\' on top')
. '</div>'
. '</div>';

$form->legend('files-legend', t('Files'))
->html('key', '<div:attr>:_content</div>', [
'_content' => $response,
'class' => 'row',
'id' => 'filemanager'
]);
});
});
}

public function hookNodeEditForm(FormBuilder &$form, $content)
{
if (!$this->hasFileManager) {
return;
}

$request = $this->router->getRequestByRoute('filemanager.show', [
':path' => "/node/{$content[ 'type' ]}/{$content[ 'id' ]}"
]);
$this->getFileManager($form, $request);
}

public function hookEntityForm(FormBuilder &$form, $content, $node, $entity)
{
if (!$this->hasFileManager) {
return;
}

$request = $this->router->getRequestByRoute('filemanager.show', [
':path' => "/node/{$node[ 'type' ]}/{$node[ 'id' ]}/$entity"
]);
$this->getFileManager($form, $request);
}

protected function getFileManager(FormBuilder &$form, $request)
{
$response = '<div class="col-md-12">'
. '<div class="alert alert-info">'
. t('You do not have the necessary permissions to use the file manager')
. '</div>'
. '</div>';

if ($this->core->callHook('app.granted.route', [ $request ])) {
$route = $this->router->parse($request);
$response = $this->router->execute($route, $request);
}

$form->append('fields-fieldset', function ($form) use ($response) {
$form->group('files-fieldset', 'div', function ($form) use ($response) {
$form->legend('files-legend', t('Files'))
->html('key', '<div:attr>:_content</div>', [
'_content' => $response,
'class' => 'row',
'id' => 'filemanager'
]);
});
});
}
}
14 changes: 14 additions & 0 deletions core/modules/Node/Views/node-create.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@

<div class="row">
<?php if (!empty($node_fieldset_submenu)): ?>
<div class="col-md-3 sticky">
<?php echo $node_fieldset_submenu; ?>
</div>
Expand All @@ -8,4 +9,17 @@
<?php echo $form; ?>
</div>
</div>
<?php else: ?>
<div class="col-md-12">
<div class="tab-content">
<?php echo $form; ?>
</div>
</div>
<?php endif; ?>

<div id="modal_filemanager" class="modal" role="dialog" aria-label="<?php echo t('File actions window'); ?>">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content"></div>
</div>
</div>
</div>
19 changes: 17 additions & 2 deletions core/modules/Node/Views/node-edit.php
Original file line number Diff line number Diff line change
@@ -1,14 +1,29 @@

<?php echo $node_submenu; ?>
<?php if (!empty($node_submenu)): ?>
<?php echo $node_submenu; ?>
<?php endif; ?>

<div class="row">
<?php if (!empty($node_fieldset_submenu)): ?>
<div class="col-md-3 sticky">
<?php echo $node_fieldset_submenu; ?>
</div>

<div class="col-md-9">
<div class="tab-content">
<?php echo $form; ?>
</div>
</div>
<?php else: ?>
<div class="col-md-12">
<div class="tab-content">
<?php echo $form; ?>
</div>
</div>
<?php endif; ?>

<div id="modal_filemanager" class="modal" role="dialog" aria-label="<?php echo t('File actions window'); ?>">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content"></div>
</div>
</div>
</div>

0 comments on commit ebf8d14

Please sign in to comment.