Templatify 0/1

FossilOrigin-Name: 969c150fdd1a11067792ff1f6b7f2eeda7da97cf0d25d859a1339a0cdea2ea3e
This commit is contained in:
nekobit 2022-05-31 04:23:38 +00:00
parent 8d5f9eb269
commit e01ea11625
79 changed files with 449 additions and 786 deletions

View file

@ -19,15 +19,15 @@
#include "base_page.h"
#include "about.h"
#include "../static/about.chtml"
#include "../static/license.chtml"
#include "../static/about.ctmpl"
#include "../static/license.ctmpl"
void content_about(struct session* ssn, mastodont_t* api, char** data)
{
struct base_page b = {
.category = BASE_CAT_NONE,
.locale = L10N_EN_US,
.content = data_about_html,
.content = data_about,
.sidebar_left = NULL
};
@ -41,7 +41,7 @@ void content_about_license(struct session* ssn, mastodont_t* api, char** data)
struct base_page b = {
.category = BASE_CAT_NONE,
.locale = L10N_EN_US,
.content = data_license_html,
.content = data_license,
.sidebar_left = NULL
};

View file

@ -44,7 +44,7 @@
#include "../static/status_interaction_profile.chtml"
#include "../static/likeboost.chtml"
#include "../static/reactions_btn.chtml"
#include "../static/interaction_buttons.chtml"
#include "../static/interaction_buttons.ctmpl"
#include "../static/menu_item.chtml"
#define ACCOUNT_INTERACTIONS_LIMIT 11
@ -222,32 +222,28 @@ char* construct_interaction_buttons(struct session* ssn,
status->id);
time_str = reltime_to_str(status->created_at);
s = easprintf(&interaction_html, data_interaction_buttons_html,
config_url_prefix,
status->id,
status->id,
reply_count ? reply_count : "",
config_url_prefix,
status->id,
status->reblogged ? "un" : "",
status->reblogged ? "active" : "",
repeat_count ? repeat_count : "",
config_url_prefix,
status->id,
status->favourited ? "un" : "",
status->favourited ? "active" : "",
favourites_count ? favourites_count : "",
(likeboost_html &&
ssn->config.stat_oneclicksoftware &&
(flags & STATUS_NO_LIKEBOOST) != STATUS_NO_LIKEBOOST ? likeboost_html : ""),
reactions_btn_html ? reactions_btn_html : "",
config_url_prefix,
status->id,
status->id,
time_str);
if (size) *size = s;
struct interaction_buttons_template data = {
.prefix = config_url_prefix,
.status_id = status->id,
.reply_count = reply_count,
.unrepeat = status->reblogged ? "un" : "",
.repeat_active = status->reblogged ? "active" : "",
.repeats_count = repeat_count,
.repeat_text = "Repeat",
.unfavourite = status->favourited ? "un" : "",
.favourite_active = status->favourited ? "active" : "",
.favourites_count = favourites_count,
.favourites_text = "Favorite",
.likeboost_btn = (likeboost_html &&
ssn->config.stat_oneclicksoftware &&
(flags & STATUS_NO_LIKEBOOST) != STATUS_NO_LIKEBOOST ? likeboost_html : ""),
.reactions_btn = reactions_btn_html,
.rel_tilm = time_str
}
interaction_html = tmpl_gen_interaction_buttons(&data, size);
// Cleanup
free(emoji_picker_html);
free(reply_count);

View file

@ -191,47 +191,52 @@ void print_template(char* var, char* buf)
// Print remainder if any
chexput(buf_prev, strlen(buf_prev));
printf("0};\n"
"struct %s_template {", var);
puts("0};");
int should_print = 0;
// Print tokens
for (size_t i = 0; i < tokens_len; ++i)
// Only create struct and function when there are tokens detected
if (tokens_len)
{
should_print = 1;
// Check if used
for (size_t j = 0; j < tokens_len; ++j)
{
if (i != j &&
strcmp(tokens[i].token, tokens[j].token) == 0 &&
tokens[j].used)
should_print = 0;
}
if (should_print)
{
printf("%s %s;\n", tkn_typetostr(tokens[i].type), tokens[i].token);
if (tokens[i].type == TMPL_STRLEN)
printf("unsigned %s_len;\n", tokens[i].token);
tokens[i].used = 1;
}
}
printf("struct %s_template {", var);
// Generate function
printf("};\n"
"char* tmpl_gen_%s(struct %s_template* data, unsigned* size){\n"
"char* ret;\n"
"unsigned s = easprintf(&ret, data_%s, ", var, var, var);
for (size_t i = 0; i < tokens_len; ++i)
{
printf("data->%s", tokens[i].token);
// No (null) strings, make them empty
if (tokens[i].type == TMPL_STR || tokens[i].type == TMPL_STRLEN)
printf("?data->%s:\"\"", tokens[i].token);
fputs(i < tokens_len-1 ? ", " : "", stdout);
int should_print = 0;
// Print tokens
for (size_t i = 0; i < tokens_len; ++i)
{
should_print = 1;
// Check if used
for (size_t j = 0; j < tokens_len; ++j)
{
if (i != j &&
strcmp(tokens[i].token, tokens[j].token) == 0 &&
tokens[j].used)
should_print = 0;
}
if (should_print)
{
printf("%s %s;\n", tkn_typetostr(tokens[i].type), tokens[i].token);
if (tokens[i].type == TMPL_STRLEN)
printf("unsigned %s_len;\n", tokens[i].token);
tokens[i].used = 1;
}
}
// Generate function
printf("};\n"
"char* tmpl_gen_%s(struct %s_template* data, unsigned* size){\n"
"char* ret;\n"
"unsigned s = easprintf(&ret, data_%s, ", var, var, var);
for (size_t i = 0; i < tokens_len; ++i)
{
printf("data->%s", tokens[i].token);
// No (null) strings, make them empty
if (tokens[i].type == TMPL_STR || tokens[i].type == TMPL_STRLEN)
printf("?data->%s:\"\"", tokens[i].token);
fputs(i < tokens_len-1 ? ", " : "", stdout);
}
fputs(");\n"
"if (size) *size = s;\n"
"return ret;\n}", stdout);
}
fputs(");\n"
"if (size) *size = s;\n"
"return ret;\n}", stdout);
// Done!
puts("\n#endif");

5
static/about.ctmpl Normal file

File diff suppressed because one or more lines are too long

View file

@ -1,64 +0,0 @@
%s
<div class="account">
<div class="acct-banner" style="background-image:url('%s');">
%s
<div class="acct-info-data">
<span class="acct-displayname">%s</span>
<span class="acct-username">%s</span>
</div>
<span class="menu-container user-options-btn">
Menu
<div class="menu menu-options">
<ul>
<li><a class="nolink" href="%s/user/%s/action/%ssubscribe"><input class="btn-menu" type="button" value="%s"></a></li>
<li><a class="nolink" href="%s/user/%s/action/%sblock"><input class="btn-menu" type="button" value="%s"></a></li>
<li><a class="nolink" href="%s/user/%s/action/%smute"><input class="btn-menu" type="button" value="%s"></a></li>
</ul>
</div>
</span>
</div>
<div class="acct-header">
<a href="#" class="header-btn btn">
<span class="btn-header">%s</span>
<span class="btn-content">%d</span>
</a>
<a href="#" class="header-btn btn">
<span class="btn-header">%s</span>
<span class="btn-content">%d</span>
</a>
<a href="#" class="header-btn btn">
<span class="btn-header">%s</span>
<span class="btn-content">%d</span>
</a>
%s
</div>
<img class="acct-pfp" src="%s">
</div>
%s
<table class="tabs ui-table">
<tr>
<td>
<a href="%s/@%s/statuses"><input class="tab-btn btn %s" type="button" value="%s"></a>
</td>
<td>
<a href="%s/@%s/scrobbles"><input class="tab-btn btn %s" type="button" value="%s"></a>
</td>
<td>
<a href="%s/@%s/media"><input class="tab-btn btn %s" type="button" value="%s"></a>
</td>
<td>
<a href="%s/@%s/pinned"><input class="tab-btn btn %s" type="button" value="%s"></a>
</td>
</tr>
</table>
<div class="account-content">
%s
</div>

64
static/account.tmpl Normal file
View file

@ -0,0 +1,64 @@
{{%s:is_blocked}}
<div class="account">
<div class="acct-banner" style="background-image:url('{{%s:header}}');">
{{%s:follows_you}}
<div class="acct-info-data">
<span class="acct-displayname">{{%s:display_name}}</span>
<span class="acct-username">{{%s:acct}}</span>
</div>
<span class="menu-container user-options-btn">
Menu
<div class="menu menu-options">
<ul>
<li><a class="nolink" href="{{%s:prefix}}/user/{{%s:userid}}/action/{{%s:unsubscribe}}subscribe"><input class="btn-menu" type="button" value="{{%s:subscribe_text}}"></a></li>
<li><a class="nolink" href="{{%s:prefix}}/user/{{%s:userid}}/action/{{%s:unblock}}block"><input class="btn-menu" type="button" value="{{%s:block_text}}"></a></li>
<li><a class="nolink" href="{{%s:prefix}}/user/{{%s:userid}}/action/{{%s:unmute}}mute"><input class="btn-menu" type="button" value="{{%s:mute_text}}"></a></li>
</ul>
</div>
</span>
</div>
<div class="acct-header">
<a href="#" class="header-btn btn">
<span class="btn-header">{{%s:tab_statuses_text}}</span>
<span class="btn-content">{{%d:statuses_count}}</span>
</a>
<a href="#" class="header-btn btn">
<span class="btn-header">{{%s:tab_following_count}}</span>
<span class="btn-content">{{%d:following_count}}</span>
</a>
<a href="#" class="header-btn btn">
<span class="btn-header">{{%s:tab_followers_count}}</span>
<span class="btn-content">{{%d:followers_count}}</span>
</a>
{{%s:follow_btn}}
</div>
<img class="acct-pfp" src="{{%s:avatar}}">
</div>
{{%s:info}}
<table class="tabs ui-table">
<tr>
<td>
<a href="{{%s:prefix}}/@{{%s:acct}}/statuses"><input class="tab-btn btn {{%s:tab_statuses_focused}}" type="button" value="{{%s:tab_statuses_text}}"></a>
</td>
<td>
<a href="{{%s:prefix}}/@{{%s:acct}}/scrobbles"><input class="tab-btn btn {{%s:tab_scrobbles_focused}}" type="button" value="{{%s:tab_scrobbles_text}}"></a>
</td>
<td>
<a href="{{%s:prefix}}/@{{%s:acct}}/media"><input class="tab-btn btn {{%s:tab_media_focused}}" type="button" value="{{%s:tab_media_text}}"></a>
</td>
<td>
<a href="{{%s:prefix}}/@{{%s:acct}}/pinned"><input class="tab-btn btn {{%s:tab_pinned_focused}}" type="button" value="{{%s:tab_pinned_text}}"></a>
</td>
</tr>
</table>
<div class="account-content">
{{%s:acct_content}}
</div>

View file

@ -1,3 +0,0 @@
<a href="%s/user/%s/action/%sfollow" class="follow-btn btn %s">
%s
</a>

View file

@ -1,3 +0,0 @@
<div class="account-info">
<div class="account-note">%s</div>
</div>

View file

@ -1,23 +0,0 @@
<div class="account-sidebar">
<div class="acct-info">
<img src="%s" class="acct-pfp">
<span class="username">%s</span>
</div>
<table class="acct-stats">
<tr>
<td class="header-btn btn">
<span class="btn-header">%s</span>
<span class="btn-content">%d</span>
</td>
<td class="header-btn btn">
<span class="btn-header">%s</span>
<span class="btn-content">%d</span>
</td>
<td class="header-btn btn">
<span class="btn-header">%s</span>
<span class="btn-content">%d</span>
</td>
</tr>
</table>
</div>

View file

@ -0,0 +1,23 @@
<div class="account-sidebar">
<div class="acct-info">
<img src="{{%s:avatar}}" class="acct-pfp">
<span class="username">{{%s:username}}</span>
</div>
<table class="acct-stats">
<tr>
<td class="header-btn btn">
<span class="btn-header">{{%s:statuses_text}}</span>
<span class="btn-content">{{%d:statuses_count}}</span>
</td>
<td class="header-btn btn">
<span class="btn-header">{{%s:following_text}}</span>
<span class="btn-content">{{%d:following_count}}</span>
</td>
<td class="header-btn btn">
<span class="btn-header">{{%s:followers_text}}</span>
<span class="btn-content">{{%d:followers_count}}</span>
</td>
</tr>
</table>
</div>

View file

@ -1,19 +0,0 @@
<table class="account-stub">
<tr>
<td class="pfp-td">
<a href="%s/@%s"><img src="%s"></a>
</td>
<td class="account-stub-info-wrapper">
<div class="account-stub-info">
<a href="%s/@%s">
<div class="account-stub-top">
<span class="username">%s</span>
</div>
<div class="account-stub-bottom">
<span class="instance-info">@%s</span>
</div>
</a>
</div>
</td>
</tr>
</table>

View file

@ -1,7 +1,7 @@
<div class="attachment-container attachment-audio">
<!-- Here even if not sensitive -->
<div class="sensitive-placeholder %s"></div>
<div class="sensitive-placeholder {{%s:sensitive}}"></div>
<audio width="256" controls preload="metadata">
<source src="%s">
<source src="{{%s:src}}">
</video>
</div>

View file

@ -1,7 +1,7 @@
<div class="attachment-container attachment-gifv">
<video width="256" autoplay muted>
<source src="%s">
<source src="{{%s:src}}">
[ GIFV ]
</video>
%s
{{%s:sensitive}}
</div>

View file

@ -1,4 +1,4 @@
<div class="attachment-container attachment-img">
<img width="256" src="%s">
%s
<img width="256" src="{{%s:src}}">
{{%s:sensitive}}
</div>

View file

@ -1,3 +0,0 @@
<div class="attachment-container attachment-link %s">
<a href="%s">Attachment</a>
</div>

View file

@ -0,0 +1,3 @@
<div class="attachment-container attachment-link {{%s:sensitive}}">
<a href="{{%s:url}}">Attachment</a>
</div>

View file

@ -1,7 +1,7 @@
<div class="attachment-container attachment-video">
<video width="256" controls preload="metadata">
<source src="%s">
<source src="{{%s:src}}">
[ VIDEO ]
</video>
%s
{{%s:sensitive}}
</div>

View file

@ -1,3 +0,0 @@
<div class="attachments">
%s
</div>

View file

@ -1,3 +0,0 @@
<div class="bar">
<div style="max-height: %.1f%%;"></div>
</div>

View file

@ -1,3 +0,0 @@
<div class="bar-graph">
%s
</div>

View file

@ -1,7 +0,0 @@
<div class="simple-page">
<h1>Bookmarks</h1>
</div>
<div class="bookmarks-container">
%s
</div>
%s

View file

@ -7,19 +7,19 @@
<h3>JavaScript</h3>
<ul>
<li>
<input type="checkbox" id="cfgjs" name="js" value="1" %s>
<input type="checkbox" id="cfgjs" name="js" value="1" {{%s:js_on}}>
<label for="cfgjs">Enable JavaScript - If disabled, overrides options below</label>
</li>
<!-- <li> -->
<!-- <input type="checkbox" id="cfgjsactions" name="jsactions" value="1" %s> -->
<!-- <input type="checkbox" id="cfgjsactions" name="jsactions" value="1" {{%s:jsactions_on}}> -->
<!-- <label for="cfgjsactions">Quick actions - Likes, Boosts, etc done in background</label> -->
<!-- </li> -->
<!-- <li> -->
<!-- <input type="checkbox" id="cfgjsreply" name="jsreply" value="1" %s> -->
<!-- <input type="checkbox" id="cfgjsreply" name="jsreply" value="1" {{%s:jsreply_on}}> -->
<!-- <label for="cfgjsreply">Quick reply - Replies don't require redirects</label> -->
<!-- </li> -->
<!-- <li> -->
<!-- <input type="checkbox" id="cfgjslive" name="jslive" value="1" %s> -->
<!-- <input type="checkbox" id="cfgjslive" name="jslive" value="1" {{%s:jslive_on}}> -->
<!-- <label for="cfgjslive">Live update - Statuses, chats, and reactions fetch on the fly</label> -->
<!-- </li> -->
</ul>
@ -27,27 +27,27 @@
<h3>Statuses</h3>
<ul>
<li>
<input type="checkbox" id="cfgstatattachments" name="statattachments" value="1" %s>
<input type="checkbox" id="cfgstatattachments" name="statattachments" value="1" {{%s:status_attachments_on}}>
<label for="cfgstatattachments">Show attachments - If disabled, attachments are links instead</label>
</li>
<li>
<input type="checkbox" id="cfgstatgreentexts" name="statgreentexts" value="1" %s>
<input type="checkbox" id="cfgstatgreentexts" name="statgreentexts" value="1" {{%s:status_greentexts_on}}>
<label for="cfgstatgreentexts">Show greentexts</label>
</li>
<li>
<input type="checkbox" id="cfgstatdope" name="statdope" value="1" %s>
<input type="checkbox" id="cfgstatdope" name="statdope" value="1" {{%s:status_dopameme_on}}>
<label for="cfgstatdope">Show dopameme numbers - Likes, comments, and boost counts</label>
</li>
<li>
<input type="checkbox" id="cfgstatoneclicksoftware" name="statoneclicksoftware" value="1" %s>
<input type="checkbox" id="cfgstatoneclicksoftware" name="statoneclicksoftware" value="1" {{%s:status_oneclicksoftware_on}}>
<label for="cfgstatoneclicksoftware">Show Like-Boost button - Show a button in the status which likes and boosts a post</label>
</li>
<!-- <li> -->
<!-- <input type="checkbox" id="cfgstatemojolikes" name="statemojolikes" value="1" %s> -->
<!-- <input type="checkbox" id="cfgstatemojolikes" name="statemojolikes" value="1" {{%s:status_emojo_likes_on}}> -->
<!-- <label for="cfgstatemojolikes">Convert Emoji reacts to likes - Also disables the emoji reaction button</label> -->
<!-- </li> -->
<!-- <li> -->
<!-- <input type="checkbox" id="cfgstathidemuted" name="stathidemuted" value="1" %s> -->
<!-- <input type="checkbox" id="cfgstathidemuted" name="stathidemuted" value="1" {{%s:status_hide_muted_on}}> -->
<!-- <label for="cfgstathidemuted">Hide statuses from muted users and threads - If disabled, statuses will appear collapsed</label> -->
<!-- </li> -->
</ul>
@ -55,11 +55,11 @@
<h3>Instance</h3>
<ul>
<!-- <li> -->
<!-- <input type="checkbox" id="cfginstanceshowshoutbox" name="instanceshowshoutbox" value="1" %s> -->
<!-- <input type="checkbox" id="cfginstanceshowshoutbox" name="instanceshowshoutbox" value="1" {{%s:instance_show_shoutbox_on}}> -->
<!-- <label for="cfginstanceshowshoutbox">Show instance shoutbox (JS required)</label> -->
<!-- </li> -->
<li>
<input type="checkbox" id="cfginstancepanel" name="instancepanel" value="1" %s>
<input type="checkbox" id="cfginstancepanel" name="instancepanel" value="1" {{%s:instance_panel_on}}>
<label for="cfginstancepanel">Show instance panel - <em>Admins should <strong>not</strong> use the instance panel for major announcements</em></label>
</li>
</ul>
@ -67,7 +67,7 @@
<h3>Notifications</h3>
<ul>
<li>
<input type="checkbox" id="cfgnotifembed" name="notifembed" value="1" %s>
<input type="checkbox" id="cfgnotifembed" name="notifembed" value="1" {{%s:notifications_embed_on}}>
<label for="cfgnotifembed">Display notifications in iFrame - iFrames separate loading from the main page</label>
</li>
</ul>

View file

@ -1,5 +0,0 @@
<ul class="sidebar-config">
<li><a class="sidebarbtn-sub %s" href="%s/config/general">%s</a></li>
<li><a class="sidebarbtn-sub %s" href="%s/config/appearance">%s</a></li>
<li><a class="sidebarbtn-sub %s" href="%s/config/account">%s</a></li>
</ul>

12
static/directs_page.ctmpl Normal file
View file

@ -0,0 +1,12 @@
#ifndef __directs_page
#define __directs_page
static const char data_directs_page[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X69,0X6D,0X70,0X6C,0X65,0X2D,0X70,0X61,0X67,0X65,0X22,0X3E,0XA,0X20,0X20,0X3C,0X68,0X31,0X3E,0X44,0X69,0X72,0X65,0X63,0X74,0X20,0X4D,0X65,0X73,0X73,0X61,0X67,0X65,0X73,0X3C,0X2F,0X68,0X31,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X64,0X69,0X72,0X65,0X63,0X74,0X2D,0X63,0X6F,0X6E,0X74,0X61,0X69,0X6E,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X25,0X73,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
struct directs_page_template {const char* direct_content;
};
char* tmpl_gen_directs_page(struct directs_page_template* data, unsigned* size){
char* ret;
unsigned s = easprintf(&ret, data_directs_page, data->direct_content?data->direct_content:"");
if (size) *size = s;
return ret;
}
#endif

View file

@ -2,5 +2,5 @@
<h1>Direct Messages</h1>
</div>
<div class="direct-container">
%s
{{%s:direct_content}}
</div>

View file

@ -1 +0,0 @@
<a href="/status/%s/react/%s" class="emoji">%s</a>

View file

@ -1,82 +0,0 @@
<div class="emoji-picker">
<table class="tabs ui-table">
<tr>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="0">
<input class="tab-btn btn btn-alt %s" type="submit" value="😃">
</form>
</td>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="%d">
<input class="tab-btn btn btn-alt %s" type="submit" value="🐻">
</form>
</td>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="%d">
<input class="tab-btn btn btn-alt %s" type="submit" value="🍔">
</form>
</td>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="%d">
<input class="tab-btn btn btn-alt %s" type="submit" value="🚀">
</form>
</td>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="%d">
<input class="tab-btn btn btn-alt %s" type="submit" value="⚽">
</form>
</td>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="%d">
<input class="tab-btn btn btn-alt %s" type="submit" value="🔧">
</form>
</td>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="%d">
<input class="tab-btn btn btn-alt %s" type="submit" value="🔢">
</form>
</td>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="%d">
<input class="tab-btn btn btn-alt %s" type="submit" value="🎌">
</form>
</td>
</tr>
</table>
<div class="emoji-picker-emojos">
%s
</div>
<table class="navigation ui-table">
<tr>
<td class="nav-prev btn">
<form action="#id-%s" method="post">
<label class="pointer">
<input type="hidden" name="emojoindex" value="%u">
<span class="nav-btn %s">Previous</span>
<input type="submit" class="hidden">
</label>
</form>
</td>
<td class="nav-next btn">
<form action="#id-%s" method="post">
<label class="pointer">
<input type="hidden" name="emojoindex" value="%u">
<span class="nav-btn">Next</span>
<input type="submit" class="hidden">
</label>
</form>
</td>
</tr>
</table>
</div>

82
static/emoji_picker.tmpl Normal file
View file

@ -0,0 +1,82 @@
<div class="emoji-picker">
<table class="tabs ui-table">
<tr>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="0">
<input class="tab-btn btn btn-alt {{%s:cat_smileys}}" type="submit" value="😃">
</form>
</td>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="{{%d:animals}}">
<input class="tab-btn btn btn-alt {{%s:cat_animals}}" type="submit" value="🐻">
</form>
</td>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="{{%d:food}}">
<input class="tab-btn btn btn-alt {{%s:cat_food}}" type="submit" value="🍔">
</form>
</td>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="{{%d:travel}}">
<input class="tab-btn btn btn-alt {{%s:cat_travel}}" type="submit" value="🚀">
</form>
</td>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="{{%d:activities}}">
<input class="tab-btn btn btn-alt {{%s:cat_activities}}" type="submit" value="⚽">
</form>
</td>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="{{%d:objects}}">
<input class="tab-btn btn btn-alt {{%s:cat_objects}}" type="submit" value="🔧">
</form>
</td>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="{{%d:symbols}}">
<input class="tab-btn btn btn-alt {{%s:cat_symbols}}" type="submit" value="🔢">
</form>
</td>
<td>
<form action="#id" method="post">
<input type="hidden" name="emojoindex" value="{{%d:flags}}">
<input class="tab-btn btn btn-alt {{%s:cat_flags}}" type="submit" value="🎌">
</form>
</td>
</tr>
</table>
<div class="emoji-picker-emojos">
{{%s:emojis}}
</div>
<table class="navigation ui-table">
<tr>
<td class="nav-prev btn">
<form action="#id-{{%s:status_id}}" method="post">
<label class="pointer">
<input type="hidden" name="emojoindex" value="{{%u:index_previous}}">
<span class="nav-btn {{%s:previous_enabled}}">Previous</span>
<input type="submit" class="hidden">
</label>
</form>
</td>
<td class="nav-next btn">
<form action="#id-{{%s:status_id}}" method="post">
<label class="pointer">
<input type="hidden" name="emojoindex" value="{{%u:index_next}}">
<span class="nav-btn">Next</span>
<input type="submit" class="hidden">
</label>
</form>
</td>
</tr>
</table>
</div>

View file

@ -1 +0,0 @@
<a href="%s/status/%s/react/%s" class="emoji-react-box btn btn-alt %s"><span class="emoji">%s</span> <span class="emoji-num">%u<span></a>

View file

@ -0,0 +1 @@
<a href="{{%s:prefix}}/status/{{%s:status_id}}/react/{{%s:emoji}}" class="emoji-react-box btn btn-alt {{%s:emoji_active}}"><span class="emoji">{{%s:emoji}}</span> <span class="emoji-num">{{%u:emoji_count}}<span></a>

View file

@ -1,3 +0,0 @@
<ul class="emoji-reactions">
%s
</ul>

View file

@ -1 +0,0 @@
<span class="e-%s %s">%s</span>

View file

@ -1,4 +0,0 @@
<div class="simple-page">
<h1>404</h1>
<p>%s</p>
</div>

View file

@ -1,7 +0,0 @@
<div class="simple-page">
<h1>Favorites</h1>
</div>
<div class="favourites-container">
%s
</div>
%s

View file

@ -1 +0,0 @@
<svg class="follow" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><line x1="20" y1="8" x2="20" y2="14"></line><line x1="23" y1="11" x2="17" y2="11"></line></svg>

Before

Width:  |  Height:  |  Size: 385 B

View file

@ -1 +0,0 @@
<a href="%s/tag/%s" style="font-size: %upx;" class="hashtag-item">#%s</a>

View file

@ -1,8 +0,0 @@
<div class="simple-page">
<h1>Hashtag - #%s</h1>
</div>
%s
<div class="hashtags-container">
%s
</div>
%s

View file

@ -1,3 +0,0 @@
<span class="in-reply-to">
<svg class="in-reply-to-icon" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 9l6 6-6 6"/><path d="M4 4v7a4 4 0 0 0 4 4h11"/></svg> <a class="in-reply-to-id" href="%s/status/%s"> <span class="in-reply-to-text">%s</span> <span class="acct">%s</span></a>
</span>

File diff suppressed because one or more lines are too long

View file

@ -1,63 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{{ %s : title }}</title>
<link rel="icon" type="image/png" href="/favicon.png">
<link rel="stylesheet" type="text/css" href="/{{ %s : theme }}{{ %s : theme_clr }}.css">
</head>
<body {{ %s : background_url }}>
<div></div>
<div id="main-page-container">
<div id="main-page">
<header id="navbar">
<a href="{{ %s : prefix }}/"><img src="/treebird_logo.png" height="42"></a>
<span class="info">{{ %s : name }}</span>
<div id="navbar-right-container">
<div id="navbar-right">
{{ %s : sidebar_cnt }}
<!-- Searchbox -->
<form action="{{ %s : prefix }}/search" method="get">
<input type="textbox" class="group group-left group-inputbox" placeholder="{{ %s : placeholder }}" id="searchbox" name="q"><!-- i hate HTML
--><input type="submit" class="btn group group-right" value="{{ %s : search_btn }}">
</form>
</div>
</div>
</header>
<table id="content" class="ui-table">
<!-- Navigation -->
<tr>
<td id="leftbar" class="sidebar">
<ul>
<li><a class="sidebarbtn {{ %s : active_home }}" href="{{ %s : prefix}}/">{{ %s : home }}</a></li>
<li><a class="sidebarbtn {{ %s : active_local }}" href="{{ %s : prefix}}/local/">{{ %s : local}}</a></li>
<li><a class="sidebarbtn {{ %s : active_federated }}" href="{{ %s : prefix}}/federated/">{{ %s : federated }}</a></li>
<li><a class="sidebarbtn {{ %s : active_notifications }}" href="{{ %s : prefix}}/notifications">{{ %s : notifications }}</a></li>
<li><a class="sidebarbtn {{ %s : active_lists }}" href="{{ %s : prefix}}/lists">{{ %s : lists }}</a></li>
<li><a class="sidebarbtn {{ %s : active_favourites }}" href="{{ %s : prefix}}/favourites">{{ %s : favourites }}</a></li>
<li><a class="sidebarbtn {{ %s : active_bookmarks }}" href="{{ %s : prefix}}/bookmarks">{{ %s : bookmarks }}</a></li>
<li><a class="sidebarbtn {{ %s : active_direct }}" href="{{ %s : prefix}}/direct">{{ %s : direct }}</a></li>
<li><a class="sidebarbtn {{ %s : active_config }}" href="{{ %s : prefix}}/config">{{ %s : config }}</a></li>
</ul>
{{ %s : sidebar_leftbar }}
{{ %s : instance_panel }}
</td>
<!-- Display for posts -->
<td id="main">
{{ %s : main }}
</td>
<!-- Notifications and such -->
<td id="rightbar" class="sidebar">
{{ %s : sidebar_rightbar }}
</td>
</tr>
</table>
</div>
</div>
<!-- Source -->
<script src="/js/main.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View file

@ -1,43 +0,0 @@
<div class="status-interact">
<table class="ui-table">
<tr>
<td>
<a target="_parent" href="%s/status/%s/reply#%s" class="pointer statbtn reply-btn">
<svg class="reply" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 9l6 6-6 6"/><path d="M4 4v7a4 4 0 0 0 4 4h11"/></svg>
<span class="count">%s</span>
</label>
</form>
</td>
<td>
<form action="%s/status/%s/interact" method="post">
<input type="hidden" name="itype" value="%srepeat">
<label class="repeat-btn pointer statbtn">
<svg class="repeat %s" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 2.1l4 4-4 4"/><path d="M3 12.2v-2a4 4 0 0 1 4-4h12.8M7 21.9l-4-4 4-4"/><path d="M21 11.8v2a4 4 0 0 1-4 4H4.2"/></svg>
<span class="count">%s</span>
<input class="hidden" type="submit" value="Repeat">
</label>
</form>
</td>
<td>
<form action="%s/status/%s/interact" method="post">
<input type="hidden" name="itype" value="%slike">
<label class="pointer statbtn like-btn">
<svg class="like %s" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>
<span class="count">%s</span>
<input class="hidden" type="submit" value="Like">
</label>
</form>
</td>
%s
%s
<td>
<a target="_parent" href="%s/status/%s#%s" class="pointer statbtn view-btn">
<svg class="expand" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 3h6v6M14 10l6.1-6.1M9 21H3v-6M10 14l-6.1 6.1"/></svg>
</a>
</td>
<td>
<span class="time">%s</span>
</td>
</tr>
</table>
</div>

View file

@ -0,0 +1,43 @@
<div class="status-interact">
<table class="ui-table">
<tr>
<td>
<a target="_parent" href="{{%s:prefix}}/status/{{%s:status_id}}/reply#{{%s:status_id}}" class="pointer statbtn reply-btn">
<svg class="reply" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 9l6 6-6 6"/><path d="M4 4v7a4 4 0 0 0 4 4h11"/></svg>
<span class="count">{{%s:reply_count}}</span>
</label>
</form>
</td>
<td>
<form action="{{%s:prefix}}/status/{{%s:status_id}}/interact" method="post">
<input type="hidden" name="itype" value="{{%s:unrepeat}}repeat">
<label class="repeat-btn pointer statbtn">
<svg class="repeat {{%s:repeat_active}}" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 2.1l4 4-4 4"/><path d="M3 12.2v-2a4 4 0 0 1 4-4h12.8M7 21.9l-4-4 4-4"/><path d="M21 11.8v2a4 4 0 0 1-4 4H4.2"/></svg>
<span class="count">{{%s:repeats_count}}</span>
<input class="hidden" type="submit" value="{{%s:repeat_text}}">
</label>
</form>
</td>
<td>
<form action="{{%s:prefix}}/status/{{%s:status_id}}/interact" method="post">
<input type="hidden" name="itype" value="{{%s:unfavourite}}like">
<label class="pointer statbtn like-btn">
<svg class="like {{%s:favourite_active}}" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>
<span class="count">{{%s:favourites_count}}</span>
<input class="hidden" type="submit" value="{{%s:favourites_text}}">
</label>
</form>
</td>
{{%s:likeboost_btn}}
{{%s:reactions_btn}}
<td>
<a target="_parent" href="{{%s:prefix}}/status/{{%s:status_id}}#{{%s:status_id}}" class="pointer statbtn view-btn">
<svg class="expand" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 3h6v6M14 10l6.1-6.1M9 21H3v-6M10 14l-6.1 6.1"/></svg>
</a>
</td>
<td>
<span class="time">{{%s:rel_time}}</span>
</td>
</tr>
</table>
</div>

5
static/license.ctmpl Normal file

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
<svg class="like" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>

Before

Width:  |  Height:  |  Size: 319 B

View file

@ -1,5 +1,5 @@
<td>
<form action="%s/status/%s/interact" method="post">
<form action="{{%s:prefix}}/status/{{%s:status_id}}/interact" method="post">
<input type="hidden" name="itype" value="likeboost">
<label class="pointer statbtn likeboost-btn">
<svg class="one-click-software" width="20" height="20" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g><g stroke-width="1.98"><path d="m19.15 8.5061 2.7598 2.7598-2.7598 2.7598"/><path d="m14.756 11.325s2.5484-0.05032 6.3258 0.01026m-15.639 10.807-2.7598-2.7598 2.7598-2.7598"/><path d="m22.4 15.327v1.2259c0 1.156-1.2356 2.7598-2.7598 2.7598h-16.664"/></g><polygon transform="matrix(.60736 0 0 .60736 .60106 .63577)" points="18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2 15.09 8.26 22 9.27 17 14.14" stroke-width="2.9656"/></g></svg>

View file

@ -1 +0,0 @@
<li><a href="%s/lists/for/%s" class="btn split">%s</a></li>

View file

@ -1,13 +0,0 @@
<div class="lists-view">
<h1 class="lists-view-header">Lists</h1>
<div class="lists-view-container">
<ul class="large-list center">
%s
</ul>
<ul class="large-list center">
<li><a href="%s/lists/create" class="btn split center-text bold-text">Create new list</a></li>
</ul>
</div>
</div>

View file

@ -1,29 +0,0 @@
<div class="simple-page">
<h1>%s</h1>
%s
<form action="%s/login" method="post">
<div class="form-group">
<label for="login-username">%s: </label>
<input type="text" id="login-username" name="username">
</div>
<div class="form-group">
<label for="login-password">%s: </label>
<input type="password" id="login-password" name="password"><br>
</div>
<div class="form-group">
<input class="btn" type="submit" value="%s">
</div>
</form>
<h6>%s</h6>
<form action="%s/login/oauth" method="post">
<div class="form-group">
<label for="instance-url">%s: </label>
<input type="url" id="instance-url" name="instance">
<input class="btn" type="submit" value="%s">
</div>
</form>
</div>

15
static/menu_item.ctmpl Normal file
View file

@ -0,0 +1,15 @@
#ifndef __menu_item
#define __menu_item
static const char data_menu_item[] = {0X3C,0X6C,0X69,0X3E,0XA,0X20,0X20,0X3C,0X66,0X6F,0X72,0X6D,0X20,0X61,0X63,0X74,0X69,0X6F,0X6E,0X3D,0X22,0X25,0X73,0X2F,0X73,0X74,0X61,0X74,0X75,0X73,0X2F,0X25,0X73,0X2F,0X69,0X6E,0X74,0X65,0X72,0X61,0X63,0X74,0X22,0X20,0X6D,0X65,0X74,0X68,0X6F,0X64,0X3D,0X22,0X70,0X6F,0X73,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X68,0X69,0X64,0X64,0X65,0X6E,0X22,0X20,0X6E,0X61,0X6D,0X65,0X3D,0X22,0X69,0X74,0X79,0X70,0X65,0X22,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X73,0X75,0X62,0X6D,0X69,0X74,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X2D,0X6D,0X65,0X6E,0X75,0X22,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X66,0X6F,0X72,0X6D,0X3E,0XA,0X3C,0X2F,0X6C,0X69,0X3E,0};
struct menu_item_template {const char* prefix;
const char* status_id;
const char* itype;
const char* text;
};
char* tmpl_gen_menu_item(struct menu_item_template* data, unsigned* size){
char* ret;
unsigned s = easprintf(&ret, data_menu_item, data->prefix?data->prefix:"", data->status_id?data->status_id:"", data->itype?data->itype:"", data->text?data->text:"");
if (size) *size = s;
return ret;
}
#endif

View file

@ -1,6 +0,0 @@
<li>
<form action="%s/status/%s/interact" method="post">
<input type="hidden" name="itype" value="%s">
<input type="submit" class="btn-menu" value="%s">
</form>
</li>

6
static/menu_item.tmpl Normal file
View file

@ -0,0 +1,6 @@
<li>
<form action="{{%s:prefix}}/status/{{%s:status_id}}/interact" method="post">
<input type="hidden" name="itype" value="{{%s:itype}}">
<input type="submit" class="btn-menu" value="{{%s:text}}">
</form>
</li>

View file

@ -1,32 +0,0 @@
<table class="navigation ui-table">
<tr>
<td class="nav-up btn">
<form action="" method="post">
<label class="pointer">
<span class="nav-btn">Up</span>
<input type="submit" class="hidden">
</label>
</form>
</td>
<td class="nav-prev btn">
<form action="" method="post">
<label class="pointer">
<input type="hidden" name="start_id" value="%s">
<input type="hidden" name="min_id" value="%s">
<span class="nav-btn %s">Previous</span>
%s
</label>
</form>
</td>
<td class="nav-next btn">
<form action="" method="post">
<label class="pointer">
<input type="hidden" name="start_id" value="%s">
<input type="hidden" name="max_id" value="%s">
<span class="nav-btn">Next</span>
<input type="submit" class="hidden">
</label>
</form>
</td>
</tr>
</table>

View file

@ -1,10 +0,0 @@
<div class="notification-info">
<img src="%s">
<div class="notification-user">
<span class="notification-text-group-with-icon">
<span class="username">%s</span>
<span class="action">%s</span>
</span>
%s
</div>
</div>

View file

@ -1,24 +0,0 @@
<table class="notification notification-regular ui-table">
<tr>
<td class="pfp-td">
<img src="%s">
</td>
<td class="notification-table-bit">
<table class="ui-table">
<tr>
<td>
<div class="notification-info-format">
<span class="notification-text-group-with-icon">
<span title="%s" class="username">%s</span>
<span class="action">%s</span>
</span> %s
</div>
<span class="notification-content">
<a href="%s/@%s">@%s</a>
</span>
</td>
</tr>
</table>
</td>
</tr>
</table>

View file

@ -1,17 +0,0 @@
<table class="notification-compact notification ui-table">
<tr>
<td class="pfp-compact-td">
<img src="%s">
</td>
<td>
<div class="notification-info">
<span class="notification-text-group%s">
<span title="%s" class="username">%s</span>
<span class="action">%s</span>
</span> %s
</div>
<div class="notification-content">%s</div>
<div class="notification-stats">%s</div>
</td>
</tr>
</table>

View file

@ -1,3 +0,0 @@
<div class="notifications-container">
%s
</div>

View file

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<title>Notifications embed</title>
<link rel="stylesheet" type="text/css" href="/%s%s.css">
<link rel="stylesheet" type="text/css" href="/{{%s:theme}}{{%s:theme_var}}.css">
<style>
html, body
{
@ -15,9 +15,9 @@
</head>
<body>
<div class="sidebar-embed-container">
%s
{{%s:navigation_box}}
<div class="sidebar-embed-notifs">
%s
{{%s:notifications}}
</div>
</div>
</body>

View file

@ -1,7 +0,0 @@
<div class="simple-page">
<h1>Notifications</h1>
</div>
<div class="notifications-container">
%s
</div>
%s

View file

@ -1,7 +1,7 @@
<form action="%s/status/create" method="post" enctype="multipart/form-data">
%s
<form action="{{%s:prefix}}/status/create" method="post" enctype="multipart/form-data">
{{%s:reply_input}}
<div class="statusbox">
<textarea name="content" placeholder="Just landed in N.Y." rows="5" tabindex="1">%s</textarea>
<textarea name="content" placeholder="Just landed in N.Y." rows="5" tabindex="1">{{%s:content}}</textarea>
<div class="statusfooter">
<div class="statusfooter-left">
<select tabindex="3" name="visibility" id="visibility">

View file

@ -1,15 +1,15 @@
<div class="sidebar-login">
<form action="%s/login" method="post">
<form action="{{%s:prefix}}/login" method="post">
<div class="form-group">
<label for="login-username">%s: </label>
<label for="login-username">{{%s:username}}: </label>
<input type="text" id="login-username" name="username">
</div>
<div class="form-group">
<label for="login-password">%s: </label>
<label for="login-password">{{%s:password}}: </label>
<input type="password" id="login-password" name="password"><br>
</div>
<div class="form-group">
<input class="btn" type="submit" value="%s">
<input class="btn" type="submit" value="{{%s:login}}">
</div>
</form>
</div>

View file

@ -1,6 +1,6 @@
<td>
<a target="_parent" href="%s/status/%s/react#id-%s" class="pointer statbtn react-btn">
<a target="_parent" href="{{%s:prefix}}/status/{{%s:status_id}}/react#id-{{%s:status_id}}" class="pointer statbtn react-btn">
<svg class="emoji-btn" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="8" y1="12" x2="16" y2="12"></line></svg>
%s
{{%s:emoji_picker}}
</form>
</td>

View file

@ -1 +0,0 @@
<svg class="repeat" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 2.1l4 4-4 4"/><path d="M3 12.2v-2a4 4 0 0 1 4-4h12.8M7 21.9l-4-4 4-4"/><path d="M21 11.8v2a4 4 0 0 1-4 4H4.2"/></svg>

Before

Width:  |  Height:  |  Size: 322 B

View file

@ -1,28 +0,0 @@
<div id="scrobble-%s" class="scrobble ui-table">
<table class="scrobblist-info">
<td class="pfp-compact-td">
<img class="pfp-img-scrobble" src="%s">
</td>
<td class="scrobblist-info-text">
<span class="username">%s</span> <span class="scrobblist-activity">%s</span>
</td>
</table>
<table class="scrobbles">
<tr class="scrobble-title">
<td class="scrobble-key">%s</td>
<td class="scrobble-value">%s</td>
</tr>
<tr class="scrobble-artist">
<td class="scrobble-key">%s</td>
<td class="scrobble-value">%s</td>
</tr>
<tr class="scrobble-album">
<td class="scrobble-key">%s</td>
<td class="scrobble-value">%s</td>
</tr>
<tr class="scrobble-length">
<td class="scrobble-key">%s</td>
<td class="scrobble-value">%d</td>
</tr>
</table>
</div>

28
static/scrobble.tmpl Normal file
View file

@ -0,0 +1,28 @@
<div id="scrobble-{{%s:scrobble_id}}" class="scrobble ui-table">
<table class="scrobblist-info">
<td class="pfp-compact-td">
<img class="pfp-img-scrobble" src="{{%s:avatar}}">
</td>
<td class="scrobblist-info-text">
<span class="username">{{%s:username}}</span> <span class="scrobblist-activity">{{%s:activity}}</span>
</td>
</table>
<table class="scrobbles">
<tr class="scrobble-title">
<td class="scrobble-key">{{%s:title_key}}</td>
<td class="scrobble-value">{{%s:title}}</td>
</tr>
<tr class="scrobble-artist">
<td class="scrobble-key">{{%s:artist_key}}</td>
<td class="scrobble-value">{{%s:artist}}</td>
</tr>
<tr class="scrobble-album">
<td class="scrobble-key">{{%s:album_key}}</td>
<td class="scrobble-value">{{%s:album}}</td>
</tr>
<tr class="scrobble-length">
<td class="scrobble-key">{{%s:length_key}}</td>
<td class="scrobble-value">{{%d:length}}</td>
</tr>
</table>
</div>

View file

@ -1,17 +0,0 @@
<table class="tabs ui-table">
<tr>
<td>
<a href="%s/search/statuses?q=%s"><input class="tab-btn btn %s" type="button" value="%s"></a>
</td>
<td>
<a href="%s/search/accounts?q=%s"><input class="tab-btn btn %s" type="button" value="%s"></a>
</td>
<td>
<a href="%s/search/hashtags?q=%s"><input class="tab-btn btn %s" type="button" value="%s"></a>
</td>
</tr>
</table>
<div class="search-results">
%s
</div>

17
static/search.tmpl Normal file
View file

@ -0,0 +1,17 @@
<table class="tabs ui-table">
<tr>
<td>
<a href="{{%s:prefix}}/search/statuses?q={{%s:query}}"><input class="tab-btn btn {{%s:statuses_active}}" type="button" value="{{%s:statuses}}"></a>
</td>
<td>
<a href="{{%s:prefix}}/search/accounts?q={{%s:query}}"><input class="tab-btn btn {{%s:accounts_active}}" type="button" value="{{%s:accounts}}"></a>
</td>
<td>
<a href="{{%s:prefix}}/search/hashtags?q={{%s:query}}"><input class="tab-btn btn {{%s:hashtags_active}}" type="button" value="{{%s:hashtags}}"></a>
</td>
</tr>
</table>
<div class="search-results">
{{%s:results}}
</div>

File diff suppressed because one or more lines are too long

View file

@ -1,50 +0,0 @@
<table id="{{%s:status_id}}" class="status {{%s:focused}} ui-table">
{{ %s : notif_info }}
<tr>
<td class="pfp-td">
<img src="{{%s:avatar}}">
</td>
<td class="status-info">
<div class="poster-stats">
<span class="username">{{%s:username}}</span>
<a class="instance-info" href="{{%s:prefix}}/@{{%s:acct}}">{{%s:acct}}</a>
<span class="alignend">
<div class="menu-container status-visibility">
{{%s:visibility}}
<div class="menu">
<ul>
<li>
<form action="{{%s:prefix}}/status/{{%s:status_id}}/interact" method="post">
<input type="hidden" name="itype" value="{{%s:unmute}}mute">
<input type="submit" class="btn-menu" value="{{%s:unmute_btn}}">
</form>
</li>
<li>
<form action="{{%s:prefix}}/status/{{%s:status_id}}/interact" method="post">
<input type="hidden" name="itype" value="{{%s:unpin}}pin">
<input type="submit" class="btn-menu" value="{{%s:unpin_btn}}">
</form>
</li>
<li>
<form action="{{%s:prefix}}/status/{{%s:status_id}/interact" method="post">
<input type="hidden" name="itype" value="{{%s:unbookmark}}bookmark">
<input type="submit" class="btn-menu" value="{{%s:unbookmark_btn}}">
</form>
</li>
{{%s:delete_status}}
</ul>
</div>
</div>
</span>
</div>
{{%s:in_reply_to_str}}
<span class="status-content">
{{%s:status_content}}
</span>
{{%s:attachments}}
{{%s:interactions}}
{{%s:emoji_reactions}}
{{%s:interaction_btns}}
</td>
</tr>
</table>

View file

@ -1 +0,0 @@
<img title="%s" class="pfp-interaction" src="%s">

View file

@ -0,0 +1 @@
<img title="{{%s:acct}}" class="pfp-interaction" src="{{%s:avatar}}">

View file

@ -1,11 +1,11 @@
<div class="status-interactions">
<div class="status-interactions-labels">
<!-- Favourites count -->
%s
{{%s:favourites_count}}
<!-- Reblog count -->
%s
{{%s:reblogs_count}}
</div>
<div class="status-interactions-pfps">
%s
{{%s:users}}
</div>
</div>

View file

@ -1,4 +0,0 @@
<div class="header-btn btn">
<span class="btn-header">%s</span>
<span class="btn-content">%d</span>
</div>

View file

@ -0,0 +1,4 @@
<div class="header-btn btn">
<span class="btn-header">{{%s:header}}</span>
<span class="btn-content">{{%d:value}}</span>
</div>

View file

@ -17,36 +17,36 @@
<th><b>Value</b></th>
</tr>
<tr>
<td>HTTP_COOKIES</td>
<td>%s</td>
<td>HTTP_COOKIE</td>
<td>{{%s:HTTP_COOKIE}}</td>
</tr>
<tr>
<td>PATH_INFO</td>
<td>%s</td>
<td>{{%s:PATH_INFO}}</td>
</tr>
<tr>
<td>QUERY_STRING</td>
<td>%s</td>
<td>{{%s:QUERY_STRING}}</td>
</tr>
<tr>
<td>REQUEST_METHOD</td>
<td>%s</td>
<td>{{%s:REQUEST_METHOD}}</td>
</tr>
<tr>
<td>SCRIPT_NAME</td>
<td>%s</td>
<td>{{%s:SCRIPT_NAME}}</td>
</tr>
<tr>
<td>HTTP_REFERER</td>
<td>%s</td>
<td>{{%s:HTTP_REFERER}}</td>
</tr>
<tr>
<td>HTTP_USER_AGENT</td>
<td>%s</td>
<td>{{%s:HTTP_USER_AGENT}}</td>
</tr>
<tr>
<td>CONTENT_LENGTH</td>
<td>%s</td>
<td>{{%s:CONTENT_LENGTH}}</td>
</tr>
</table>
</div>