Browse Source

#4 New copy/paste panels on edit view

Jérémie Libeau 7 years ago
parent
commit
1b8ce8c0d6

+ 22 - 2
app/Resources/views/reference/edit.html.twig

@@ -3,7 +3,7 @@
 {% block body %}
 {% block body %}
     <div class="row">
     <div class="row">
         <div class="col-md-6">
         <div class="col-md-6">
-            {#{{ form(form) }}#}
+            <h3>Édition de la référence <span class="text-info"><em>{{ reference.id }}</em></span></h3>
             {{ form_start(form) }}
             {{ form_start(form) }}
             {{ form_widget(form) }}
             {{ form_widget(form) }}
             <div class="form-group">
             <div class="form-group">
@@ -19,6 +19,26 @@
             </div>
             </div>
             {{ form_end(form) }}
             {{ form_end(form) }}
         </div>
         </div>
+        <div class="col-md-6">
+            <h3>Html</h3>
+            <p><a href="{{ url('show', {'id': reference.id, '_format': 'html'}) }}">{{ url('show', {'id': reference.id, '_format': 'html'}) }}</a></p>
+            <pre>{{ render(controller('AppBundle:Reference:show', {'id': reference.id}))|escape('html') }}</pre>
+            <p>{{ render(controller('AppBundle:Reference:show', {'id': reference.id})) }}</p>
+        </div>
+        <div class="col-md-6">
+            <h3>YAML</h3>
+            <p><a href="{{ url('show', {'id': reference.id, '_format': 'yaml'}) }}">{{ url('show', {'id': reference.id, '_format': 'yaml'}) }}</a></p>
+            <pre>{{ render(controller('AppBundle:Reference:show', {'id': reference.id, '_format': 'yaml'})) }}</pre>
+        </div>
+        <div class="col-md-6">
+            <h3>Pandoc/Markdown</h3>
+            <p>Pour citer cette référence dans un document pandoc/markdown, insérer :
+            <pre>@cedhEkinRecevab</pre>
+            ou par exemple
+            <pre>@cedhEkinRecevab, point 5.</pre>
+            Pour plus d'infos, voir <a href="http://pandoc.org/MANUAL.html#citations">http://pandoc.org/MANUAL.html#citations</a>
+            </p>
+        </div>
 
 
         <div class="col-md-12">
         <div class="col-md-12">
             <a href="{{ path('list') }}" class="btn btn-default">Retour</a>
             <a href="{{ path('list') }}" class="btn btn-default">Retour</a>
@@ -32,7 +52,7 @@
             e.preventDefault();
             e.preventDefault();
 
 
             var id = $(this).data('id');
             var id = $(this).data('id');
-            if (window.confirm("Êtes vous sur de vouloir supprimer référence '"+id+"' ?")) {
+            if (window.confirm("Êtes vous sur de vouloir supprimer référence '" + id + "' ?")) {
                 $.ajax('{{ path('delete', {'id': reference.id}) }}', {
                 $.ajax('{{ path('delete', {'id': reference.id}) }}', {
                     method: 'DELETE'
                     method: 'DELETE'
                 }).done(function (response) {
                 }).done(function (response) {

+ 2 - 0
app/Resources/views/reference/show.html.twig

@@ -0,0 +1,2 @@
+{{ reference.authority }}, {% if reference.section %}{{ reference.section }}, {% endif %}{{ reference.issued|localizeddate('medium', 'none') }},
+<em>{{ reference.title }}</em>, {% if reference.URL %}<a  href="{{ reference.URL }}">{{ reference.number }}</a>{% else %}{{ reference.number }}{% endif %}

+ 28 - 1
src/AppBundle/Controller/ReferenceController.php

@@ -56,9 +56,36 @@ class ReferenceController extends Controller
     /**
     /**
      * @Route("/{id}.{_format}", name="show", defaults={"_format": "html"}, requirements={"format": "html|yml|yaml|md"})
      * @Route("/{id}.{_format}", name="show", defaults={"_format": "html"}, requirements={"format": "html|yml|yaml|md"})
      */
      */
-    public function showAction(Request $request)
+    public function showAction(Request $request, $id)
     {
     {
+        $referenceManager = $this->get('doctrine.orm.entity_manager')
+            ->getRepository('AppBundle:Reference');
+        $reference = $referenceManager->find($id);
+
+        if (!$reference) {
+            throw $this->createNotFoundException();
+        }
+
+        $format = $request->get("_format");
+        switch ($format) {
+            case 'yml':
+            case 'yaml':
+                $yaml = $referenceManager->serialize([$reference], 'yaml');
 
 
+                return new Response(
+                    $yaml,
+                    Response::HTTP_OK,
+                    ['Content-Type' => 'application/yaml']
+                );
+                break;
+            default:
+                return $this->render(
+                    ':reference:show.html.twig',
+                    [
+                        'reference' => $reference,
+                    ]
+                );
+        }
     }
     }
 
 
     /**
     /**

+ 5 - 0
src/AppBundle/Entity/ReferenceManger.php

@@ -84,4 +84,9 @@ class ReferenceManger extends EntityRepository
 
 
         return $this->serializer->serialize($references, 'yaml');
         return $this->serializer->serialize($references, 'yaml');
     }
     }
+
+    public function serialize($data, $format)
+    {
+        return $this->serializer->serialize($data, $format);
+    }
 }
 }