Mercurial Hosting > linkmystyle
diff src/lib/main_html.luan @ 0:8f4df159f06b
start public repo
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 11 Jul 2025 20:57:49 -0600 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/lib/main_html.luan Fri Jul 11 20:57:49 2025 -0600 @@ -0,0 +1,145 @@ +local Luan = require "luan:Luan.luan" +local error = Luan.error +local ipairs = Luan.ipairs or error() +local String = require "luan:String.luan" +local contains = String.contains or error() +local Parsers = require "luan:Parsers.luan" +local json_string = Parsers.json_string or error() +local Html = require "luan:Html.luan" +local html_encode = Html.encode or error() +local Thread = require "luan:Thread.luan" +local thread_run = Thread.run or error() +local Io = require "luan:Io.luan" +local Http = require "luan:http/Http.luan" +local Shared = require "site:/lib/Shared.luan" +local pub_head = Shared.pub_head or error() +local show_saved = Shared.show_saved or error() +local call_mixpanel = Shared.call_mixpanel or error() +local get_hashtags_list = Shared.get_hashtags_list or error() +local has_facebook = not not Shared.has_facebook +local User = require "site:/lib/User.luan" +local Link = require "site:/lib/Link.luan" +local get_owner_links = Link.get_owner_links or error() +local Pic = require "site:/lib/Pic.luan" +local get_user_pics = Pic.get_user_pics or error() +local Icon = require "site:/lib/Icon.luan" +local get_user_icons = Icon.get_user_icons or error() +local Facebook = require "site:/lib/Facebook.luan" +local fb_track_visit = Facebook.track_visit or error() +local Reporting = require "site:/lib/Reporting.luan" +local maybe_track_visit = Reporting.maybe_track_visit or error() +local should_track_visit = Reporting.should_track_visit or error() +local Logging = require "luan:logging/Logging.luan" +local logger = Logging.logger "main_html" + + +local function ad_tracking(user) + local referrer = Http.request.headers.referer + if referrer ~= nil and not contains(referrer,"linkmy.style") and maybe_track_visit(user) then + thread_run( function() + if should_track_visit(user) then + call_mixpanel{ + event = "Visit" + properties = { + distinct_id = user.email + } + } + if has_facebook then + fb_track_visit(user) + end + end + end ) + end +end + +return function(user) + ad_tracking(user) + local user_id = user.id + local links = get_owner_links(user_id) + local pics = get_user_pics(user_id) + local icons = get_user_icons(user_id) + local title = user.html_title() + local pic_url = user.get_pic_url() + local bio = user.bio + local is_saved = Http.request.parameters.saved ~= nil + local saved = is_saved and "&saved" or "" + local hashtags_list, hashtags_set = get_hashtags_list(pics) + Http.response.headers["Content-Type"] = "text/html; charset=utf-8" + Io.stdout = Http.response.text_writer() +%> +<!doctype html> +<html main> + <head> + <title>Link My Style | <%=title%></title> + <style hashtag></style> + <script> + 'use strict'; + + window.Path = 'main'; + window.Page = 'Home'; + + let hashtags = <%=json_string(hashtags_set)%>; + </script> +<% pub_head(user) %> + <script> + fbTrack('trackCustom', 'View', {owner:'<%=user.name%>'}); + </script> + </head> + <body colored onload="mainInit()"> +<% if is_saved then + show_saved("/"..user.name) + end %> + <div pub_background_img></div> + <div pub_content> + <div home><a href="/?source=organic"> + <span lms>LinkMyStyle</span> + <br><span small>Increase Affiliate Sales</span> + </a></div> +<% if pic_url ~= nil then %> + <img user src="<%=pic_url%>"> +<% end %> + <h1><%=title%></h1> +<% if bio ~= nil then %> + <div bio><%=html_encode(bio)%></div> +<% end + if #icons > 0 then %> + <div icons> +<% for _, icon in ipairs(icons) do %> + <a <%=icon.title_attr()%> href="<%=html_encode(icon.url)%>"><img src="/images/icons/<%=icon.name%>.svg"></a> +<% end %> + </div> +<% end %> + <div links> +<% for _, link in ipairs(links) do %> + <a link href="<%=html_encode(link.url)%>"><%=html_encode(link.title)%></a> +<% end %> + </div> +<% if #hashtags_list > 0 then %> + <div hashtags> + <span select> + <select onchange="mainSelectHashtag(value)"> + <option value="">All Photos</option> +<% for _, hashtag in ipairs(hashtags_list) do %> + <option value="<%=hashtag%>">#<%=hashtag%></option> +<% end %> + </select> + </span> + </div> +<% end %> + <div pics> +<% for _, pic in ipairs(pics) do + if pic.is_hidden then + continue + end + local pic_id = pic.id +%> + <span id="p-<%=pic_id%>" <%= pic.class or "" %> > + <a <%=pic.title_attr()%> href="/pic.html?pic=<%=pic_id%><%=saved%>"><img loading=lazy src="<%=pic.get_thumb_url()%>"></a> + </span> +<% end %> + </div> + </div> + </body> +</html> +<% +end