Improved German translation,added toot to @username buttons to profiles,removed blocked and muted people from who to follow

This commit is contained in:
nipos 2018-10-14 15:37:55 +02:00
parent 308f0778ed
commit db7afd4430
20 changed files with 498 additions and 64 deletions

View File

@ -24,6 +24,7 @@ We moved our instances list to a wiki page: https://notabug.org/halcyon-suite/ha
Read our new wiki pages: https://notabug.org/halcyon-suite/halcyon/wiki
## Blog
- Release of Version 2.1.2 - Added toot to @someone button to profiles,remove blocked and muted people from who to follow,improved German translation
- Release of Version 2.1.1 - Profile settings can be changed again,fixed various Firefox-only bugs,Removed error if browser sends no language
- [Release of Version 2.1.0 - Introducing lists and more](https://nikisoft.myblog.de/nikisoft/art/11640527/Halcyon-2-1-0-Introducing-lists-and-more)
- Release of Version 2.0.2 - Added dark theme,improved Japanese translation,added Galician translation,links to posts open in Halcyon now,smaller screens supported

View File

@ -205,6 +205,7 @@ localStorage.setItem("current_acct",AccountObj["acct"]);
localStorage.setItem("current_url",getRelativeURL(AccountObj["url"],AccountObj["id"]));
localStorage.setItem("current_header",AccountObj["header"]);
localStorage.setItem("current_avatar",AccountObj["avatar"]);
localStorage.setItem("current_locked",AccountObj["locked"]);
localStorage.setItem("current_statuses_count",AccountObj["statuses_count"]);
localStorage.setItem("current_following_count",AccountObj["following_count"]);
localStorage.setItem("current_followers_count",AccountObj["followers_count"]);
@ -218,6 +219,7 @@ current_acct = localStorage.getItem("current_acct");
current_url = localStorage.getItem("current_url");
current_header = localStorage.getItem("current_header");
current_avatar = localStorage.getItem("current_avatar");
current_locked = localStorage.getItem("current_locked");
current_statuses_count = localStorage.getItem("current_statuses_count");
current_following_count = localStorage.getItem("current_following_count");
current_followers_count = localStorage.getItem("current_followers_count");
@ -228,8 +230,8 @@ current_favourites_link = localStorage.getItem("current_favourites_link");
setCurrentProfile();
});
api.get("accounts/"+current_id+"/following",function(data) {
followings = new Array();
for(i=0;i<data.length;i++) {
var followings = new Array();
for(var i=0;i<data.length;i++) {
if(data[i].acct.indexOf("@") == -1) {
data[i].acct = data[i].acct+"@"+current_instance;
}
@ -238,6 +240,28 @@ followings.push(data[i].acct);
localStorage.setItem("current_following_accts",JSON.stringify(followings));
current_following_accts = followings;
});
api.get("blocks",function(data) {
var blocks = new Array();
for(i=0;i<data.length;i++) {
if(data[i].acct.indexOf("@") == -1) {
data[i].acct = data[i].acct+"@"+current_instance;
}
blocks.push(data[i].acct);
}
localStorage.setItem("current_blocked_accts",JSON.stringify(blocks));
current_blocked_accts = blocks;
});
api.get("mutes",function(data) {
var mutes = new Array();
for(i=0;i<data.length;i++) {
if(data[i].acct.indexOf("@") == -1) {
data[i].acct = data[i].acct+"@"+current_instance;
}
mutes.push(data[i].acct);
}
localStorage.setItem("current_muted_accts",JSON.stringify(mutes));
current_muted_accts = mutes;
});
api.get("instance",function(data) {
if(data.max_toot_chars) {
localStorage.setItem("current_instance_charlimit",data.max_toot_chars);
@ -273,6 +297,7 @@ current_acct = localStorage.getItem("current_acct");
current_url = localStorage.getItem("current_url");
current_header = localStorage.getItem("current_header");
current_avatar = localStorage.getItem("current_avatar");
current_locked = localStorage.getItem("current_locked");
current_statuses_count = localStorage.getItem("current_statuses_count");
current_following_count = localStorage.getItem("current_following_count");
current_followers_count = localStorage.getItem("current_followers_count");
@ -282,11 +307,17 @@ current_followers_count_link = localStorage.getItem("current_followers_count_lin
current_favourites_link = localStorage.getItem("current_favourites_link");
current_following_accts = localStorage.getItem("current_following_accts");
current_instance_charlimit = localStorage.getItem("current_instance_charlimit");
current_blocked_accts = localStorage.getItem("current_blocked_accts");
current_muted_accts = localStorage.getItem("current_muted_accts");
$(function() {setCurrentProfile()});
}
function setCurrentProfile() {
var is_account_locked = "";
if(current_locked == "true") {
is_account_locked = " <i class='fa fa-lock'></i>";
}
$(".js_current_profile_displayname").text(current_display_name);
$(".js_current_profile_username").text(current_acct);
$(".js_current_profile_username").html(current_acct+is_account_locked);
$(".js_current_profile_link").attr("href", current_url);
$(".js_current_header_image").attr("src", current_header);
$(".js_current_profile_image").attr("src", current_avatar);
@ -382,7 +413,7 @@ localStorage.current_follow_loaded = true;
if(data.status == 200) {
var wtflist = new Array();
for(i=0;i<data.ids.length;i++) {
if(current_following_accts.indexOf(data.ids[i].to_id) == -1) {
if(current_following_accts.indexOf(data.ids[i].to_id) == -1 && current_blocked_accts.indexOf(data.ids[i].to_id) == -1 && current_muted_accts.indexOf(data.ids[i].to_id) == -1) {
wtflist.push(data.ids[i].to_id);
}
}

View File

@ -23,9 +23,25 @@ $(".center_column").append(
$("<header>").attr("list-id",lists[i].id).addClass("timeline_header").css("margin-bottom","10px").append(
$("<div>").addClass("header_items").append(
$("<a>").attr("href","/lists/"+lists[i].id).addClass("list-title").addClass("item").addClass("emoji_poss").text(lists[i].title)).append(
$("<a>").attr("href","/lists/"+lists[i].id+"/add").addClass("list-adduser").addClass("item").css("float","right").append(
$("<i>").addClass("fa").addClass("fa-user-plus")
)).append(
$("<a>").attr("href","javascript:void(0)").addClass("list-delete").addClass("item").css("float","right").append(
$("<i>").addClass("fa").addClass("fa-trash")
).click(function() {
const list_id = $(this).parent().parent().attr("list-id");
$("#js-overlay_content_wrap .temporary_object").empty();
$('#js-overlay_content_wrap').addClass('view');
$('#js-overlay_content_wrap').addClass('black_08');
$('.overlay_confirm').removeClass('invisible');
$('.overlay_confirm_text').text(__("Are you sure that you want to delete this list?"));
$('.overlay_confirm_yes').click(function() {
$('.close_button').click();
api.delete("lists/"+list_id,function(data) {
$('.header_nav_item[list-id="'+list_id+'"]').remove();
$('.timeline_header[list-id="'+list_id+'"]').remove();
$('#js-follows_profile[list-id="'+list_id+'"]').remove();
putMessage(__("Your list has been deleted"));
});
});
})).append(
$("<a>").attr("href","javascript:void(0)").addClass("list-edit").addClass("item").css("float","right").append(
$("<i>").addClass("fa").addClass("fa-pencil")
).click(function() {
@ -51,25 +67,9 @@ replace_emoji();
}
});
})).append(
$("<a>").attr("href","javascript:void(0)").addClass("list-delete").addClass("item").css("float","right").append(
$("<i>").addClass("fa").addClass("fa-trash")
).click(function() {
const list_id = $(this).parent().parent().attr("list-id");
$("#js-overlay_content_wrap .temporary_object").empty();
$('#js-overlay_content_wrap').addClass('view');
$('#js-overlay_content_wrap').addClass('black_08');
$('.overlay_confirm').removeClass('invisible');
$('.overlay_confirm_text').text(__("Are you sure that you want to delete this list?"));
$('.overlay_confirm_yes').click(function() {
$('.close_button').click();
api.delete("lists/"+list_id,function(data) {
$('.header_nav_item[list-id="'+list_id+'"]').remove();
$('.timeline_header[list-id="'+list_id+'"]').remove();
$('#js-follows_profile[list-id="'+list_id+'"]').remove();
putMessage(__("Your list has been deleted"));
});
});
})))).append(
$("<a>").attr("href","/lists/"+lists[i].id+"/add").addClass("list-adduser").addClass("item").css("float","right").append(
$("<i>").addClass("fa").addClass("fa-user-plus")
)))).append(
$("<footer>").attr("id","js-follows_footer").attr("list-id",lists[i].id).append(
$("<i>").addClass("fa").addClass("fa-spin").addClass("fa-circle-o-notch").attr("aria-hidden","true")));
listAccounts(lists[i].id);

View File

@ -179,17 +179,25 @@ $("#setting_link_previews")[0].checked = true;
}
if(localStorage.setting_desktop_notifications == "true") {
$("#setting_desktop_notifications")[0].checked = true;
if("serviceWorker" in navigator) {
$("#service_worker_box").show();
}
if (Notification.permission === 'default') {
Notification.requestPermission(function(p) {
if (p === 'denied') {
$("#setting_desktop_notifications")[0].checked = false;
$("#service_worker_box").hide();
}
});
}
else if(Notification.permission == "denied") {
$("#setting_desktop_notifications")[0].checked = false;
$("#service_worker_box").hide();
}
}
if(localStorage.setting_service_worker == "true") {
$("#setting_service_worker")[0].checked = true;
}
if(localStorage.setting_show_replies == "true") {
$("#setting_show_replies")[0].checked = true;
}
@ -237,6 +245,9 @@ $("#setting_desktop_notifications")[0].checked = false;
putMessage(__("You didn't allow notifications"));
}
else {
if("serviceWorker" in navigator) {
$("#service_worker_box").show();
}
putMessage(__("Desktop notifications enabled"));
}
});
@ -247,14 +258,44 @@ $("#setting_desktop_notifications")[0].checked = false;
putMessage(__("You didn't allow notifications"));
}
else {
if("serviceWorker" in navigator) {
$("#service_worker_box").show();
}
putMessage(__("Desktop notifications enabled"));
}
}
else {
localStorage.setItem("setting_desktop_notifications","false");
$("#service_worker_box").hide();
putMessage(__("Desktop notifications disabled"));
}
});
$("#setting_service_worker").change(function() {
if(this.checked) {
localStorage.setItem("setting_service_worker","true");
if("serviceWorker" in navigator) {
navigator.serviceWorker.register("/assets/js/halcyon/halcyonWorker.js").then(function(worker) {
console.log("Service worker successfully registered",worker);
}).catch(function(error) {
console.log("There was an error when registering the service worker",error);
});
}
putMessage(__("Notifications when tab is closed enabled"));
}
else {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.getRegistrations().then(function(registrations) {
if(registrations.length) {
for(let registration of registrations) {
registration.unregister();
}
}
});
}
localStorage.setItem("setting_service_worker","false");
putMessage(__("Notifications when tab is closed disabled"));
}
});
$("#setting_show_replies").change(function() {
if(this.checked) {
localStorage.setItem("setting_show_replies","true");

View File

@ -133,6 +133,10 @@ var own_toot_buttons = (`<li><a class="mute_button" mid="${status.account.id}" s
<li><a class="addlist_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">${__('Add to list')} @${status.account.username}</a></li>
<li><a class="report_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">${__('Report this Toot')}</a></li>`);
}
var is_account_locked = "";
if(status.account.locked == true) {
is_account_locked = " <i class='fa fa-lock'></i>";
}
const html=(`
<li sid="${status.id}" class="toot_entry">
<div class="toot_entry_body">
@ -149,7 +153,7 @@ const html=(`
${status.account.display_name}
</span>
<span class="username">
@${status.account.acct}
@${status.account.acct}${is_account_locked}
</span>
<time datetime="${status_attr_datetime}">${status_datetime}</time>
</a>
@ -269,6 +273,10 @@ var own_toot_buttons = (`<li><a class="mute_button" mid="${status.reblog.account
<li><a class="addlist_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}" display_name="${status.reblog.account.display_name}">${__('Add to list')} @${status.reblog.account.username}</a></li>
<li><a class="report_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}" display_name="${status.reblog.account.display_name}">${__('Report this Toot')}</a></li>`);
}
var is_account_locked = "";
if(status.reblog.account.locked == true) {
is_account_locked = " <i class='fa fa-lock'></i>";
}
const html = (`
<li sid="${status.id}" class="toot_entry">
<div class="boost_author_box">
@ -290,7 +298,7 @@ const html = (`
${status.reblog.account.display_name}
</span>
<span class="username">
@${status.reblog.account.acct}
@${status.reblog.account.acct}${is_account_locked}
</span>
<time datetime="${status_attr_datetime}">${status_datetime}</time>
</a>
@ -404,6 +412,10 @@ var own_toot_buttons = (`<li><a class="mute_button" mid="${status.account.id}" s
<li><a class="addlist_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">${__('Add to list')} @${status.account.username}</a></li>
<li><a class="report_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">${__('Report this Toot')}</a></li>`);
}
var is_account_locked = "";
if(status.account.locked == true) {
is_account_locked = " <i class='fa fa-lock'></i>";
}
const html = (`
<li sid="${status.id}" class="toot_entry">
<div class="pinned_notice_box">
@ -423,7 +435,7 @@ const html = (`
${status.account.display_name}
</span>
<span class="username">
@${status.account.acct}
@${status.account.acct}${is_account_locked}
</span>
<time datetime="${status_attr_datetime}">${status_datetime}</time>
</a>
@ -501,6 +513,10 @@ NotificationObj.status.account.display_name = htmlEscape(NotificationObj.status.
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'>");
}
var is_account_locked = "";
if(NotificationObj.status.account.locked == true) {
is_account_locked = " <i class='fa fa-lock'></i>";
}
const html = (`
<li sid="${NotificationObj.status.id}" class="notice_entry fav favourite toot_entry">
<div class="notice_author_box">
@ -523,7 +539,7 @@ const html = (`
${NotificationObj.status.account.display_name}
</span>
<span class="username">
@${NotificationObj.status.account.acct}
@${NotificationObj.status.account.acct}${is_account_locked}
</span>
</a>
</div>
@ -544,7 +560,11 @@ NotificationObj.status.account.display_name = htmlEscape(NotificationObj.status.
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;
var is_account_locked = "";
if(NotificationObj.status.account.locked == true) {
is_account_locked = " <i class='fa fa-lock'></i>";
}
html = (`
<li sid="${NotificationObj.status.id}" class="notice_entry bos boost toot_entry">
<div class="notice_author_box">
@ -567,7 +587,7 @@ html = (`
${NotificationObj.status.account.display_name}
</span>
<span class="username">
@${NotificationObj.status.account.acct}
@${NotificationObj.status.account.acct}${is_account_locked}
</span>
</a>
</div>
@ -657,6 +677,10 @@ var own_toot_buttons = (`<li><a class="mute_button" mid="${NotificationObj.statu
<li><a class="addlist_button" mid="${NotificationObj.status.account.id}" sid="${NotificationObj.status.id}" display_name="${NotificationObj.status.account.display_name}">${__('Add to list')} @${NotificationObj.status.account.username}</a></li>
<li><a class="report_button" mid="${NotificationObj.status.account.id}" sid="${NotificationObj.status.id}" display_name="${NotificationObj.account.display_name}">${__('Report this Toot')}</a></li>`);
}
var is_account_locked = "";
if(NotificationObj.status.account.locked == true) {
is_account_locked = " <i class='fa fa-lock'></i>";
}
const html=(`
<li sid="${NotificationObj.status.id}" class="toot_entry">
<div class="toot_entry_body">
@ -673,7 +697,7 @@ const html=(`
${NotificationObj.status.account.display_name}
</span>
<span class="username">
@${NotificationObj.status.account.acct}
@${NotificationObj.status.account.acct}${is_account_locked}
</span>
<time datetime="${toot_attr_datetime}">${toot_datetime}</time>
</a>
@ -751,6 +775,10 @@ 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 is_account_locked = "";
if(AccountObj.locked == true) {
is_account_locked = " <i class='fa fa-lock'></i>";
}
var html = (`
<div class="follows_profile_box" mid="${AccountObj.id}">
<div class="follows_profile_header">
@ -770,7 +798,7 @@ var html = (`
${AccountObj.display_name}
</h2>
<span class="js_follows_profile_username">
@${AccountObj.acct}
@${AccountObj.acct}${is_account_locked}
</span>
</a>
</div>
@ -863,6 +891,10 @@ var own_toot_buttons = (`<li><a class="mute_button" mid="${status.account.id}" s
<li><a class="addlist_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">${__('Add to list')} @${status.account.username}</a></li>
<li><a class="report_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">${__('Report this Toot')}</a></li>`);
}
var is_account_locked = "";
if(status.account.locked == true) {
is_account_locked = " <i class='fa fa-lock'></i>";
}
const html=(`
<div sid="${status.id}" class="toot_detail ${class_options}">
<div class="toot_detail_body">
@ -875,7 +907,7 @@ const html=(`
${status.account.display_name}
</span>
<span class="username">
@${status.account.acct}
@${status.account.acct}${is_account_locked}
</span>
</a>
<div class="expand_button_wrap">
@ -1072,6 +1104,10 @@ var own_toot_buttons = (`<li><a class="mute_button" mid="${status.reblog.account
<li><a class="addlist_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}" display_name="${status.reblog.account.display_name}">${__('Add to list')} @${status.reblog.account.username}</a></li>
<li><a class="report_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}" display_name="${status.reblog.account.display_name}">${__('Report this Toot')}</a></li>`);
}
var is_account_locked = "";
if(status.reblog.account.locked == true) {
is_account_locked = " <i class='fa fa-lock'></i>";
}
const html=(`
<div sid="${status.reblog.id}" class="toot_detail ${class_options}">
<div class="toot_detail_body">
@ -1084,7 +1120,7 @@ const html=(`
${status.reblog.account.display_name}
</span>
<span class="username">
@${status.reblog.account.acct}
@${status.reblog.account.acct}${is_account_locked}
</span>
</a>
<div class="expand_button_wrap">
@ -1318,6 +1354,10 @@ var own_toot_buttons = (`<li><a class="mute_button" mid="${status.account.id}" s
<li><a class="addlist_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">${__('Add to list')} @${status.account.username}</a></li>
<li><a class="report_button" mid="${status.account.id}" sid="${status.id}" display_name="${status.account.display_name}">${__('Report this Toot')}</a></li>`);
}
var is_account_locked = "";
if(status.account.locked == true) {
is_account_locked = " <i class='fa fa-lock'></i>";
}
const html=(`
<div sid="${status.id}" class="toot_entry ${class_options}">
<div class="toot_entry_body">
@ -1331,7 +1371,7 @@ const html=(`
${status.account.display_name}
</span>
<span class="username">
@${status.account.acct}
@${status.account.acct}${is_account_locked}
</span>
<time datetime="${status_attr_datetime}">${status_datetime}</time>
</a>
@ -1450,6 +1490,10 @@ var own_toot_buttons = (`<li><a class="mute_button" mid="${status.reblog.account
<li><a class="addlist_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}" display_name="${status.reblog.account.display_name}">${__('Add to list')} @${status.reblog.account.username}</a></li>
<li><a class="report_button" mid="${status.reblog.account.id}" sid="${status.reblog.id}" display_name="${status.reblog.account.display_name}">${__('Report this Toot')}</a></li>`);
}
var is_account_locked = "";
if(status.reblog.account.locked == true) {
is_account_locked = " <i class='fa fa-lock'></i>";
}
const html=(`
<div sid="${status.id}" class="toot_entry ${class_options}">
<div class="boost_author_box">
@ -1468,7 +1512,7 @@ const html=(`
${status.reblog.account.display_name}
</span>
<span class="username">
@${status.reblog.account.acct}
@${status.reblog.account.acct}${is_account_locked}
</span>
</a>
<time datetime="${status_attr_datetime}">${status_datetime}</time>

View File

@ -714,13 +714,17 @@ AccountObj.display_name = AccountObj.display_name.replace(new RegExp(":"+Account
const calendar = [__("Jan"),__("Feb"),__("Mar"),__("Apr"),__("May"),__("Jun"),__("Jul"),__("Aug"),__("Sep"),__("Oct"),__("Nov"),__("Dec")];
var creation_date = new Date(AccountObj.created_at);
creation_date = calendar[creation_date.getUTCMonth()]+" "+creation_date.getUTCFullYear();
var is_account_locked = "";
if(AccountObj.locked == true) {
is_account_locked = " <i class='fa fa-lock'></i>";
}
$("#js_header_image").attr('src', AccountObj.header);
$("#js_profile_image").attr('src', AccountObj.avatar);
$("#js_toots_count").text(AccountObj.statuses_count);
$("#js_following_count").text(AccountObj.following_count);
$("#js_followers_count").text(AccountObj.followers_count);
$("#js_profile_displayname").addClass("emoji_poss").html(AccountObj.display_name);
$("#js_profile_username").text(AccountObj.acct);
$("#js_profile_username").html(AccountObj.acct+is_account_locked);
$("#js_profile_bio").addClass("emoji_poss").html(AccountObj.note);
$("#js_profile_bio .emojione").removeClass("emojione").addClass("emoji");
$('#js_profile_public_link a').attr('href',AccountObj.url);
@ -741,6 +745,7 @@ $(`<a href="${current_favourites_link}">
<span>${__('Show')}</span>
</a>`).appendTo("#js-profile_nav_favourites");
} else {
$("#profile_toot_buttons").show();
api.get('accounts/relationships', [{name:'id', data:String(AccountObj.id)}], function(RelationshipObj) {
if (RelationshipObj[0].followed_by) {
$('#main .profile_username .profile_followed_by').removeClass('invisible');
@ -808,13 +813,34 @@ if(userstream.payload.account.display_name.length == 0) {
userstream.payload.account.display_name = userstream.payload.account.username;
}
switch(userstream.payload.type) {
case "favourite":pushNotification("New favourite",userstream.payload.account.display_name+" "+__("favourited your toot"));break;
case "reblog":pushNotification("New boost",userstream.payload.account.display_name+" "+__("boosted your toot"));break;
case "follow":pushNotification("New follower",userstream.payload.account.display_name+" "+__("followed you"));$(".js_current_followers_count").html(++localStorage.current_followers_count);break;
case "mention":pushNotification("New mention",userstream.payload.account.display_name+" "+__("mentioned you"));break;
case "favourite":pushNotification(__("New favourite"),userstream.payload.account.display_name+" "+__("favourited your toot"));break;
case "reblog":pushNotification(__("New boost"),userstream.payload.account.display_name+" "+__("boosted your toot"));break;
case "follow":pushNotification(__("New follower"),userstream.payload.account.display_name+" "+__("followed you"));$(".js_current_followers_count").html(++localStorage.current_followers_count);break;
case "mention":pushNotification(__("New mention"),userstream.payload.account.display_name+" "+__("mentioned you"));break;
}
}
});
if(localStorage.setting_service_worker == "true") {
if("serviceWorker" in navigator) {
navigator.serviceWorker.register("/assets/js/halcyon/halcyonWorker.js").then(function(worker) {
console.log("Service worker successfully registered",worker);
if(worker.active) {
var translation = new Object();
translation["New favourite"] = __("New favourite");
translation["New boost"] = __("New boost");
translation["New follower"] = __("New follower");
translation["New mention"] = __("New mention");
translation["favourited your toot"] = __("favourited your toot");
translation["boosted your toot"] = __("boosted your toot");
translation["followed you"] = __("followed you");
translation["mentioned you"] = __("mentioned you");
worker.active.postMessage({instance:current_instance,authtoken:authtoken,translation:translation});
}
}).catch(function(error) {
console.log("There was an error when registering the service worker",error);
});
}
}
}
function setOverlayStatus(sid) {
if ( !window.getSelection().toString() ) {
@ -894,8 +920,10 @@ if(!$(e.target).closest('#creat_status').length && !$(e.target).closest('.overla
$('#overlay_status_emoji').lsxEmojiPicker("destroy");
}
});
$(document).on('click', '#creat_status', function(e) {
switch(localStorage.getItem("setting_post_privacy")) {
$(document).on('click', '#creat_status,.profile_sendto', function(e) {
if($(this).attr("privacy")) privacy_mode = $(this).attr("privacy")
else privacy_mode = localStorage.getItem("setting_post_privacy")
switch(privacy_mode) {
case "public":picon="globe";break;
case "unlisted":picon="unlock-alt";break;
case "private":picon="lock";break;
@ -909,8 +937,12 @@ $('#overlay_status_form .status_textarea textarea').addClass('focus');
$('.overlay_status .submit_status_label').addClass('active_submit_button');
$('#overlay_status_form .status_textarea textarea').focus();
autosize($('#overlay_status_form .status_textarea textarea'));
$('#overlay_status_form input[name="privacy_option"]').val([localStorage.getItem("setting_post_privacy")]);
$('#overlay_status_form input[name="privacy_option"]').val([privacy_mode]);
$('#overlay_status_form .expand_privacy_menu_button > i').attr('class', "fa fa-" + picon);
if($(this).attr("display_name")) $('.overlay_status .overlay_status_header span').addClass("emoji_poss").html(__("Toot to")+" "+$(this).attr("display_name"));
else $('.overlay_status .overlay_status_header span').html(__("Compose new Toot"));
if($(this).attr("acct")) $('#overlay_status_form textarea').val($(this).attr("acct")+" ");
else $('#overlay_status_form textarea').val("");
$('#overlay_status_form .character_count').html(current_instance_charlimit);
$('label[for=overlay_status_emoji]').click(function(e) {$('#overlay_status_emoji').trigger('click',e)});
$('#overlay_status_emoji').lsxEmojiPicker({

View File

@ -0,0 +1,28 @@
importScripts("/assets/js/mastodon.js/mastodon.js");
function pushNotification(title,message) {
self.registration.showNotification(title, {
body: message,
icon: '/assets/images/halcyon_logo.png'
});
}
function __(msg) {return translation[msg]}
onmessage = function(msg) {
translation = msg.data.translation;
api = new MastodonAPI({
instance:'https://'+msg.data.instance,
api_user_token:msg.data.authtoken
});
api.stream("user", function(userstream) {
if(userstream.event === "notification") {
if(userstream.payload.account.display_name.length == 0) {
userstream.payload.account.display_name = userstream.payload.account.username;
}
switch(userstream.payload.type) {
case "favourite":pushNotification(__("New favourite"),userstream.payload.account.display_name+" "+__("favourited your toot"));break;
case "reblog":pushNotification(__("New boost"),userstream.payload.account.display_name+" "+__("boosted your toot"));break;
case "follow":pushNotification(__("New follower"),userstream.payload.account.display_name+" "+__("followed you"));break;
case "mention":pushNotification(__("New mention"),userstream.payload.account.display_name+" "+__("mentioned you"));break;
}
}
});
}

Binary file not shown.

View File

@ -1,16 +1,17 @@
# Niklas Poslovski <ni.pos@yandex.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-09-30 09:53+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"MIME-Version: 1.0\n"
"PO-Revision-Date: 2018-08-05 10:53+0000\n"
"PO-Revision-Date: 2018-10-14 09:41+0000\n"
"Last-Translator: Niklas Poslovski <ni.pos@yandex.com>\n"
"Language-Team: German\n"
"Language: de\n"
"X-Generator: Zanata 4.6.0\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid "Language"
@ -28,12 +29,15 @@ msgstr "Japanisch"
msgid "Language_ko_KR"
msgstr "Koreanisch"
msgid "Language_pt_BR"
msgstr "Portugiesisch"
msgid "Language_pl_PL"
msgstr "Polnisch"
msgid "Language_pt_BR"
msgstr "Portugiesisch (Brasilien)"
msgid "Language_gl_ES"
msgstr "Galizisch (Spanien)"
msgid "Sensitive content"
msgstr "Sensitiver Inhalt"
@ -541,3 +545,109 @@ msgstr "Toots"
msgid "Favourites"
msgstr "Favoriten"
msgid "New favourite"
msgstr "Neuer Favorit"
msgid "New boost"
msgstr "Neuer Boost"
msgid "New follower"
msgstr "Neuer Follower"
msgid "New mention"
msgstr "Neue Erwähnung"
msgid "Dark theme enabled"
msgstr "Dunkles Design aktiviert"
msgid "Dark theme disabled"
msgstr "Dunkles Design deaktiviert"
msgid "Only on top"
msgstr "Nur oben"
msgid "Enable dark theme"
msgstr "Dunkles Design aktivieren"
msgid "Please enter the new name for this list."
msgstr "Bitte gib den neuen Namen für die Liste ein."
msgid "The name of your list can't be empty!"
msgstr "Der Name der Liste darf nicht leer sein!"
msgid "Your list has been renamed"
msgstr "Deine Liste wurde umbenannt"
msgid "Are you sure that you want to delete this list?"
msgstr "Bist du sicher, dass du diese Liste löschen möchtest?"
msgid "Your list has been deleted"
msgstr "Deine Liste wurde gelöscht"
msgid "Please enter the name of your new list."
msgstr "Bitte gib den Namen für die neue Liste ein"
msgid "Add"
msgstr "Hinzufügen"
msgid "Remove"
msgstr "Entfernen"
msgid "Add to list"
msgstr "Liste hinzufügen"
msgid "Are you sure that you want to mute this user?"
msgstr "Bist du sicher, dass du den Nutzer stummschalten möchtest?"
msgid "Are you sure that you want to block this user?"
msgstr "Bist du sicher, dass du den Nutzer blockieren möchtest?"
msgid "Are you sure that you want to delete this toot?"
msgstr "Bist du sicher, dass du diesen Toot löschen möchtest?"
msgid "Added this account to the list"
msgstr "Das Konto wurde zur Liste hinzugefügt"
msgid ""
"You need to follow this user to add him/her to the list. Do you want to do "
"that now?"
msgstr ""
"Du musst diesem Nutzer folgen, um ihn der Liste hinzuzufügen. Möchtest du "
"das?"
msgid "You successfully followed this user."
msgstr "Du folgst diesem Nutzer."
msgid "Removed this account from the list"
msgstr "Konto von der Liste entfernt"
msgid "Joined at"
msgstr "dabei seit"
msgid "Direct messages"
msgstr "Direktnachrichten"
msgid "Lists"
msgstr "Listen"
msgid "Open public profile"
msgstr "Öffentliches Profil anzeigen"
msgid "My Lists"
msgstr "Meine Listen"
msgid "Confirmation"
msgstr "Bestätigung"
msgid "Yes"
msgstr "Ja"
msgid "Cancel"
msgstr "Abbrechen"
msgid "Prompt"
msgstr "Frage"
msgid "Ok"
msgstr "Ok"

Binary file not shown.

View File

@ -1,16 +1,17 @@
# Niklas Poslovski <ni.pos@yandex.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-09-30 09:53+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"MIME-Version: 1.0\n"
"PO-Revision-Date: 2018-08-01 03:42+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: English\n"
"PO-Revision-Date: 2018-09-30 10:58+0000\n"
"Last-Translator: Niklas Poslovski <ni.pos@yandex.com>\n"
"Language-Team: English (United States)\n"
"Language: en\n"
"X-Generator: Zanata 4.5.0\n"
"X-Generator: Zanata 4.6.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid "Language"
@ -28,11 +29,14 @@ msgstr "Japanese"
msgid "Language_ko_KR"
msgstr "Korean"
msgid "Language_pl_PL"
msgstr "Polish"
msgid "Language_pt_BR"
msgstr "Portuguese (Brazil)"
msgid "Language_pl_PL"
msgstr "Polish"
msgid "Language_gl_ES"
msgstr "Galician"
msgid "Sensitive content"
msgstr "Sensitive content"
@ -540,3 +544,109 @@ msgstr "Toots"
msgid "Favourites"
msgstr "Favourites"
msgid "New favourite"
msgstr "New favourite"
msgid "New boost"
msgstr "New boost"
msgid "New follower"
msgstr "New follower"
msgid "New mention"
msgstr "New mention"
msgid "Dark theme enabled"
msgstr "Dark theme enabled"
msgid "Dark theme disabled"
msgstr "Dark theme disabled"
msgid "Only on top"
msgstr "Only on top"
msgid "Enable dark theme"
msgstr "Enable dark theme"
msgid "Please enter the new name for this list."
msgstr "Please enter the new name for this list."
msgid "The name of your list can't be empty!"
msgstr "The name of your list can't be empty!"
msgid "Your list has been renamed"
msgstr "Your list has been renamed"
msgid "Are you sure that you want to delete this list?"
msgstr "Are you sure that you want to delete this list?"
msgid "Your list has been deleted"
msgstr "Your list has been deleted"
msgid "Please enter the name of your new list."
msgstr "Please enter the name of your new list."
msgid "Add"
msgstr "Add"
msgid "Remove"
msgstr "Remove"
msgid "Add to list"
msgstr "Add to list"
msgid "Are you sure that you want to mute this user?"
msgstr "Are you sure that you want to mute this user?"
msgid "Are you sure that you want to block this user?"
msgstr "Are you sure that you want to block this user?"
msgid "Are you sure that you want to delete this toot?"
msgstr "Are you sure that you want to delete this toot?"
msgid "Added this account to the list"
msgstr "Added this account to the list"
msgid ""
"You need to follow this user to add him/her to the list. Do you want to do "
"that now?"
msgstr ""
"You need to follow this user to add him/her to the list. Do you want to do "
"that now?"
msgid "You successfully followed this user."
msgstr "You successfully followed this user."
msgid "Removed this account from the list"
msgstr "Removed this account from the list"
msgid "Joined at"
msgstr "Joined at"
msgid "Direct messages"
msgstr "Direct messages"
msgid "Lists"
msgstr "Lists"
msgid "Open public profile"
msgstr "Open public profile"
msgid "My Lists"
msgstr "My Lists"
msgid "Confirmation"
msgstr "Confirmation"
msgid "Yes"
msgstr "Yes"
msgid "Cancel"
msgstr "Cancel"
msgid "Prompt"
msgstr "Prompt"
msgid "Ok"
msgstr "Ok"

View File

@ -37,6 +37,7 @@ localStorage.setItem('setting_local_instance', 'default');
localStorage.setItem('setting_search_filter', 'all');
localStorage.setItem('setting_link_previews', 'true');
localStorage.setItem('setting_desktop_notifications', 'true');
localStorage.setItem('setting_service_worker', 'false');
localStorage.setItem('setting_who_to_follow', 'false');
localStorage.setItem('setting_show_replies', 'true');
localStorage.setItem('setting_show_content_warning', 'false');

View File

@ -152,6 +152,7 @@ Git repository: <a href="https://notabug.org/halcyon-suite/halcyon" target="_bla
<h2><?=_('Help us')?></h2>
<p>
Bitcoin: 1D6GThQqHQYnruKYrKyW9JC86ZGWxjt1hK<br/>
Liberapay: <a href="https://liberapay.com/nipos">Donate to @nipos</a>
</p>
</article>
</main>

View File

@ -63,6 +63,19 @@
</div>
</div>
</div>
<!--<div id="service_worker_box" style="display:none">
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Notifications when tab closed')?></h3>
</div>
<div class="service_worker_wrap" style="float:left;width:50%">
<div class="switch">
<input type="checkbox" id="setting_service_worker">
<div class="switch-btn">
<span></span>
</div>
</div>
</div>
</div>-->
<div style="float:left;width:50%;text-align:right;margin-top:16px">
<h3><?=_('Show replies')?></h3>
</div>

View File

@ -20,6 +20,10 @@
<div id="js_profile_joined_date" class="profile_with_icon" style="margin-bottom:5px">
<span><i class="fa fa-fw fa-calendar" aria-hidden="true"></i><span></span></span>
</div>
<div id="profile_toot_buttons" style="height:31px;margin-bottom:5px;display:none">
<button class="toot_button profile_sendto" style="width:calc(50% - 3px)"><div class="toot_button_label"><i class="fa fa-fw fa-pencil-square-o"></i><span><?=_('Toot to')?></span></div></button>
<button class="toot_button profile_sendto" style="width:calc(50% - 3px)" privacy="direct"><div class="toot_button_label"><i class="fa fa-fw fa-envelope"></i><span><?=_('Message')?></span></div></button>
</div>
<?php include dirname(__FILE__).('/widgets/user_recent_images.php'); ?>
</section>
</aside>
@ -93,6 +97,8 @@ userprofile = search.accounts[0];
<?php } ?>
$('title').text(replaced_emoji_return(userprofile.display_name)+' (@'+userprofile.acct+') | Halcyon');
setAccount(userprofile);
$(".profile_sendto").attr("acct","@"+userprofile.acct);
$(".profile_sendto").attr("display_name",userprofile.display_name);
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");

View File

@ -20,6 +20,10 @@
<div id="js_profile_joined_date" class="profile_with_icon" style="margin-bottom:5px">
<span><i class="fa fa-fw fa-calendar" aria-hidden="true"></i><span></span></span>
</div>
<div id="profile_toot_buttons" style="height:31px;margin-bottom:5px;display:none">
<button class="toot_button profile_sendto" style="width:calc(50% - 3px)"><div class="toot_button_label"><i class="fa fa-fw fa-pencil-square-o"></i><span><?=_('Toot to')?></span></div></button>
<button class="toot_button profile_sendto" style="width:calc(50% - 3px)" privacy="direct"><div class="toot_button_label"><i class="fa fa-fw fa-envelope"></i><span><?=_('Message')?></span></div></button>
</div>
<?php include dirname(__FILE__).('/widgets/user_recent_images.php'); ?>
</section>
<?php include dirname(__FILE__).('/widgets/side_who_to_follow.php'); ?>

View File

@ -20,6 +20,10 @@
<div id="js_profile_joined_date" class="profile_with_icon" style="margin-bottom:5px">
<span><i class="fa fa-fw fa-calendar" aria-hidden="true"></i><span></span></span>
</div>
<div id="profile_toot_buttons" style="height:31px;margin-bottom:5px;display:none">
<button class="toot_button profile_sendto" style="width:calc(50% - 3px)"><div class="toot_button_label"><i class="fa fa-fw fa-pencil-square-o"></i><span><?=_('Toot to')?></span></div></button>
<button class="toot_button profile_sendto" style="width:calc(50% - 3px)" privacy="direct"><div class="toot_button_label"><i class="fa fa-fw fa-envelope"></i><span><?=_('Message')?></span></div></button>
</div>
<?php include dirname(__FILE__).('/widgets/user_recent_images.php'); ?>
</section>
<?php include dirname(__FILE__).('/widgets/side_who_to_follow.php'); ?>

View File

@ -20,6 +20,10 @@
<div id="js_profile_joined_date" class="profile_with_icon" style="margin-bottom:5px">
<span><i class="fa fa-fw fa-calendar" aria-hidden="true"></i><span></span></span>
</div>
<div id="profile_toot_buttons" style="height:31px;margin-bottom:5px;display:none">
<button class="toot_button profile_sendto" style="width:calc(50% - 3px)"><div class="toot_button_label"><i class="fa fa-fw fa-pencil-square-o"></i><span><?=_('Toot to')?></span></div></button>
<button class="toot_button profile_sendto" style="width:calc(50% - 3px)" privacy="direct"><div class="toot_button_label"><i class="fa fa-fw fa-envelope"></i><span><?=_('Message')?></span></div></button>
</div>
<?php include dirname(__FILE__).('/widgets/user_recent_images.php'); ?>
</section>
</aside>

View File

@ -20,6 +20,10 @@
<div id="js_profile_joined_date" class="profile_with_icon" style="margin-bottom:5px">
<span><i class="fa fa-fw fa-calendar" aria-hidden="true"></i><span></span></span>
</div>
<div id="profile_toot_buttons" style="height:31px;margin-bottom:5px;display:none">
<button class="toot_button profile_sendto" style="width:calc(50% - 3px)"><div class="toot_button_label"><i class="fa fa-fw fa-pencil-square-o"></i><span><?=_('Toot to')?></span></div></button>
<button class="toot_button profile_sendto" style="width:calc(50% - 3px)" privacy="direct"><div class="toot_button_label"><i class="fa fa-fw fa-envelope"></i><span><?=_('Message')?></span></div></button>
</div>
<?php include dirname(__FILE__).('/widgets/user_recent_images.php'); ?>
</section>
</aside>

View File

@ -1 +1 @@
2.1.1
2.1.2