FossilOrigin-Name: fa0971dfd73b18da2b62d02dcb1f3aa5ef301d17c21efab4ece79d5a6981a297
This commit is contained in:
nekobit 2022-08-01 04:56:10 +00:00
parent 4f07f2768f
commit 3ac0145efc
8 changed files with 121 additions and 7 deletions

View file

@ -6,6 +6,7 @@ use Exporter 'import';
our @EXPORT = qw( generate_attachment );
use template_helpers 'to_template';
use icons 'get_icon';
sub generate_attachment
{
@ -15,7 +16,8 @@ sub generate_attachment
prefix => '',
ssn => $ssn,
attachment => $att,
sensitive => $sensitive
sensitive => $sensitive,
icon => \&get_icon,
);
to_template(\%vars, \$data->{'attachment.tt'});

23
perl/postbox.pm Normal file
View file

@ -0,0 +1,23 @@
package postbox;
use strict;
use warnings;
use template_helpers 'to_template';
use string_helpers qw( get_mentions_from_content );
use Exporter 'import';
our @EXPORT = qw( generate_postbox );
sub generate_postbox
{
my ($ssn, $data, $status) = @_;
my %vars = (
prefix => '',
ssn => $ssn,
data => $data,
status => $status,
mentionify => \&get_mentions_from_content,
);
to_template(\%vars, \$data->{'postbox.tt'});
}

View file

@ -5,6 +5,7 @@ use HTML::Escape 'escape_html';
use string_helpers qw( reltime_to_str greentextify emojify format_username );
use icons qw( get_icon visibility_to_icon );
use attachments 'generate_attachment';
use postbox 'generate_postbox';
use emojis 'generate_emoji';
use Exporter 'import';
@ -20,6 +21,7 @@ sub generate_status
prefix => '',
ssn => $ssn,
status => $status,
data => $data,
# Functions
icon => \&get_icon,
rel_to_str => \&reltime_to_str,
@ -30,6 +32,7 @@ sub generate_status
emojify => \&emojify,
escape => \&escape_html,
format_username => \&format_username,
make_postbox => \&generate_postbox,
);
to_template(\%vars, \$data->{'status.tt'});

View file

@ -4,7 +4,7 @@ use warnings;
use HTML::Escape 'escape_html';
use Exporter 'import';
our @EXPORT = qw( reltime_to_str greentextify emojify format_username );
our @EXPORT = qw( reltime_to_str greentextify emojify format_username get_mentions_from_content );
sub reltime_to_str
{
@ -44,7 +44,13 @@ sub emojify
sub format_username
{
my $username = shift;
emojify escape_html($username);
my $account = shift;
emojify(escape_html($account->{display_name}), $account->{emojis});
}
sub get_mentions_from_content
{
my $status = shift;
# todo
"";
}

View file

@ -900,6 +900,7 @@ HV* perlify_account(const struct mstdnt_account* acct)
hvstores_int(acct_hv, "suspended", acct->suspended);
hvstores_int(acct_hv, "locked", acct->locked);
hvstores_int(acct_hv, "discoverable", acct->discoverable);
hvstores_ref(acct_hv, "emojis", perlify_emojis(acct->emojis, acct->emojis_len));
return acct_hv;
}

View file

@ -25,6 +25,7 @@
#include "../templates/emoji_picker.ctt"
#include "../templates/attachment.ctt"
#include "../templates/emoji.ctt"
#include "../templates/postbox.ctt"
HV* template_files;
pthread_mutex_t perl_mutex = PTHREAD_MUTEX_INITIALIZER;
@ -40,6 +41,7 @@ void init_template_files()
hv_stores(template_files, "emoji_picker.tt", newSVpv(data_emoji_picker_tt, data_emoji_picker_tt_size));
hv_stores(template_files, "attachment.tt", newSVpv(data_attachment_tt, data_attachment_tt_size));
hv_stores(template_files, "emoji.tt", newSVpv(data_emoji_tt, data_emoji_tt_size));
hv_stores(template_files, "postbox.tt", newSVpv(data_postbox_tt, data_postbox_tt_size));
}
void cleanup_template_files()

78
templates/postbox.tt Normal file
View file

@ -0,0 +1,78 @@
<form class="reply-form" action="$prefix/status/create" method="post" enctype="multipart/form-data">
[% IF status %]
<input type="hidden" name="replyid" value="[% status.in_reply_to_id %]">
[% END %]
<div class="statusbox">
<textarea name="content" placeholder="Just landed in N.Y." rows="5">
[%- IF status -%]
[%- mentionify(status) -%]
[%- END -%]
</textarea>
<div class="statusfooter">
<div class="statusfooter-left">
<label>
<input type="file" name="file" class="hidden" multiple>
<div class="file-upload-btn btn-icon">
[% icon('fileclip') %]
</div>
</label>
<select name="contenttype" class="content-type">
<option value="plaintext">Plain Text</option>
<option value="markdown">Markdown</option>
<option value="html">HTML</option>
<option value="bbcode">BBCode</option>
</select>
<div class="post-group">
<!-- Local -->
<label>
<input type="radio" name="visibility" value="local" class="hidden"
[%- IF status.visibility == 6 %] checked[% END %]>
<div class="visibility-icon vis-local">
[% icon('local') %]
</div>
</label>
<!-- Direct -->
<label>
<input type="radio" name="visibility" value="direct" class="hidden"
[%- IF status.visibility == 5 %] checked[% END %]>
<div class="visibility-icon vis-direct">
[% icon('direct') %]
</div>
</label>
<!-- Private -->
<label>
<input type="radio" name="visibility" value="private" class="hidden"
[%- IF status.visibility == 3 %] checked[% END %]
[%- IF status.visibility > 3 %] disabled[% END %]>
<div class="visibility-icon vis-private">
[% icon('private') %]
</div>
</label>
<!-- Unlisted -->
<label>
<input type="radio" name="visibility" value="unlisted" class="hidden"
[%- IF status.visibility == 2 %] checked[% END %]
[%- IF status.visibility > 2 %] disabled[% END %]>
<div class="visibility-icon vis-unlisted">
[% icon('unlisted') %]
</div>
</label>
<!-- Public -->
<label>
<input type="radio" name="visibility" value="public" class="hidden"
[%- IF status.visibility == 1 %] checked[% END %]
[%- IF status.visibility > 2 %] disabled[% END %]>
<div class="visibility-icon vis-public">
[% icon('public') %]
</div>
</label>
</div>
</div>
<div class="statusfooter-right">
<input type="submit" value="Post" class="btn post-btn">
</div>
</div>
<div class="file-uploads-container hidden"></div>
</div>
</form>

View file

@ -8,7 +8,7 @@
</td>
<td class="status-info">
<div class="poster-stats">
<span class="username">[% format_username(status.account.display_name) %]</span>
<span class="username">[% format_username(status.account) %]</span>
<a class="instance-info" href="$prefix/@[% status.account.acct %]">[% status.account.acct %]</a>
<span class="alignend">
<div class="menu-container status-visibility">
@ -142,5 +142,4 @@
</table>
</div>
<input type="checkbox" class="quickreply-hide hidden" id="status-quickreply-[% status.id %]">
<!-- {{ %s : reply }} -->
[% make_postbox(ssn, data, status) %]