Templatify 1/1
FossilOrigin-Name: 6ca19819ff1547744a39e4d248a7803bf6dfd8f20ae64e704f044200746acaf1
This commit is contained in:
parent
e01ea11625
commit
f1a407c79f
|
@ -31,13 +31,13 @@
|
|||
#include "navigation.h"
|
||||
|
||||
// Files
|
||||
#include "../static/account.chtml"
|
||||
#include "../static/account_info.chtml"
|
||||
#include "../static/account_follow_btn.chtml"
|
||||
#include "../static/favourites_page.chtml"
|
||||
#include "../static/bookmarks_page.chtml"
|
||||
#include "../static/account_stub.chtml"
|
||||
#include "../static/account_sidebar.chtml"
|
||||
#include "../static/account.ctmpl"
|
||||
#include "../static/account_info.ctmpl"
|
||||
#include "../static/account_follow_btn.ctmpl"
|
||||
#include "../static/favourites_page.ctmpl"
|
||||
#include "../static/bookmarks_page.ctmpl"
|
||||
#include "../static/account_stub.ctmpl"
|
||||
#include "../static/account_sidebar.ctmpl"
|
||||
|
||||
#define FOLLOWS_YOU_HTML "<span class=\"acct-badge\">%s</span>"
|
||||
|
||||
|
|
|
@ -35,7 +35,8 @@ enum tmpl_type
|
|||
TMPL_INT,
|
||||
TMPL_UINT,
|
||||
TMPL_STR,
|
||||
TMPL_STRLEN
|
||||
TMPL_STRLEN,
|
||||
TMPL_FLOAT,
|
||||
};
|
||||
|
||||
struct tmpl_token
|
||||
|
@ -86,6 +87,8 @@ char* tkn_typetostr(enum tmpl_type tkn)
|
|||
return "char*";
|
||||
case TMPL_UINT:
|
||||
return "unsigned";
|
||||
case TMPL_FLOAT:
|
||||
return "float";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
@ -108,6 +111,9 @@ enum tmpl_type tkn_type(char* str)
|
|||
strcmp(str, "uint") == 0 ||
|
||||
strcmp(str, "%u") == 0)
|
||||
return TMPL_UINT;
|
||||
else if (strcmp(str, "float") == 0 ||
|
||||
strcmp(str, "%f") == 0)
|
||||
return TMPL_FLOAT;
|
||||
|
||||
// TODO Real error handling
|
||||
return TMPL_INT;
|
||||
|
@ -186,6 +192,9 @@ void print_template(char* var, char* buf)
|
|||
case TMPL_UINT:
|
||||
chexput("%u", 2);
|
||||
break;
|
||||
case TMPL_FLOAT:
|
||||
chexput("%f", 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
41
static/account.ctmpl
Normal file
41
static/account.ctmpl
Normal file
File diff suppressed because one or more lines are too long
16
static/account_follow_btn.ctmpl
Normal file
16
static/account_follow_btn.ctmpl
Normal file
|
@ -0,0 +1,16 @@
|
|||
#ifndef __account_follow_btn
|
||||
#define __account_follow_btn
|
||||
static const char data_account_follow_btn[] = {0X3C,0X61,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X75,0X73,0X65,0X72,0X2F,0X25,0X73,0X2F,0X61,0X63,0X74,0X69,0X6F,0X6E,0X2F,0X25,0X73,0X66,0X6F,0X6C,0X6C,0X6F,0X77,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X66,0X6F,0X6C,0X6C,0X6F,0X77,0X2D,0X62,0X74,0X6E,0X20,0X62,0X74,0X6E,0X20,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X25,0X73,0XA,0X3C,0X2F,0X61,0X3E,0};
|
||||
struct account_follow_btn_template {const char* prefix;
|
||||
const char* userid;
|
||||
const char* unfollow;
|
||||
const char* active;
|
||||
const char* follow_text;
|
||||
};
|
||||
char* tmpl_gen_account_follow_btn(struct account_follow_btn_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_account_follow_btn, data->prefix?data->prefix:"", data->userid?data->userid:"", data->unfollow?data->unfollow:"", data->active?data->active:"", data->follow_text?data->follow_text:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
3
static/account_follow_btn.tmpl
Normal file
3
static/account_follow_btn.tmpl
Normal file
|
@ -0,0 +1,3 @@
|
|||
<a href="{{%s:prefix}}/user/{{%s:userid}}/action/{{%s:unfollow}}follow" class="follow-btn btn {{%s:active}}">
|
||||
{{%s:follow_text}}
|
||||
</a>
|
12
static/account_info.ctmpl
Normal file
12
static/account_info.ctmpl
Normal file
|
@ -0,0 +1,12 @@
|
|||
#ifndef __account_info
|
||||
#define __account_info
|
||||
static const char data_account_info[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X63,0X6F,0X75,0X6E,0X74,0X2D,0X69,0X6E,0X66,0X6F,0X22,0X3E,0XA,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X63,0X6F,0X75,0X6E,0X74,0X2D,0X6E,0X6F,0X74,0X65,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct account_info_template {const char* acct_note;
|
||||
};
|
||||
char* tmpl_gen_account_info(struct account_info_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_account_info, data->acct_note?data->acct_note:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
3
static/account_info.tmpl
Normal file
3
static/account_info.tmpl
Normal file
|
@ -0,0 +1,3 @@
|
|||
<div class="account-info">
|
||||
<div class="account-note">{{%s:acct_note}}</div>
|
||||
</div>
|
19
static/account_sidebar.ctmpl
Normal file
19
static/account_sidebar.ctmpl
Normal file
|
@ -0,0 +1,19 @@
|
|||
#ifndef __account_sidebar
|
||||
#define __account_sidebar
|
||||
static const char data_account_sidebar[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X63,0X6F,0X75,0X6E,0X74,0X2D,0X73,0X69,0X64,0X65,0X62,0X61,0X72,0X22,0X3E,0XA,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X63,0X74,0X2D,0X69,0X6E,0X66,0X6F,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X69,0X6D,0X67,0X20,0X73,0X72,0X63,0X3D,0X22,0X25,0X73,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X63,0X74,0X2D,0X70,0X66,0X70,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X75,0X73,0X65,0X72,0X6E,0X61,0X6D,0X65,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X3C,0X74,0X61,0X62,0X6C,0X65,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X63,0X74,0X2D,0X73,0X74,0X61,0X74,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X68,0X65,0X61,0X64,0X65,0X72,0X2D,0X62,0X74,0X6E,0X20,0X62,0X74,0X6E,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X2D,0X68,0X65,0X61,0X64,0X65,0X72,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X2D,0X63,0X6F,0X6E,0X74,0X65,0X6E,0X74,0X22,0X3E,0X25,0X64,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X68,0X65,0X61,0X64,0X65,0X72,0X2D,0X62,0X74,0X6E,0X20,0X62,0X74,0X6E,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X2D,0X68,0X65,0X61,0X64,0X65,0X72,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X2D,0X63,0X6F,0X6E,0X74,0X65,0X6E,0X74,0X22,0X3E,0X25,0X64,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X68,0X65,0X61,0X64,0X65,0X72,0X2D,0X62,0X74,0X6E,0X20,0X62,0X74,0X6E,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X2D,0X68,0X65,0X61,0X64,0X65,0X72,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X2D,0X63,0X6F,0X6E,0X74,0X65,0X6E,0X74,0X22,0X3E,0X25,0X64,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X74,0X61,0X62,0X6C,0X65,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0};
|
||||
struct account_sidebar_template {const char* avatar;
|
||||
const char* username;
|
||||
const char* statuses_text;
|
||||
int statuses_count;
|
||||
const char* following_text;
|
||||
int following_count;
|
||||
const char* followers_text;
|
||||
int followers_count;
|
||||
};
|
||||
char* tmpl_gen_account_sidebar(struct account_sidebar_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_account_sidebar, data->avatar?data->avatar:"", data->username?data->username:"", data->statuses_text?data->statuses_text:"", data->statuses_count, data->following_text?data->following_text:"", data->following_count, data->followers_text?data->followers_text:"", data->followers_count);
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
16
static/account_stub.ctmpl
Normal file
16
static/account_stub.ctmpl
Normal file
|
@ -0,0 +1,16 @@
|
|||
#ifndef __account_stub
|
||||
#define __account_stub
|
||||
static const char data_account_stub[] = {0X3C,0X74,0X61,0X62,0X6C,0X65,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X63,0X6F,0X75,0X6E,0X74,0X2D,0X73,0X74,0X75,0X62,0X22,0X3E,0XA,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X70,0X66,0X70,0X2D,0X74,0X64,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X61,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X40,0X25,0X73,0X22,0X3E,0X3C,0X69,0X6D,0X67,0X20,0X73,0X72,0X63,0X3D,0X22,0X25,0X73,0X22,0X3E,0X3C,0X2F,0X61,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X63,0X6F,0X75,0X6E,0X74,0X2D,0X73,0X74,0X75,0X62,0X2D,0X69,0X6E,0X66,0X6F,0X2D,0X77,0X72,0X61,0X70,0X70,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X63,0X6F,0X75,0X6E,0X74,0X2D,0X73,0X74,0X75,0X62,0X2D,0X69,0X6E,0X66,0X6F,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X61,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X40,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X63,0X6F,0X75,0X6E,0X74,0X2D,0X73,0X74,0X75,0X62,0X2D,0X74,0X6F,0X70,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X75,0X73,0X65,0X72,0X6E,0X61,0X6D,0X65,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X63,0X6F,0X75,0X6E,0X74,0X2D,0X73,0X74,0X75,0X62,0X2D,0X62,0X6F,0X74,0X74,0X6F,0X6D,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X69,0X6E,0X73,0X74,0X61,0X6E,0X63,0X65,0X2D,0X69,0X6E,0X66,0X6F,0X22,0X3E,0X40,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X61,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X3C,0X2F,0X74,0X61,0X62,0X6C,0X65,0X3E,0};
|
||||
struct account_stub_template {const char* prefix;
|
||||
const char* acct;
|
||||
const char* avatar;
|
||||
const char* display_name;
|
||||
const char* full_acct;
|
||||
};
|
||||
char* tmpl_gen_account_stub(struct account_stub_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_account_stub, data->prefix?data->prefix:"", data->acct?data->acct:"", data->avatar?data->avatar:"", data->prefix?data->prefix:"", data->acct?data->acct:"", data->display_name?data->display_name:"", data->full_acct?data->full_acct:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
19
static/account_stub.tmpl
Normal file
19
static/account_stub.tmpl
Normal file
|
@ -0,0 +1,19 @@
|
|||
<table class="account-stub">
|
||||
<tr>
|
||||
<td class="pfp-td">
|
||||
<a href="{{%s:prefix}}/@{{%s:acct}}"><img src="{{%s:avatar}}"></a>
|
||||
</td>
|
||||
<td class="account-stub-info-wrapper">
|
||||
<div class="account-stub-info">
|
||||
<a href="{{%s:prefix}}/@{{%s:acct}}">
|
||||
<div class="account-stub-top">
|
||||
<span class="username">{{%s:display_name}}</span>
|
||||
</div>
|
||||
<div class="account-stub-bottom">
|
||||
<span class="instance-info">@{{%s:full_acct}}</span>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
13
static/attachment_audio.ctmpl
Normal file
13
static/attachment_audio.ctmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
#ifndef __attachment_audio
|
||||
#define __attachment_audio
|
||||
static const char data_attachment_audio[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X74,0X74,0X61,0X63,0X68,0X6D,0X65,0X6E,0X74,0X2D,0X63,0X6F,0X6E,0X74,0X61,0X69,0X6E,0X65,0X72,0X20,0X61,0X74,0X74,0X61,0X63,0X68,0X6D,0X65,0X6E,0X74,0X2D,0X61,0X75,0X64,0X69,0X6F,0X22,0X3E,0XA,0X20,0X20,0X3C,0X21,0X2D,0X2D,0X20,0X48,0X65,0X72,0X65,0X20,0X65,0X76,0X65,0X6E,0X20,0X69,0X66,0X20,0X6E,0X6F,0X74,0X20,0X73,0X65,0X6E,0X73,0X69,0X74,0X69,0X76,0X65,0X20,0X2D,0X2D,0X3E,0XA,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X65,0X6E,0X73,0X69,0X74,0X69,0X76,0X65,0X2D,0X70,0X6C,0X61,0X63,0X65,0X68,0X6F,0X6C,0X64,0X65,0X72,0X20,0X25,0X73,0X22,0X3E,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X3C,0X61,0X75,0X64,0X69,0X6F,0X20,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X35,0X36,0X22,0X20,0X63,0X6F,0X6E,0X74,0X72,0X6F,0X6C,0X73,0X20,0X70,0X72,0X65,0X6C,0X6F,0X61,0X64,0X3D,0X22,0X6D,0X65,0X74,0X61,0X64,0X61,0X74,0X61,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X73,0X6F,0X75,0X72,0X63,0X65,0X20,0X73,0X72,0X63,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X76,0X69,0X64,0X65,0X6F,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct attachment_audio_template {const char* sensitive;
|
||||
const char* src;
|
||||
};
|
||||
char* tmpl_gen_attachment_audio(struct attachment_audio_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_attachment_audio, data->sensitive?data->sensitive:"", data->src?data->src:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
13
static/attachment_gifv.ctmpl
Normal file
13
static/attachment_gifv.ctmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
#ifndef __attachment_gifv
|
||||
#define __attachment_gifv
|
||||
static const char data_attachment_gifv[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X74,0X74,0X61,0X63,0X68,0X6D,0X65,0X6E,0X74,0X2D,0X63,0X6F,0X6E,0X74,0X61,0X69,0X6E,0X65,0X72,0X20,0X61,0X74,0X74,0X61,0X63,0X68,0X6D,0X65,0X6E,0X74,0X2D,0X67,0X69,0X66,0X76,0X22,0X3E,0XA,0X20,0X20,0X3C,0X76,0X69,0X64,0X65,0X6F,0X20,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X35,0X36,0X22,0X20,0X61,0X75,0X74,0X6F,0X70,0X6C,0X61,0X79,0X20,0X6D,0X75,0X74,0X65,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X73,0X6F,0X75,0X72,0X63,0X65,0X20,0X73,0X72,0X63,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X5B,0X20,0X47,0X49,0X46,0X56,0X20,0X5D,0XA,0X20,0X20,0X3C,0X2F,0X76,0X69,0X64,0X65,0X6F,0X3E,0XA,0X20,0X20,0X25,0X73,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct attachment_gifv_template {const char* src;
|
||||
const char* sensitive;
|
||||
};
|
||||
char* tmpl_gen_attachment_gifv(struct attachment_gifv_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_attachment_gifv, data->src?data->src:"", data->sensitive?data->sensitive:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
13
static/attachment_image.ctmpl
Normal file
13
static/attachment_image.ctmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
#ifndef __attachment_image
|
||||
#define __attachment_image
|
||||
static const char data_attachment_image[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X74,0X74,0X61,0X63,0X68,0X6D,0X65,0X6E,0X74,0X2D,0X63,0X6F,0X6E,0X74,0X61,0X69,0X6E,0X65,0X72,0X20,0X61,0X74,0X74,0X61,0X63,0X68,0X6D,0X65,0X6E,0X74,0X2D,0X69,0X6D,0X67,0X22,0X3E,0XA,0X20,0X20,0X3C,0X69,0X6D,0X67,0X20,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X35,0X36,0X22,0X20,0X73,0X72,0X63,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X25,0X73,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct attachment_image_template {const char* src;
|
||||
const char* sensitive;
|
||||
};
|
||||
char* tmpl_gen_attachment_image(struct attachment_image_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_attachment_image, data->src?data->src:"", data->sensitive?data->sensitive:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
13
static/attachment_link.ctmpl
Normal file
13
static/attachment_link.ctmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
#ifndef __attachment_link
|
||||
#define __attachment_link
|
||||
static const char data_attachment_link[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X74,0X74,0X61,0X63,0X68,0X6D,0X65,0X6E,0X74,0X2D,0X63,0X6F,0X6E,0X74,0X61,0X69,0X6E,0X65,0X72,0X20,0X61,0X74,0X74,0X61,0X63,0X68,0X6D,0X65,0X6E,0X74,0X2D,0X6C,0X69,0X6E,0X6B,0X20,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X3C,0X61,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X22,0X3E,0X41,0X74,0X74,0X61,0X63,0X68,0X6D,0X65,0X6E,0X74,0X3C,0X2F,0X61,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct attachment_link_template {const char* sensitive;
|
||||
const char* url;
|
||||
};
|
||||
char* tmpl_gen_attachment_link(struct attachment_link_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_attachment_link, data->sensitive?data->sensitive:"", data->url?data->url:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
13
static/attachment_video.ctmpl
Normal file
13
static/attachment_video.ctmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
#ifndef __attachment_video
|
||||
#define __attachment_video
|
||||
static const char data_attachment_video[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X74,0X74,0X61,0X63,0X68,0X6D,0X65,0X6E,0X74,0X2D,0X63,0X6F,0X6E,0X74,0X61,0X69,0X6E,0X65,0X72,0X20,0X61,0X74,0X74,0X61,0X63,0X68,0X6D,0X65,0X6E,0X74,0X2D,0X76,0X69,0X64,0X65,0X6F,0X22,0X3E,0XA,0X20,0X20,0X3C,0X76,0X69,0X64,0X65,0X6F,0X20,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X35,0X36,0X22,0X20,0X63,0X6F,0X6E,0X74,0X72,0X6F,0X6C,0X73,0X20,0X70,0X72,0X65,0X6C,0X6F,0X61,0X64,0X3D,0X22,0X6D,0X65,0X74,0X61,0X64,0X61,0X74,0X61,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X73,0X6F,0X75,0X72,0X63,0X65,0X20,0X73,0X72,0X63,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X5B,0X20,0X56,0X49,0X44,0X45,0X4F,0X20,0X5D,0XA,0X20,0X20,0X3C,0X2F,0X76,0X69,0X64,0X65,0X6F,0X3E,0XA,0X20,0X20,0X25,0X73,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct attachment_video_template {const char* src;
|
||||
const char* sensitive;
|
||||
};
|
||||
char* tmpl_gen_attachment_video(struct attachment_video_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_attachment_video, data->src?data->src:"", data->sensitive?data->sensitive:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
12
static/attachments.ctmpl
Normal file
12
static/attachments.ctmpl
Normal file
|
@ -0,0 +1,12 @@
|
|||
#ifndef __attachments
|
||||
#define __attachments
|
||||
static const char data_attachments[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X74,0X74,0X61,0X63,0X68,0X6D,0X65,0X6E,0X74,0X73,0X22,0X3E,0XA,0X20,0X20,0X25,0X73,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct attachments_template {const char* attachments;
|
||||
};
|
||||
char* tmpl_gen_attachments(struct attachments_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_attachments, data->attachments?data->attachments:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
3
static/attachments.tmpl
Normal file
3
static/attachments.tmpl
Normal file
|
@ -0,0 +1,3 @@
|
|||
<div class="attachments">
|
||||
{{%s:attachments}}
|
||||
</div>
|
12
static/bar.ctmpl
Normal file
12
static/bar.ctmpl
Normal file
|
@ -0,0 +1,12 @@
|
|||
#ifndef __bar
|
||||
#define __bar
|
||||
static const char data_bar[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X61,0X72,0X22,0X3E,0XA,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X73,0X74,0X79,0X6C,0X65,0X3D,0X22,0X6D,0X61,0X78,0X2D,0X68,0X65,0X69,0X67,0X68,0X74,0X3A,0X20,0X25,0X66,0X25,0X25,0X3B,0X22,0X3E,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct bar_template {float value;
|
||||
};
|
||||
char* tmpl_gen_bar(struct bar_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_bar, data->value);
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
3
static/bar.tmpl
Normal file
3
static/bar.tmpl
Normal file
|
@ -0,0 +1,3 @@
|
|||
<div class="bar">
|
||||
<div style="max-height: {{%f:value}}%%;"></div>
|
||||
</div>
|
12
static/bar_graph.ctmpl
Normal file
12
static/bar_graph.ctmpl
Normal file
|
@ -0,0 +1,12 @@
|
|||
#ifndef __bar_graph
|
||||
#define __bar_graph
|
||||
static const char data_bar_graph[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X61,0X72,0X2D,0X67,0X72,0X61,0X70,0X68,0X22,0X3E,0XA,0X20,0X20,0X25,0X73,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct bar_graph_template {const char* graph;
|
||||
};
|
||||
char* tmpl_gen_bar_graph(struct bar_graph_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_bar_graph, data->graph?data->graph:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
3
static/bar_graph.tmpl
Normal file
3
static/bar_graph.tmpl
Normal file
|
@ -0,0 +1,3 @@
|
|||
<div class="bar-graph">
|
||||
{{%s:graph}}
|
||||
</div>
|
13
static/bookmarks_page.ctmpl
Normal file
13
static/bookmarks_page.ctmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
#ifndef __bookmarks_page
|
||||
#define __bookmarks_page
|
||||
static const char data_bookmarks_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,0X42,0X6F,0X6F,0X6B,0X6D,0X61,0X72,0X6B,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,0X62,0X6F,0X6F,0X6B,0X6D,0X61,0X72,0X6B,0X73,0X2D,0X63,0X6F,0X6E,0X74,0X61,0X69,0X6E,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X25,0X73,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X25,0X73,0};
|
||||
struct bookmarks_page_template {const char* statuses;
|
||||
const char* navigation;
|
||||
};
|
||||
char* tmpl_gen_bookmarks_page(struct bookmarks_page_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_bookmarks_page, data->statuses?data->statuses:"", data->navigation?data->navigation:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
7
static/bookmarks_page.tmpl
Normal file
7
static/bookmarks_page.tmpl
Normal file
|
@ -0,0 +1,7 @@
|
|||
<div class="simple-page">
|
||||
<h1>Bookmarks</h1>
|
||||
</div>
|
||||
<div class="bookmarks-container">
|
||||
{{%s:statuses}}
|
||||
</div>
|
||||
{{%s:navigation}}
|
5
static/config_appearance.ctmpl
Normal file
5
static/config_appearance.ctmpl
Normal file
File diff suppressed because one or more lines are too long
24
static/config_general.ctmpl
Normal file
24
static/config_general.ctmpl
Normal file
File diff suppressed because one or more lines are too long
17
static/config_sidebar.ctmpl
Normal file
17
static/config_sidebar.ctmpl
Normal file
|
@ -0,0 +1,17 @@
|
|||
#ifndef __config_sidebar
|
||||
#define __config_sidebar
|
||||
static const char data_config_sidebar[] = {0X3C,0X75,0X6C,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X69,0X64,0X65,0X62,0X61,0X72,0X2D,0X63,0X6F,0X6E,0X66,0X69,0X67,0X22,0X3E,0XA,0X20,0X20,0X3C,0X6C,0X69,0X3E,0X3C,0X61,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X69,0X64,0X65,0X62,0X61,0X72,0X62,0X74,0X6E,0X2D,0X73,0X75,0X62,0X20,0X25,0X73,0X22,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X63,0X6F,0X6E,0X66,0X69,0X67,0X2F,0X67,0X65,0X6E,0X65,0X72,0X61,0X6C,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X61,0X3E,0X3C,0X2F,0X6C,0X69,0X3E,0XA,0X20,0X20,0X3C,0X6C,0X69,0X3E,0X3C,0X61,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X69,0X64,0X65,0X62,0X61,0X72,0X62,0X74,0X6E,0X2D,0X73,0X75,0X62,0X20,0X25,0X73,0X22,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X63,0X6F,0X6E,0X66,0X69,0X67,0X2F,0X61,0X70,0X70,0X65,0X61,0X72,0X61,0X6E,0X63,0X65,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X61,0X3E,0X3C,0X2F,0X6C,0X69,0X3E,0XA,0X20,0X20,0X3C,0X6C,0X69,0X3E,0X3C,0X61,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X69,0X64,0X65,0X62,0X61,0X72,0X62,0X74,0X6E,0X2D,0X73,0X75,0X62,0X20,0X25,0X73,0X22,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X63,0X6F,0X6E,0X66,0X69,0X67,0X2F,0X61,0X63,0X63,0X6F,0X75,0X6E,0X74,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X61,0X3E,0X3C,0X2F,0X6C,0X69,0X3E,0XA,0X3C,0X2F,0X75,0X6C,0X3E,0};
|
||||
struct config_sidebar_template {const char* general_active;
|
||||
const char* general;
|
||||
const char* appearance_active;
|
||||
const char* appearance;
|
||||
const char* account_active;
|
||||
const char* account;
|
||||
};
|
||||
char* tmpl_gen_config_sidebar(struct config_sidebar_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_config_sidebar, data->general_active?data->general_active:"", data->general?data->general:"", data->appearance_active?data->appearance_active:"", data->appearance?data->appearance:"", data->account_active?data->account_active:"", data->account?data->account:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
5
static/config_sidebar.tmpl
Normal file
5
static/config_sidebar.tmpl
Normal file
|
@ -0,0 +1,5 @@
|
|||
<ul class="sidebar-config">
|
||||
<li><a class="sidebarbtn-sub {{%s:general_active}}" href="%s/config/general">{{%s:general}}</a></li>
|
||||
<li><a class="sidebarbtn-sub {{%s:appearance_active}}" href="%s/config/appearance">{{%s:appearance}}</a></li>
|
||||
<li><a class="sidebarbtn-sub {{%s:account_active}}" href="%s/config/account">{{%s:account}}</a></li>
|
||||
</ul>
|
13
static/emoji.ctmpl
Normal file
13
static/emoji.ctmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
#ifndef __emoji
|
||||
#define __emoji
|
||||
static const char data_emoji[] = {0X3C,0X61,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X2F,0X73,0X74,0X61,0X74,0X75,0X73,0X2F,0X25,0X73,0X2F,0X72,0X65,0X61,0X63,0X74,0X2F,0X25,0X73,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X65,0X6D,0X6F,0X6A,0X69,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X61,0X3E,0};
|
||||
struct emoji_template {const char* status_id;
|
||||
const char* emoji;
|
||||
};
|
||||
char* tmpl_gen_emoji(struct emoji_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_emoji, data->status_id?data->status_id:"", data->emoji?data->emoji:"", data->emoji?data->emoji:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
1
static/emoji.tmpl
Normal file
1
static/emoji.tmpl
Normal file
|
@ -0,0 +1 @@
|
|||
<a href="/status/{{%s:status_id}}/react/{{%s:emoji}}" class="emoji">{{%s:emoji}}</a>
|
31
static/emoji_picker.ctmpl
Normal file
31
static/emoji_picker.ctmpl
Normal file
File diff suppressed because one or more lines are too long
16
static/emoji_reaction.ctmpl
Normal file
16
static/emoji_reaction.ctmpl
Normal file
|
@ -0,0 +1,16 @@
|
|||
#ifndef __emoji_reaction
|
||||
#define __emoji_reaction
|
||||
static const char data_emoji_reaction[] = {0X3C,0X61,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X73,0X74,0X61,0X74,0X75,0X73,0X2F,0X25,0X73,0X2F,0X72,0X65,0X61,0X63,0X74,0X2F,0X25,0X73,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X65,0X6D,0X6F,0X6A,0X69,0X2D,0X72,0X65,0X61,0X63,0X74,0X2D,0X62,0X6F,0X78,0X20,0X62,0X74,0X6E,0X20,0X62,0X74,0X6E,0X2D,0X61,0X6C,0X74,0X20,0X25,0X73,0X22,0X3E,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X65,0X6D,0X6F,0X6A,0X69,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X65,0X6D,0X6F,0X6A,0X69,0X2D,0X6E,0X75,0X6D,0X22,0X3E,0X25,0X75,0X3C,0X73,0X70,0X61,0X6E,0X3E,0X3C,0X2F,0X61,0X3E,0};
|
||||
struct emoji_reaction_template {const char* prefix;
|
||||
const char* status_id;
|
||||
const char* emoji;
|
||||
const char* emoji_active;
|
||||
unsigned emoji_count;
|
||||
};
|
||||
char* tmpl_gen_emoji_reaction(struct emoji_reaction_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_emoji_reaction, data->prefix?data->prefix:"", data->status_id?data->status_id:"", data->emoji?data->emoji:"", data->emoji_active?data->emoji_active:"", data->emoji?data->emoji:"", data->emoji_count);
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
12
static/emoji_reactions.ctmpl
Normal file
12
static/emoji_reactions.ctmpl
Normal file
|
@ -0,0 +1,12 @@
|
|||
#ifndef __emoji_reactions
|
||||
#define __emoji_reactions
|
||||
static const char data_emoji_reactions[] = {0X3C,0X75,0X6C,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X65,0X6D,0X6F,0X6A,0X69,0X2D,0X72,0X65,0X61,0X63,0X74,0X69,0X6F,0X6E,0X73,0X22,0X3E,0XA,0X20,0X20,0X25,0X73,0XA,0X3C,0X2F,0X75,0X6C,0X3E,0};
|
||||
struct emoji_reactions_template {const char* emojis;
|
||||
};
|
||||
char* tmpl_gen_emoji_reactions(struct emoji_reactions_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_emoji_reactions, data->emojis?data->emojis:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
3
static/emoji_reactions.tmpl
Normal file
3
static/emoji_reactions.tmpl
Normal file
|
@ -0,0 +1,3 @@
|
|||
<ul class="emoji-reactions">
|
||||
{{%s:emojis}}
|
||||
</ul>
|
14
static/error.ctmpl
Normal file
14
static/error.ctmpl
Normal file
|
@ -0,0 +1,14 @@
|
|||
#ifndef __error
|
||||
#define __error
|
||||
static const char data_error[] = {0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X65,0X2D,0X25,0X73,0X20,0X25,0X73,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0};
|
||||
struct error_template {const char* err_type;
|
||||
const char* is_padded;
|
||||
const char* error;
|
||||
};
|
||||
char* tmpl_gen_error(struct error_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_error, data->err_type?data->err_type:"", data->is_padded?data->is_padded:"", data->error?data->error:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
1
static/error.tmpl
Normal file
1
static/error.tmpl
Normal file
|
@ -0,0 +1 @@
|
|||
<span class="e-{{%s:err_type}} {{%s:is_padded}}">{{%s:error}}</span>
|
12
static/error_404.ctmpl
Normal file
12
static/error_404.ctmpl
Normal file
|
@ -0,0 +1,12 @@
|
|||
#ifndef __error_404
|
||||
#define __error_404
|
||||
static const char data_error_404[] = {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,0X34,0X30,0X34,0X3C,0X2F,0X68,0X31,0X3E,0XA,0X20,0X20,0X3C,0X70,0X3E,0X25,0X73,0X3C,0X2F,0X70,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct error_404_template {const char* error;
|
||||
};
|
||||
char* tmpl_gen_error_404(struct error_404_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_error_404, data->error?data->error:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
4
static/error_404.tmpl
Normal file
4
static/error_404.tmpl
Normal file
|
@ -0,0 +1,4 @@
|
|||
<div class="simple-page">
|
||||
<h1>404</h1>
|
||||
<p>{{%s:error}}</p>
|
||||
</div>
|
13
static/favourites_page.ctmpl
Normal file
13
static/favourites_page.ctmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
#ifndef __favourites_page
|
||||
#define __favourites_page
|
||||
static const char data_favourites_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,0X46,0X61,0X76,0X6F,0X72,0X69,0X74,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,0X66,0X61,0X76,0X6F,0X75,0X72,0X69,0X74,0X65,0X73,0X2D,0X63,0X6F,0X6E,0X74,0X61,0X69,0X6E,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X25,0X73,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X25,0X73,0};
|
||||
struct favourites_page_template {const char* statuses;
|
||||
const char* navigation;
|
||||
};
|
||||
char* tmpl_gen_favourites_page(struct favourites_page_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_favourites_page, data->statuses?data->statuses:"", data->navigation?data->navigation:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
7
static/favourites_page.tmpl
Normal file
7
static/favourites_page.tmpl
Normal file
|
@ -0,0 +1,7 @@
|
|||
<div class="simple-page">
|
||||
<h1>Favorites</h1>
|
||||
</div>
|
||||
<div class="favourites-container">
|
||||
{{%s:statuses}}
|
||||
</div>
|
||||
{{%s:navigation}}
|
5
static/follow_svg.ctmpl
Normal file
5
static/follow_svg.ctmpl
Normal file
|
@ -0,0 +1,5 @@
|
|||
#ifndef __follow_svg
|
||||
#define __follow_svg
|
||||
static const char data_follow_svg[] = {0X3C,0X73,0X76,0X67,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X66,0X6F,0X6C,0X6C,0X6F,0X77,0X22,0X20,0X78,0X6D,0X6C,0X6E,0X73,0X3D,0X22,0X68,0X74,0X74,0X70,0X3A,0X2F,0X2F,0X77,0X77,0X77,0X2E,0X77,0X33,0X2E,0X6F,0X72,0X67,0X2F,0X32,0X30,0X30,0X30,0X2F,0X73,0X76,0X67,0X22,0X20,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X30,0X22,0X20,0X68,0X65,0X69,0X67,0X68,0X74,0X3D,0X22,0X32,0X30,0X22,0X20,0X76,0X69,0X65,0X77,0X42,0X6F,0X78,0X3D,0X22,0X30,0X20,0X30,0X20,0X32,0X34,0X20,0X32,0X34,0X22,0X20,0X66,0X69,0X6C,0X6C,0X3D,0X22,0X6E,0X6F,0X6E,0X65,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X3D,0X22,0X23,0X30,0X30,0X30,0X30,0X30,0X30,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X6C,0X69,0X6E,0X65,0X63,0X61,0X70,0X3D,0X22,0X72,0X6F,0X75,0X6E,0X64,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X6C,0X69,0X6E,0X65,0X6A,0X6F,0X69,0X6E,0X3D,0X22,0X72,0X6F,0X75,0X6E,0X64,0X22,0X3E,0X3C,0X70,0X61,0X74,0X68,0X20,0X64,0X3D,0X22,0X4D,0X31,0X36,0X20,0X32,0X31,0X76,0X2D,0X32,0X61,0X34,0X20,0X34,0X20,0X30,0X20,0X30,0X20,0X30,0X2D,0X34,0X2D,0X34,0X48,0X35,0X61,0X34,0X20,0X34,0X20,0X30,0X20,0X30,0X20,0X30,0X2D,0X34,0X20,0X34,0X76,0X32,0X22,0X3E,0X3C,0X2F,0X70,0X61,0X74,0X68,0X3E,0X3C,0X63,0X69,0X72,0X63,0X6C,0X65,0X20,0X63,0X78,0X3D,0X22,0X38,0X2E,0X35,0X22,0X20,0X63,0X79,0X3D,0X22,0X37,0X22,0X20,0X72,0X3D,0X22,0X34,0X22,0X3E,0X3C,0X2F,0X63,0X69,0X72,0X63,0X6C,0X65,0X3E,0X3C,0X6C,0X69,0X6E,0X65,0X20,0X78,0X31,0X3D,0X22,0X32,0X30,0X22,0X20,0X79,0X31,0X3D,0X22,0X38,0X22,0X20,0X78,0X32,0X3D,0X22,0X32,0X30,0X22,0X20,0X79,0X32,0X3D,0X22,0X31,0X34,0X22,0X3E,0X3C,0X2F,0X6C,0X69,0X6E,0X65,0X3E,0X3C,0X6C,0X69,0X6E,0X65,0X20,0X78,0X31,0X3D,0X22,0X32,0X33,0X22,0X20,0X79,0X31,0X3D,0X22,0X31,0X31,0X22,0X20,0X78,0X32,0X3D,0X22,0X31,0X37,0X22,0X20,0X79,0X32,0X3D,0X22,0X31,0X31,0X22,0X3E,0X3C,0X2F,0X6C,0X69,0X6E,0X65,0X3E,0X3C,0X2F,0X73,0X76,0X67,0X3E,0};
|
||||
|
||||
#endif
|
1
static/follow_svg.tmpl
Normal file
1
static/follow_svg.tmpl
Normal file
|
@ -0,0 +1 @@
|
|||
<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>
|
After Width: | Height: | Size: 385 B |
13
static/hashtag.ctmpl
Normal file
13
static/hashtag.ctmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
#ifndef __hashtag
|
||||
#define __hashtag
|
||||
static const char data_hashtag[] = {0X3C,0X61,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X74,0X61,0X67,0X2F,0X25,0X73,0X22,0X20,0X73,0X74,0X79,0X6C,0X65,0X3D,0X22,0X66,0X6F,0X6E,0X74,0X2D,0X73,0X69,0X7A,0X65,0X3A,0X20,0X25,0X75,0X70,0X78,0X3B,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X68,0X61,0X73,0X68,0X74,0X61,0X67,0X2D,0X69,0X74,0X65,0X6D,0X22,0X3E,0X23,0X25,0X73,0X3C,0X2F,0X61,0X3E,0};
|
||||
struct hashtag_template {const char* prefix;
|
||||
const char* tag;
|
||||
};
|
||||
char* tmpl_gen_hashtag(struct hashtag_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_hashtag, data->prefix?data->prefix:"", data->tag?data->tag:"", data->tag?data->tag:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
1
static/hashtag.tmpl
Normal file
1
static/hashtag.tmpl
Normal file
|
@ -0,0 +1 @@
|
|||
<a href="{{%s:prefix}}/tag/{{%s:tag}}" style="font-size: %upx;" class="hashtag-item">#{{%s:tag}}</a>
|
15
static/hashtag_page.ctmpl
Normal file
15
static/hashtag_page.ctmpl
Normal file
|
@ -0,0 +1,15 @@
|
|||
#ifndef __hashtag_page
|
||||
#define __hashtag_page
|
||||
static const char data_hashtag_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,0X48,0X61,0X73,0X68,0X74,0X61,0X67,0X20,0X2D,0X20,0X23,0X25,0X73,0X3C,0X2F,0X68,0X31,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X25,0X73,0XA,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X68,0X61,0X73,0X68,0X74,0X61,0X67,0X73,0X2D,0X63,0X6F,0X6E,0X74,0X61,0X69,0X6E,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X25,0X73,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X25,0X73,0};
|
||||
struct hashtag_page_template {const char* tag;
|
||||
const char* tag_statistics;
|
||||
const char* statuses;
|
||||
const char* navigation;
|
||||
};
|
||||
char* tmpl_gen_hashtag_page(struct hashtag_page_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_hashtag_page, data->tag?data->tag:"", data->tag_statistics?data->tag_statistics:"", data->statuses?data->statuses:"", data->navigation?data->navigation:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
8
static/hashtag_page.tmpl
Normal file
8
static/hashtag_page.tmpl
Normal file
|
@ -0,0 +1,8 @@
|
|||
<div class="simple-page">
|
||||
<h1>Hashtag - #{{%s:tag}}</h1>
|
||||
</div>
|
||||
{{%s:tag_statistics}}
|
||||
<div class="hashtags-container">
|
||||
{{%s:statuses}}
|
||||
</div>
|
||||
{{%s:navigation}}
|
15
static/in_reply_to.ctmpl
Normal file
15
static/in_reply_to.ctmpl
Normal file
|
@ -0,0 +1,15 @@
|
|||
#ifndef __in_reply_to
|
||||
#define __in_reply_to
|
||||
static const char data_in_reply_to[] = {0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X69,0X6E,0X2D,0X72,0X65,0X70,0X6C,0X79,0X2D,0X74,0X6F,0X22,0X3E,0XA,0X20,0X20,0X3C,0X73,0X76,0X67,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X69,0X6E,0X2D,0X72,0X65,0X70,0X6C,0X79,0X2D,0X74,0X6F,0X2D,0X69,0X63,0X6F,0X6E,0X22,0X20,0X78,0X6D,0X6C,0X6E,0X73,0X3D,0X22,0X68,0X74,0X74,0X70,0X3A,0X2F,0X2F,0X77,0X77,0X77,0X2E,0X77,0X33,0X2E,0X6F,0X72,0X67,0X2F,0X32,0X30,0X30,0X30,0X2F,0X73,0X76,0X67,0X22,0X20,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X30,0X22,0X20,0X68,0X65,0X69,0X67,0X68,0X74,0X3D,0X22,0X32,0X30,0X22,0X20,0X76,0X69,0X65,0X77,0X42,0X6F,0X78,0X3D,0X22,0X30,0X20,0X30,0X20,0X32,0X34,0X20,0X32,0X34,0X22,0X20,0X66,0X69,0X6C,0X6C,0X3D,0X22,0X6E,0X6F,0X6E,0X65,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X3D,0X22,0X23,0X30,0X30,0X30,0X30,0X30,0X30,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X6C,0X69,0X6E,0X65,0X63,0X61,0X70,0X3D,0X22,0X72,0X6F,0X75,0X6E,0X64,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X6C,0X69,0X6E,0X65,0X6A,0X6F,0X69,0X6E,0X3D,0X22,0X72,0X6F,0X75,0X6E,0X64,0X22,0X3E,0X3C,0X70,0X61,0X74,0X68,0X20,0X64,0X3D,0X22,0X4D,0X31,0X34,0X20,0X39,0X6C,0X36,0X20,0X36,0X2D,0X36,0X20,0X36,0X22,0X2F,0X3E,0X3C,0X70,0X61,0X74,0X68,0X20,0X64,0X3D,0X22,0X4D,0X34,0X20,0X34,0X76,0X37,0X61,0X34,0X20,0X34,0X20,0X30,0X20,0X30,0X20,0X30,0X20,0X34,0X20,0X34,0X68,0X31,0X31,0X22,0X2F,0X3E,0X3C,0X2F,0X73,0X76,0X67,0X3E,0X20,0X3C,0X61,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X69,0X6E,0X2D,0X72,0X65,0X70,0X6C,0X79,0X2D,0X74,0X6F,0X2D,0X69,0X64,0X22,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X73,0X74,0X61,0X74,0X75,0X73,0X2F,0X25,0X73,0X23,0X25,0X73,0X22,0X3E,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X69,0X6E,0X2D,0X72,0X65,0X70,0X6C,0X79,0X2D,0X74,0X6F,0X2D,0X74,0X65,0X78,0X74,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X63,0X74,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0X3C,0X2F,0X61,0X3E,0XA,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0};
|
||||
struct in_reply_to_template {const char* prefix;
|
||||
const char* status_id;
|
||||
const char* in_reply_to_text;
|
||||
const char* acct;
|
||||
};
|
||||
char* tmpl_gen_in_reply_to(struct in_reply_to_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_in_reply_to, data->prefix?data->prefix:"", data->status_id?data->status_id:"", data->status_id?data->status_id:"", data->in_reply_to_text?data->in_reply_to_text:"", data->acct?data->acct:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
3
static/in_reply_to.tmpl
Normal file
3
static/in_reply_to.tmpl
Normal file
|
@ -0,0 +1,3 @@
|
|||
<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:prefix}}/status/{{%s:status_id}}#{{%s:status_id}}"> <span class="in-reply-to-text">{{%s:in_reply_to_text}}</span> <span class="acct">{{%s:acct}}</span></a>
|
||||
</span>
|
42
static/index.ctmpl
Normal file
42
static/index.ctmpl
Normal file
File diff suppressed because one or more lines are too long
63
static/index.tmpl
Normal file
63
static/index.tmpl
Normal file
|
@ -0,0 +1,63 @@
|
|||
<!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>
|
5
static/instance.ctmpl
Normal file
5
static/instance.ctmpl
Normal file
|
@ -0,0 +1,5 @@
|
|||
#ifndef __instance
|
||||
#define __instance
|
||||
static const char data_instance[] = {0X49,0X6E,0X73,0X74,0X61,0X6E,0X63,0X65,0X20,0X69,0X6E,0X66,0X6F,0X72,0X6D,0X61,0X74,0X69,0X6F,0X6E,0};
|
||||
|
||||
#endif
|
|
@ -8,7 +8,7 @@ const char* unrepeat;
|
|||
const char* repeat_active;
|
||||
const char* repeats_count;
|
||||
const char* repeat_text;
|
||||
const char* favourite;
|
||||
const char* unfavourite;
|
||||
const char* favourite_active;
|
||||
const char* favourites_count;
|
||||
const char* favourites_text;
|
||||
|
@ -18,7 +18,7 @@ const char* rel_time;
|
|||
};
|
||||
char* tmpl_gen_interaction_buttons(struct interaction_buttons_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_interaction_buttons, data->prefix?data->prefix:"", data->status_id?data->status_id:"", data->status_id?data->status_id:"", data->reply_count?data->reply_count:"", data->prefix?data->prefix:"", data->status_id?data->status_id:"", data->unrepeat?data->unrepeat:"", data->repeat_active?data->repeat_active:"", data->repeats_count?data->repeats_count:"", data->repeat_text?data->repeat_text:"", data->prefix?data->prefix:"", data->status_id?data->status_id:"", data->favourite?data->favourite:"", data->favourite_active?data->favourite_active:"", data->favourites_count?data->favourites_count:"", data->favourites_text?data->favourites_text:"", data->likeboost_btn?data->likeboost_btn:"", data->reactions_btn?data->reactions_btn:"", data->prefix?data->prefix:"", data->status_id?data->status_id:"", data->status_id?data->status_id:"", data->rel_time?data->rel_time:"");
|
||||
unsigned s = easprintf(&ret, data_interaction_buttons, data->prefix?data->prefix:"", data->status_id?data->status_id:"", data->status_id?data->status_id:"", data->reply_count?data->reply_count:"", data->prefix?data->prefix:"", data->status_id?data->status_id:"", data->unrepeat?data->unrepeat:"", data->repeat_active?data->repeat_active:"", data->repeats_count?data->repeats_count:"", data->repeat_text?data->repeat_text:"", data->prefix?data->prefix:"", data->status_id?data->status_id:"", data->unfavourite?data->unfavourite:"", data->favourite_active?data->favourite_active:"", data->favourites_count?data->favourites_count:"", data->favourites_text?data->favourites_text:"", data->likeboost_btn?data->likeboost_btn:"", data->reactions_btn?data->reactions_btn:"", data->prefix?data->prefix:"", data->status_id?data->status_id:"", data->status_id?data->status_id:"", data->rel_time?data->rel_time:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
|
|
5
static/like_svg.ctmpl
Normal file
5
static/like_svg.ctmpl
Normal file
|
@ -0,0 +1,5 @@
|
|||
#ifndef __like_svg
|
||||
#define __like_svg
|
||||
static const char data_like_svg[] = {0X3C,0X73,0X76,0X67,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6C,0X69,0X6B,0X65,0X22,0X20,0X78,0X6D,0X6C,0X6E,0X73,0X3D,0X22,0X68,0X74,0X74,0X70,0X3A,0X2F,0X2F,0X77,0X77,0X77,0X2E,0X77,0X33,0X2E,0X6F,0X72,0X67,0X2F,0X32,0X30,0X30,0X30,0X2F,0X73,0X76,0X67,0X22,0X20,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X30,0X22,0X20,0X68,0X65,0X69,0X67,0X68,0X74,0X3D,0X22,0X32,0X30,0X22,0X20,0X76,0X69,0X65,0X77,0X42,0X6F,0X78,0X3D,0X22,0X30,0X20,0X30,0X20,0X32,0X34,0X20,0X32,0X34,0X22,0X20,0X66,0X69,0X6C,0X6C,0X3D,0X22,0X6E,0X6F,0X6E,0X65,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X3D,0X22,0X23,0X30,0X30,0X30,0X30,0X30,0X30,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X6C,0X69,0X6E,0X65,0X63,0X61,0X70,0X3D,0X22,0X72,0X6F,0X75,0X6E,0X64,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X6C,0X69,0X6E,0X65,0X6A,0X6F,0X69,0X6E,0X3D,0X22,0X72,0X6F,0X75,0X6E,0X64,0X22,0X3E,0X3C,0X70,0X6F,0X6C,0X79,0X67,0X6F,0X6E,0X20,0X70,0X6F,0X69,0X6E,0X74,0X73,0X3D,0X22,0X31,0X32,0X20,0X32,0X20,0X31,0X35,0X2E,0X30,0X39,0X20,0X38,0X2E,0X32,0X36,0X20,0X32,0X32,0X20,0X39,0X2E,0X32,0X37,0X20,0X31,0X37,0X20,0X31,0X34,0X2E,0X31,0X34,0X20,0X31,0X38,0X2E,0X31,0X38,0X20,0X32,0X31,0X2E,0X30,0X32,0X20,0X31,0X32,0X20,0X31,0X37,0X2E,0X37,0X37,0X20,0X35,0X2E,0X38,0X32,0X20,0X32,0X31,0X2E,0X30,0X32,0X20,0X37,0X20,0X31,0X34,0X2E,0X31,0X34,0X20,0X32,0X20,0X39,0X2E,0X32,0X37,0X20,0X38,0X2E,0X39,0X31,0X20,0X38,0X2E,0X32,0X36,0X20,0X31,0X32,0X20,0X32,0X22,0X3E,0X3C,0X2F,0X70,0X6F,0X6C,0X79,0X67,0X6F,0X6E,0X3E,0X3C,0X2F,0X73,0X76,0X67,0X3E,0};
|
||||
|
||||
#endif
|
1
static/like_svg.tmpl
Normal file
1
static/like_svg.tmpl
Normal file
|
@ -0,0 +1 @@
|
|||
<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>
|
After Width: | Height: | Size: 319 B |
13
static/likeboost.ctmpl
Normal file
13
static/likeboost.ctmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
#ifndef __likeboost
|
||||
#define __likeboost
|
||||
static const char data_likeboost[] = {0X3C,0X74,0X64,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,0X6C,0X69,0X6B,0X65,0X62,0X6F,0X6F,0X73,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X6C,0X61,0X62,0X65,0X6C,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X70,0X6F,0X69,0X6E,0X74,0X65,0X72,0X20,0X73,0X74,0X61,0X74,0X62,0X74,0X6E,0X20,0X6C,0X69,0X6B,0X65,0X62,0X6F,0X6F,0X73,0X74,0X2D,0X62,0X74,0X6E,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X76,0X67,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6F,0X6E,0X65,0X2D,0X63,0X6C,0X69,0X63,0X6B,0X2D,0X73,0X6F,0X66,0X74,0X77,0X61,0X72,0X65,0X22,0X20,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X30,0X22,0X20,0X68,0X65,0X69,0X67,0X68,0X74,0X3D,0X22,0X32,0X30,0X22,0X20,0X66,0X69,0X6C,0X6C,0X3D,0X22,0X6E,0X6F,0X6E,0X65,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X3D,0X22,0X23,0X30,0X30,0X30,0X30,0X30,0X30,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X6C,0X69,0X6E,0X65,0X63,0X61,0X70,0X3D,0X22,0X72,0X6F,0X75,0X6E,0X64,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X6C,0X69,0X6E,0X65,0X6A,0X6F,0X69,0X6E,0X3D,0X22,0X72,0X6F,0X75,0X6E,0X64,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X22,0X20,0X76,0X65,0X72,0X73,0X69,0X6F,0X6E,0X3D,0X22,0X31,0X2E,0X31,0X22,0X20,0X76,0X69,0X65,0X77,0X42,0X6F,0X78,0X3D,0X22,0X30,0X20,0X30,0X20,0X32,0X34,0X20,0X32,0X34,0X22,0X20,0X78,0X6D,0X6C,0X6E,0X73,0X3D,0X22,0X68,0X74,0X74,0X70,0X3A,0X2F,0X2F,0X77,0X77,0X77,0X2E,0X77,0X33,0X2E,0X6F,0X72,0X67,0X2F,0X32,0X30,0X30,0X30,0X2F,0X73,0X76,0X67,0X22,0X3E,0X3C,0X67,0X3E,0X3C,0X67,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X31,0X2E,0X39,0X38,0X22,0X3E,0X3C,0X70,0X61,0X74,0X68,0X20,0X64,0X3D,0X22,0X6D,0X31,0X39,0X2E,0X31,0X35,0X20,0X38,0X2E,0X35,0X30,0X36,0X31,0X20,0X32,0X2E,0X37,0X35,0X39,0X38,0X20,0X32,0X2E,0X37,0X35,0X39,0X38,0X2D,0X32,0X2E,0X37,0X35,0X39,0X38,0X20,0X32,0X2E,0X37,0X35,0X39,0X38,0X22,0X2F,0X3E,0X3C,0X70,0X61,0X74,0X68,0X20,0X64,0X3D,0X22,0X6D,0X31,0X34,0X2E,0X37,0X35,0X36,0X20,0X31,0X31,0X2E,0X33,0X32,0X35,0X73,0X32,0X2E,0X35,0X34,0X38,0X34,0X2D,0X30,0X2E,0X30,0X35,0X30,0X33,0X32,0X20,0X36,0X2E,0X33,0X32,0X35,0X38,0X20,0X30,0X2E,0X30,0X31,0X30,0X32,0X36,0X6D,0X2D,0X31,0X35,0X2E,0X36,0X33,0X39,0X20,0X31,0X30,0X2E,0X38,0X30,0X37,0X2D,0X32,0X2E,0X37,0X35,0X39,0X38,0X2D,0X32,0X2E,0X37,0X35,0X39,0X38,0X20,0X32,0X2E,0X37,0X35,0X39,0X38,0X2D,0X32,0X2E,0X37,0X35,0X39,0X38,0X22,0X2F,0X3E,0X3C,0X70,0X61,0X74,0X68,0X20,0X64,0X3D,0X22,0X6D,0X32,0X32,0X2E,0X34,0X20,0X31,0X35,0X2E,0X33,0X32,0X37,0X76,0X31,0X2E,0X32,0X32,0X35,0X39,0X63,0X30,0X20,0X31,0X2E,0X31,0X35,0X36,0X2D,0X31,0X2E,0X32,0X33,0X35,0X36,0X20,0X32,0X2E,0X37,0X35,0X39,0X38,0X2D,0X32,0X2E,0X37,0X35,0X39,0X38,0X20,0X32,0X2E,0X37,0X35,0X39,0X38,0X68,0X2D,0X31,0X36,0X2E,0X36,0X36,0X34,0X22,0X2F,0X3E,0X3C,0X2F,0X67,0X3E,0X3C,0X70,0X6F,0X6C,0X79,0X67,0X6F,0X6E,0X20,0X74,0X72,0X61,0X6E,0X73,0X66,0X6F,0X72,0X6D,0X3D,0X22,0X6D,0X61,0X74,0X72,0X69,0X78,0X28,0X2E,0X36,0X30,0X37,0X33,0X36,0X20,0X30,0X20,0X30,0X20,0X2E,0X36,0X30,0X37,0X33,0X36,0X20,0X2E,0X36,0X30,0X31,0X30,0X36,0X20,0X2E,0X36,0X33,0X35,0X37,0X37,0X29,0X22,0X20,0X70,0X6F,0X69,0X6E,0X74,0X73,0X3D,0X22,0X31,0X38,0X2E,0X31,0X38,0X20,0X32,0X31,0X2E,0X30,0X32,0X20,0X31,0X32,0X20,0X31,0X37,0X2E,0X37,0X37,0X20,0X35,0X2E,0X38,0X32,0X20,0X32,0X31,0X2E,0X30,0X32,0X20,0X37,0X20,0X31,0X34,0X2E,0X31,0X34,0X20,0X32,0X20,0X39,0X2E,0X32,0X37,0X20,0X38,0X2E,0X39,0X31,0X20,0X38,0X2E,0X32,0X36,0X20,0X31,0X32,0X20,0X32,0X20,0X31,0X35,0X2E,0X30,0X39,0X20,0X38,0X2E,0X32,0X36,0X20,0X32,0X32,0X20,0X39,0X2E,0X32,0X37,0X20,0X31,0X37,0X20,0X31,0X34,0X2E,0X31,0X34,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X2E,0X39,0X36,0X35,0X36,0X22,0X2F,0X3E,0X3C,0X2F,0X67,0X3E,0X3C,0X2F,0X73,0X76,0X67,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X68,0X69,0X64,0X64,0X65,0X6E,0X22,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X73,0X75,0X62,0X6D,0X69,0X74,0X22,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X4C,0X2B,0X52,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X6C,0X61,0X62,0X65,0X6C,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X66,0X6F,0X72,0X6D,0X3E,0XA,0X3C,0X2F,0X74,0X64,0X3E,0};
|
||||
struct likeboost_template {const char* prefix;
|
||||
const char* status_id;
|
||||
};
|
||||
char* tmpl_gen_likeboost(struct likeboost_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_likeboost, data->prefix?data->prefix:"", data->status_id?data->status_id:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
14
static/list.ctmpl
Normal file
14
static/list.ctmpl
Normal file
|
@ -0,0 +1,14 @@
|
|||
#ifndef __list
|
||||
#define __list
|
||||
static const char data_list[] = {0X20,0X20,0X3C,0X6C,0X69,0X3E,0X3C,0X61,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X6C,0X69,0X73,0X74,0X73,0X2F,0X66,0X6F,0X72,0X2F,0X25,0X73,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X20,0X73,0X70,0X6C,0X69,0X74,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X61,0X3E,0X3C,0X2F,0X6C,0X69,0X3E,0};
|
||||
struct list_template {const char* prefix;
|
||||
const char* list_id;
|
||||
const char* list;
|
||||
};
|
||||
char* tmpl_gen_list(struct list_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_list, data->prefix?data->prefix:"", data->list_id?data->list_id:"", data->list?data->list:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
1
static/list.tmpl
Normal file
1
static/list.tmpl
Normal file
|
@ -0,0 +1 @@
|
|||
<li><a href="{{%s:prefix}}/lists/for/{{%s:list_id}}" class="btn split">{{%s:list}}</a></li>
|
13
static/lists.ctmpl
Normal file
13
static/lists.ctmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
#ifndef __lists
|
||||
#define __lists
|
||||
static const char data_lists[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6C,0X69,0X73,0X74,0X73,0X2D,0X76,0X69,0X65,0X77,0X22,0X3E,0XA,0X20,0X20,0X3C,0X68,0X31,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6C,0X69,0X73,0X74,0X73,0X2D,0X76,0X69,0X65,0X77,0X2D,0X68,0X65,0X61,0X64,0X65,0X72,0X22,0X3E,0X4C,0X69,0X73,0X74,0X73,0X3C,0X2F,0X68,0X31,0X3E,0XA,0XA,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6C,0X69,0X73,0X74,0X73,0X2D,0X76,0X69,0X65,0X77,0X2D,0X63,0X6F,0X6E,0X74,0X61,0X69,0X6E,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X75,0X6C,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6C,0X61,0X72,0X67,0X65,0X2D,0X6C,0X69,0X73,0X74,0X20,0X63,0X65,0X6E,0X74,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X25,0X73,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X75,0X6C,0X3E,0XA,0XA,0X20,0X20,0X20,0X20,0X3C,0X75,0X6C,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6C,0X61,0X72,0X67,0X65,0X2D,0X6C,0X69,0X73,0X74,0X20,0X63,0X65,0X6E,0X74,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X6C,0X69,0X3E,0X3C,0X61,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X6C,0X69,0X73,0X74,0X73,0X2F,0X63,0X72,0X65,0X61,0X74,0X65,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X20,0X73,0X70,0X6C,0X69,0X74,0X20,0X63,0X65,0X6E,0X74,0X65,0X72,0X2D,0X74,0X65,0X78,0X74,0X20,0X62,0X6F,0X6C,0X64,0X2D,0X74,0X65,0X78,0X74,0X22,0X3E,0X43,0X72,0X65,0X61,0X74,0X65,0X20,0X6E,0X65,0X77,0X20,0X6C,0X69,0X73,0X74,0X3C,0X2F,0X61,0X3E,0X3C,0X2F,0X6C,0X69,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X75,0X6C,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct lists_template {const char* lists;
|
||||
const char* prefix;
|
||||
};
|
||||
char* tmpl_gen_lists(struct lists_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_lists, data->lists?data->lists:"", data->prefix?data->prefix:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
13
static/lists.tmpl
Normal file
13
static/lists.tmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
<div class="lists-view">
|
||||
<h1 class="lists-view-header">Lists</h1>
|
||||
|
||||
<div class="lists-view-container">
|
||||
<ul class="large-list center">
|
||||
{{%s:lists}}
|
||||
</ul>
|
||||
|
||||
<ul class="large-list center">
|
||||
<li><a href="{{%s:prefix}}/lists/create" class="btn split center-text bold-text">Create new list</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
20
static/login.ctmpl
Normal file
20
static/login.ctmpl
Normal file
|
@ -0,0 +1,20 @@
|
|||
#ifndef __login
|
||||
#define __login
|
||||
static const char data_login[] = {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,0X25,0X73,0X3C,0X2F,0X68,0X31,0X3E,0XA,0X20,0X20,0XA,0X20,0X20,0X25,0X73,0XA,0XA,0X20,0X20,0X3C,0X66,0X6F,0X72,0X6D,0X20,0X61,0X63,0X74,0X69,0X6F,0X6E,0X3D,0X22,0X25,0X73,0X2F,0X6C,0X6F,0X67,0X69,0X6E,0X22,0X20,0X6D,0X65,0X74,0X68,0X6F,0X64,0X3D,0X22,0X70,0X6F,0X73,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X66,0X6F,0X72,0X6D,0X2D,0X67,0X72,0X6F,0X75,0X70,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X6C,0X61,0X62,0X65,0X6C,0X20,0X66,0X6F,0X72,0X3D,0X22,0X6C,0X6F,0X67,0X69,0X6E,0X2D,0X75,0X73,0X65,0X72,0X6E,0X61,0X6D,0X65,0X22,0X3E,0X25,0X73,0X3A,0X20,0X3C,0X2F,0X6C,0X61,0X62,0X65,0X6C,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X74,0X65,0X78,0X74,0X22,0X20,0X69,0X64,0X3D,0X22,0X6C,0X6F,0X67,0X69,0X6E,0X2D,0X75,0X73,0X65,0X72,0X6E,0X61,0X6D,0X65,0X22,0X20,0X6E,0X61,0X6D,0X65,0X3D,0X22,0X75,0X73,0X65,0X72,0X6E,0X61,0X6D,0X65,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X66,0X6F,0X72,0X6D,0X2D,0X67,0X72,0X6F,0X75,0X70,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X6C,0X61,0X62,0X65,0X6C,0X20,0X66,0X6F,0X72,0X3D,0X22,0X6C,0X6F,0X67,0X69,0X6E,0X2D,0X70,0X61,0X73,0X73,0X77,0X6F,0X72,0X64,0X22,0X3E,0X25,0X73,0X3A,0X20,0X3C,0X2F,0X6C,0X61,0X62,0X65,0X6C,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X70,0X61,0X73,0X73,0X77,0X6F,0X72,0X64,0X22,0X20,0X69,0X64,0X3D,0X22,0X6C,0X6F,0X67,0X69,0X6E,0X2D,0X70,0X61,0X73,0X73,0X77,0X6F,0X72,0X64,0X22,0X20,0X6E,0X61,0X6D,0X65,0X3D,0X22,0X70,0X61,0X73,0X73,0X77,0X6F,0X72,0X64,0X22,0X3E,0X3C,0X62,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X66,0X6F,0X72,0X6D,0X2D,0X67,0X72,0X6F,0X75,0X70,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X22,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X73,0X75,0X62,0X6D,0X69,0X74,0X22,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X66,0X6F,0X72,0X6D,0X3E,0XA,0XA,0X20,0X20,0X3C,0X68,0X36,0X3E,0X25,0X73,0X3C,0X2F,0X68,0X36,0X3E,0XA,0XA,0X20,0X20,0X3C,0X66,0X6F,0X72,0X6D,0X20,0X61,0X63,0X74,0X69,0X6F,0X6E,0X3D,0X22,0X25,0X73,0X2F,0X6C,0X6F,0X67,0X69,0X6E,0X2F,0X6F,0X61,0X75,0X74,0X68,0X22,0X20,0X6D,0X65,0X74,0X68,0X6F,0X64,0X3D,0X22,0X70,0X6F,0X73,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X66,0X6F,0X72,0X6D,0X2D,0X67,0X72,0X6F,0X75,0X70,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X6C,0X61,0X62,0X65,0X6C,0X20,0X66,0X6F,0X72,0X3D,0X22,0X69,0X6E,0X73,0X74,0X61,0X6E,0X63,0X65,0X2D,0X75,0X72,0X6C,0X22,0X3E,0X25,0X73,0X3A,0X20,0X3C,0X2F,0X6C,0X61,0X62,0X65,0X6C,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X75,0X72,0X6C,0X22,0X20,0X69,0X64,0X3D,0X22,0X69,0X6E,0X73,0X74,0X61,0X6E,0X63,0X65,0X2D,0X75,0X72,0X6C,0X22,0X20,0X6E,0X61,0X6D,0X65,0X3D,0X22,0X69,0X6E,0X73,0X74,0X61,0X6E,0X63,0X65,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X22,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X73,0X75,0X62,0X6D,0X69,0X74,0X22,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X66,0X6F,0X72,0X6D,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct login_template {const char* login_header;
|
||||
const char* error;
|
||||
const char* prefix;
|
||||
const char* username;
|
||||
const char* password;
|
||||
const char* login_submit;
|
||||
const char* instance_text;
|
||||
const char* instance_url;
|
||||
const char* instance_submit;
|
||||
};
|
||||
char* tmpl_gen_login(struct login_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_login, data->login_header?data->login_header:"", data->error?data->error:"", data->prefix?data->prefix:"", data->username?data->username:"", data->password?data->password:"", data->login_submit?data->login_submit:"", data->instance_text?data->instance_text:"", data->prefix?data->prefix:"", data->instance_url?data->instance_url:"", data->instance_submit?data->instance_submit:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
29
static/login.tmpl
Normal file
29
static/login.tmpl
Normal file
|
@ -0,0 +1,29 @@
|
|||
<div class="simple-page">
|
||||
<h1>{{%s:login_header}}</h1>
|
||||
|
||||
{{%s:error}}
|
||||
|
||||
<form action="{{%s:prefix}}/login" method="post">
|
||||
<div class="form-group">
|
||||
<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:password}}: </label>
|
||||
<input type="password" id="login-password" name="password"><br>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input class="btn" type="submit" value="{{%s:login_submit}}">
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<h6>{{%s:instance_text}}</h6>
|
||||
|
||||
<form action="{{%s:prefix}}/login/oauth" method="post">
|
||||
<div class="form-group">
|
||||
<label for="instance-url">{{%s:instance_url}}: </label>
|
||||
<input type="url" id="instance-url" name="instance">
|
||||
<input class="btn" type="submit" value="{{%s:instance_submit}}">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
16
static/navigation.ctmpl
Normal file
16
static/navigation.ctmpl
Normal file
|
@ -0,0 +1,16 @@
|
|||
#ifndef __navigation
|
||||
#define __navigation
|
||||
static const char data_navigation[] = {0X3C,0X74,0X61,0X62,0X6C,0X65,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X61,0X76,0X69,0X67,0X61,0X74,0X69,0X6F,0X6E,0X20,0X75,0X69,0X2D,0X74,0X61,0X62,0X6C,0X65,0X22,0X3E,0XA,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X61,0X76,0X2D,0X75,0X70,0X20,0X62,0X74,0X6E,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X66,0X6F,0X72,0X6D,0X20,0X61,0X63,0X74,0X69,0X6F,0X6E,0X3D,0X22,0X22,0X20,0X6D,0X65,0X74,0X68,0X6F,0X64,0X3D,0X22,0X70,0X6F,0X73,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X6C,0X61,0X62,0X65,0X6C,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X70,0X6F,0X69,0X6E,0X74,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X61,0X76,0X2D,0X62,0X74,0X6E,0X22,0X3E,0X55,0X70,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,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,0X68,0X69,0X64,0X64,0X65,0X6E,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X6C,0X61,0X62,0X65,0X6C,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X66,0X6F,0X72,0X6D,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X61,0X76,0X2D,0X70,0X72,0X65,0X76,0X20,0X62,0X74,0X6E,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X66,0X6F,0X72,0X6D,0X20,0X61,0X63,0X74,0X69,0X6F,0X6E,0X3D,0X22,0X22,0X20,0X6D,0X65,0X74,0X68,0X6F,0X64,0X3D,0X22,0X70,0X6F,0X73,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X6C,0X61,0X62,0X65,0X6C,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X70,0X6F,0X69,0X6E,0X74,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,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,0X73,0X74,0X61,0X72,0X74,0X5F,0X69,0X64,0X22,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,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,0X6D,0X69,0X6E,0X5F,0X69,0X64,0X22,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X61,0X76,0X2D,0X62,0X74,0X6E,0X20,0X25,0X73,0X22,0X3E,0X50,0X72,0X65,0X76,0X69,0X6F,0X75,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X25,0X73,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X6C,0X61,0X62,0X65,0X6C,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X66,0X6F,0X72,0X6D,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X61,0X76,0X2D,0X6E,0X65,0X78,0X74,0X20,0X62,0X74,0X6E,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X66,0X6F,0X72,0X6D,0X20,0X61,0X63,0X74,0X69,0X6F,0X6E,0X3D,0X22,0X22,0X20,0X6D,0X65,0X74,0X68,0X6F,0X64,0X3D,0X22,0X70,0X6F,0X73,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X6C,0X61,0X62,0X65,0X6C,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X70,0X6F,0X69,0X6E,0X74,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,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,0X73,0X74,0X61,0X72,0X74,0X5F,0X69,0X64,0X22,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,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,0X6D,0X61,0X78,0X5F,0X69,0X64,0X22,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X61,0X76,0X2D,0X62,0X74,0X6E,0X22,0X3E,0X4E,0X65,0X78,0X74,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,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,0X68,0X69,0X64,0X64,0X65,0X6E,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X6C,0X61,0X62,0X65,0X6C,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X66,0X6F,0X72,0X6D,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X3C,0X2F,0X74,0X61,0X62,0X6C,0X65,0X3E,0};
|
||||
struct navigation_template {const char* start_id;
|
||||
const char* min_id;
|
||||
const char* prev_active;
|
||||
const char* prev_submit;
|
||||
const char* max_id;
|
||||
};
|
||||
char* tmpl_gen_navigation(struct navigation_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_navigation, data->start_id?data->start_id:"", data->min_id?data->min_id:"", data->prev_active?data->prev_active:"", data->prev_submit?data->prev_submit:"", data->start_id?data->start_id:"", data->max_id?data->max_id:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
32
static/navigation.tmpl
Normal file
32
static/navigation.tmpl
Normal file
|
@ -0,0 +1,32 @@
|
|||
<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:start_id}}">
|
||||
<input type="hidden" name="min_id" value="{{%s:min_id}}">
|
||||
<span class="nav-btn {{%s:prev_active}}">Previous</span>
|
||||
{{%s:prev_submit}}
|
||||
</label>
|
||||
</form>
|
||||
</td>
|
||||
<td class="nav-next btn">
|
||||
<form action="" method="post">
|
||||
<label class="pointer">
|
||||
<input type="hidden" name="start_id" value="{{%s:start_id}}">
|
||||
<input type="hidden" name="max_id" value="{{%s:max_id}}">
|
||||
<span class="nav-btn">Next</span>
|
||||
<input type="submit" class="hidden">
|
||||
</label>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
16
static/notification.ctmpl
Normal file
16
static/notification.ctmpl
Normal file
|
@ -0,0 +1,16 @@
|
|||
#ifndef __notification
|
||||
#define __notification
|
||||
static const char data_notification[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X2D,0X69,0X6E,0X66,0X6F,0X22,0X3E,0XA,0X20,0X20,0X3C,0X69,0X6D,0X67,0X20,0X73,0X72,0X63,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X2D,0X75,0X73,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X2D,0X74,0X65,0X78,0X74,0X2D,0X67,0X72,0X6F,0X75,0X70,0X2D,0X77,0X69,0X74,0X68,0X2D,0X69,0X63,0X6F,0X6E,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X75,0X73,0X65,0X72,0X6E,0X61,0X6D,0X65,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X74,0X69,0X6F,0X6E,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X25,0X73,0X20,0X3C,0X21,0X2D,0X2D,0X20,0X49,0X66,0X20,0X61,0X6E,0X79,0X20,0X2D,0X2D,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X25,0X73,0XA,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct notification_template {const char* avatar;
|
||||
const char* username;
|
||||
const char* action;
|
||||
const char* action_item;
|
||||
const char* content;
|
||||
};
|
||||
char* tmpl_gen_notification(struct notification_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_notification, data->avatar?data->avatar:"", data->username?data->username:"", data->action?data->action:"", data->action_item?data->action_item:"", data->content?data->content:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
11
static/notification.tmpl
Normal file
11
static/notification.tmpl
Normal file
|
@ -0,0 +1,11 @@
|
|||
<div class="notification-info">
|
||||
<img src="{{%s:avatar}}">
|
||||
<div class="notification-user">
|
||||
<span class="notification-text-group-with-icon">
|
||||
<span class="username">{{%s:username}}</span>
|
||||
<span class="action">{{%s:action}}</span>
|
||||
{{%s:action_item}} <!-- If any -->
|
||||
</span>
|
||||
{{%s:content}}
|
||||
</div>
|
||||
</div>
|
17
static/notification_action.ctmpl
Normal file
17
static/notification_action.ctmpl
Normal file
|
@ -0,0 +1,17 @@
|
|||
#ifndef __notification_action
|
||||
#define __notification_action
|
||||
static const char data_notification_action[] = {0X3C,0X74,0X61,0X62,0X6C,0X65,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X20,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X2D,0X72,0X65,0X67,0X75,0X6C,0X61,0X72,0X20,0X75,0X69,0X2D,0X74,0X61,0X62,0X6C,0X65,0X22,0X3E,0XA,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X70,0X66,0X70,0X2D,0X74,0X64,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X69,0X6D,0X67,0X20,0X73,0X72,0X63,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X2D,0X74,0X61,0X62,0X6C,0X65,0X2D,0X62,0X69,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X61,0X62,0X6C,0X65,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X75,0X69,0X2D,0X74,0X61,0X62,0X6C,0X65,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X2D,0X69,0X6E,0X66,0X6F,0X2D,0X66,0X6F,0X72,0X6D,0X61,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X2D,0X74,0X65,0X78,0X74,0X2D,0X67,0X72,0X6F,0X75,0X70,0X2D,0X77,0X69,0X74,0X68,0X2D,0X69,0X63,0X6F,0X6E,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X74,0X69,0X74,0X6C,0X65,0X3D,0X22,0X25,0X73,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X75,0X73,0X65,0X72,0X6E,0X61,0X6D,0X65,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X74,0X69,0X6F,0X6E,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0X20,0X25,0X73,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X2D,0X63,0X6F,0X6E,0X74,0X65,0X6E,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X61,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X40,0X25,0X73,0X22,0X3E,0X40,0X25,0X73,0X3C,0X2F,0X61,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X61,0X62,0X6C,0X65,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X3C,0X2F,0X74,0X61,0X62,0X6C,0X65,0X3E,0};
|
||||
struct notification_action_template {const char* avatar;
|
||||
const char* acct;
|
||||
const char* display_name;
|
||||
const char* action;
|
||||
const char* idk;
|
||||
const char* prefix;
|
||||
};
|
||||
char* tmpl_gen_notification_action(struct notification_action_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_notification_action, data->avatar?data->avatar:"", data->acct?data->acct:"", data->display_name?data->display_name:"", data->action?data->action:"", data->idk?data->idk:"", data->prefix?data->prefix:"", data->acct?data->acct:"", data->acct?data->acct:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
24
static/notification_action.tmpl
Normal file
24
static/notification_action.tmpl
Normal file
|
@ -0,0 +1,24 @@
|
|||
<table class="notification notification-regular ui-table">
|
||||
<tr>
|
||||
<td class="pfp-td">
|
||||
<img src="{{%s:avatar}}">
|
||||
</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:acct}}" class="username">{{%s:display_name}}</span>
|
||||
<span class="action">{{%s:action}}</span>
|
||||
</span> {{%s:idk}}
|
||||
</div>
|
||||
<span class="notification-content">
|
||||
<a href="{{%s:prefix}}/@{{%s:acct}}">@{{%s:acct}}</a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
20
static/notification_compact.ctmpl
Normal file
20
static/notification_compact.ctmpl
Normal file
|
@ -0,0 +1,20 @@
|
|||
#ifndef __notification_compact
|
||||
#define __notification_compact
|
||||
static const char data_notification_compact[] = {0X3C,0X74,0X61,0X62,0X6C,0X65,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X2D,0X63,0X6F,0X6D,0X70,0X61,0X63,0X74,0X20,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X20,0X75,0X69,0X2D,0X74,0X61,0X62,0X6C,0X65,0X22,0X3E,0XA,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X70,0X66,0X70,0X2D,0X63,0X6F,0X6D,0X70,0X61,0X63,0X74,0X2D,0X74,0X64,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X69,0X6D,0X67,0X20,0X73,0X72,0X63,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X2D,0X69,0X6E,0X66,0X6F,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X2D,0X74,0X65,0X78,0X74,0X2D,0X67,0X72,0X6F,0X75,0X70,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X74,0X69,0X74,0X6C,0X65,0X3D,0X22,0X25,0X73,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X75,0X73,0X65,0X72,0X6E,0X61,0X6D,0X65,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X61,0X63,0X74,0X69,0X6F,0X6E,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X25,0X73,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0X20,0X25,0X73,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X2D,0X63,0X6F,0X6E,0X74,0X65,0X6E,0X74,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X2D,0X73,0X74,0X61,0X74,0X73,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X3C,0X2F,0X74,0X61,0X62,0X6C,0X65,0X3E,0};
|
||||
struct notification_compact_template {const char* avatar;
|
||||
const char* idk;
|
||||
const char* acct;
|
||||
const char* display_name;
|
||||
const char* action;
|
||||
const char* action_item;
|
||||
const char* idk2;
|
||||
const char* content;
|
||||
const char* stats;
|
||||
};
|
||||
char* tmpl_gen_notification_compact(struct notification_compact_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_notification_compact, data->avatar?data->avatar:"", data->idk?data->idk:"", data->acct?data->acct:"", data->display_name?data->display_name:"", data->action?data->action:"", data->action_item?data->action_item:"", data->idk2?data->idk2:"", data->content?data->content:"", data->stats?data->stats:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
18
static/notification_compact.tmpl
Normal file
18
static/notification_compact.tmpl
Normal file
|
@ -0,0 +1,18 @@
|
|||
<table class="notification-compact notification ui-table">
|
||||
<tr>
|
||||
<td class="pfp-compact-td">
|
||||
<img src="{{%s:avatar}}">
|
||||
</td>
|
||||
<td>
|
||||
<div class="notification-info">
|
||||
<span class="notification-text-group{{%s:idk}}">
|
||||
<span title="{{%s:acct}}" class="username">{{%s:display_name}}</span>
|
||||
<span class="action">{{%s:action}}</span>
|
||||
{{%s:action_item}}
|
||||
</span> {{%s:idk2}}
|
||||
</div>
|
||||
<div class="notification-content">{{%s:content}}</div>
|
||||
<div class="notification-stats">{{%s:stats}}</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
12
static/notifications.ctmpl
Normal file
12
static/notifications.ctmpl
Normal file
|
@ -0,0 +1,12 @@
|
|||
#ifndef __notifications
|
||||
#define __notifications
|
||||
static const char data_notifications[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X73,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 notifications_template {const char* notifications;
|
||||
};
|
||||
char* tmpl_gen_notifications(struct notifications_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_notifications, data->notifications?data->notifications:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
3
static/notifications.tmpl
Normal file
3
static/notifications.tmpl
Normal file
|
@ -0,0 +1,3 @@
|
|||
<div class="notifications-container">
|
||||
{{%s:notifications}}
|
||||
</div>
|
15
static/notifications_embed.ctmpl
Normal file
15
static/notifications_embed.ctmpl
Normal file
|
@ -0,0 +1,15 @@
|
|||
#ifndef __notifications_embed
|
||||
#define __notifications_embed
|
||||
static const char data_notifications_embed[] = {0X3C,0X21,0X44,0X4F,0X43,0X54,0X59,0X50,0X45,0X20,0X68,0X74,0X6D,0X6C,0X3E,0XA,0X3C,0X68,0X74,0X6D,0X6C,0X3E,0XA,0X20,0X20,0X3C,0X68,0X65,0X61,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X6D,0X65,0X74,0X61,0X20,0X63,0X68,0X61,0X72,0X73,0X65,0X74,0X3D,0X22,0X75,0X74,0X66,0X2D,0X38,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X69,0X74,0X6C,0X65,0X3E,0X4E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X73,0X20,0X65,0X6D,0X62,0X65,0X64,0X3C,0X2F,0X74,0X69,0X74,0X6C,0X65,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X6C,0X69,0X6E,0X6B,0X20,0X72,0X65,0X6C,0X3D,0X22,0X73,0X74,0X79,0X6C,0X65,0X73,0X68,0X65,0X65,0X74,0X22,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X74,0X65,0X78,0X74,0X2F,0X63,0X73,0X73,0X22,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X2F,0X25,0X73,0X25,0X73,0X2E,0X63,0X73,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X73,0X74,0X79,0X6C,0X65,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X68,0X74,0X6D,0X6C,0X2C,0X20,0X62,0X6F,0X64,0X79,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X7B,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X62,0X61,0X63,0X6B,0X67,0X72,0X6F,0X75,0X6E,0X64,0X2D,0X63,0X6F,0X6C,0X6F,0X72,0X3A,0X20,0X75,0X6E,0X73,0X65,0X74,0X3B,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X73,0X63,0X72,0X6F,0X6C,0X6C,0X62,0X61,0X72,0X2D,0X63,0X6F,0X6C,0X6F,0X72,0X3A,0X20,0X23,0X38,0X30,0X38,0X30,0X38,0X30,0X20,0X23,0X65,0X61,0X65,0X63,0X66,0X30,0X3B,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X73,0X63,0X72,0X6F,0X6C,0X6C,0X62,0X61,0X72,0X2D,0X77,0X69,0X64,0X74,0X68,0X3A,0X20,0X74,0X68,0X69,0X6E,0X3B,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X7D,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X73,0X74,0X79,0X6C,0X65,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X68,0X65,0X61,0X64,0X3E,0XA,0X20,0X20,0X3C,0X62,0X6F,0X64,0X79,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X69,0X64,0X65,0X62,0X61,0X72,0X2D,0X65,0X6D,0X62,0X65,0X64,0X2D,0X63,0X6F,0X6E,0X74,0X61,0X69,0X6E,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X25,0X73,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X69,0X64,0X65,0X62,0X61,0X72,0X2D,0X65,0X6D,0X62,0X65,0X64,0X2D,0X6E,0X6F,0X74,0X69,0X66,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X25,0X73,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X62,0X6F,0X64,0X79,0X3E,0XA,0X3C,0X2F,0X68,0X74,0X6D,0X6C,0X3E,0};
|
||||
struct notifications_embed_template {const char* theme;
|
||||
const char* theme_var;
|
||||
const char* navigation_box;
|
||||
const char* notifications;
|
||||
};
|
||||
char* tmpl_gen_notifications_embed(struct notifications_embed_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_notifications_embed, data->theme?data->theme:"", data->theme_var?data->theme_var:"", data->navigation_box?data->navigation_box:"", data->notifications?data->notifications:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
13
static/notifications_page.ctmpl
Normal file
13
static/notifications_page.ctmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
#ifndef __notifications_page
|
||||
#define __notifications_page
|
||||
static const char data_notifications_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,0X4E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,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,0X6E,0X6F,0X74,0X69,0X66,0X69,0X63,0X61,0X74,0X69,0X6F,0X6E,0X73,0X2D,0X63,0X6F,0X6E,0X74,0X61,0X69,0X6E,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X25,0X73,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X25,0X73,0};
|
||||
struct notifications_page_template {const char* notifications;
|
||||
const char* navigation;
|
||||
};
|
||||
char* tmpl_gen_notifications_page(struct notifications_page_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_notifications_page, data->notifications?data->notifications:"", data->navigation?data->navigation:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
7
static/notifications_page.tmpl
Normal file
7
static/notifications_page.tmpl
Normal file
|
@ -0,0 +1,7 @@
|
|||
<div class="simple-page">
|
||||
<h1>Notifications</h1>
|
||||
</div>
|
||||
<div class="notifications-container">
|
||||
{{%s:notifications}}
|
||||
</div>
|
||||
{{%s:navigation}}
|
14
static/post.ctmpl
Normal file
14
static/post.ctmpl
Normal file
|
@ -0,0 +1,14 @@
|
|||
#ifndef __post
|
||||
#define __post
|
||||
static const char data_post[] = {0X3C,0X66,0X6F,0X72,0X6D,0X20,0X61,0X63,0X74,0X69,0X6F,0X6E,0X3D,0X22,0X25,0X73,0X2F,0X73,0X74,0X61,0X74,0X75,0X73,0X2F,0X63,0X72,0X65,0X61,0X74,0X65,0X22,0X20,0X6D,0X65,0X74,0X68,0X6F,0X64,0X3D,0X22,0X70,0X6F,0X73,0X74,0X22,0X20,0X65,0X6E,0X63,0X74,0X79,0X70,0X65,0X3D,0X22,0X6D,0X75,0X6C,0X74,0X69,0X70,0X61,0X72,0X74,0X2F,0X66,0X6F,0X72,0X6D,0X2D,0X64,0X61,0X74,0X61,0X22,0X3E,0XA,0X20,0X20,0X25,0X73,0XA,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X74,0X61,0X74,0X75,0X73,0X62,0X6F,0X78,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X65,0X78,0X74,0X61,0X72,0X65,0X61,0X20,0X6E,0X61,0X6D,0X65,0X3D,0X22,0X63,0X6F,0X6E,0X74,0X65,0X6E,0X74,0X22,0X20,0X70,0X6C,0X61,0X63,0X65,0X68,0X6F,0X6C,0X64,0X65,0X72,0X3D,0X22,0X4A,0X75,0X73,0X74,0X20,0X6C,0X61,0X6E,0X64,0X65,0X64,0X20,0X69,0X6E,0X20,0X4E,0X2E,0X59,0X2E,0X22,0X20,0X72,0X6F,0X77,0X73,0X3D,0X22,0X35,0X22,0X20,0X74,0X61,0X62,0X69,0X6E,0X64,0X65,0X78,0X3D,0X22,0X31,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X65,0X78,0X74,0X61,0X72,0X65,0X61,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X74,0X61,0X74,0X75,0X73,0X66,0X6F,0X6F,0X74,0X65,0X72,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X74,0X61,0X74,0X75,0X73,0X66,0X6F,0X6F,0X74,0X65,0X72,0X2D,0X6C,0X65,0X66,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X65,0X6C,0X65,0X63,0X74,0X20,0X74,0X61,0X62,0X69,0X6E,0X64,0X65,0X78,0X3D,0X22,0X33,0X22,0X20,0X6E,0X61,0X6D,0X65,0X3D,0X22,0X76,0X69,0X73,0X69,0X62,0X69,0X6C,0X69,0X74,0X79,0X22,0X20,0X69,0X64,0X3D,0X22,0X76,0X69,0X73,0X69,0X62,0X69,0X6C,0X69,0X74,0X79,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X6F,0X70,0X74,0X69,0X6F,0X6E,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X70,0X75,0X62,0X6C,0X69,0X63,0X22,0X3E,0X50,0X75,0X62,0X6C,0X69,0X63,0X3C,0X2F,0X6F,0X70,0X74,0X69,0X6F,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X6F,0X70,0X74,0X69,0X6F,0X6E,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X75,0X6E,0X6C,0X69,0X73,0X74,0X65,0X64,0X22,0X3E,0X55,0X6E,0X6C,0X69,0X73,0X74,0X65,0X64,0X3C,0X2F,0X6F,0X70,0X74,0X69,0X6F,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X6F,0X70,0X74,0X69,0X6F,0X6E,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X70,0X72,0X69,0X76,0X61,0X74,0X65,0X22,0X3E,0X50,0X72,0X69,0X76,0X61,0X74,0X65,0X3C,0X2F,0X6F,0X70,0X74,0X69,0X6F,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X6F,0X70,0X74,0X69,0X6F,0X6E,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X64,0X69,0X72,0X65,0X63,0X74,0X22,0X3E,0X44,0X69,0X72,0X65,0X63,0X74,0X3C,0X2F,0X6F,0X70,0X74,0X69,0X6F,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X6F,0X70,0X74,0X69,0X6F,0X6E,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X6C,0X6F,0X63,0X61,0X6C,0X22,0X3E,0X4C,0X6F,0X63,0X61,0X6C,0X3C,0X2F,0X6F,0X70,0X74,0X69,0X6F,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X21,0X2D,0X2D,0X20,0X54,0X4F,0X44,0X4F,0X20,0X67,0X65,0X6E,0X65,0X72,0X61,0X74,0X65,0X20,0X6C,0X69,0X73,0X74,0X73,0X20,0X2D,0X2D,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X73,0X65,0X6C,0X65,0X63,0X74,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X66,0X69,0X6C,0X65,0X22,0X20,0X6E,0X61,0X6D,0X65,0X3D,0X22,0X66,0X69,0X6C,0X65,0X22,0X20,0X74,0X61,0X62,0X69,0X6E,0X64,0X65,0X78,0X3D,0X22,0X34,0X22,0X20,0X6D,0X75,0X6C,0X74,0X69,0X70,0X6C,0X65,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X74,0X61,0X74,0X75,0X73,0X66,0X6F,0X6F,0X74,0X65,0X72,0X2D,0X72,0X69,0X67,0X68,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,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,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X50,0X6F,0X73,0X74,0X22,0X20,0X74,0X61,0X62,0X69,0X6E,0X64,0X65,0X78,0X3D,0X22,0X32,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X20,0X70,0X6F,0X73,0X74,0X2D,0X62,0X74,0X6E,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X3C,0X2F,0X66,0X6F,0X72,0X6D,0X3E,0};
|
||||
struct post_template {const char* prefix;
|
||||
const char* reply_input;
|
||||
const char* content;
|
||||
};
|
||||
char* tmpl_gen_post(struct post_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_post, data->prefix?data->prefix:"", data->reply_input?data->reply_input:"", data->content?data->content:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
15
static/quick_login.ctmpl
Normal file
15
static/quick_login.ctmpl
Normal file
|
@ -0,0 +1,15 @@
|
|||
#ifndef __quick_login
|
||||
#define __quick_login
|
||||
static const char data_quick_login[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X69,0X64,0X65,0X62,0X61,0X72,0X2D,0X6C,0X6F,0X67,0X69,0X6E,0X22,0X3E,0XA,0X20,0X20,0X3C,0X66,0X6F,0X72,0X6D,0X20,0X61,0X63,0X74,0X69,0X6F,0X6E,0X3D,0X22,0X25,0X73,0X2F,0X6C,0X6F,0X67,0X69,0X6E,0X22,0X20,0X6D,0X65,0X74,0X68,0X6F,0X64,0X3D,0X22,0X70,0X6F,0X73,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X66,0X6F,0X72,0X6D,0X2D,0X67,0X72,0X6F,0X75,0X70,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X6C,0X61,0X62,0X65,0X6C,0X20,0X66,0X6F,0X72,0X3D,0X22,0X6C,0X6F,0X67,0X69,0X6E,0X2D,0X75,0X73,0X65,0X72,0X6E,0X61,0X6D,0X65,0X22,0X3E,0X25,0X73,0X3A,0X20,0X3C,0X2F,0X6C,0X61,0X62,0X65,0X6C,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X74,0X65,0X78,0X74,0X22,0X20,0X69,0X64,0X3D,0X22,0X6C,0X6F,0X67,0X69,0X6E,0X2D,0X75,0X73,0X65,0X72,0X6E,0X61,0X6D,0X65,0X22,0X20,0X6E,0X61,0X6D,0X65,0X3D,0X22,0X75,0X73,0X65,0X72,0X6E,0X61,0X6D,0X65,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X66,0X6F,0X72,0X6D,0X2D,0X67,0X72,0X6F,0X75,0X70,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X6C,0X61,0X62,0X65,0X6C,0X20,0X66,0X6F,0X72,0X3D,0X22,0X6C,0X6F,0X67,0X69,0X6E,0X2D,0X70,0X61,0X73,0X73,0X77,0X6F,0X72,0X64,0X22,0X3E,0X25,0X73,0X3A,0X20,0X3C,0X2F,0X6C,0X61,0X62,0X65,0X6C,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X70,0X61,0X73,0X73,0X77,0X6F,0X72,0X64,0X22,0X20,0X69,0X64,0X3D,0X22,0X6C,0X6F,0X67,0X69,0X6E,0X2D,0X70,0X61,0X73,0X73,0X77,0X6F,0X72,0X64,0X22,0X20,0X6E,0X61,0X6D,0X65,0X3D,0X22,0X70,0X61,0X73,0X73,0X77,0X6F,0X72,0X64,0X22,0X3E,0X3C,0X62,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X66,0X6F,0X72,0X6D,0X2D,0X67,0X72,0X6F,0X75,0X70,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X22,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X73,0X75,0X62,0X6D,0X69,0X74,0X22,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X66,0X6F,0X72,0X6D,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct quick_login_template {const char* prefix;
|
||||
const char* username;
|
||||
const char* password;
|
||||
const char* login;
|
||||
};
|
||||
char* tmpl_gen_quick_login(struct quick_login_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_quick_login, data->prefix?data->prefix:"", data->username?data->username:"", data->password?data->password:"", data->login?data->login:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
14
static/reactions_btn.ctmpl
Normal file
14
static/reactions_btn.ctmpl
Normal file
|
@ -0,0 +1,14 @@
|
|||
#ifndef __reactions_btn
|
||||
#define __reactions_btn
|
||||
static const char data_reactions_btn[] = {0X3C,0X74,0X64,0X3E,0XA,0X20,0X20,0X3C,0X61,0X20,0X74,0X61,0X72,0X67,0X65,0X74,0X3D,0X22,0X5F,0X70,0X61,0X72,0X65,0X6E,0X74,0X22,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X73,0X74,0X61,0X74,0X75,0X73,0X2F,0X25,0X73,0X2F,0X72,0X65,0X61,0X63,0X74,0X23,0X69,0X64,0X2D,0X25,0X73,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X70,0X6F,0X69,0X6E,0X74,0X65,0X72,0X20,0X73,0X74,0X61,0X74,0X62,0X74,0X6E,0X20,0X72,0X65,0X61,0X63,0X74,0X2D,0X62,0X74,0X6E,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X73,0X76,0X67,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X65,0X6D,0X6F,0X6A,0X69,0X2D,0X62,0X74,0X6E,0X22,0X20,0X78,0X6D,0X6C,0X6E,0X73,0X3D,0X22,0X68,0X74,0X74,0X70,0X3A,0X2F,0X2F,0X77,0X77,0X77,0X2E,0X77,0X33,0X2E,0X6F,0X72,0X67,0X2F,0X32,0X30,0X30,0X30,0X2F,0X73,0X76,0X67,0X22,0X20,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X30,0X22,0X20,0X68,0X65,0X69,0X67,0X68,0X74,0X3D,0X22,0X32,0X30,0X22,0X20,0X76,0X69,0X65,0X77,0X42,0X6F,0X78,0X3D,0X22,0X30,0X20,0X30,0X20,0X32,0X34,0X20,0X32,0X34,0X22,0X20,0X66,0X69,0X6C,0X6C,0X3D,0X22,0X6E,0X6F,0X6E,0X65,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X3D,0X22,0X23,0X30,0X30,0X30,0X30,0X30,0X30,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X6C,0X69,0X6E,0X65,0X63,0X61,0X70,0X3D,0X22,0X72,0X6F,0X75,0X6E,0X64,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X6C,0X69,0X6E,0X65,0X6A,0X6F,0X69,0X6E,0X3D,0X22,0X72,0X6F,0X75,0X6E,0X64,0X22,0X3E,0X3C,0X63,0X69,0X72,0X63,0X6C,0X65,0X20,0X63,0X78,0X3D,0X22,0X31,0X32,0X22,0X20,0X63,0X79,0X3D,0X22,0X31,0X32,0X22,0X20,0X72,0X3D,0X22,0X31,0X30,0X22,0X3E,0X3C,0X2F,0X63,0X69,0X72,0X63,0X6C,0X65,0X3E,0X3C,0X6C,0X69,0X6E,0X65,0X20,0X78,0X31,0X3D,0X22,0X38,0X22,0X20,0X79,0X31,0X3D,0X22,0X31,0X32,0X22,0X20,0X78,0X32,0X3D,0X22,0X31,0X36,0X22,0X20,0X79,0X32,0X3D,0X22,0X31,0X32,0X22,0X3E,0X3C,0X2F,0X6C,0X69,0X6E,0X65,0X3E,0X3C,0X2F,0X73,0X76,0X67,0X3E,0XA,0X20,0X20,0X20,0X20,0X25,0X73,0XA,0X20,0X20,0X3C,0X2F,0X66,0X6F,0X72,0X6D,0X3E,0XA,0X3C,0X2F,0X74,0X64,0X3E,0};
|
||||
struct reactions_btn_template {const char* prefix;
|
||||
const char* status_id;
|
||||
const char* emoji_picker;
|
||||
};
|
||||
char* tmpl_gen_reactions_btn(struct reactions_btn_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_reactions_btn, data->prefix?data->prefix:"", data->status_id?data->status_id:"", data->status_id?data->status_id:"", data->emoji_picker?data->emoji_picker:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
5
static/repeat_svg.ctmpl
Normal file
5
static/repeat_svg.ctmpl
Normal file
|
@ -0,0 +1,5 @@
|
|||
#ifndef __repeat_svg
|
||||
#define __repeat_svg
|
||||
static const char data_repeat_svg[] = {0X3C,0X73,0X76,0X67,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X72,0X65,0X70,0X65,0X61,0X74,0X22,0X20,0X78,0X6D,0X6C,0X6E,0X73,0X3D,0X22,0X68,0X74,0X74,0X70,0X3A,0X2F,0X2F,0X77,0X77,0X77,0X2E,0X77,0X33,0X2E,0X6F,0X72,0X67,0X2F,0X32,0X30,0X30,0X30,0X2F,0X73,0X76,0X67,0X22,0X20,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X30,0X22,0X20,0X68,0X65,0X69,0X67,0X68,0X74,0X3D,0X22,0X32,0X30,0X22,0X20,0X76,0X69,0X65,0X77,0X42,0X6F,0X78,0X3D,0X22,0X30,0X20,0X30,0X20,0X32,0X34,0X20,0X32,0X34,0X22,0X20,0X66,0X69,0X6C,0X6C,0X3D,0X22,0X6E,0X6F,0X6E,0X65,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X3D,0X22,0X23,0X30,0X30,0X30,0X30,0X30,0X30,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X77,0X69,0X64,0X74,0X68,0X3D,0X22,0X32,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X6C,0X69,0X6E,0X65,0X63,0X61,0X70,0X3D,0X22,0X72,0X6F,0X75,0X6E,0X64,0X22,0X20,0X73,0X74,0X72,0X6F,0X6B,0X65,0X2D,0X6C,0X69,0X6E,0X65,0X6A,0X6F,0X69,0X6E,0X3D,0X22,0X72,0X6F,0X75,0X6E,0X64,0X22,0X3E,0X3C,0X70,0X61,0X74,0X68,0X20,0X64,0X3D,0X22,0X4D,0X31,0X37,0X20,0X32,0X2E,0X31,0X6C,0X34,0X20,0X34,0X2D,0X34,0X20,0X34,0X22,0X2F,0X3E,0X3C,0X70,0X61,0X74,0X68,0X20,0X64,0X3D,0X22,0X4D,0X33,0X20,0X31,0X32,0X2E,0X32,0X76,0X2D,0X32,0X61,0X34,0X20,0X34,0X20,0X30,0X20,0X30,0X20,0X31,0X20,0X34,0X2D,0X34,0X68,0X31,0X32,0X2E,0X38,0X4D,0X37,0X20,0X32,0X31,0X2E,0X39,0X6C,0X2D,0X34,0X2D,0X34,0X20,0X34,0X2D,0X34,0X22,0X2F,0X3E,0X3C,0X70,0X61,0X74,0X68,0X20,0X64,0X3D,0X22,0X4D,0X32,0X31,0X20,0X31,0X31,0X2E,0X38,0X76,0X32,0X61,0X34,0X20,0X34,0X20,0X30,0X20,0X30,0X20,0X31,0X2D,0X34,0X20,0X34,0X48,0X34,0X2E,0X32,0X22,0X2F,0X3E,0X3C,0X2F,0X73,0X76,0X67,0X3E,0};
|
||||
|
||||
#endif
|
1
static/repeat_svg.tmpl
Normal file
1
static/repeat_svg.tmpl
Normal file
|
@ -0,0 +1 @@
|
|||
<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>
|
After Width: | Height: | Size: 322 B |
23
static/scrobble.ctmpl
Normal file
23
static/scrobble.ctmpl
Normal file
|
@ -0,0 +1,23 @@
|
|||
#ifndef __scrobble
|
||||
#define __scrobble
|
||||
static const char data_scrobble[] = {0X3C,0X64,0X69,0X76,0X20,0X69,0X64,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X2D,0X25,0X73,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X20,0X75,0X69,0X2D,0X74,0X61,0X62,0X6C,0X65,0X22,0X3E,0XA,0X20,0X20,0X3C,0X74,0X61,0X62,0X6C,0X65,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X69,0X73,0X74,0X2D,0X69,0X6E,0X66,0X6F,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X70,0X66,0X70,0X2D,0X63,0X6F,0X6D,0X70,0X61,0X63,0X74,0X2D,0X74,0X64,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X69,0X6D,0X67,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X70,0X66,0X70,0X2D,0X69,0X6D,0X67,0X2D,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X22,0X20,0X73,0X72,0X63,0X3D,0X22,0X25,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X69,0X73,0X74,0X2D,0X69,0X6E,0X66,0X6F,0X2D,0X74,0X65,0X78,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X75,0X73,0X65,0X72,0X6E,0X61,0X6D,0X65,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X69,0X73,0X74,0X2D,0X61,0X63,0X74,0X69,0X76,0X69,0X74,0X79,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0X20,0X20,0X20,0X20,0X20,0X20,0XA,0X20,0X20,0X3C,0X2F,0X74,0X61,0X62,0X6C,0X65,0X3E,0XA,0X20,0X20,0X3C,0X74,0X61,0X62,0X6C,0X65,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X2D,0X74,0X69,0X74,0X6C,0X65,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X2D,0X6B,0X65,0X79,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X2D,0X76,0X61,0X6C,0X75,0X65,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X2D,0X61,0X72,0X74,0X69,0X73,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X2D,0X6B,0X65,0X79,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X2D,0X76,0X61,0X6C,0X75,0X65,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X2D,0X61,0X6C,0X62,0X75,0X6D,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X2D,0X6B,0X65,0X79,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X2D,0X76,0X61,0X6C,0X75,0X65,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X2D,0X6C,0X65,0X6E,0X67,0X74,0X68,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X2D,0X6B,0X65,0X79,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X63,0X72,0X6F,0X62,0X62,0X6C,0X65,0X2D,0X76,0X61,0X6C,0X75,0X65,0X22,0X3E,0X25,0X64,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X74,0X61,0X62,0X6C,0X65,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct scrobble_template {const char* scrobble_id;
|
||||
const char* avatar;
|
||||
const char* username;
|
||||
const char* activity;
|
||||
const char* title_key;
|
||||
const char* title;
|
||||
const char* artist_key;
|
||||
const char* artist;
|
||||
const char* album_key;
|
||||
const char* album;
|
||||
const char* length_key;
|
||||
int length;
|
||||
};
|
||||
char* tmpl_gen_scrobble(struct scrobble_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_scrobble, data->scrobble_id?data->scrobble_id:"", data->avatar?data->avatar:"", data->username?data->username:"", data->activity?data->activity:"", data->title_key?data->title_key:"", data->title?data->title:"", data->artist_key?data->artist_key:"", data->artist?data->artist:"", data->album_key?data->album_key:"", data->album?data->album:"", data->length_key?data->length_key:"", data->length);
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
20
static/search.ctmpl
Normal file
20
static/search.ctmpl
Normal file
|
@ -0,0 +1,20 @@
|
|||
#ifndef __search
|
||||
#define __search
|
||||
static const char data_search[] = {0X3C,0X74,0X61,0X62,0X6C,0X65,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X74,0X61,0X62,0X73,0X20,0X75,0X69,0X2D,0X74,0X61,0X62,0X6C,0X65,0X22,0X3E,0XA,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X61,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X73,0X65,0X61,0X72,0X63,0X68,0X2F,0X73,0X74,0X61,0X74,0X75,0X73,0X65,0X73,0X3F,0X71,0X3D,0X25,0X73,0X22,0X3E,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X74,0X61,0X62,0X2D,0X62,0X74,0X6E,0X20,0X62,0X74,0X6E,0X20,0X25,0X73,0X22,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X62,0X75,0X74,0X74,0X6F,0X6E,0X22,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X25,0X73,0X22,0X3E,0X3C,0X2F,0X61,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X61,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X73,0X65,0X61,0X72,0X63,0X68,0X2F,0X61,0X63,0X63,0X6F,0X75,0X6E,0X74,0X73,0X3F,0X71,0X3D,0X25,0X73,0X22,0X3E,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X74,0X61,0X62,0X2D,0X62,0X74,0X6E,0X20,0X62,0X74,0X6E,0X20,0X25,0X73,0X22,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X62,0X75,0X74,0X74,0X6F,0X6E,0X22,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X25,0X73,0X22,0X3E,0X3C,0X2F,0X61,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X61,0X20,0X68,0X72,0X65,0X66,0X3D,0X22,0X25,0X73,0X2F,0X73,0X65,0X61,0X72,0X63,0X68,0X2F,0X68,0X61,0X73,0X68,0X74,0X61,0X67,0X73,0X3F,0X71,0X3D,0X25,0X73,0X22,0X3E,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X74,0X61,0X62,0X2D,0X62,0X74,0X6E,0X20,0X62,0X74,0X6E,0X20,0X25,0X73,0X22,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X62,0X75,0X74,0X74,0X6F,0X6E,0X22,0X20,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X25,0X73,0X22,0X3E,0X3C,0X2F,0X61,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X3C,0X2F,0X74,0X61,0X62,0X6C,0X65,0X3E,0XA,0XA,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X65,0X61,0X72,0X63,0X68,0X2D,0X72,0X65,0X73,0X75,0X6C,0X74,0X73,0X22,0X3E,0XA,0X20,0X20,0X25,0X73,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct search_template {const char* prefix;
|
||||
const char* query;
|
||||
const char* statuses_active;
|
||||
const char* statuses;
|
||||
const char* accounts_active;
|
||||
const char* accounts;
|
||||
const char* hashtags_active;
|
||||
const char* hashtags;
|
||||
const char* results;
|
||||
};
|
||||
char* tmpl_gen_search(struct search_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_search, data->prefix?data->prefix:"", data->query?data->query:"", data->statuses_active?data->statuses_active:"", data->statuses?data->statuses:"", data->prefix?data->prefix:"", data->query?data->query:"", data->accounts_active?data->accounts_active:"", data->accounts?data->accounts:"", data->prefix?data->prefix:"", data->query?data->query:"", data->hashtags_active?data->hashtags_active:"", data->hashtags?data->hashtags:"", data->results?data->results:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
32
static/status.ctmpl
Normal file
32
static/status.ctmpl
Normal file
File diff suppressed because one or more lines are too long
50
static/status.tmpl
Normal file
50
static/status.tmpl
Normal file
|
@ -0,0 +1,50 @@
|
|||
<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>
|
13
static/status_interaction_profile.ctmpl
Normal file
13
static/status_interaction_profile.ctmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
#ifndef __status_interaction_profile
|
||||
#define __status_interaction_profile
|
||||
static const char data_status_interaction_profile[] = {0X3C,0X69,0X6D,0X67,0X20,0X74,0X69,0X74,0X6C,0X65,0X3D,0X22,0X25,0X73,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X70,0X66,0X70,0X2D,0X69,0X6E,0X74,0X65,0X72,0X61,0X63,0X74,0X69,0X6F,0X6E,0X22,0X20,0X73,0X72,0X63,0X3D,0X22,0X25,0X73,0X22,0X3E,0};
|
||||
struct status_interaction_profile_template {const char* acct;
|
||||
const char* avatar;
|
||||
};
|
||||
char* tmpl_gen_status_interaction_profile(struct status_interaction_profile_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_status_interaction_profile, data->acct?data->acct:"", data->avatar?data->avatar:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
14
static/status_interactions.ctmpl
Normal file
14
static/status_interactions.ctmpl
Normal file
|
@ -0,0 +1,14 @@
|
|||
#ifndef __status_interactions
|
||||
#define __status_interactions
|
||||
static const char data_status_interactions[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X74,0X61,0X74,0X75,0X73,0X2D,0X69,0X6E,0X74,0X65,0X72,0X61,0X63,0X74,0X69,0X6F,0X6E,0X73,0X22,0X3E,0XA,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X74,0X61,0X74,0X75,0X73,0X2D,0X69,0X6E,0X74,0X65,0X72,0X61,0X63,0X74,0X69,0X6F,0X6E,0X73,0X2D,0X6C,0X61,0X62,0X65,0X6C,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X21,0X2D,0X2D,0X20,0X46,0X61,0X76,0X6F,0X75,0X72,0X69,0X74,0X65,0X73,0X20,0X63,0X6F,0X75,0X6E,0X74,0X20,0X2D,0X2D,0X3E,0XA,0X20,0X20,0X20,0X20,0X25,0X73,0XA,0X20,0X20,0X20,0X20,0X3C,0X21,0X2D,0X2D,0X20,0X52,0X65,0X62,0X6C,0X6F,0X67,0X20,0X63,0X6F,0X75,0X6E,0X74,0X20,0X2D,0X2D,0X3E,0XA,0X20,0X20,0X20,0X20,0X25,0X73,0XA,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X20,0X20,0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X73,0X74,0X61,0X74,0X75,0X73,0X2D,0X69,0X6E,0X74,0X65,0X72,0X61,0X63,0X74,0X69,0X6F,0X6E,0X73,0X2D,0X70,0X66,0X70,0X73,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X25,0X73,0XA,0X20,0X20,0X3C,0X2F,0X64,0X69,0X76,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct status_interactions_template {const char* favourites_count;
|
||||
const char* reblogs_count;
|
||||
const char* users;
|
||||
};
|
||||
char* tmpl_gen_status_interactions(struct status_interactions_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_status_interactions, data->favourites_count?data->favourites_count:"", data->reblogs_count?data->reblogs_count:"", data->users?data->users:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
13
static/status_interactions_label.ctmpl
Normal file
13
static/status_interactions_label.ctmpl
Normal file
|
@ -0,0 +1,13 @@
|
|||
#ifndef __status_interactions_label
|
||||
#define __status_interactions_label
|
||||
static const char data_status_interactions_label[] = {0X3C,0X64,0X69,0X76,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X68,0X65,0X61,0X64,0X65,0X72,0X2D,0X62,0X74,0X6E,0X20,0X62,0X74,0X6E,0X22,0X3E,0XA,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X2D,0X68,0X65,0X61,0X64,0X65,0X72,0X22,0X3E,0X25,0X73,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X20,0X20,0X3C,0X73,0X70,0X61,0X6E,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X62,0X74,0X6E,0X2D,0X63,0X6F,0X6E,0X74,0X65,0X6E,0X74,0X22,0X3E,0X25,0X64,0X3C,0X2F,0X73,0X70,0X61,0X6E,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct status_interactions_label_template {const char* header;
|
||||
int value;
|
||||
};
|
||||
char* tmpl_gen_status_interactions_label(struct status_interactions_label_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_status_interactions_label, data->header?data->header:"", data->value);
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
19
static/test.ctmpl
Normal file
19
static/test.ctmpl
Normal file
|
@ -0,0 +1,19 @@
|
|||
#ifndef __test
|
||||
#define __test
|
||||
static const char data_test[] = {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,0X54,0X65,0X73,0X74,0X20,0X70,0X61,0X67,0X65,0X3C,0X2F,0X68,0X31,0X3E,0XA,0X20,0X20,0X3C,0X70,0X3E,0X54,0X65,0X73,0X74,0X20,0X79,0X6F,0X75,0X72,0X20,0X6E,0X67,0X69,0X6E,0X78,0X2F,0X61,0X70,0X61,0X63,0X68,0X65,0X20,0X61,0X6E,0X64,0X20,0X62,0X72,0X6F,0X77,0X73,0X65,0X72,0X20,0X68,0X65,0X72,0X65,0X3C,0X2F,0X70,0X3E,0XA,0X20,0X20,0X3C,0X66,0X6F,0X72,0X6D,0X20,0X61,0X63,0X74,0X69,0X6F,0X6E,0X3D,0X22,0X74,0X65,0X73,0X74,0X22,0X20,0X6D,0X65,0X74,0X68,0X6F,0X64,0X3D,0X22,0X67,0X65,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X69,0X6E,0X70,0X75,0X74,0X20,0X6E,0X61,0X6D,0X65,0X3D,0X22,0X76,0X61,0X6C,0X75,0X65,0X22,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X74,0X65,0X78,0X74,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,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X47,0X45,0X54,0X22,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X66,0X6F,0X72,0X6D,0X3E,0XA,0XA,0X20,0X20,0X3C,0X66,0X6F,0X72,0X6D,0X20,0X61,0X63,0X74,0X69,0X6F,0X6E,0X3D,0X22,0X74,0X65,0X73,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,0X6E,0X61,0X6D,0X65,0X3D,0X22,0X76,0X61,0X6C,0X75,0X65,0X22,0X20,0X74,0X79,0X70,0X65,0X3D,0X22,0X74,0X65,0X78,0X74,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,0X76,0X61,0X6C,0X75,0X65,0X3D,0X22,0X50,0X4F,0X53,0X54,0X22,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X66,0X6F,0X72,0X6D,0X3E,0XA,0X20,0X20,0XA,0X20,0X20,0X3C,0X74,0X61,0X62,0X6C,0X65,0X20,0X69,0X64,0X3D,0X22,0X65,0X6E,0X76,0X2D,0X74,0X61,0X62,0X6C,0X65,0X22,0X20,0X63,0X6C,0X61,0X73,0X73,0X3D,0X22,0X70,0X72,0X65,0X73,0X65,0X6E,0X74,0X22,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X68,0X3E,0X3C,0X62,0X3E,0X45,0X4E,0X56,0X3C,0X2F,0X62,0X3E,0X3C,0X2F,0X74,0X68,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X68,0X3E,0X3C,0X62,0X3E,0X56,0X61,0X6C,0X75,0X65,0X3C,0X2F,0X62,0X3E,0X3C,0X2F,0X74,0X68,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X48,0X54,0X54,0X50,0X5F,0X43,0X4F,0X4F,0X4B,0X49,0X45,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X50,0X41,0X54,0X48,0X5F,0X49,0X4E,0X46,0X4F,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X51,0X55,0X45,0X52,0X59,0X5F,0X53,0X54,0X52,0X49,0X4E,0X47,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X52,0X45,0X51,0X55,0X45,0X53,0X54,0X5F,0X4D,0X45,0X54,0X48,0X4F,0X44,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X53,0X43,0X52,0X49,0X50,0X54,0X5F,0X4E,0X41,0X4D,0X45,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X48,0X54,0X54,0X50,0X5F,0X52,0X45,0X46,0X45,0X52,0X45,0X52,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X48,0X54,0X54,0X50,0X5F,0X55,0X53,0X45,0X52,0X5F,0X41,0X47,0X45,0X4E,0X54,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X74,0X72,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X43,0X4F,0X4E,0X54,0X45,0X4E,0X54,0X5F,0X4C,0X45,0X4E,0X47,0X54,0X48,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X20,0X20,0X3C,0X74,0X64,0X3E,0X25,0X73,0X3C,0X2F,0X74,0X64,0X3E,0XA,0X20,0X20,0X20,0X20,0X3C,0X2F,0X74,0X72,0X3E,0XA,0X20,0X20,0X3C,0X2F,0X74,0X61,0X62,0X6C,0X65,0X3E,0XA,0X3C,0X2F,0X64,0X69,0X76,0X3E,0};
|
||||
struct test_template {const char* HTTP_COOKIE;
|
||||
const char* PATH_INFO;
|
||||
const char* QUERY_STRING;
|
||||
const char* REQUEST_METHOD;
|
||||
const char* SCRIPT_NAME;
|
||||
const char* HTTP_REFERER;
|
||||
const char* HTTP_USER_AGENT;
|
||||
const char* CONTENT_LENGTH;
|
||||
};
|
||||
char* tmpl_gen_test(struct test_template* data, unsigned* size){
|
||||
char* ret;
|
||||
unsigned s = easprintf(&ret, data_test, data->HTTP_COOKIE?data->HTTP_COOKIE:"", data->PATH_INFO?data->PATH_INFO:"", data->QUERY_STRING?data->QUERY_STRING:"", data->REQUEST_METHOD?data->REQUEST_METHOD:"", data->SCRIPT_NAME?data->SCRIPT_NAME:"", data->HTTP_REFERER?data->HTTP_REFERER:"", data->HTTP_USER_AGENT?data->HTTP_USER_AGENT:"", data->CONTENT_LENGTH?data->CONTENT_LENGTH:"");
|
||||
if (size) *size = s;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
Loading…
Reference in a new issue