52 lines
3.1 KiB
C#
52 lines
3.1 KiB
C#
using Microsoft.AspNetCore.Razor.TagHelpers;
|
|
|
|
namespace CatherineLynwood.TagHelpers
|
|
{
|
|
[HtmlTargetElement("social-media-share")]
|
|
public class SocialMediaShareTagHelper : TagHelper
|
|
{
|
|
public string Url { get; set; }
|
|
public string Title { get; set; }
|
|
public string Class { get; set; }
|
|
|
|
public override void Process(TagHelperContext context, TagHelperOutput output)
|
|
{
|
|
var encodedUrl = $"https://www.catherinelynwood.com{Url}";
|
|
var encodedTitle = Title ?? "Check this out!";
|
|
|
|
var facebookUrl = $"https://www.facebook.com/sharer/sharer.php?u={encodedUrl}";
|
|
var twitterUrl = $"https://twitter.com/intent/tweet?url={encodedUrl}&text={encodedTitle}";
|
|
var linkedinUrl = $"https://www.linkedin.com/sharing/share-offsite/?url={encodedUrl}";
|
|
var pinterestUrl = $"https://pinterest.com/pin/create/button/?url={encodedUrl}&description={encodedTitle}";
|
|
|
|
var shareHtml = $@"
|
|
<div>
|
|
<p>Enjoyed this page? Share it:</p>
|
|
<a href='{facebookUrl}' target='_blank' rel='noopener' class='share-button facebook' aria-label='Facebook share'><i class='fab fa-facebook-square'></i></a>
|
|
<a href='{twitterUrl}' target='_blank' rel='noopener' class='share-button twitter' aria-label='X share'><i class='fab fa-twitter'></i></a>
|
|
<a href='{linkedinUrl}' target='_blank' rel='noopener' class='share-button linkedin' aria-label='LinkedIn share'><i class='fab fa-linkedin'></i></a>
|
|
<a href='{pinterestUrl}' target='_blank' rel='noopener' class='share-button pinterest' aria-label='Pintesest share'><i class='fab fa-pinterest-square'></i></a>
|
|
</div>";
|
|
|
|
var followHtml = @"
|
|
<div class='mt-3'>
|
|
<small>Want to follow Catherine Lynwood?</small><br/>
|
|
<div class='p-2'>
|
|
<a href='https://www.facebook.com/CatherineLynwoodAuthor' target='_blank' rel='noopener' class='follow-icon' aria-label='Follow on Facebook'><i class='fab fa-facebook'></i></a>
|
|
<a href='https://twitter.com/@cathlynwood' target='_blank' rel='noopener' class='follow-icon' aria-label='Follow on X'><i class='fab fa-twitter'></i></a>
|
|
<a href='https://www.linkedin.com/in/catherine-lynwood-73978433a' target='_blank' rel='noopener' class='follow-icon' aria-label='Follow on LinkedIn'><i class='fab fa-linkedin'></i></a>
|
|
<a href='https://www.tiktok.com/@catherinelynwood' target='_blank' rel='noopener' class='follow-icon' aria-label='Follow on TikTok'><i class='fab fa-tiktok'></i></a>
|
|
</div>
|
|
</div>";
|
|
|
|
output.TagName = "div";
|
|
output.TagMode = TagMode.StartTagAndEndTag;
|
|
|
|
var cssClass = string.IsNullOrEmpty(Class) ? "social-media-share" : $"social-media-share {Class}";
|
|
output.Attributes.SetAttribute("class", cssClass);
|
|
|
|
output.Content.SetHtmlContent(shareHtml + followHtml);
|
|
}
|
|
}
|
|
}
|