CatherineLynwood/CatherineLynwood/TagHelpers/SocialMediaShareTagHelper.cs
2025-06-30 22:00:07 +01:00

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