Un sistema de comentarios super sencillo con marcaje
El Comité recomienda al Estado Parte que adopte todas las medidas necesarias para garantizar la igualdad entre los géneros y el empoderamiento de la mujer.
He estado buscando un sistema de comentarios sencillo para mi blog que utiliza Markdown. no pude' encontrar uno que me gusteM SK3 así que he decidido escribir mi propioMSC4 Este es un sistema simple de comentarios que usa Markdown para la elaboración de formatos . La segunda parte de esto añadirá notificaciones por correo electrónico al sistema que me enviará un correo electrónico con un enlace al comentarioMST6 permitiendome Mst7approveM st8 él antes de que sea mostrado en el sitioMt9
Una vez más, para un sistema de producción esto normalmente utilizaría una base de datos, pero para este ejemplo I' sólo voy a usar la marcadownM SK2
El Comité recomienda al Estado Parte que incluya en su próximo informe periódico datos estadísticos desglosados por sexo, edad y origen étnico.
El sistema de comentarios es increíblemente simple. Solo tengo un fichero de marcación que se guarda para cada comentario con el usuario' su nombre , correo electrónico y comentarioM SK3 Los comentarios se muestran entonces en la página en la orden en que fueron recibidosMSC4
Para introducir el comentario uso SimpleMDE, un editor de Markdown basado en Javascript. Esto está incluido en mi _El Presidente (habla en inglés): De conformidad con el entendimiento alcanzado en las consultas previas del Consejo, consideraré que la Asamblea General desea concluir su examen de este tema del programa.
<!-- Include the SimpleMDE CSS, here I use a dark theme -->
<link rel="stylesheet" href="https://cdn.rawgit.com/xcatliu/simplemde-theme-dark/master/dist/simplemde-theme-dark.min.css">
<!--Later in the page include the JS for SimpleMDE -->
<script src="https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.js"></script>
Luego inicie el editor SimpleMDE tanto en carga de página como en carga HTMX:
var simplemde;
document.addEventListener('DOMContentLoaded', function () {
if (document.getElementById("comment") != null)
{
simplemde = new SimpleMDE({ element: document.getElementById("comment") });
}
});
document.body.addEventListener('htmx:afterSwap', function(evt) {
if (document.getElementById("comment") != null)
{
simplemde = new SimpleMDE({ element: document.getElementById("comment") });
}
});
Aquí he especificado que mi área de texto de comentarios se llama 'comment' y sólo inicializa una vez que se detecteM SK2s detectedMSC3 Aquí envuelto el formulario en un 'IsAuthenticatedMNK5 (que paso al ViewModelMMK7 Esto significa que puedo asegurarme de que solo aquellos que han entrado en (en la actualidad con GoogleMRK9 pueden añadir comentariosMسک10
@if (Model.Authenticated)
{
<div class=" max-w-none border-b border-grey-lighter py-8 dark:prose-dark sm:py-12">
<p class="font-body text-lg font-medium text-primary dark:text-white">Welcome @Model.Name please comment below.</p>
<textarea id="comment"></textarea>
<button class="btn btn-primary" hx-action="Comment" hx-controller="Blog" hx-post hx-vals="js:{comment: simplemde.value()}" hx-route-slug="@Model.Slug" hx-swap="outerHTML" hx-target="#comment" onclick="prepareForSubmission()">Comment</button>
</div>
}
else
{
...
}
Usted' también tendrán en cuenta que uso HTMX aquí para la publicación de comentarios. En donde uso el atributo hxM SK2vals y un llamamiento JS para obtener el valor del comentario . Esto es entonces publicado al controlador de Blog con el MSC4CommentMST5 acciónMst6 Esto después es sustituido por el nuevo comentarioM st7
[HttpPost]
[Route("comment")]
[Authorize]
public async Task<IActionResult> Comment(string slug, string comment)
{
var principal = HttpContext.User;
principal.Claims.ToList().ForEach(c => logger.LogInformation($"{c.Type} : {c.Value}"));
var nameIdentifier = principal.FindFirst("sub");
var userInformation = GetUserInfo();
await commentService.AddComment(slug, userInformation, comment, nameIdentifier.Value);
return RedirectToAction(nameof(Show), new { slug });
}