updated Twemoji,custom emojis in names and bios,some pleroma fixes,pinned posts

This commit is contained in:
nipos 2018-07-13 19:37:22 +02:00
parent fde3eefada
commit 46bb4e1dfd
10 changed files with 368 additions and 77 deletions

View File

@ -10,17 +10,17 @@ Follow our Mastodon account and never miss an important update: [@halcyon@social
## Instances ## Instances
These instances are publicly accessible and usable by everyone, no matter which Mastodon instance you use. These instances are publicly accessible and usable by everyone, no matter which Mastodon instance you use.
- https://itter.photog.social - 1.2.3 - https://itter.photog.social - 1.2.4
- https://social.dev-wiki.de - 1.2.2 - https://social.dev-wiki.de - 1.2.2
- https://halcyon.toromino.de - 1.2.2 - https://halcyon.toromino.de - 1.2.2
- https://halcyon.distsn.org - 1.2.1 - https://halcyon.distsn.org - 1.2.1
- https://halcyon.bka.li - 1.1.7 - https://halcyon.bka.li - 1.1.7
- https://halcyon.tilde.team - 1.1.7
- https://halcyon.cybre.space - Outdated - https://halcyon.cybre.space - Outdated
You have your own Halcyon instance and want it to be listed here? Create an issue with the link and we will add it to the list. You have your own Halcyon instance and want it to be listed here? Create an issue with the link and we will add it to the list.
## Blog ## Blog
- Release of Version 1.2.4 - Updated Twemoji,custom emojis in names and bios,links to profiles in pleroma now always work,pinned posts now supported
- Release of Version 1.2.3 - All emojis do now work,fixed some bugs in the Nginx example config,fixed Windows-only design bug,improved text field performance - Release of Version 1.2.3 - All emojis do now work,fixed some bugs in the Nginx example config,fixed Windows-only design bug,improved text field performance
- Release of Version 1.2.2 - Added an emoji picker,improved performance (emoji rendering),desktop notifications on notifications page work now - Release of Version 1.2.2 - Added an emoji picker,improved performance (emoji rendering),desktop notifications on notifications page work now
- Release of Version 1.2.1 - New who to follow page with more recommendations,bugfix at search,profiles now ignore "show replies" setting,small login page changes - Release of Version 1.2.1 - New who to follow page with more recommendations,bugfix at search,profiles now ignore "show replies" setting,small login page changes

View File

@ -639,6 +639,26 @@ border-radius: 2px;
font-size: 10px; font-size: 10px;
/*! height: 14px; */ /*! height: 14px; */
} }
.timeline .pinned_notice_box {
margin-left: 46px;
margin-bottom: -12px;
padding: 8px 0;
font-size: 12px;
color: rgb(101, 119, 134);
height: 14px;
}
.timeline .pinned_notice_box i {
display: inline-block;
width: 10px;
height: 10px;
padding: 2px;
margin-right: 11px;
color: #fff;
background-color: #1DA1F2;
border-radius: 2px;
font-size: 10px;
/*! height: 14px; */
}
.toot_entry { .toot_entry {
cursor: pointer; cursor: pointer;
background-color: #fff; background-color: #fff;

View File

@ -364,12 +364,16 @@ setWhoToFollow();
} }
function addFollowProfile(id,account) { function addFollowProfile(id,account) {
api.get('search',[{name:'q',data:"@"+account},{name:'resolve',data:'true'}], function(search) { api.get('search',[{name:'q',data:"@"+account},{name:'resolve',data:'true'}], function(search) {
search.accounts[0].display_name = htmlEscape(search.accounts[0].display_name);
for(i=0;i<search.accounts[0].emojis.length;i++) {
search.accounts[0].display_name = search.accounts[0].display_name.replace(new RegExp(":"+search.accounts[0].emojis[i].shortcode+":","g"),"<img src='"+search.accounts[0].emojis[i].url+"' class='emoji'>");
}
if(search.accounts[0].display_name.length == 0) { if(search.accounts[0].display_name.length == 0) {
search.accounts[0].display_name = search.accounts[0].username; search.accounts[0].display_name = search.accounts[0].username;
} }
$('.what_to_follow_'+id+' > .icon_box img').attr('src',search.accounts[0].avatar); $('.what_to_follow_'+id+' > .icon_box img').attr('src',search.accounts[0].avatar);
$('.what_to_follow_'+id+' .label_box > a').attr('href',getRelativeURL(search.accounts[0].url,search.accounts[0].id)); $('.what_to_follow_'+id+' .label_box > a').attr('href',getRelativeURL(search.accounts[0].url,search.accounts[0].id));
$('.what_to_follow_'+id+' .label_box > a > h3 .dn').addClass("emoji_poss").text(search.accounts[0].display_name); $('.what_to_follow_'+id+' .label_box > a > h3 .dn').addClass("emoji_poss").html(search.accounts[0].display_name);
$('.what_to_follow_'+id+' .label_box > a > h3 .un').text('@'+search.accounts[0].username); $('.what_to_follow_'+id+' .label_box > a > h3 .un').text('@'+search.accounts[0].username);
$('.what_to_follow_'+id+' .label_box > .follow_button').attr('mid',search.accounts[0].id); $('.what_to_follow_'+id+' .label_box > .follow_button').attr('mid',search.accounts[0].id);
$('.what_to_follow_'+id+' .label_box > .follow_button').attr('data',search.accounts[0].url); $('.what_to_follow_'+id+' .label_box > .follow_button').attr('data',search.accounts[0].url);

View File

@ -58,7 +58,11 @@ return media_views;
function timeline_template(status) { function timeline_template(status) {
if (status.reblog === null) { if (status.reblog === null) {
for(i=0;i<status.emojis.length;i++) { for(i=0;i<status.emojis.length;i++) {
status.content = status.content.replace(new RegExp(":"+status.emojis[i].shortcode+":","g"),"<img src='"+status.emojis[i].static_url+"' class='emoji'>"); status.content = status.content.replace(new RegExp(":"+status.emojis[i].shortcode+":","g"),"<img src='"+status.emojis[i].url+"' class='emoji'>");
}
status.account.display_name = htmlEscape(status.account.display_name);
for(i=0;i<status.account.emojis.length;i++) {
status.account.display_name = status.account.display_name.replace(new RegExp(":"+status.account.emojis[i].shortcode+":","g"),"<img src='"+status.account.emojis[i].url+"' class='emoji'>");
} }
const status_account_link= getRelativeURL(status.account.url, status.account.id), const status_account_link= getRelativeURL(status.account.url, status.account.id),
status_datetime= getRelativeDatetime(Date.now(), getConversionedDate(null, status.created_at)), status_datetime= getRelativeDatetime(Date.now(), getConversionedDate(null, status.created_at)),
@ -103,6 +107,16 @@ else {
toot_footer_width = ""; toot_footer_width = "";
toot_reblog_button = ""; toot_reblog_button = "";
} }
var own_toot_buttons = "";
if(status.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.id}">Delete Toot</a></li>`);
if(status.pinned == true) {
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.id}">Unpin Toot</a></li>`);
}
else {
own_toot_buttons += (`<li><a class="pin_button" tid="${status.id}">Pin Toot</a></li>`);
}
}
const html=(` const html=(`
<li sid="${status.id}" class="toot_entry"> <li sid="${status.id}" class="toot_entry">
<div class="toot_entry_body"> <div class="toot_entry_body">
@ -116,7 +130,7 @@ const html=(`
<div class="text_ellipsis"> <div class="text_ellipsis">
<a href="${status_account_link}"> <a href="${status_account_link}">
<span class="displayname emoji_poss"> <span class="displayname emoji_poss">
${htmlEscape(status.account.display_name)} ${status.account.display_name}
</span> </span>
<span class="username"> <span class="username">
@${status.account.acct} @${status.account.acct}
@ -131,9 +145,9 @@ ${htmlEscape(status.account.display_name)}
<div class="expand_menu invisible disallow_select"> <div class="expand_menu invisible disallow_select">
<ul> <ul>
<li><a class="copylink_button" url="${status.url}" >Copy link to Toot</a></li> <li><a class="copylink_button" url="${status.url}" >Copy link to Toot</a></li>
<li><a class="delete_button" tid="${status.id}">Delete Toot</a></li>
<li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">Mute @${status.account.username}</a></li> <li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">Mute @${status.account.username}</a></li>
<li><a class="block_button" mid="${status.account.id}" sid="${status.id}">Block @${status.account.username}</a></li> <li><a class="block_button" mid="${status.account.id}" sid="${status.id}">Block @${status.account.username}</a></li>
${own_toot_buttons}
</ul> </ul>
<ul> <ul>
<li><a href="${status.url}" target="_blank">View original</a></li> <li><a href="${status.url}" target="_blank">View original</a></li>
@ -150,7 +164,7 @@ ${media_views}
</article> </article>
<footer class="toot_footer"${toot_footer_width}> <footer class="toot_footer"${toot_footer_width}>
<div class="toot_reaction"> <div class="toot_reaction">
<button class="reply_button" tid="${status.id}" acct="@${status.account.acct}" display_name="${htmlEscape(status.account.display_name)}" privacy="${status.visibility}"> <button class="reply_button" tid="${status.id}" acct="@${status.account.acct}" display_name="${status.account.display_name}" privacy="${status.visibility}">
<i class="fa fa-fw fa-reply"></i> <i class="fa fa-fw fa-reply"></i>
<span class="reaction_count reply_count"></span> <span class="reaction_count reply_count"></span>
</button> </button>
@ -174,7 +188,15 @@ ${toot_reblog_button}
return $(html) return $(html)
} else { } else {
for(i=0;i<status.reblog.emojis.length;i++) { for(i=0;i<status.reblog.emojis.length;i++) {
status.reblog.content = status.reblog.content.replace(new RegExp(":"+status.reblog.emojis[i].shortcode+":","g"),"<img src='"+status.reblog.emojis[i].static_url+"' class='emoji'>"); status.reblog.content = status.reblog.content.replace(new RegExp(":"+status.reblog.emojis[i].shortcode+":","g"),"<img src='"+status.reblog.emojis[i].url+"' class='emoji'>");
}
status.account.display_name = htmlEscape(status.account.display_name);
for(i=0;i<status.account.emojis.length;i++) {
status.account.display_name = status.account.display_name.replace(new RegExp(":"+status.account.emojis[i].shortcode+":","g"),"<img src='"+status.account.emojis[i].url+"' class='emoji'>");
}
status.reblog.account.display_name = htmlEscape(status.reblog.account.display_name);
for(i=0;i<status.reblog.account.emojis.length;i++) {
status.reblog.account.display_name = status.reblog.account.display_name.replace(new RegExp(":"+status.reblog.account.emojis[i].shortcode+":","g"),"<img src='"+status.reblog.account.emojis[i].url+"' class='emoji'>");
} }
const status_datetime= getRelativeDatetime(Date.now(), getConversionedDate(null, status.reblog.created_at)), const status_datetime= getRelativeDatetime(Date.now(), getConversionedDate(null, status.reblog.created_at)),
status_attr_datetime = getConversionedDate(null, status.reblog.created_at), status_attr_datetime = getConversionedDate(null, status.reblog.created_at),
@ -208,11 +230,21 @@ switch(status.reblog.visibility) {
case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";break; case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";break; case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";break;
} }
var own_toot_buttons = "";
if(status.reblog.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.reblog.id}">Delete Toot</a></li>`);
if(status.reblog.pinned == true) {
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.reblog.id}">Unpin Toot</a></li>`);
}
else {
own_toot_buttons += (`<li><a class="pin_button" tid="${status.reblog.id}">Pin Toot</a></li>`);
}
}
const html = (` const html = (`
<li sid="${status.id}" class="toot_entry"> <li sid="${status.id}" class="toot_entry">
<div class="boost_author_box"> <div class="boost_author_box">
<a href="${status_account_link}"> <a href="${status_account_link}">
<span class="emoji_poss"><i class="fa fa-fw fa-retweet"></i>${htmlEscape(status.account.display_name)} Boosted</span> <span class="emoji_poss"><i class="fa fa-fw fa-retweet"></i>${status.account.display_name} Boosted</span>
</a> </a>
</div> </div>
<div class="toot_entry_body"> <div class="toot_entry_body">
@ -226,7 +258,7 @@ const html = (`
<div class="text_ellipsis"> <div class="text_ellipsis">
<a href="${status_reblog_account_link}"> <a href="${status_reblog_account_link}">
<span class="displayname emoji_poss"> <span class="displayname emoji_poss">
${htmlEscape(status.reblog.account.display_name)} ${status.reblog.account.display_name}
</span> </span>
<span class="username"> <span class="username">
@${status.reblog.account.acct} @${status.reblog.account.acct}
@ -241,9 +273,9 @@ ${htmlEscape(status.reblog.account.display_name)}
<div class="expand_menu invisible disallow_select"> <div class="expand_menu invisible disallow_select">
<ul> <ul>
<li><a class="copylink_button" url="${status.reblog.url}" >Copy link to Toot</a></li> <li><a class="copylink_button" url="${status.reblog.url}" >Copy link to Toot</a></li>
<li class="delete"><a class="delete_button" tid="${status.reblog.id}">Delete Toot</a></li>
<li><a class="mute_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">Mute @${status.reblog.account.username}</a></li> <li><a class="mute_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">Mute @${status.reblog.account.username}</a></li>
<li><a class="block_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">Block @${status.reblog.account.username}</a></li> <li><a class="block_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">Block @${status.reblog.account.username}</a></li>
${own_toot_buttons}
</ul> </ul>
<ul> <ul>
<li><a href="${status.reblog.url}" target="_blank">View original</a></li> <li><a href="${status.reblog.url}" target="_blank">View original</a></li>
@ -260,7 +292,7 @@ ${media_views}
</article> </article>
<footer class="toot_footer" style="width:320px"> <footer class="toot_footer" style="width:320px">
<div class="toot_reaction"> <div class="toot_reaction">
<button class="reply_button" tid="${status.reblog.id}"acct="@${status.reblog.account.acct}" display_name="${htmlEscape(status.reblog.account.display_name)}" privacy="${status.reblog.visibility}"> <button class="reply_button" tid="${status.reblog.id}"acct="@${status.reblog.account.acct}" display_name="${status.reblog.account.display_name}" privacy="${status.reblog.visibility}">
<i class="fa fa-fw fa-reply"></i> <i class="fa fa-fw fa-reply"></i>
<span class="reaction_count reply_count"></span> <span class="reaction_count reply_count"></span>
</button> </button>
@ -289,18 +321,145 @@ ${media_views}
return $(html) return $(html)
} }
} }
function timeline_pinned_template(status) {
for(i=0;i<status.emojis.length;i++) {
status.content = status.content.replace(new RegExp(":"+status.emojis[i].shortcode+":","g"),"<img src='"+status.emojis[i].url+"' class='emoji'>");
}
status.account.display_name = htmlEscape(status.account.display_name);
for(i=0;i<status.account.emojis.length;i++) {
status.account.display_name = status.account.display_name.replace(new RegExp(":"+status.account.emojis[i].shortcode+":","g"),"<img src='"+status.account.emojis[i].url+"' class='emoji'>");
}
const status_datetime= getRelativeDatetime(Date.now(), getConversionedDate(null, status.created_at)),
status_attr_datetime = getConversionedDate(null, status.created_at),
status_account_link= getRelativeURL(status.account.url, status.account.id);
let alart_text= "",
article_option= "",
toot_reblogs_count= "",
toot_favourites_count = "",
media_views = "";
if(status.spoiler_text) {
alart_text = "<span>"+status.spoiler_text+"</span><button class='cw_button'>SHOW MORE</button>",
article_option = "content_warning";
}
if (status.reblogs_count) {
toot_reblogs_count = status.reblogs_count;
}
if (status.favourites_count) {
toot_favourites_count = status.favourites_count;
}
if ( status.media_attachments.length ) {
media_views = mediaattachments_template(status);
}
if(status.account.display_name.length == 0) {
status.account.display_name = status.account.username;
}
switch(status.visibility) {
case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";break;
}
var own_toot_buttons = "";
if(status.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.id}">Delete Toot</a></li>
<li><a class="unpin_button" tid="${status.id}">Unpin Toot</a></li>`);
}
const html = (`
<li sid="${status.id}" class="toot_entry">
<div class="pinned_notice_box">
<i class="fa fa-fw fa-thumb-tack"></i>Pinned toot</span>
</div>
<div class="toot_entry_body">
<a href="${status_account_link}">
<div class="icon_box">
<img src="${status.account.avatar}">
</div>
</a>
<section class="toot_content">
<header class="toot_header">
<div class="text_ellipsis">
<a href="${status_account_link}">
<span class="displayname emoji_poss">
${status.account.display_name}
</span>
<span class="username">
@${status.account.acct}
</span>
<time datetime="${status_attr_datetime}">${status_datetime}</time>
</a>
</div>
<div class="expand_button_wrap">
<button class="expand_button">
<i class="fa fa-fw fa-chevron-down"></i>
</button>
<div class="expand_menu invisible disallow_select">
<ul>
<li><a class="copylink_button" url="${status.url}" >Copy link to Toot</a></li>
<li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">Mute @${status.account.username}</a></li>
<li><a class="block_button" mid="${status.account.id}" sid="${status.id}">Block @${status.account.username}</a></li>
${own_toot_buttons}
</ul>
<ul>
<li><a href="${status.url}" target="_blank">View original</a></li>
</ul>
</div>
</div>
</header>
<article class="toot_article ${article_option}">
${alart_text}
<span class="status_content emoji_poss">
${status.content}
</span>
${media_views}
</article>
<footer class="toot_footer" style="width:320px">
<div class="toot_reaction">
<button class="reply_button" tid="${status.id}"acct="@${status.account.acct}" display_name="${status.account.display_name}" privacy="${status.visibility}">
<i class="fa fa-fw fa-reply"></i>
<span class="reaction_count reply_count"></span>
</button>
</div>
<div class="toot_reaction">
<button class="boost_button" tid="${status.id}" reblogged="${status.reblogged}">
<i class="fa fa-fw fa-retweet"></i>
<span class="reaction_count boost_count">${toot_reblogs_count}</span>
</button>
</div>
<div class="toot_reaction">
<button class="fav_button" tid="${status.id}" favourited="${status.favourited}">
<i class="fa fa-fw fa-star"></i>
<span class="reaction_count fav_count">${toot_favourites_count}</span>
</button>
</div>
<div class="toot_reaction">
<button>
<i class="fa fa-fw fa-${toot_privacy_icon}" title="${toot_privacy_mode}"></i>
</button>
</div>
</footer>
</section>
</div>
</li>`);
return $(html)
}
function notifications_template(NotificationObj) { function notifications_template(NotificationObj) {
const notice_author_link = getRelativeURL(NotificationObj.account.url, NotificationObj.account.id); const notice_author_link = getRelativeURL(NotificationObj.account.url, NotificationObj.account.id);
if(NotificationObj.account.display_name.length == 0) { if(NotificationObj.account.display_name.length == 0) {
NotificationObj.account.display_name = NotificationObj.account.username; NotificationObj.account.display_name = NotificationObj.account.username;
} }
NotificationObj.account.display_name = htmlEscape(NotificationObj.account.display_name);
for(i=0;i<NotificationObj.account.emojis.length;i++) {
NotificationObj.account.display_name = NotificationObj.account.display_name.replace(new RegExp(":"+NotificationObj.account.emojis[i].shortcode+":","g"),"<img src='"+NotificationObj.account.emojis[i].url+"' class='emoji'>");
}
if ( NotificationObj.type === 'favourite' | NotificationObj.type === 'reblog' ) { if ( NotificationObj.type === 'favourite' | NotificationObj.type === 'reblog' ) {
const toot_author_link = getRelativeURL(NotificationObj.status.account.url, NotificationObj.status.account.id), const toot_author_link = getRelativeURL(NotificationObj.status.account.url, NotificationObj.status.account.id),
toot_datetime= getRelativeDatetime(Date.now(), getConversionedDate(null, NotificationObj.status.created_at)), toot_datetime= getRelativeDatetime(Date.now(), getConversionedDate(null, NotificationObj.status.created_at)),
toot_attr_datetime = getConversionedDate(null, NotificationObj.status.created_at); toot_attr_datetime = getConversionedDate(null, NotificationObj.status.created_at);
if( NotificationObj.type=='favourite' ){ if( NotificationObj.type=='favourite' ){
for(i=0;i<NotificationObj.status.emojis.length;i++) { for(i=0;i<NotificationObj.status.emojis.length;i++) {
NotificationObj.status.content = NotificationObj.status.content.replace(new RegExp(":"+NotificationObj.status.emojis[i].shortcode+":","g"),"<img src='"+NotificationObj.status.emojis[i].static_url+"' class='emoji'>"); NotificationObj.status.content = NotificationObj.status.content.replace(new RegExp(":"+NotificationObj.status.emojis[i].shortcode+":","g"),"<img src='"+NotificationObj.status.emojis[i].url+"' class='emoji'>");
}
NotificationObj.status.account.display_name = htmlEscape(NotificationObj.status.account.display_name);
for(i=0;i<NotificationObj.status.account.emojis.length;i++) {
NotificationObj.status.account.display_name = NotificationObj.status.account.display_name.replace(new RegExp(":"+NotificationObj.status.account.emojis[i].shortcode+":","g"),"<img src='"+NotificationObj.status.account.emojis[i].url+"' class='emoji'>");
} }
const html = (` const html = (`
<li sid="${NotificationObj.status.id}" class="notice_entry fav favourite toot_entry"> <li sid="${NotificationObj.status.id}" class="notice_entry fav favourite toot_entry">
@ -312,7 +471,7 @@ const html = (`
</a> </a>
<i class="fa fa-fw fa-star font-icon favourite"></i> <i class="fa fa-fw fa-star font-icon favourite"></i>
<a class="notice_author" href="${notice_author_link}"> <a class="notice_author" href="${notice_author_link}">
<span class="emoji_poss">${htmlEscape(NotificationObj.account.display_name)}</span> favourited Your Toot <span class="emoji_poss">${NotificationObj.account.display_name}</span> favourited Your Toot
</a> </a>
</div> </div>
<div class="notice_entry_body"> <div class="notice_entry_body">
@ -321,7 +480,7 @@ const html = (`
<div class="text_ellipsis"> <div class="text_ellipsis">
<a href="${toot_author_link}"> <a href="${toot_author_link}">
<span class="displayname emoji_poss"> <span class="displayname emoji_poss">
${htmlEscape(NotificationObj.status.account.display_name)} ${NotificationObj.status.account.display_name}
</span> </span>
<span class="username"> <span class="username">
@${NotificationObj.status.account.acct} @${NotificationObj.status.account.acct}
@ -339,7 +498,11 @@ ${htmlEscape(NotificationObj.status.account.display_name)}
return $(html); return $(html);
} else if ( NotificationObj.type === 'reblog' ) { } else if ( NotificationObj.type === 'reblog' ) {
for(i=0;i<NotificationObj.status.emojis.length;i++) { for(i=0;i<NotificationObj.status.emojis.length;i++) {
NotificationObj.status.content = NotificationObj.status.content.replace(new RegExp(":"+NotificationObj.status.emojis[i].shortcode+":","g"),"<img src='"+NotificationObj.status.emojis[i].static_url+"' class='emoji'>"); NotificationObj.status.content = NotificationObj.status.content.replace(new RegExp(":"+NotificationObj.status.emojis[i].shortcode+":","g"),"<img src='"+NotificationObj.status.emojis[i].url+"' class='emoji'>");
}
NotificationObj.status.account.display_name = htmlEscape(NotificationObj.status.account.display_name);
for(i=0;i<NotificationObj.status.account.emojis.length;i++) {
NotificationObj.status.account.display_name = NotificationObj.status.account.display_name.replace(new RegExp(":"+NotificationObj.status.account.emojis[i].shortcode+":","g"),"<img src='"+NotificationObj.status.account.emojis[i].url+"' class='emoji'>");
} }
const sid= NotificationObj.status.id, const sid= NotificationObj.status.id,
html = (` html = (`
@ -352,7 +515,7 @@ html = (`
</a> </a>
<i class="fa fa-fw fa-retweet font-icon boost"></i> <i class="fa fa-fw fa-retweet font-icon boost"></i>
<a class="notice_author" href="${notice_author_link}"> <a class="notice_author" href="${notice_author_link}">
<span class="emoji_poss" >${htmlEscape(NotificationObj.account.display_name)}</span> boosted Your Toot <span class="emoji_poss" >${NotificationObj.account.display_name}</span> boosted Your Toot
</a> </a>
</div> </div>
<blockquote class="notice_entry_body"> <blockquote class="notice_entry_body">
@ -361,7 +524,7 @@ html = (`
<div class="text_ellipsis"> <div class="text_ellipsis">
<a href="${toot_author_link}"> <a href="${toot_author_link}">
<span class="displayname emoji_poss"> <span class="displayname emoji_poss">
${htmlEscape(NotificationObj.status.account.display_name)} ${NotificationObj.status.account.display_name}
</span> </span>
<span class="username"> <span class="username">
@${NotificationObj.status.account.acct} @${NotificationObj.status.account.acct}
@ -388,7 +551,11 @@ toot_reblogs_count= "",
toot_favourites_count = "", toot_favourites_count = "",
media_views = ""; media_views = "";
for(i=0;i<NotificationObj.status.emojis.length;i++) { for(i=0;i<NotificationObj.status.emojis.length;i++) {
NotificationObj.status.content = NotificationObj.status.content.replace(new RegExp(":"+NotificationObj.status.emojis[i].shortcode+":","g"),"<img src='"+NotificationObj.status.emojis[i].static_url+"' class='emoji'>"); NotificationObj.status.content = NotificationObj.status.content.replace(new RegExp(":"+NotificationObj.status.emojis[i].shortcode+":","g"),"<img src='"+NotificationObj.status.emojis[i].url+"' class='emoji'>");
}
NotificationObj.status.account.display_name = htmlEscape(NotificationObj.status.account.display_name);
for(i=0;i<NotificationObj.status.account.emojis.length;i++) {
NotificationObj.status.account.display_name = NotificationObj.status.account.display_name.replace(new RegExp(":"+NotificationObj.status.account.emojis[i].shortcode+":","g"),"<img src='"+NotificationObj.status.account.emojis[i].url+"' class='emoji'>");
} }
if (NotificationObj.status.spoiler_text) { if (NotificationObj.status.spoiler_text) {
alart_text = '<span>'+NotificationObj.status.spoiler_text+'</span><button class="cw_button">SHOW MORE</button>', alart_text = '<span>'+NotificationObj.status.spoiler_text+'</span><button class="cw_button">SHOW MORE</button>',
@ -425,6 +592,16 @@ else {
toot_footer_width = ""; toot_footer_width = "";
toot_reblog_button = ""; toot_reblog_button = "";
} }
var own_toot_buttons = "";
if(status.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.id}">Delete Toot</a></li>`);
if(status.pinned == true) {
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.id}">Unpin Toot</a></li>`);
}
else {
own_toot_buttons += (`<li><a class="pin_button" tid="${status.id}">Pin Toot</a></li>`);
}
}
const html=(` const html=(`
<li sid="${NotificationObj.status.id}" class="toot_entry"> <li sid="${NotificationObj.status.id}" class="toot_entry">
<div class="toot_entry_body"> <div class="toot_entry_body">
@ -438,7 +615,7 @@ const html=(`
<div class="text_ellipsis"> <div class="text_ellipsis">
<a href="${toot_author_link}"> <a href="${toot_author_link}">
<span class="displayname emoji_poss"> <span class="displayname emoji_poss">
${htmlEscape(NotificationObj.status.account.display_name)} ${NotificationObj.status.account.display_name}
</span> </span>
<span class="username"> <span class="username">
@${NotificationObj.status.account.acct} @${NotificationObj.status.account.acct}
@ -453,9 +630,9 @@ ${htmlEscape(NotificationObj.status.account.display_name)}
<div class="expand_menu invisible disallow_select"> <div class="expand_menu invisible disallow_select">
<ul> <ul>
<li><a class="copylink_button" url="${status.url}" >Copy link to Toot</a></li> <li><a class="copylink_button" url="${status.url}" >Copy link to Toot</a></li>
<li class="delete"><a class="delete_button" tid="${NotificationObj.status.id}">Delete Toot</a></li>
<li class="mute"><a>Mute @${NotificationObj.status.account.username}</a></li> <li class="mute"><a>Mute @${NotificationObj.status.account.username}</a></li>
<li class="block"><a>Block @${NotificationObj.status.account.username}</a></li> <li class="block"><a>Block @${NotificationObj.status.account.username}</a></li>
${own_toot_buttons}
</ul> </ul>
<ul> <ul>
<li><a href="${NotificationObj.status.url}" target="_blank">View original</a></li> <li><a href="${NotificationObj.status.url}" target="_blank">View original</a></li>
@ -472,7 +649,7 @@ ${media_views}
</article> </article>
<footer class="toot_footer"${toot_footer_width}> <footer class="toot_footer"${toot_footer_width}>
<div class="toot_reaction"> <div class="toot_reaction">
<button class="reply_button" tid="${NotificationObj.status.id}" acct="@${NotificationObj.account.acct}" display_name="${htmlEscape(NotificationObj.account.display_name)}" privacy="${NotificationObj.status.visibility}"> <button class="reply_button" tid="${NotificationObj.status.id}" acct="@${NotificationObj.account.acct}" display_name="${NotificationObj.account.display_name}" privacy="${NotificationObj.status.visibility}">
<i class="fa fa-fw fa-reply"></i> <i class="fa fa-fw fa-reply"></i>
<span class="reaction_count reply_count"></span> <span class="reaction_count reply_count"></span>
</button> </button>
@ -505,7 +682,7 @@ const html=(`
</a> </a>
<i class="fa fa-fw fa-user font-icon follow"></i> <i class="fa fa-fw fa-user font-icon follow"></i>
<a class="notice_author" href="${notice_author_link}"> <a class="notice_author" href="${notice_author_link}">
<span class="emoji_poss">${htmlEscape(NotificationObj.account.display_name)}</span> followed you <span class="emoji_poss">${NotificationObj.account.display_name}</span> followed you
</a> </a>
</div> </div>
</li>`); </li>`);
@ -513,12 +690,15 @@ return $(html);
} }
} }
function follows_template(AccountObj) { function follows_template(AccountObj) {
const array = AccountObj.url.split('/'), const profile_link = getRelativeURL(AccountObj.url,AccountObj.id);
profile_link = '/'+array[array.length-1]+'@'+array[array.length-2]+'?mid='+AccountObj.id+'&';
if(AccountObj.display_name.length == 0) { if(AccountObj.display_name.length == 0) {
AccountObj.display_name = AccountObj.username; AccountObj.display_name = AccountObj.username;
} }
const html = (` AccountObj.display_name = htmlEscape(AccountObj.display_name);
for(i=0;i<AccountObj.emojis.length;i++) {
AccountObj.display_name = AccountObj.display_name.replace(new RegExp(":"+AccountObj.emojis[i].shortcode+":","g"),"<img src='"+AccountObj.emojis[i].url+"' class='emoji'>");
}
var html = (`
<div class="follows_profile_box" mid="${AccountObj.id}"> <div class="follows_profile_box" mid="${AccountObj.id}">
<div class="follows_profile_header"> <div class="follows_profile_header">
<img class="js_follows_header_image" src="${AccountObj.header}"/> <img class="js_follows_header_image" src="${AccountObj.header}"/>
@ -534,7 +714,7 @@ const html = (`
<div class="follows_profile_name_box"> <div class="follows_profile_name_box">
<a class="js_follows_profile_link emoji_poss" href="${profile_link}"> <a class="js_follows_profile_link emoji_poss" href="${profile_link}">
<h2 class="js_follows_profile_displayname"> <h2 class="js_follows_profile_displayname">
${htmlEscape(AccountObj.display_name)} ${AccountObj.display_name}
</h2> </h2>
<span class="js_follows_profile_username"> <span class="js_follows_profile_username">
@${AccountObj.acct} @${AccountObj.acct}
@ -546,7 +726,8 @@ ${htmlEscape(AccountObj.display_name)}
</div> </div>
</div> </div>
</div>`); </div>`);
return $(html) html = html.replace(new RegExp('class="emojione"',"g"),'class=emoji');
return $(html);
} }
function status_template(status, class_options) { function status_template(status, class_options) {
if ( status.reblog === null ) { if ( status.reblog === null ) {
@ -559,7 +740,11 @@ toot_reblogs_count= "",
toot_favourites_count = "", toot_favourites_count = "",
media_views = ""; media_views = "";
for(i=0;i<status.emojis.length;i++) { for(i=0;i<status.emojis.length;i++) {
status.content = status.content.replace(new RegExp(":"+status.emojis[i].shortcode+":","g"),"<img src='"+status.emojis[i].static_url+"' class='emoji'>"); status.content = status.content.replace(new RegExp(":"+status.emojis[i].shortcode+":","g"),"<img src='"+status.emojis[i].url+"' class='emoji'>");
}
status.account.display_name = htmlEscape(status.account.display_name);
for(i=0;i<status.account.emojis.length;i++) {
status.account.display_name = status.account.display_name.replace(new RegExp(":"+status.account.emojis[i].shortcode+":","g"),"<img src='"+status.account.emojis[i].url+"' class='emoji'>");
} }
if (status.spoiler_text) { if (status.spoiler_text) {
alart_text = '<span>'+status.spoiler_text+'</span><button class="cw_button">SHOW MORE</button>', alart_text = '<span>'+status.spoiler_text+'</span><button class="cw_button">SHOW MORE</button>',
@ -600,6 +785,16 @@ else {
toot_footer_width = ""; toot_footer_width = "";
toot_reblog_button = ""; toot_reblog_button = "";
} }
var own_toot_buttons = "";
if(status.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.id}">Delete Toot</a></li>`);
if(status.pinned == true) {
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.id}">Unpin Toot</a></li>`);
}
else {
own_toot_buttons += (`<li><a class="pin_button" tid="${status.id}">Pin Toot</a></li>`);
}
}
const html=(` const html=(`
<div sid="${status.id}" class="toot_detail ${class_options}"> <div sid="${status.id}" class="toot_detail ${class_options}">
<div class="toot_detail_body"> <div class="toot_detail_body">
@ -609,7 +804,7 @@ const html=(`
</div> </div>
<a href="${status_account_link}"> <a href="${status_account_link}">
<span class="displayname emoji_poss"> <span class="displayname emoji_poss">
${htmlEscape(status.account.display_name)} ${status.account.display_name}
</span> </span>
<span class="username"> <span class="username">
@${status.account.acct} @${status.account.acct}
@ -622,9 +817,9 @@ ${htmlEscape(status.account.display_name)}
<div class="expand_menu invisible disallow_select"> <div class="expand_menu invisible disallow_select">
<ul> <ul>
<li><a class="copylink_button" url="${status.url}" >Copy link to Toot</a></li> <li><a class="copylink_button" url="${status.url}" >Copy link to Toot</a></li>
<li class="delete"><a class="delete_button" tid="${status.id}">Delete Toot</a></li>
<li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">Mute @${status.account.username}</a></li> <li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">Mute @${status.account.username}</a></li>
<li><a class="block_button" mid="${status.account.id}" sid="${status.id}">Block @${status.account.username}</a></li> <li><a class="block_button" mid="${status.account.id}" sid="${status.id}">Block @${status.account.username}</a></li>
${own_toot_buttons}
</ul> </ul>
<ul> <ul>
<li><a href="${status.url}" target="_blank">View original</a></li> <li><a href="${status.url}" target="_blank">View original</a></li>
@ -644,7 +839,7 @@ ${media_views}
</section> </section>
<footer class="toot_footer"${toot_footer_width}> <footer class="toot_footer"${toot_footer_width}>
<div class="toot_reaction"> <div class="toot_reaction">
<button class="reply_button" tid="${status.id}" acct="@${status.account.acct}" display_name="${htmlEscape(status.account.display_name)}" privacy="${status.visibility}"> <button class="reply_button" tid="${status.id}" acct="@${status.account.acct}" display_name="${status.account.display_name}" privacy="${status.visibility}">
<i class="fa fa-fw fa-reply"></i> <i class="fa fa-fw fa-reply"></i>
<span class="reaction_count reply_count"></span> <span class="reaction_count reply_count"></span>
</button> </button>
@ -751,7 +946,15 @@ toot_reblogs_count= "",
toot_favourites_count = "", toot_favourites_count = "",
media_views = ""; media_views = "";
for(i=0;i<status.reblog.emojis.length;i++) { for(i=0;i<status.reblog.emojis.length;i++) {
status.reblog.content = status.reblog.content.replace(new RegExp(":"+status.reblog.emojis[i].shortcode+":","g"),"<img src='"+status.reblog.emojis[i].static_url+"' class='emoji'>"); status.reblog.content = status.reblog.content.replace(new RegExp(":"+status.reblog.emojis[i].shortcode+":","g"),"<img src='"+status.reblog.emojis[i].url+"' class='emoji'>");
}
status.account.display_name = htmlEscape(status.account.display_name);
for(i=0;i<status.account.emojis.length;i++) {
status.account.display_name = status.account.display_name.replace(new RegExp(":"+status.account.emojis[i].shortcode+":","g"),"<img src='"+status.account.emojis[i].url+"' class='emoji'>");
}
status.reblog.account.display_name = htmlEscape(status.reblog.account.display_name);
for(i=0;i<status.reblog.account.emojis.length;i++) {
status.reblog.account.display_name = status.reblog.account.display_name.replace(new RegExp(":"+status.reblog.account.emojis[i].shortcode+":","g"),"<img src='"+status.reblog.account.emojis[i].url+"' class='emoji'>");
} }
if (status.spoiler_text) { if (status.spoiler_text) {
alart_text = '<span>'+status.reblog.spoiler_text+'</span><button class="cw_button">SHOW MORE</button>', alart_text = '<span>'+status.reblog.spoiler_text+'</span><button class="cw_button">SHOW MORE</button>',
@ -778,6 +981,16 @@ switch(status.reblog.visibility) {
case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";checked_public=" checked";break; case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";checked_public=" checked";break;
case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";checked_unlisted=" checked";break; case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";checked_unlisted=" checked";break;
} }
var own_toot_buttons = "";
if(status.reblog.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.reblog.id}">Delete Toot</a></li>`);
if(status.reblog.pinned == true) {
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.reblog.id}">Unpin Toot</a></li>`);
}
else {
own_toot_buttons += (`<li><a class="pin_button" tid="${status.reblog.id}">Pin Toot</a></li>`);
}
}
const html=(` const html=(`
<div sid="${status.reblog.id}" class="toot_detail ${class_options}"> <div sid="${status.reblog.id}" class="toot_detail ${class_options}">
<div class="toot_detail_body"> <div class="toot_detail_body">
@ -787,7 +1000,7 @@ const html=(`
</div> </div>
<a href="${status_account_link}"> <a href="${status_account_link}">
<span class="displayname emoji_poss"> <span class="displayname emoji_poss">
${htmlEscape(status.reblog.account.display_name)} ${status.reblog.account.display_name}
</span> </span>
<span class="username"> <span class="username">
@${status.reblog.account.acct} @${status.reblog.account.acct}
@ -800,9 +1013,9 @@ ${htmlEscape(status.reblog.account.display_name)}
<div class="expand_menu invisible disallow_select"> <div class="expand_menu invisible disallow_select">
<ul> <ul>
<li><a class="copylink_button" url="${status.reblog.url}" >Copy link to Toot</a></li> <li><a class="copylink_button" url="${status.reblog.url}" >Copy link to Toot</a></li>
<li class="delete"><a class="delete_button" tid="${status.reblog.id}">Delete Toot</a></li>
<li><a class="mute_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">Mute @${status.reblog.account.username}</a></li> <li><a class="mute_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">Mute @${status.reblog.account.username}</a></li>
<li><a class="block_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">Block @${status.reblog.account.username}</a></li> <li><a class="block_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}">Block @${status.reblog.account.username}</a></li>
${own_toot_buttons}
</ul> </ul>
<ul> <ul>
<li><a href="${status.reblog.url}" target="_blank">View original</a></li> <li><a href="${status.reblog.url}" target="_blank">View original</a></li>
@ -822,7 +1035,7 @@ ${media_views}
</section> </section>
<footer class="toot_footer" style="width:320px"> <footer class="toot_footer" style="width:320px">
<div class="toot_reaction"> <div class="toot_reaction">
<button class="reply_button" tid="${status.reblog.id}" acct="@${status.reblog.account.acct}" display_name="${htmlEscape(status.reblog.account.display_name)}" privacy="${status.reblog.visibility}"> <button class="reply_button" tid="${status.reblog.id}" acct="@${status.reblog.account.acct}" display_name="${status.reblog.account.display_name}" privacy="${status.reblog.visibility}">
<i class="fa fa-fw fa-reply"></i> <i class="fa fa-fw fa-reply"></i>
<span class="reaction_count reply_count"></span> <span class="reaction_count reply_count"></span>
</button> </button>
@ -960,7 +1173,11 @@ toot_reblogs_count= "",
toot_favourites_count = "", toot_favourites_count = "",
media_views = ""; media_views = "";
for(i=0;i<status.emojis.length;i++) { for(i=0;i<status.emojis.length;i++) {
status.content = status.content.replace(new RegExp(":"+status.emojis[i].shortcode+":","g"),"<img src='"+status.emojis[i].static_url+"' class='emoji'>"); status.content = status.content.replace(new RegExp(":"+status.emojis[i].shortcode+":","g"),"<img src='"+status.emojis[i].url+"' class='emoji'>");
}
status.account.display_name = htmlEscape(status.account.display_name);
for(i=0;i<status.account.emojis.length;i++) {
status.account.display_name = status.account.display_name.replace(new RegExp(":"+status.account.emojis[i].shortcode+":","g"),"<img src='"+status.account.emojis[i].url+"' class='emoji'>");
} }
if ( status.spoiler_text ) { if ( status.spoiler_text ) {
alart_text = '<span>'+status.spoiler_text+'</span><button class="cw_button">SHOW MORE</button>', alart_text = '<span>'+status.spoiler_text+'</span><button class="cw_button">SHOW MORE</button>',
@ -997,6 +1214,16 @@ else {
toot_footer_width = ""; toot_footer_width = "";
toot_reblog_button = ""; toot_reblog_button = "";
} }
var own_toot_buttons = "";
if(status.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.id}">Delete Toot</a></li>`);
if(status.pinned == true) {
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.id}">Unpin Toot</a></li>`);
}
else {
own_toot_buttons += (`<li><a class="pin_button" tid="${status.id}">Pin Toot</a></li>`);
}
}
const html=(` const html=(`
<div sid="${status.id}" class="toot_entry ${class_options}"> <div sid="${status.id}" class="toot_entry ${class_options}">
<div class="toot_entry_body"> <div class="toot_entry_body">
@ -1007,7 +1234,7 @@ const html=(`
<header class="toot_header"> <header class="toot_header">
<a href="${status_account_link}"> <a href="${status_account_link}">
<span class="displayname emoji_poss"> <span class="displayname emoji_poss">
${htmlEscape(status.account.display_name)} ${status.account.display_name}
</span> </span>
<span class="username"> <span class="username">
@${status.account.acct} @${status.account.acct}
@ -1021,9 +1248,9 @@ ${htmlEscape(status.account.display_name)}
<div class="expand_menu invisible disallow_select"> <div class="expand_menu invisible disallow_select">
<ul> <ul>
<li><a class="copylink_button" url="" >Copy link to Toot</a></li> <li><a class="copylink_button" url="" >Copy link to Toot</a></li>
<li class="delete"><a class="delete_button" tid="${status.id}">Delete Toot</a></li>
<li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">Mute @${status.account.username}</a></li> <li><a class="mute_button" mid="${status.account.id}" sid="${status.id}">Mute @${status.account.username}</a></li>
<li><a class="block_button" mid="${status.account.id}" sid="${status.id}">Block @${status.account.username}</a></li> <li><a class="block_button" mid="${status.account.id}" sid="${status.id}">Block @${status.account.username}</a></li>
${own_toot_buttons}
</ul> </ul>
<ul> <ul>
<li><a href="${status.url}" target="_blank">View original</a></li> <li><a href="${status.url}" target="_blank">View original</a></li>
@ -1040,7 +1267,7 @@ ${media_views}
</article> </article>
<footer class="toot_footer"${toot_footer_width}> <footer class="toot_footer"${toot_footer_width}>
<div class="toot_reaction"> <div class="toot_reaction">
<button class="reply_button" tid="${status.id}" acct="@${status.account.acct}" display_name="${htmlEscape(status.account.display_name)}" privacy="${status.visibility}"> <button class="reply_button" tid="${status.id}" acct="@${status.account.acct}" display_name="${status.account.display_name}" privacy="${status.visibility}">
<i class="fa fa-fw fa-reply"></i> <i class="fa fa-fw fa-reply"></i>
<span class="reaction_count reply_count"></span> <span class="reaction_count reply_count"></span>
</button> </button>
@ -1073,7 +1300,15 @@ toot_reblogs_count= "",
toot_favourites_count = "", toot_favourites_count = "",
media_views = ""; media_views = "";
for(i=0;i<status.reblog.emojis.length;i++) { for(i=0;i<status.reblog.emojis.length;i++) {
status.reblog.content = status.reblog.content.replace(new RegExp(":"+status.reblog.emojis[i].shortcode+":","g"),"<img src='"+status.reblog.emojis[i].static_url+"' class='emoji'>"); status.reblog.content = status.reblog.content.replace(new RegExp(":"+status.reblog.emojis[i].shortcode+":","g"),"<img src='"+status.reblog.emojis[i].url+"' class='emoji'>");
}
status.account.display_name = htmlEscape(status.account.display_name);
for(i=0;i<status.account.emojis.length;i++) {
status.account.display_name = status.account.display_name.replace(new RegExp(":"+status.account.emojis[i].shortcode+":","g"),"<img src='"+status.account.emojis[i].url+"' class='emoji'>");
}
status.reblog.account.display_name = htmlEscape(status.reblog.account.display_name);
for(i=0;i<status.reblog.account.emojis.length;i++) {
status.reblog.account.display_name = status.reblog.account.display_name.replace(new RegExp(":"+status.reblog.account.emojis[i].shortcode+":","g"),"<img src='"+status.reblog.account.emojis[i].url+"' class='emoji'>");
} }
if ( status.spoiler_text ) { if ( status.spoiler_text ) {
alart_text = '<span>'+status.reblog.spoiler_text+'</span><button class="cw_button">SHOW MORE</button>', alart_text = '<span>'+status.reblog.spoiler_text+'</span><button class="cw_button">SHOW MORE</button>',
@ -1098,11 +1333,21 @@ switch(status.reblog.visibility) {
case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";break; case "public":toot_privacy_mode="Public";toot_privacy_icon="globe";break;
case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";break; case "unlisted":toot_privacy_mode="Unlisted";toot_privacy_icon="unlock-alt";break;
} }
var own_toot_buttons = "";
if(status.reblog.account.acct == current_acct) {
var own_toot_buttons = (`<li><a class="delete_button" tid="${status.reblog.id}">Delete Toot</a></li>`);
if(status.reblog.pinned == true) {
own_toot_buttons += (`<li><a class="unpin_button" tid="${status.reblog.id}">Unpin Toot</a></li>`);
}
else {
own_toot_buttons += (`<li><a class="pin_button" tid="${status.reblog.id}">Pin Toot</a></li>`);
}
}
const html=(` const html=(`
<div sid="${status.id}" class="toot_entry ${class_options}"> <div sid="${status.id}" class="toot_entry ${class_options}">
<div class="boost_author_box"> <div class="boost_author_box">
<a href="${status_account_link}"> <a href="${status_account_link}">
<span class="emoji_poss"><i class="fa fa-fw fa-retweet"></i>${htmlEscape(status.account.display_name)} Boosted</span> <span class="emoji_poss"><i class="fa fa-fw fa-retweet"></i>${status.account.display_name} Boosted</span>
</a> </a>
</div> </div>
<div class="toot_entry_body"> <div class="toot_entry_body">
@ -1113,7 +1358,7 @@ const html=(`
<header class="toot_header"> <header class="toot_header">
<a href="${status_reblog_account_link}"> <a href="${status_reblog_account_link}">
<span class="displayname emoji_poss"> <span class="displayname emoji_poss">
${htmlEscape(status.reblog.account.display_name)} ${status.reblog.account.display_name}
</span> </span>
<span class="username"> <span class="username">
@${status.reblog.account.acct} @${status.reblog.account.acct}
@ -1127,9 +1372,9 @@ ${htmlEscape(status.reblog.account.display_name)}
<div class="expand_menu invisible disallow_select"> <div class="expand_menu invisible disallow_select">
<ul> <ul>
<li><a class="copylink_button" url="" >Copy link to Toot</a></li> <li><a class="copylink_button" url="" >Copy link to Toot</a></li>
<li class="delete"><a class="delete_button" tid="${status.reblog.id}">Delete Toot</a></li>
<li><a class="mute_button" mid="${status.reblog.account.id}" sid="${status.id}">Mute @${status.reblog.account.username}</a></li> <li><a class="mute_button" mid="${status.reblog.account.id}" sid="${status.id}">Mute @${status.reblog.account.username}</a></li>
<li><a class="block_button" mid="${status.reblog.account.id}" sid="${status.id}">Block @${status.reblog.account.username}</a></li> <li><a class="block_button" mid="${status.reblog.account.id}" sid="${status.id}">Block @${status.reblog.account.username}</a></li>
${own_toot_buttons}
</ul> </ul>
<ul> <ul>
<li><a href="${status.reblog.url}" target="_blank">View original</a></li> <li><a href="${status.reblog.url}" target="_blank">View original</a></li>
@ -1146,7 +1391,7 @@ ${media_views}
</article> </article>
<footer class="toot_footer" style="width:320px"> <footer class="toot_footer" style="width:320px">
<div class="toot_reaction"> <div class="toot_reaction">
<button class="reply_button" tid="${status.reblog.id}" acct="@${status.reblog.account.acct}" display_name="${htmlEscape(status.reblog.account.display_name)}" privacy="${status.reblog.visibility}"> <button class="reply_button" tid="${status.reblog.id}" acct="@${status.reblog.account.acct}" display_name="${status.reblog.account.display_name}" privacy="${status.reblog.visibility}">
<i class="fa fa-fw fa-reply"></i> <i class="fa fa-fw fa-reply"></i>
<span class="reaction_count reply_count"></span> <span class="reaction_count reply_count"></span>
</button> </button>

View File

@ -115,6 +115,20 @@ $('.toot_entry[sid="'+sid+'"]').remove();
putMessage("Your Toot has been deleted"); putMessage("Your Toot has been deleted");
}); });
}); });
$(document).on('click','.pin_button', function(e) {
const sid = $(this).attr('tid');
api.post("statuses/"+sid+"/pin", function (data) {
$('.toot_entry[sid="'+sid+'"] .pin_button').removeClass("pin_button").addClass("unpin_button").text("Unpin Toot");
putMessage("Your Toot has been pinned");
});
});
$(document).on('click','.unpin_button', function(e) {
const sid = $(this).attr('tid');
api.post("statuses/"+sid+"/unpin", function (data) {
$('.toot_entry[sid="'+sid+'"] .unpin_button').removeClass("unpin_button").addClass("pin_button").text("Pin Toot");
putMessage("Your Toot has been unpinned");
});
});
$(document).on('click','.cw_button', function(e) { $(document).on('click','.cw_button', function(e) {
e.stopPropagation(); e.stopPropagation();
const article = $(this).parent(); const article = $(this).parent();
@ -484,14 +498,22 @@ replace_emoji();
}); });
}; };
function setAccount(AccountObj) { function setAccount(AccountObj) {
if(AccountObj.display_name.length == 0) {
AccountObj.display_name = AccountObj.username;
}
AccountObj.display_name = htmlEscape(AccountObj.display_name);
for(i=0;i<AccountObj.emojis.length;i++) {
AccountObj.display_name = AccountObj.display_name.replace(new RegExp(":"+AccountObj.emojis[i].shortcode+":","g"),"<img src='"+AccountObj.emojis[i].url+"' class='emoji'>");
}
$("#js_header_image").attr('src', AccountObj.header); $("#js_header_image").attr('src', AccountObj.header);
$("#js_profile_image").attr('src', AccountObj.avatar); $("#js_profile_image").attr('src', AccountObj.avatar);
$("#js_toots_count").text(AccountObj.statuses_count); $("#js_toots_count").text(AccountObj.statuses_count);
$("#js_following_count").text(AccountObj.following_count); $("#js_following_count").text(AccountObj.following_count);
$("#js_followers_count").text(AccountObj.followers_count); $("#js_followers_count").text(AccountObj.followers_count);
$("#js_profile_displayname").addClass("emoji_poss").text(AccountObj.display_name); $("#js_profile_displayname").addClass("emoji_poss").html(AccountObj.display_name);
$("#js_profile_username").text(AccountObj.acct); $("#js_profile_username").text(AccountObj.acct);
$("#js_profile_bio").addClass("emoji_poss").html(AccountObj.note); $("#js_profile_bio").addClass("emoji_poss").html(AccountObj.note);
$("#js_profile_bio .emojione").removeClass("emojione").addClass("emoji");
console.log(AccountObj.id); console.log(AccountObj.id);
console.log(current_id); console.log(current_id);
if( AccountObj.id == current_id ) { if( AccountObj.id == current_id ) {
@ -1153,7 +1175,7 @@ autosize($('#single_reply_status_form .status_textarea textarea'));
$('#single_reply_status_form input[name="privacy_option"]').val([privacy_mode]); $('#single_reply_status_form input[name="privacy_option"]').val([privacy_mode]);
$('#single_reply_status_form .expand_privacy_menu_button > i').attr('class', "fa fa-" + picon); $('#single_reply_status_form .expand_privacy_menu_button > i').attr('class', "fa fa-" + picon);
$('#single_reply_status_form').attr('tid',sid); $('#single_reply_status_form').attr('tid',sid);
$('.single_reply_status .single_reply_status_header span').text("Reply to "+display_name); $('.single_reply_status .single_reply_status_header span').addClass("emoji_poss").html("Reply to "+display_name);
$('#single_reply_status_form textarea').val(acct+" "); $('#single_reply_status_form textarea').val(acct+" ");
$('#single_reply_status_form .character_count').html(current_instance_charlimit); $('#single_reply_status_form .character_count').html(current_instance_charlimit);
$('#single_reply_status_emoji').lsxEmojiPicker({ $('#single_reply_status_emoji').lsxEmojiPicker({
@ -1171,6 +1193,7 @@ if(localStorage.setting_post_sensitive == "true") {
$("#single_reply_status_nsfw")[0].checked = true; $("#single_reply_status_nsfw")[0].checked = true;
$('#single_reply_status_form .media_attachments_preview_area').addClass('nsfw'); $('#single_reply_status_form .media_attachments_preview_area').addClass('nsfw');
} }
replace_emoji();
api.get('statuses/'+sid+'/', function(status) { api.get('statuses/'+sid+'/', function(status) {
timeline_template(status).appendTo(".single_reply_status .status_preview"); timeline_template(status).appendTo(".single_reply_status .status_preview");
replace_emoji(); replace_emoji();

View File

@ -1500,7 +1500,7 @@ $(this).html($(this).html().replace(emojis[i],emoji_dict[emoji.substr(1,emoji.le
} }
} }
$(this).html($(this).html().replace(/✅/g, "<img class='emoji' src='/assets/images/self_auth_min.png'>")); $(this).html($(this).html().replace(/✅/g, "<img class='emoji' src='/assets/images/self_auth_min.png'>"));
twemoji.parse(this,{base:(location.protocol==="https:"?"https:":"http:")+"//cdn.staticfile.org/twemoji/2.2.5/"}); twemoji.parse(this,{base:(location.protocol==="https:"?"https:":"http:")+"//cdn.staticfile.org/twemoji/11.0.0/2/"});
$(this).removeClass('emoji_poss'); $(this).removeClass('emoji_poss');
}); });
} }

View File

@ -24,7 +24,7 @@ error_reporting(E_ALL);
<script src="/assets/js/emojipicker/emojipicker.js"></script> <script src="/assets/js/emojipicker/emojipicker.js"></script>
<script src="/assets/js/halcyon/halcyonTemplates.js"></script> <script src="/assets/js/halcyon/halcyonTemplates.js"></script>
<script src="/assets/js/halcyon/halcyonUI.js"></script> <script src="/assets/js/halcyon/halcyonUI.js"></script>
<script src="//cdn.staticfile.org/twemoji/2.2.5/twemoji.min.js"></script> <script src="//cdn.staticfile.org/twemoji/11.0.0/2/twemoji.min.js"></script>
<script> <script>
if(!localStorage.getItem("current_id") | !localStorage.getItem("current_instance") | !localStorage.getItem("current_authtoken")) { if(!localStorage.getItem("current_id") | !localStorage.getItem("current_instance") | !localStorage.getItem("current_authtoken")) {
location.href = "/login"; location.href = "/login";

View File

@ -66,41 +66,40 @@ $("#js-profile_nav_toots > a").attr('href', location.pathname+location.search);
$("#js-profile_nav_following > a").attr('href', location.pathname+'/following'+location.search); $("#js-profile_nav_following > a").attr('href', location.pathname+'/following'+location.search);
$("#js-profile_nav_followers > a").attr('href', location.pathname+'/followers'+location.search); $("#js-profile_nav_followers > a").attr('href', location.pathname+'/followers'+location.search);
$("#js-profile_nav_favourites > a").attr('href', location.pathname+'/favourites'+location.search); $("#js-profile_nav_favourites > a").attr('href', location.pathname+'/favourites'+location.search);
<?php if (isset($_GET['mid'])): ?>
$(function() { $(function() {
const account_id = <?= htmlspecialchars((string)filter_input(INPUT_GET, 'mid'), ENT_QUOTES) ?>; <?php if(isset($_GET['mid'])) { ?>
const account_id = <?= htmlspecialchars((string)filter_input(INPUT_GET,'mid'),ENT_QUOTES) ?>;
api.get('accounts/'+account_id, function(userprofile) { api.get('accounts/'+account_id, function(userprofile) {
if ( userprofile !== null ) { if(userprofile !== null) {
$('title').text(replaced_emoji_return(userprofile.display_name)+' (@'+userprofile.acct+') | Halcyon'); <?php } else if(isset($_GET['user'])) {
setAccount(userprofile); $name = preg_split("/@/",$_GET['user'])[1];
setTimeline("accounts/"+userprofile.id+"/statuses",[{name:'exclude_replies',data:'true'}],"false"); $domain = preg_split("/@/",$_GET['user'])[2];
setRecentImages(userprofile.id)
} else {
location.href = "/404.php";
}
});
});
<?php elseif((isset($_GET['user']))): ?>
$(function(){
<?php
$name = preg_split("/@/", $_GET['user'])[1];
$domain = preg_split("/@/", $_GET['user'])[2];
$url= "https://$domain/@$name"; $url= "https://$domain/@$name";
?> ?>
const query = '<?= htmlspecialchars((string)filter_input(INPUT_GET, 'user'), ENT_QUOTES) ?>'; const query = '<?= htmlspecialchars((string)filter_input(INPUT_GET, 'user'), ENT_QUOTES) ?>';
api.get('search', [{name:'q',data:query},{name:'resolve',data:'true'}], function(search) { api.get('search',[{name:'q',data:query},{name:'resolve',data:'true'}],function(search) {
if ( !search.accounts.length ) { if(!search.accounts.length) {
location.href = "/404.php"; location.href = "/404.php";
} else if ("@"+search.accounts[0].acct === query || "@"+search.accounts[0].acct+"@"+localStorage.current_instance === query) { }
$('title').text(replaced_emoji_return(search.accounts[0].display_name)+' (@'+search.accounts[0].acct+') | Halcyon'); else if("@"+search.accounts[0].acct === query || "@"+search.accounts[0].acct+"@"+localStorage.current_instance === query) {
setAccount(search.accounts[0]); userprofile = search.accounts[0];
setTimeline("accounts/"+search.accounts[0].id+"/statuses",[{name:'exclude_replies',data:'true'}],"false"); <?php } ?>
setRecentImages(search.accounts[0].id) $('title').text(replaced_emoji_return(userprofile.display_name)+' (@'+userprofile.acct+') | Halcyon');
} else { setAccount(userprofile);
api.get("accounts/"+userprofile.id+"/statuses",[{name:'pinned',data:'true'},{name:'limit',data:'40'}],function(statuses) {
for(var i=0;i<statuses.length;i++) {
timeline_pinned_template(statuses[i]).appendTo("#js-timeline");
}
replaceInternalLink();
replace_emoji();
setTimeline("accounts/"+userprofile.id+"/statuses",[{name:'exclude_replies',data:'true'}],"false",true);
});
setRecentImages(userprofile.id)
}
else {
location.href = "/404.php"; location.href = "/404.php";
} }
}); });
}) })
<?php endif; ?>
</script> </script>
<?php include ('footer.php'); ?> <?php include ('footer.php'); ?>

View File

@ -1 +1 @@
1.2.3 1.2.4

View File

@ -1,6 +1,6 @@
<div class="single_reply_status invisible"> <div class="single_reply_status invisible">
<header class="single_reply_status_header"> <header class="single_reply_status_header">
<span class="emoji_poss">Reply to </span> <span>Reply to </span>
</header> </header>
<div class="status_preview"></div> <div class="status_preview"></div>
<form id="single_reply_status_form" name="single_reply_status_form" class="status_form"> <form id="single_reply_status_form" name="single_reply_status_form" class="status_form">