Commit a58b8288 authored by Sebastian Castro's avatar Sebastian Castro

Improve admin help message, includes videos tutorials

parent c00df05d
......@@ -68,6 +68,13 @@
font-size: 13px;
margin-left: 5px;
}
.box-body .iframe-container { text-align: center; margin-top: -20px; }
.box-body .iframe-container-aside {
float: left;
margin: -20px 20px 20px 0;
}
.text-and-iframe-container:before { display: table; content: " "; }
.text-and-iframe-container:after { clear: both; display: table; content: " ";}
</style>
......@@ -158,6 +165,9 @@
<li class="first treeview">
<a href="{{ path('biopen_bulk_actions_index') }}"><i class="fa fa-bullhorn"></i><span>Actions de masse</span></a>
</li>
<li>
<a href="{{ path('biopen_core_help') }}"><i class="fa fa-question"></i><span>Aide</span></a>
</li>
{% if use_as_saas and is_root_project() %}
<li>
<a href="{{ path('admin_biopen_saas_project_list') }}"><i class="fa fa-folder-open"></i><span>Projets</span></a>
......
......@@ -25,7 +25,7 @@ class ConfigurationAPIAdmin extends AbstractAdmin
$apiProperties = $dm->getRepository('BiopenGeoDirectoryBundle:Element')->findAllCustomProperties();
$formMapper
->with("Configuration")
->with("Configuration", ["description" => "<div class='iframe-container'><iframe height='200' sandbox='allow-same-origin allow-scripts' src='https://video.colibris-outilslibres.org/videos/embed/aa05a654-a5d6-472a-bb12-108e0f6ce18e' frameborder='0' allowfullscreen></iframe></div>"])
->add('api.protectPublicApiWithToken', 'checkbox', array('label' => "Protéger l'api publique pour récupérer les élément avec des jetons utilisateurs (i.e. besoin de créer un compte pour utiliser l'api publique)", 'required' => false))
->add('api.internalApiAuthorizedDomains', 'text', array('label' => "Liste des domaines externe qui utiliseront l'API interne. Mettez * si vous voulez que n'importe quel domaine puisse y avoir accès. Cette option est nécessaire si vous voulez afficher vos données avec GoGoCartoJs mais sur un autre serveur.", 'required' => false))
->add('api.publicApiPrivateProperties', 'choice', array("choices" => $apiProperties, 'label' => "Liste des champs que vous ne voulez pas partager dans l'api publique", 'required' => false, 'multiple' => true))
......
......@@ -36,7 +36,7 @@ class ConfigurationAdmin extends AbstractAdmin
$apiProperties = $dm->getRepository('BiopenGeoDirectoryBundle:Element')->findAllCustomProperties();
$formMapper
->with('Le site', array('class' => 'col-md-6'))
->with('Le site', array('class' => 'col-md-6', "description" => '<div class="iframe-container"><iframe height="190" sandbox="allow-same-origin allow-scripts" src="https://video.colibris-outilslibres.org/videos/embed/fc7d3784-7bd1-4f3a-b915-ab6daefdd52d" frameborder="0" allowfullscreen></iframe></div>'))
->add('appName', null, array('label' => 'Nom du site'))
->add('appBaseline', null, array('label' => 'Description du site (baseline)','required' => false))
->add('appTags', null, array('label' => 'Mot clés pour le référencement (séparés par une virgule)', 'required' => false))
......
......@@ -23,7 +23,9 @@ class ConfigurationFormAdmin extends AbstractAdmin
{
$formMapper
->tab('Formulaire')
->with('Configuration du formulaire', array('description' => "Choisissez ici quels champs constituent un élement de votre base de donnée.
->with('Configuration du formulaire', array('description' => "
<div class='iframe-container-aside'><iframe height='200' sandbox='allow-same-origin allow-scripts' src='https://video.colibris-outilslibres.org/videos/embed/2dd4dad3-63fa-4bb4-b48c-e518f8e56d36' frameborder='0' allowfullscreen></iframe></div>
Choisissez ici quels champs constituent un élement de votre base de donnée.
<li>Choisissez bien l'attribut <b>Nom (unique)</b>, avec une valeur compréhensible.</li>
<li>Certains champs sont obligatoires (categories, titre, adresse). </li>
<li>Le champ <b>Email principal</b> sera utilisé pour envoyer des emails à l'élément référencé, pour lui indiquer qu'il a bien été ajouté sur le site, qu'il a été supprimé etc.. C'est donc un champ conseillé si vous souhaitez mettre en place ce genre de communications.</li>"))
......
......@@ -27,23 +27,39 @@ class ConfigurationInfoBarAdmin extends AbstractAdmin
$apiProperties = $dm->getRepository('BiopenGeoDirectoryBundle:Element')->findAllCustomProperties();
$propertiesText = implode($apiProperties, ',');
$formMapper
->with("Contenu de la Fiche détail (panneau qui s'affiche lors d'un click sur un marker)",
["description" => "Vous pouvez utiliser <a href='https://guides.github.com/features/mastering-markdown/#syntax'>la syntaxe mardown</a> et <a href='https://mozilla.github.io/nunjucks/'>la syntaxe nunjucks (pour des utilisations avancée)</a>
<p>Pour afficher la valeur d'un champ de votre formulaire (voir liste des champs ci-arpès) utilisez une double accolades <b>{{ nom_de_mon_champ }}</b>. Vous pouvez également choisir de formatter votre champ avec un filtre en utilisant le symbole <b>|</b> suivi du nom du filtre. Par example, pour afficher un champ en majuscule on pourra faire <b>{{ nom_de_mon_champ|upper }}</b>. Des filtres spéciaux pour gogocarto ont été créés, ils permettent d'afficher simplement certains type de champ. Par example, pour un champ de description longue, on pourra utiliser <b>{{ nom_de_mon_champ_description_longue|gogo_textarea(truncate = 300) }}</b>. Cela coupera la description aux environs de 300 caractères et affichera un petit bouton pour afficher la description entière.<p>
<p>Consultez la liste des <a href='https://mozilla.github.io/nunjucks/templating.html#builtin-filters'>filtres nunjucks ici</a>. La liste des filtres de gogocarto n'est pas encore documentée</p>"])
->add('elementFormFieldsJson', 'hidden', array('attr' => ['class' => 'gogo-form-fields', 'dataproperties' => $propertiesText]))
->add('infobar.headerTemplateUseMarkdown', 'checkbox', array('label' => 'Utiliser la syntaxe markdown pour le header (sinon uniquement la syntaxe Nunjucks)', 'attr' => ['class' => 'use-markdown'], 'required' => false))
->add('infobar.headerTemplate', 'text', array('label' => 'En tête de la fiche (header)', 'attr' => ['class' => 'gogo-code-editor', 'format' => 'twig', 'height' => '200'], 'required' => false))
->add('infobar.bodyTemplateUseMarkdown', 'checkbox', array('label' => 'Utiliser la syntaxe markdown pour le body (sinon uniquement la syntaxe Nunjucks)', 'attr' => ['class' => 'use-markdown'], 'required' => false))
->add('infobar.bodyTemplate', 'text', array('label' => 'Corps de la fiche (body)', 'attr' => ['class' => 'gogo-code-editor', 'data-id' => 'body-template', 'format' => 'twig', 'height' => '500'], 'required' => false))
->add('infobar.width', 'number', array('label' => "Largeur de la fiche détail (en pixels, par défaut : 540)", 'required' => false))
$formMapper
->tab("Fiche détail")
->with("Contenu de la Fiche détail (panneau qui s'affiche lors d'un click sur un marker)",
["description" => "<div class='text-and-iframe-container'><div class='iframe-container-aside' style='margin-top: 0'><iframe height='200' sandbox='allow-same-origin allow-scripts' src='https://video.colibris-outilslibres.org/videos/embed/354086c4-e826-44ad-b44a-475e517c3af6' frameborder='0' allowfullscreen></iframe></div>
<p style='margin-top: 10px'>Vous pouvez utiliser <a href='https://guides.github.com/features/mastering-markdown/#syntax'>la syntaxe mardown</a> et <a href='https://mozilla.github.io/nunjucks/'>la syntaxe nunjucks (pour des utilisations avancée)</a></p>
<p>Pour afficher la valeur d'un champ de votre formulaire (voir liste des champs ci-arpès) utilisez une double accolades <b>{{ nom_de_mon_champ }}</b>. Vous pouvez également choisir de formatter votre champ avec un filtre en utilisant le symbole <b>|</b> suivi du nom du filtre. Par example, pour afficher un champ en majuscule on pourra faire <b>{{ nom_de_mon_champ|upper }}</b>. Des filtres spéciaux pour gogocarto ont été créés, ils permettent d'afficher simplement certains type de champ. Par example, pour un champ de description longue, on pourra utiliser <b>{{ nom_de_mon_champ_description_longue|gogo_textarea(truncate = 300) }}</b>. Cela coupera la description aux environs de 300 caractères et affichera un petit bouton pour afficher la description entière.<p>
<p>Consultez la liste des <a href='https://mozilla.github.io/nunjucks/templating.html#builtin-filters'>filtres nunjucks ici</a>. La liste des filtres de gogocarto n'est pas encore documentée</p></div>
<h2 style='margin: 0 0 25px 0'>
Contenu de la fiche détail
<span class='btn btn-primary' id='generate-body-template' onclick='generateBodyTemplate()'>Générer automatiquement le contenu de la fiche détail</span>
</h2>"])
->add('infobar.headerTemplateUseMarkdown', 'checkbox', array('label' => 'Utiliser la syntaxe markdown pour le header (sinon uniquement la syntaxe Nunjucks)', 'attr' => ['class' => 'use-markdown'], 'required' => false))
->add('infobar.headerTemplate', 'text', array('label' => 'En tête de la fiche (header)', 'attr' => ['class' => 'gogo-code-editor', 'format' => 'twig', 'height' => '200'], 'required' => false))
->add('infobar.bodyTemplateUseMarkdown', 'checkbox', array('label' => 'Utiliser la syntaxe markdown pour le body (sinon uniquement la syntaxe Nunjucks)', 'attr' => ['class' => 'use-markdown'], 'required' => false))
->add('infobar.bodyTemplate', 'text', array('label' => 'Corps de la fiche (body)', 'attr' => ['class' => 'gogo-code-editor', 'data-id' => 'body-template', 'format' => 'twig', 'height' => '500'], 'required' => false))
->end()
->end()
->tab('Liste des Champs disponibles (aide)')
->with('')
->add('elementFormFieldsJson', 'hidden', array('attr' => ['class' => 'gogo-form-fields', 'dataproperties' => $propertiesText]))
->end()
->end()
->tab('Autres paramètres')
->with('Paramètres')
->add('infobar.width', 'number', array('label' => "Largeur de la fiche détail (en pixels, par défaut : 540)", 'required' => false))
->end()
->with("Masquer l'email de contact en le remplacant par un bouton \"Envoyer un email\"",
["description" => "<i>Cela permet par exemple d'éviter que des personnes récupèrent tous les emails pour des fin commerciales</i>"])
->add('sendMailFeature','sonata_type_admin', $featureFormOption, ['edit' => 'inline'])
->end()
->end()
->with("Masquer l'email de contact en le remplacant par un bouton \"Envoyer un email\"",
["description" => "<i>Cela permet par exemple d'éviter que des personnes récupèrent tous les emails pour des fin commerciales</i>"])
->add('sendMailFeature','sonata_type_admin', $featureFormOption, ['edit' => 'inline'])
->end()
;
}
}
......@@ -33,7 +33,10 @@ class ConfigurationMailAdmin extends AbstractAdmin
$formMapper
->tab('Mails auto pour les ' . $config->getElementDisplayNamePlural())
->with("Informations concernant les mails automatiques", array('box_class' => 'box box-danger',
'description' => 'Ces mails sont envoyés automatiquement aux ' . $config->getElementDisplayNamePlural() . " lorsque leur fiche est ajoutée, modifiée ou supprimée.</br>
'description' => '
<div class="text-and-iframe-container">
<div class="iframe-container-aside"><iframe height="200" sandbox="allow-same-origin allow-scripts" src="https://video.colibris-outilslibres.org/videos/embed/d5d007ec-e5c6-4a50-ab66-572e35e8905a" frameborder="0" allowfullscreen></iframe></div>
Ces mails sont envoyés automatiquement aux ' . $config->getElementDisplayNamePlural() . " lorsque leur fiche est ajoutée, modifiée ou supprimée.</br>
Il est possible d'inclure les variables suivantes dans les messages (en conservant les '{{}}' ) : </br>
<li>{{ element }} le nom de " . $config->getElementDisplayNameDefinite() . "</li>
<li>{{ showUrl }} l'adresse qui renvoie à la visualisation de la fiche</li>
......@@ -41,6 +44,7 @@ class ConfigurationMailAdmin extends AbstractAdmin
<li>{{ homeUrl }} l'adresse de la page d'accueil du site</li>
<li>{{ directEditElementUniqueUrl }} l'adresse unique pour éditer directement l'élément sans être admin</li>
<li>{{ customMessage }} le message personnel qui a été rédigé par les admins (uniquement lors de la suppression)</li></br>
</div>
Vous pouvez également utiliser ces variables dans les contenus spéciaux de l'éditeur de texte. Par example dans le champs URL de la popup
qui s'ouvre lorsqu'on clique sur d'ajouter un lien.</br>
<b>Une fois le mail sauvegardé</b>, vous pouvez cliquer sur les boutons <b>TESTER</b> pour visualiser le rendu"))->end()
......
......@@ -47,5 +47,11 @@ class CoreController extends GoGoController
return $this->render('@BiopenCoreBundle/partners.html.twig', array('listPartners' => $listPartners));
}
}
public function helpAction()
{
return $this->render('@BiopenAdmin/pages/help.html.twig');
}
}
......@@ -24,4 +24,8 @@ biopen_user:
biopen_core_api:
resource: "@BiopenCoreBundle/Resources/config/routing-api.yml"
prefix: /api
\ No newline at end of file
prefix: /api
biopen_core_help:
path: /help
defaults: { _controller: BiopenCoreBundle:Core:help }
\ No newline at end of file
......@@ -6,32 +6,40 @@ use Sonata\AdminBundle\Admin\AbstractAdmin;
class ImportAbstractAdmin extends AbstractAdmin
{
protected function getInstructions()
protected function getInstructions($video_id)
{
$dm = $this->getConfigurationPool()->getContainer()->get('doctrine_mongodb');
$apiProperties = $dm->getRepository('BiopenGeoDirectoryBundle:Element')->findAllCustomProperties();
$propertiesText = count($apiProperties) > 0 ? implode($apiProperties, ', ') : "Aucun !";
$instructions = "Les colonnes/propriétés importantes sont les suivantes :
<ul>
<li><b>name</b> Le titre de la fiche</li>
<li><b>categories</b> la liste des catégories séparées par des virgules. Exple: Alimentation, Restaurant
<li><b>address</b> L'adresse de l'élément. Si vous disposez d'une adresse plus précise vous pouvez plutot utiliser les colonnes/propriétés suivantes : <b>streetAddress, addressLocality, postalCode, addressCountry</b></li>
<li><b>latitude</b> (Sinon, elle peut être calculée à partir de l'adresse)</li>
<li><b>longitude</b> (Sinon, elle peut être calculée à partir de l'adresse)</li>
$instructions = "
<div class='text-and-iframe-container'>
<div class='iframe-container-aside' style='margin-right: 40px'><iframe height='200' sandbox='allow-same-origin allow-scripts' src='https://video.colibris-outilslibres.org/videos/embed/" . $video_id . "' frameborder='0' allowfullscreen></iframe></div>
<p>
Les colonnes/propriétés importantes sont les suivantes :
<ul style='margin-left: 20px'>
<li><b>name</b> Le titre de la fiche</li>
<li><b>categories</b> la liste des catégories séparées par des virgules. Exple: Alimentation, Restaurant
<li><b>address</b> L'adresse de l'élément. Si vous disposez d'une adresse plus précise vous pouvez plutot utiliser les colonnes/propriétés suivantes : <b>streetAddress, addressLocality, postalCode, addressCountry</b></li>
<li><b>latitude</b> (Sinon, elle peut être calculée à partir de l'adresse)</li>
<li><b>longitude</b> (Sinon, elle peut être calculée à partir de l'adresse)</li>
</ul>
<p>D'autres colonnes/propriété intéressantes sont:</p>
</p>
</div>
<ul>
<li><b>id</b> L'id de cet élément dans son ancienne base de donnée. Permet notamment de ne pas re importé un même élément pour les import dynamiques</li>
<li><b>updatedAt</b> Date de la dernière mise à jour, permet de savoir lors d'un import dynamique si cet élément doit être mis à jour ou pas</li>
<li><b>source</b> Nom de la source des données. Si ce champ est vide (ce qui est le cas le plus courant) le nom de la source sera celui renseigné ci après. Mais il est pratique d'utiliser ce champ lorsque l'on importe des données venant de plusieurs sources via un seul fichier ou une seule API</li>
<li><b>email</b> L'email à utiliser pour contacter cet élément</li>
<li><b>owner</b> L'email du propriétaire de cet élément. Si un utilisateur avec le même email existe sur votre carte, alors il pourra éditer comme bon lui semble cet élement</li>
<li><b>images</b> Des urls vers des images, sous forme de tableau ou séparées par des virgules. Si le champ 'images' n'existe pas, toutes les colonnes/propriétés commançant par le mot 'image' seront utilisée (par example: image_logo, image, imageCouverture ...)</li>
</ul>
Vous pouvez ensuite avoir n'importe quelles autres colonnes/propriété, elles seront importées. Veillez à faire concorder le nom des colonnes avec le nom des champs de votre formulaire. </br>Noms des autres champs déjà présent dans vos données : <b>" . $propertiesText . "</b>";
<p>D'autres colonnes/propriété intéressantes sont:</p>
<ul>
<li><b>id</b> L'id de cet élément dans son ancienne base de donnée. Permet notamment de ne pas re importé un même élément pour les import dynamiques</li>
<li><b>updatedAt</b> Date de la dernière mise à jour, permet de savoir lors d'un import dynamique si cet élément doit être mis à jour ou pas</li>
<li><b>source</b> Nom de la source des données. Si ce champ est vide (ce qui est le cas le plus courant) le nom de la source sera celui renseigné ci après. Mais il est pratique d'utiliser ce champ lorsque l'on importe des données venant de plusieurs sources via un seul fichier ou une seule API</li>
<li><b>email</b> L'email à utiliser pour contacter cet élément</li>
<li><b>owner</b> L'email du propriétaire de cet élément. Si un utilisateur avec le même email existe sur votre carte, alors il pourra éditer comme bon lui semble cet élement</li>
<li><b>images</b> Des urls vers des images, sous forme de tableau ou séparées par des virgules. Si le champ 'images' n'existe pas, toutes les colonnes/propriétés commançant par le mot 'image' seront utilisée (par example: image_logo, image, imageCouverture ...)</li>
</ul>
Vous pouvez ensuite avoir n'importe quelles autres colonnes/propriété, elles seront importées. Veillez à faire concorder le nom des colonnes avec le nom des champs de votre formulaire. </br></br>
Noms des autres champs déjà présent dans vos données : <b>" . $propertiesText . "</b>";
return $instructions;
}
}
\ No newline at end of file
......@@ -13,7 +13,7 @@ class ImportAdmin extends ImportAbstractAdmin
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->with("Importer des données en dur, depuis un fichier CSV ou une API Json", ["description" => $this->getInstructions()])
->with("Importer des données en dur, depuis un fichier CSV ou une API Json")
->add('sourceName', 'text', array(
'required' => true,
'label' => 'Nom de la source des données'))
......@@ -35,6 +35,8 @@ class ImportAdmin extends ImportAbstractAdmin
'btn_add' => false,
'label' => 'Catégories à ajouter à chaque élément importé'), array('admin_code' => 'admin.option'))
->end()
->with('Aide', ["description" => $this->getInstructions('05a0895f-7b11-4a96-a98b-43fef68840a1')])
->end()
;
}
protected function configureRoutes(RouteCollection $collection)
......
......@@ -22,10 +22,8 @@ class ImportDynamicAdmin extends ImportAbstractAdmin
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->with("Import Dynamique, pour afficher des données gérées par quelqu'un d'autre", ['box_class' => 'box box-default', "description" => $this->getInstructions()])
->end()
->with('Configuration principale', ['class' => 'col-md-6'])
$formMapper
->with("Import Dynamique, pour afficher des données gérées par quelqu'un d'autre", ['class' => 'col-md-6'])
->add('sourceName', 'text', array('required' => true, 'label' => 'Nom de la source '))
->add('url', 'text', array('label' => "Url de l'api Json", 'required' => true))
->add('refreshFrequencyInDays', null, array('required' => false, 'label' => "Fréquence de mise à jours des données en jours (laisser vide pour ne jamais mettre à jour automatiquement"))
......@@ -44,6 +42,8 @@ class ImportDynamicAdmin extends ImportAbstractAdmin
->add('needToHaveOptionsOtherThanTheOnesAddedToEachElements', null, array('required' => false, 'label' => 'Les éléments importés doivent contenir au moins une catégorie en dehors de celles ajoutées manuellement ci-dessus', 'label_attr' => ['title' => "Sans prendre en compte les catégories ajoutés via le champs \"Catégories à ajouter à chaque élément importé\", si les éléments importés n'ont pas de catégories, ils seront marqués comme \"Modération aucune catégorie renseignée\""]))
->add('fieldToCheckElementHaveBeenUpdated', null, array('required' => false, 'label' => "Nom de l'attribut à comparer pour la mise à jour", 'label_attr' => ['title' => "Lorsqu'on met à jour une source, certains des éléments à importer existent déjà dans notre base de donnée. Vous pouvez renseigner ici un champs qui permettra de comparer si l'élément à été mis à jour au sein de la source depuis le dernier import. Exple de champ: updatedAt, date_maj etc... (laisser vide pour mettre à jour les éléments à chaque fois)"]))
->end()
->with("Aide", ['box_class' => 'box box-default', "description" => $this->getInstructions('13154fa0-13c2-41f1-a4ad-e04c35c86e89')])
->end()
->with('Historique', array('class' => 'col-sm-12'))
->add('logs', 'hidden', array('attr' => ['class' => 'gogo-display-logs'], 'mapped' => false))
->end();
......
......@@ -169,7 +169,8 @@ class ElementFormController extends GoGoController
// filling the form with the previous element created in case we want to recopy its informations (only for admins)
$elementForm = $this->get('form.factory')->create(ElementType::class, $element);
$isMinorModification = false;
$session->remove('elementWaitingForDuplicateCheck');
$session->remove('duplicatesElements');
}
......@@ -184,7 +185,7 @@ class ElementFormController extends GoGoController
}
else $needToCheckDuplicates = false;
// custom handling form (to creating OptionValues for example)
// custom handling form (creating OptionValues for example)
list($element, $isMinorModification) = $this->get("biopen.element_form_service")->handleFormSubmission($element, $request, $editMode, $userEmail, $isAllowedDirectModeration, $originalElement, $em);
if ($needToCheckDuplicates)
......
{% extends sonata_block.templates.block_base %}
{% block block %}
{% if errors|length %}
<div class="sonata-block-log-errors box box-danger">
<div class="box-header with-border">
......
......@@ -46,6 +46,10 @@
<div class="alert alert-default">
<h4>Quelques explications</h4>
<div style="float: left;margin-right: 30px;"><iframe height='200' sandbox='allow-same-origin allow-scripts' src='https://video.colibris-outilslibres.org/videos/embed/4a5b7593-aedb-4983-b562-3cab03bb1691' frameborder='0' allowfullscreen></iframe></div>
<div style=""><iframe height='200' sandbox='allow-same-origin allow-scripts' src='https://video.colibris-outilslibres.org/videos/embed/6ff39dd4-0db8-435b-a3bd-e87307e7e5d1' frameborder='0' allowfullscreen></iframe></div>
</br>
Les catégories sont toujours regroupées dans des <b>Groupe de catégories</b></br>
Pour ajouter des catégories à un Groupe, le plus simple est d'éditer le Groupe de catégories, et vous allez vous apparaitre en bas de page la liste des catégories contenues dans ce groupe. Vous pourrez alors les éditer et en ajouter de nouvelles</br></br>
......@@ -53,6 +57,7 @@
Une catégorie peut elle même contenir un sous groupe avec des sous catégories à l'intérieur. Lorsque vous éditer une catégorie, en bas de la page vous pouvez y ajouter un sous groupe puis le remplir avec de nouvelles catégories.</br></br>
<b>(Groupe) GROUPE DE CATEGORIES 1</b>
<ul>
<li>Catégorie 3</li>
......
......@@ -3,8 +3,8 @@
{% block page_title %}Action de masse{% endblock %}
{% block page_content %}
<div>
<iframe height="190" sandbox="allow-same-origin allow-scripts" src="https://video.colibris-outilslibres.org/videos/embed/b3367cfb-445d-441c-b368-15038890897a" frameborder="0" allowfullscreen></iframe>
<div>
<a class="btn btn-primary" href={{ path('biopen_bulk_actions_detect_duplicates') }}>Détecter les doublons</a>
<a class="btn btn-primary" href={{ path('biopen_duplicates_index') }}>Gérer les doublons détectés</a>
</div>
......
{% extends '@BiopenAdmin/pages/page_layout.html.twig' %}
{% block page_title %}Aide{% endblock %}
{% block page_content %}
<p>
Retrouvez tous les tutoriels vidéo sur <a href="https://video.colibris-outilslibres.org/accounts/gogocarto/videos" target="_blank">notre page peertube</a>
</p>
<p>
Si vous avez toujours des questions, venez trouver de l'aide sur <a href="https://chat.lescommuns.org/channel/gogocarto" target="_blank">notre chat, channel #gogocarto</a>
</p>
{% endblock %}
{# put this hidden input otherwise the elementFomFieldJson is overwritten with blank string #}
<input type="hidden" id="{{ form.vars.id }}" name="{{ form.vars.full_name }}" value="{{ form.vars.value }}" />
<h3>Liste des champs disponibles via le formulaire</h3>
<h3 style="margin-top: -30px">Liste des champs disponibles via le formulaire</h3>
{% set fields = value|json_decode %}
{% set filterFromType = {
......@@ -134,11 +134,6 @@
</table>
{% endif %}
<h2 style="margin: 25px 0">
Contenu de la fiche détail
<span class="btn btn-primary" id="generate-body-template" onclick="generateBodyTemplate()">Générer automatiquement le contenu de la fiche détail</span>
</h2>
<style>
td, th {
padding: 5px;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment