Browse Source

Fixed formatting of blog/vault editors.

Fixed paste output not working correctly in <pre><code>
tags/3.0.0^2
Teknikode 1 year ago
parent
commit
b674590b8c

+ 10
- 6
Teknik/Areas/Blog/Views/Blog/EditPost.cshtml View File

@@ -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">

+ 10
- 6
Teknik/Areas/Blog/Views/Blog/NewPost.cshtml View File

@@ -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">

+ 8
- 13
Teknik/Areas/Paste/Controllers/PasteController.cs View File

@@ -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
};


+ 1
- 1
Teknik/Areas/Paste/Views/Paste/Full.cshtml View File

@@ -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>

+ 11
- 1
Teknik/Areas/Paste/Views/Paste/PasswordNeeded.cshtml View File

@@ -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">&times;</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">

+ 1
- 1
Teknik/Areas/Paste/Views/Paste/Simple.cshtml View File

@@ -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>

+ 6
- 4
Teknik/Areas/Vault/Views/Vault/ModifyVault.cshtml View File

@@ -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">

+ 1
- 1
Teknik/Areas/Vault/Views/Vault/PasteItem.cshtml View File

@@ -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">

+ 4
- 4
Teknik/Routes.cs View File

@@ -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
- 0
Utilities/HtmlHelper.cs View 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);
}
}
}

+ 0
- 12
Utilities/MarkdownHelper.cs View File

@@ -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…
Cancel
Save