comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:8f4df159f06b
1 local Luan = require "luan:Luan.luan"
2 local error = Luan.error
3 local ipairs = Luan.ipairs or error()
4 local String = require "luan:String.luan"
5 local contains = String.contains or error()
6 local Parsers = require "luan:Parsers.luan"
7 local json_string = Parsers.json_string or error()
8 local Html = require "luan:Html.luan"
9 local html_encode = Html.encode or error()
10 local Thread = require "luan:Thread.luan"
11 local thread_run = Thread.run or error()
12 local Io = require "luan:Io.luan"
13 local Http = require "luan:http/Http.luan"
14 local Shared = require "site:/lib/Shared.luan"
15 local pub_head = Shared.pub_head or error()
16 local show_saved = Shared.show_saved or error()
17 local call_mixpanel = Shared.call_mixpanel or error()
18 local get_hashtags_list = Shared.get_hashtags_list or error()
19 local has_facebook = not not Shared.has_facebook
20 local User = require "site:/lib/User.luan"
21 local Link = require "site:/lib/Link.luan"
22 local get_owner_links = Link.get_owner_links or error()
23 local Pic = require "site:/lib/Pic.luan"
24 local get_user_pics = Pic.get_user_pics or error()
25 local Icon = require "site:/lib/Icon.luan"
26 local get_user_icons = Icon.get_user_icons or error()
27 local Facebook = require "site:/lib/Facebook.luan"
28 local fb_track_visit = Facebook.track_visit or error()
29 local Reporting = require "site:/lib/Reporting.luan"
30 local maybe_track_visit = Reporting.maybe_track_visit or error()
31 local should_track_visit = Reporting.should_track_visit or error()
32 local Logging = require "luan:logging/Logging.luan"
33 local logger = Logging.logger "main_html"
34
35
36 local function ad_tracking(user)
37 local referrer = Http.request.headers.referer
38 if referrer ~= nil and not contains(referrer,"linkmy.style") and maybe_track_visit(user) then
39 thread_run( function()
40 if should_track_visit(user) then
41 call_mixpanel{
42 event = "Visit"
43 properties = {
44 distinct_id = user.email
45 }
46 }
47 if has_facebook then
48 fb_track_visit(user)
49 end
50 end
51 end )
52 end
53 end
54
55 return function(user)
56 ad_tracking(user)
57 local user_id = user.id
58 local links = get_owner_links(user_id)
59 local pics = get_user_pics(user_id)
60 local icons = get_user_icons(user_id)
61 local title = user.html_title()
62 local pic_url = user.get_pic_url()
63 local bio = user.bio
64 local is_saved = Http.request.parameters.saved ~= nil
65 local saved = is_saved and "&saved" or ""
66 local hashtags_list, hashtags_set = get_hashtags_list(pics)
67 Http.response.headers["Content-Type"] = "text/html; charset=utf-8"
68 Io.stdout = Http.response.text_writer()
69 %>
70 <!doctype html>
71 <html main>
72 <head>
73 <title>Link My Style | <%=title%></title>
74 <style hashtag></style>
75 <script>
76 'use strict';
77
78 window.Path = 'main';
79 window.Page = 'Home';
80
81 let hashtags = <%=json_string(hashtags_set)%>;
82 </script>
83 <% pub_head(user) %>
84 <script>
85 fbTrack('trackCustom', 'View', {owner:'<%=user.name%>'});
86 </script>
87 </head>
88 <body colored onload="mainInit()">
89 <% if is_saved then
90 show_saved("/"..user.name)
91 end %>
92 <div pub_background_img></div>
93 <div pub_content>
94 <div home><a href="/?source=organic">
95 <span lms>LinkMyStyle</span>
96 <br><span small>Increase Affiliate Sales</span>
97 </a></div>
98 <% if pic_url ~= nil then %>
99 <img user src="<%=pic_url%>">
100 <% end %>
101 <h1><%=title%></h1>
102 <% if bio ~= nil then %>
103 <div bio><%=html_encode(bio)%></div>
104 <% end
105 if #icons > 0 then %>
106 <div icons>
107 <% for _, icon in ipairs(icons) do %>
108 <a <%=icon.title_attr()%> href="<%=html_encode(icon.url)%>"><img src="/images/icons/<%=icon.name%>.svg"></a>
109 <% end %>
110 </div>
111 <% end %>
112 <div links>
113 <% for _, link in ipairs(links) do %>
114 <a link href="<%=html_encode(link.url)%>"><%=html_encode(link.title)%></a>
115 <% end %>
116 </div>
117 <% if #hashtags_list > 0 then %>
118 <div hashtags>
119 <span select>
120 <select onchange="mainSelectHashtag(value)">
121 <option value="">All Photos</option>
122 <% for _, hashtag in ipairs(hashtags_list) do %>
123 <option value="<%=hashtag%>">#<%=hashtag%></option>
124 <% end %>
125 </select>
126 </span>
127 </div>
128 <% end %>
129 <div pics>
130 <% for _, pic in ipairs(pics) do
131 if pic.is_hidden then
132 continue
133 end
134 local pic_id = pic.id
135 %>
136 <span id="p-<%=pic_id%>" <%= pic.class or "" %> >
137 <a <%=pic.title_attr()%> href="/pic.html?pic=<%=pic_id%><%=saved%>"><img loading=lazy src="<%=pic.get_thumb_url()%>"></a>
138 </span>
139 <% end %>
140 </div>
141 </div>
142 </body>
143 </html>
144 <%
145 end