mirror of
https://git.teknik.io/Teknikode/Teknik.git
synced 2023-08-02 14:16:22 +02:00
Fixed formatting of blog/vault editors.
Fixed paste output not working correctly in <pre><code>
This commit is contained in:
parent
f356e35b03
commit
b674590b8c
@ -25,21 +25,23 @@
|
||||
<!form class="form" action="@Url.SubRouteUrl("blog", "Blog.Action", new { action = "EditPost" })" method="post" id="newPost">
|
||||
<input name="PostID" id="postID" type="hidden" value="@Model.PostId" />
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="col-sm-10 col-sm-offset-1">
|
||||
<label for="title"><h4>Title</h4></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="col-sm-5 col-sm-offset-1">
|
||||
<input class="form-control" name="Title" id="title" placeholder="generic click bait" title="enter a title for your post." type="text" value="@Model.Title" />
|
||||
</div>
|
||||
<div class="col-sm-1 col-sm-offset-1 pull-right">
|
||||
<button type="submit" class="btn btn-primary" id="submit">Save</button>
|
||||
<div class="col-sm-5">
|
||||
<button type="submit" class="btn btn-primary pull-right" id="submit">Save</button>
|
||||
</div>
|
||||
<div class="col-sm-1">
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="col-sm-10 col-sm-offset-1">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Article</div>
|
||||
<div class="panel-body">
|
||||
@ -48,7 +50,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-10 col-sm-offset-1">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Preview</div>
|
||||
<div class="panel-body">
|
||||
|
@ -25,21 +25,23 @@
|
||||
<!form class="form" action="@Url.SubRouteUrl("blog", "Blog.Action", new { action = "CreatePost" })" method="post" id="newPost">
|
||||
<input name="BlogID" id="blogID" type="hidden" value="@Model.BlogId" />
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="col-sm-10 col-sm-offset-1">
|
||||
<label for="title"><h4>Title</h4></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="col-sm-5 col-sm-offset-1">
|
||||
<input class="form-control" name="Title" id="title" placeholder="generic click bait" title="enter a title for your post." type="text" />
|
||||
</div>
|
||||
<div class="col-sm-1 col-sm-offset-1 pull-right">
|
||||
<button type="submit" class="btn btn-primary" id="submit">Create Post</button>
|
||||
<div class="col-sm-5">
|
||||
<button type="submit" class="btn btn-primary pull-right" id="submit">Create Post</button>
|
||||
</div>
|
||||
<div class="col-sm-1">
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="col-sm-10 col-sm-offset-1">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Article</div>
|
||||
<div class="panel-body">
|
||||
@ -48,7 +50,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-10 col-sm-offset-1">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Preview</div>
|
||||
<div class="panel-body">
|
||||
|
@ -98,6 +98,13 @@ namespace Teknik.Areas.Paste.Controllers
|
||||
PasswordViewModel passModel = new PasswordViewModel();
|
||||
passModel.Url = url;
|
||||
passModel.Type = type;
|
||||
|
||||
if (!string.IsNullOrEmpty(password) && hash != paste.HashedPassword)
|
||||
{
|
||||
passModel.Error = true;
|
||||
passModel.ErrorMessage = "Invalid Password";
|
||||
}
|
||||
|
||||
// Redirect them to the password request page
|
||||
return View("~/Areas/Paste/Views/Paste/PasswordNeeded.cshtml", passModel);
|
||||
}
|
||||
@ -110,18 +117,6 @@ namespace Teknik.Areas.Paste.Controllers
|
||||
model.Content = Encoding.Unicode.GetString(data);
|
||||
}
|
||||
|
||||
if (type.ToLower() == "full" || type.ToLower() == "simple")
|
||||
{
|
||||
// Transform content into HTML
|
||||
//if (!Highlighter.Lexers.ToList().Exists(l => l.Aliases.Contains(model.Syntax)))
|
||||
//{
|
||||
// model.Syntax = "text";
|
||||
//}
|
||||
//Highlighter highlighter = new Highlighter();
|
||||
// Add a space in front of the content due to bug with pygment (No idea why yet)
|
||||
model.Content = model.Content;//highlighter.HighlightToHtml(" " + model.Content, model.Syntax, _config.PasteConfig.SyntaxVisualStyle, generateInlineStyles: true, fragment: true);
|
||||
}
|
||||
|
||||
switch (type.ToLower())
|
||||
{
|
||||
case "full":
|
||||
@ -134,7 +129,7 @@ namespace Teknik.Areas.Paste.Controllers
|
||||
//Create File
|
||||
var cd = new System.Net.Mime.ContentDisposition
|
||||
{
|
||||
FileName = url,
|
||||
FileName = url + ".txt",
|
||||
Inline = true
|
||||
};
|
||||
|
||||
|
@ -68,7 +68,7 @@
|
||||
<br />
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<pre><code id="code">@Html.Raw(Model.Content)</code></pre>
|
||||
<pre><code id="code">@Model.Content</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,10 +1,20 @@
|
||||
@model Teknik.Areas.Paste.ViewModels.PasswordViewModel
|
||||
|
||||
<div class="container">
|
||||
@if (Model.Error)
|
||||
{
|
||||
<div class="row">
|
||||
<div class="col-xs-12 text-center">
|
||||
<div class="alert alert-danger alert-dismissable">
|
||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>@Model.ErrorMessage
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="row text-center">
|
||||
<div class="col-sm-6 col-sm-offset-3">
|
||||
<!form class="form-inline" method="post" action="@Url.SubRouteUrl("paste", "Paste.View")">
|
||||
<h3><span class="glyphicon glyphicon-warning-sign"></span> This paste is password protected.</h3>
|
||||
<h3>This paste is password protected</h3>
|
||||
<input type="hidden" name="type" value="@Model.Type">
|
||||
<input type="hidden" name="url" value="@Model.Url">
|
||||
<div class="well no-padding">
|
||||
|
@ -48,7 +48,7 @@
|
||||
var highlightSrc = '@Url.FullURL("~/js/highlight.min.js")';
|
||||
</script>
|
||||
|
||||
<pre><code id="code">@Html.Raw(Model.Content)</code></pre>
|
||||
<pre><code id="code">@Model.Content</code></pre>
|
||||
|
||||
<bundle src="js/common.min.js" append-version="true"></bundle>
|
||||
<bundle src="js/paste.view.min.js" append-version="true"></bundle>
|
||||
|
@ -127,22 +127,24 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-10">
|
||||
<div class="row">
|
||||
<div class="form-group col-sm-12">
|
||||
<div class="form-group col-sm-10 col-sm-offset-1">
|
||||
<label for="title"><h4>Title</h4></label>
|
||||
<input class="form-control" name="title" id="title" placeholder="Collection of items" title="enter a title for your vault." type="text" value="@Model.title" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="col-sm-10 col-sm-offset-1">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Description</div>
|
||||
<div class="panel-body">
|
||||
<div class="mdd_toolbar"></div>
|
||||
<textarea class="form-control mdd_editor" name="description" id="description" placeholder="This is a cool collection of uploads and pastes" title="enter the description for this vault" data-provide="markdown" rows="5">@Model.description</textarea>
|
||||
<textarea class="form-control mdd_editor" name="description" id="description" placeholder="This is a cool collection of uploads and pastes" title="enter the description for this vault" data-provide="markdown" rows="15">@Model.description</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-10 col-sm-offset-1">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Preview</div>
|
||||
<div class="panel-body">
|
||||
|
@ -54,7 +54,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
<pre><code id="code_@(Model.Paste.PasteId)">@Html.Raw(Model.Paste.Content)</code></pre>
|
||||
<pre><code id="code_@(Model.Paste.PasteId)">@Model.Paste.Content</code></pre>
|
||||
}
|
||||
</div>
|
||||
<div class="show-more" id="show-more-bottom-@Model.VaultItemId">
|
||||
|
@ -400,21 +400,21 @@ namespace Teknik
|
||||
name: "Paste.Simple",
|
||||
domains: new List<string>() { config.Host },
|
||||
subDomains: new List<string>() { "paste", "p" },
|
||||
template: "Simple/{url}",
|
||||
template: "Simple/{url}/{password?}",
|
||||
defaults: new { area = "Paste", controller = "Paste", action = "ViewPaste", type = "Simple" }
|
||||
);
|
||||
routes.MapSubdomainRoute(
|
||||
name: "Paste.Raw",
|
||||
domains: new List<string>() { config.Host },
|
||||
subDomains: new List<string>() { "paste", "p" },
|
||||
template: "Raw/{url}",
|
||||
template: "Raw/{url}/{password?}",
|
||||
defaults: new { area = "Paste", controller = "Paste", action = "ViewPaste", type = "Raw" }
|
||||
);
|
||||
routes.MapSubdomainRoute(
|
||||
name: "Paste.Download",
|
||||
domains: new List<string>() { config.Host },
|
||||
subDomains: new List<string>() { "paste", "p" },
|
||||
template: "Download/{url}",
|
||||
template: "Download/{url}/{password?}",
|
||||
defaults: new { area = "Paste", controller = "Paste", action = "ViewPaste", type = "Download" }
|
||||
);
|
||||
routes.MapSubdomainRoute(
|
||||
@ -428,7 +428,7 @@ namespace Teknik
|
||||
name: "Paste.View",
|
||||
domains: new List<string>() { config.Host },
|
||||
subDomains: new List<string>() { "paste", "p" },
|
||||
template: "{url}",
|
||||
template: "{url}/{password?}",
|
||||
defaults: new { area = "Paste", controller = "Paste", action = "ViewPaste", type = "Full" }
|
||||
);
|
||||
}
|
||||
|
40
Utilities/HtmlHelper.cs
Normal file
40
Utilities/HtmlHelper.cs
Normal file
@ -0,0 +1,40 @@
|
||||
using Ganss.XSS;
|
||||
using Microsoft.AspNetCore.Html;
|
||||
using Microsoft.AspNetCore.Mvc.Rendering;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Teknik.Utilities
|
||||
{
|
||||
public static class HtmlHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// Transforms a string of Markdown into HTML.
|
||||
/// </summary>
|
||||
/// <param name="helper">HtmlHelper - Not used, but required to make this an extension method.</param>
|
||||
/// <param name="text">The Markdown that should be transformed.</param>
|
||||
/// <returns>The HTML representation of the supplied Markdown.</returns>
|
||||
public static HtmlString Markdown(this IHtmlHelper helper, string text)
|
||||
{
|
||||
// Just call the other one, to avoid having two copies (we don't use the HtmlHelper).
|
||||
return MarkdownHelper.Markdown(text);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sanitizes a string from HTML.
|
||||
/// </summary>
|
||||
/// <param name="helper">HtmlHelper - Not used, but required to make this an extension method.</param>
|
||||
/// <param name="text">The Markdown that should be transformed.</param>
|
||||
/// <returns>The HTML representation of the supplied Markdown.</returns>
|
||||
public static HtmlString Sanitize(this IHtmlHelper helper, string text)
|
||||
{
|
||||
// Sanitize Text
|
||||
var sanitizer = new HtmlSanitizer();
|
||||
var sanText = sanitizer.Sanitize(text);
|
||||
|
||||
// Wrap the html in an MvcHtmlString otherwise it'll be HtmlEncoded and displayed to the user as HTML :(
|
||||
return new HtmlString(sanText);
|
||||
}
|
||||
}
|
||||
}
|
@ -29,18 +29,6 @@ namespace Teknik.Utilities
|
||||
return new HtmlString(html);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Transforms a string of Markdown into HTML.
|
||||
/// </summary>
|
||||
/// <param name="helper">HtmlHelper - Not used, but required to make this an extension method.</param>
|
||||
/// <param name="text">The Markdown that should be transformed.</param>
|
||||
/// <returns>The HTML representation of the supplied Markdown.</returns>
|
||||
public static HtmlString Markdown(this IHtmlHelper helper, string text)
|
||||
{
|
||||
// Just call the other one, to avoid having two copies (we don't use the HtmlHelper).
|
||||
return Markdown(text);
|
||||
}
|
||||
|
||||
public static MarkdownPipeline BuildPipeline()
|
||||
{
|
||||
return new MarkdownPipelineBuilder() // Use similar to advanced extension without auto-identifier
|
||||
|
Loading…
Reference in New Issue
Block a user