Improve French and German translation,respect Pleromas/GlitchSocs custom poll limits,add extension download link,many bugfixes

This commit is contained in:
nipos 2019-07-17 17:52:20 +02:00
parent af6e3d416f
commit 3b87814f98
27 changed files with 437 additions and 146 deletions

View File

@ -28,6 +28,8 @@ We moved our instances list to our webpage: https://www.halcyon.social/instances
or read our new documentation pages to install it manually: https://www.halcyon.social/documentation.php?page=install
## Blog
- Release of Version 2.4.1 - Improve French and German translation,respect Pleromas/GlitchSocs custom poll limits,add extension download link,many bugfixes
- We published the new Halcyon Share Extension at [Firefox Addons](https://addons.mozilla.org/en-US/firefox/addon/halcyon-share/) and [NotABug](https://notabug.org/halcyon-suite/halcyon-share)
- Release of Version 2.4.0 - Share links to Halcyon,preview overlays for mentions and more (blog article coming soon)
- Release of Version 2.3.4 - Introduce BlurHash,repair YouPlay,improve link previews feature,add debug mode,add lighttpd example config,bug fixes
- Release of Version 2.3.3 - New media uploader,sort uploads,drag&drop and copy&paste uploads,fix automatic dark mode

View File

@ -333,6 +333,11 @@ outline:0;
.poll_time input:invalid {
box-shadow:none;
}
.poll_time_warning {
width:100%;
text-align:center;
color:#FF0000;
}
.poll_mc_switch {
margin:0 !important;
display:inline-block;
@ -850,7 +855,7 @@ border-radius: 3px;
box-sizing: border-box;
background-color: #fff;
box-shadow: 0.5px 0.5px 3px rgba(0,0,0,0.26);
z-index: 1;
z-index: 9;
}
.toot_entry .toot_entry_body .toot_content .toot_header .expand_button_wrap .expand_menu::before {
display: block;
@ -986,32 +991,42 @@ object-fit: cover;
.media_views .media_attachment > iframe {
object-fit: fill;
}
.media_views.sensitive .sensitive_alart {
.media_attachment .sensitive_alert {
display:none;
}
.media_attachment.sensitive .sensitive_alert {
display: flex;
z-index: 1;
flex-direction: column;
justify-content: center;
align-items: center;
position: absolute;
position: relative;
width: 100%;
height: 100%;
top:-100%;
overflow:hidden;
background-color: #000;
background-size:cover;
background-position:center;
text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
}
.media_views.sensitive .sensitive_alart .text1 {
.media_attachment.sensitive .sensitive_alert .text1 {
font-size: 26px;
line-height:20px;
font-weight: 200;
padding: 8px 16px;
color: #fff;
}
.media_views.sensitive .sensitive_alart .text2 {
.media_attachment.sensitive .sensitive_alert .text2 {
font-size:15px;
font-weight: 200;
padding: 2px 4px;
margin-top: 3px;
color: #fff;
}
.media_attachment.sensitive iframe+.sensitive_alert {
top:calc(-100% - 7px);
}
.media_views[media_length="2"] {
display: flex;
}
@ -2575,7 +2590,8 @@ border-bottom-left-radius: 5px;
.media_detail .toot_entry .toot_entry_body {
border-bottom: none;
}
.media_detail .toot_entry .media_views {
.media_detail .toot_entry .media_views,
.media_detail .toot_entry .player {
display: none;
}
.switch {

View File

@ -34,6 +34,11 @@ txt.focus();
});
}
})(jQuery);
$.extend($.expr[':'],{
blank:function(el){
return $(el).val().match(/^\s*$/);
}
});
});
function indicesOf(input,value) {
var indices = new Array();
@ -160,6 +165,7 @@ api.get("accounts/verify_credentials",function(AccountObj) {
AccountObj.display_name = htmlEscape(AccountObj.display_name);
for(var 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'>");
current_filters = new Array;
}
localStorage.setItem("current_display_name",AccountObj["display_name"]);
localStorage.setItem("current_acct",AccountObj["acct"]);
@ -171,7 +177,6 @@ localStorage.setItem("current_statuses_count",AccountObj["statuses_count"]);
localStorage.setItem("current_following_count",AccountObj["following_count"]);
localStorage.setItem("current_followers_count",AccountObj["followers_count"]);
localStorage.setItem("current_follow_loaded","false");
localStorage.setItem("current_filters","[]");
current_display_name = localStorage.getItem("current_display_name");
current_acct = localStorage.getItem("current_acct");
current_url = localStorage.getItem("current_url");
@ -181,7 +186,6 @@ 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");
current_filters = JSON.parse(localStorage.getItem("current_filters"));
current_search_history = JSON.parse(localStorage.getItem("current_search_history"));
setCurrentProfile();
});
@ -219,14 +223,18 @@ localStorage.setItem("current_muted_accts",JSON.stringify(mutes));
current_muted_accts = mutes;
});
api.get("instance",function(data) {
if(data.max_toot_chars) {
if(!data.max_toot_chars) data.max_toot_chars = 500;
if(!data.poll_limits) {
data.poll_limits = new Object();
data.poll_limits.max_options = 4;
data.poll_limits.max_option_chars = 25;
data.poll_limits.min_expiration = 300;
data.poll_limits.max_expiration = 2629746;
}
localStorage.setItem("current_instance_charlimit",data.max_toot_chars);
current_instance_charlimit = data.max_toot_chars;
}
else {
localStorage.setItem("current_instance_charlimit",500);
current_instance_charlimit = 500;
}
localStorage.setItem("current_instance_poll_limits",JSON.stringify(data.poll_limits));
current_instance_poll_limits = data.poll_limits;
});
api.get("custom_emojis",function(data) {
var emojis = new Array();
@ -264,6 +272,7 @@ current_following_count = localStorage.getItem("current_following_count");
current_followers_count = localStorage.getItem("current_followers_count");
current_following_accts = localStorage.getItem("current_following_accts");
current_instance_charlimit = localStorage.getItem("current_instance_charlimit");
current_instance_poll_limits = JSON.parse(localStorage.getItem("current_instance_poll_limits"));
current_blocked_accts = localStorage.getItem("current_blocked_accts");
current_muted_accts = localStorage.getItem("current_muted_accts");
current_filters = JSON.parse(localStorage.getItem("current_filters"));
@ -308,6 +317,7 @@ localStorage.setItem("setting_desktop_notifications","false");
if(localStorage.setting_who_to_follow == "true") {
setWhoToFollow();
}
if(!localStorage.hide_firefox_download || localStorage.hide_firefox_download != "true") $("#widget_ffdl").show();
replace_emoji();
}
function putMessage(Message) {

View File

@ -2,87 +2,96 @@ function mediaattachments_template(status) {
let media_views = "";
var border = "";
var mvfullheight = "";
var blurbackground = "";
var media_embeds = new Array();
var audio_embeds = new Array();
var dsplength = status.media_attachments.length;
if(status.media_attachments[0].remote_url != null) {
status.media_attachments[0].url = status.media_attachments[0].remote_url;
for(var i=0;i<dsplength;i++) {
var blurbackground = "";
if(status.media_attachments[i].remote_url != null) status.media_attachments[i].url = status.media_attachments[i].remote_url;
if(status.media_attachments[i].description == null) status.media_attachments[i].description = "";
if(status.media_attachments[i].blurhash) blurbackground = ' style="background-image:url('+getBlurImage(status.media_attachments[i].blurhash)+')"';
if((status.media_attachments[i].type === "video" && localStorage.setting_play_video == "false") || (status.media_attachments[i].type === "gifv" && localStorage.setting_play_gif == "false")) {
if(status.media_attachments[i].preview_url != status.media_attachments[i].url) media_embeds.push(`
<div class="media_attachment" mediacount="${i}">
<img src="${status.media_attachments[i].preview_url}" title="${status.media_attachments[i].description}">
<div class='sensitive_alert'${blurbackground}>
<span class="text1">${__('Sensitive content')}</span>
<span class="text2">${status.media_attachments[i].description}</span>
</div>
</div>`);
}
if(status.media_attachments[0].type === "video" && localStorage.setting_play_video != "false") border = ' style="border:0;border-radius:0"';
if(localStorage.setting_full_height == "true" && status.media_attachments.length == 1 && (status.media_attachments[0].type == "image" || (status.media_attachments[0].type === "video" && localStorage.setting_play_video == "false") || (status.media_attachments[0].type === "gifv" && localStorage.setting_play_gif == "false"))) {
else if(status.media_attachments[i].type === "video") {
var vidprev = "";
if(status.media_attachments[i].preview_url != status.media_attachments[i].url) vidprev = "&preview="+encodeURIComponent(status.media_attachments[i].preview_url);
media_embeds.push(`
<div class="media_attachment" otype="video/gifv" mediacount="${i}">
<iframe src="/media/video.php?url=${encodeURIComponent(status.media_attachments[i].url)}&title=${encodeURIComponent(status.media_attachments[i].description)+vidprev}" title="${status.media_attachments[i].description}" frameborder="0" allowfullscreen></iframe>
<div class='sensitive_alert'${blurbackground}>
<span class="text1">${__('Sensitive content')}</span>
<span class="text2">${status.media_attachments[i].description}</span>
</div>
</div>`);
}
else if(status.media_attachments[i].type === "gifv") {
var vidprev = "";
if(status.media_attachments[i].preview_url != status.media_attachments[i].url) vidprev = "<img src='"+status.media_attachments[i].preview_url+"'>";
media_embeds.push(`
<div class="media_attachment" otype="video/gifv" mediacount="${i}">
<video frameborder="0" title="${status.media_attachments[i].description}" autoplay loop muted>
<source src="${status.media_attachments[i].url}">
${vidprev}
</video>
<div class='sensitive_alert'${blurbackground}>
<span class="text1">${__('Sensitive content')}</span>
<span class="text2">${status.media_attachments[i].description}</span>
</div>
</div>`);
}
else if(status.media_attachments[i].type === "audio" || (status.media_attachments[i].type === "unknown" && status.media_attachments[i].url.substring(status.media_attachments[i].url.length-4) == ".mp3")) {
if(localStorage.setting_play_audio != "false") {
var audio_embed = $("<div>").attr("title",status.media_attachments[i].description).addClass("player");
audio_embed.player(status.media_attachments[i].url);
audio_embeds.push(audio_embed);
}
}
else if(status.media_attachments[i].type === "image") {
media_embeds.push(`
<div class="media_attachment" otype="image" sid="${status.id}" oid="${status.media_attachments[i].id}" url="${status.media_attachments[i].url}" mediacount="${i}">
<img src="${status.media_attachments[i].url}" title="${status.media_attachments[i].description}" window_view="enable"/>
<div class='sensitive_alert'${blurbackground}>
<span class="text1">${__('Sensitive content')}</span>
<span class="text2">${status.media_attachments[i].description}</span>
</div>
</div>`);
}
}
if(status.media_attachments[0].type === "video" && localStorage.setting_play_video != "false" && dsplength == 1) border = ' style="border:0;border-radius:0"';
if(localStorage.setting_full_height == "true" && status.media_attachments.length == 1 && (status.media_attachments[0].type == "image" || (status.media_attachments[0].type === "video" && localStorage.setting_play_video == "false") || (status.media_attachments[0].type === "gifv" && localStorage.setting_play_gif == "false")))
mvfullheight = " media_full_height";
dsplength = "1";
}
if(status.media_attachments[0].url === "/files/original/missing.png") {
return "";
}
else if(!status.sensitive || localStorage.setting_show_nsfw == "true") {
media_views = `<div class='media_views${mvfullheight}' sid="${status.id}" media_length='${dsplength}'${border}>`;
if(media_embeds.length < 3) {
for(let i in media_embeds) {
media_views += media_embeds[i];
}
}
else {
if(status.media_attachments[0].blurhash) blurbackground = 'style="background-image:url('+getBlurImage(status.media_attachments[0].blurhash)+')"';
media_views = `<div class='media_views sensitive${mvfullheight}' media_length='${dsplength}'${border}>
<div class='sensitive_alart'${blurbackground}>
<span class="text1">${__('Sensitive content')}</span>
<span class="text2">${__('Click to view')}</span>
</div>`;
}
if((status.media_attachments[0].type === "video" && localStorage.setting_play_video == "false") || (status.media_attachments[0].type === "gifv" && localStorage.setting_play_gif == "false")) {
media_views += (`
<div class="media_attachment" otype="image" sid="${status.id}" oid="${status.media_attachments[0].id}" url="${status.media_attachments[0].preview_url}" mediacount="0">
<img src="${status.media_attachments[0].preview_url}" window_view="enable" />
</div>`);
} else if(status.media_attachments[0].type === "video") {
media_views += (`
<div class="media_attachment" otype="video/gifv" mediacount="0">
<iframe src="/media/video.php?url=${encodeURIComponent(status.media_attachments[0].url)}&preview=${encodeURIComponent(status.media_attachments[0].preview_url)}" frameborder="0" allowfullscreen></iframe>
</div>`);
} else if(status.media_attachments[0].type === "gifv") {
media_views += (`
<div class="media_attachment" otype="video/gifv" mediacount="0">
<video frameborder="0" autoplay loop muted>
<source src="${status.media_attachments[0].url}">
<img src="${status.media_attachments[0].preview_url}">
</video>
</div>`);
} else if(status.media_attachments[0].type === "audio" || (status.media_attachments[0].type === "unknown" && status.media_attachments[0].url.substring(status.media_attachments[0].url.length-4) == ".mp3")) {
if(localStorage.setting_play_audio != "false") {
media_views = $("<div>").addClass("player");
media_views.player(status.media_attachments[0].url);
}
} else {
if ( status.media_attachments.length <= 2 ) {
for ( let i in status.media_attachments ) {
if(status.media_attachments[i].remote_url != null) {
status.media_attachments[i].url = status.media_attachments[i].remote_url;
}
media_views += (`
<div class="media_attachment" otype="image" sid="${status.id}" oid="${status.media_attachments[i].id}" url="${status.media_attachments[i].url}" mediacount="${i}">
<img src="${status.media_attachments[i].url}" window_view="enable" />
</div>`);
}
} else {
for ( let i in status.media_attachments ) {
for(let i in media_embeds) {
if(Number(i) === 1) {
if(status.media_attachments[i].remote_url != null) {
status.media_attachments[i].url = status.media_attachments[i].remote_url;
}
media_views += (`
<div class="media_attachments_right">
<div class="media_attachment" otype="image" sid="${status.id}" oid="${status.media_attachments[i].id}" url="${status.media_attachments[i].url}" mediacount="${i}">
<img src="${status.media_attachments[i].url}" window_view="enable"/>
</div>`);
} else {
media_views += (`
<div class="media_attachment" otype="image" sid="${status.id}" oid="${status.media_attachments[i].id}" url="${status.media_attachments[i].url}" mediacount="${i}">
<img src="${status.media_attachments[i].url}" window_view="enable"/>
</div>`);
media_views += (`<div class="media_attachments_right">`);
media_views += media_embeds[i];
}
else media_views += media_embeds[i];
}
media_views += "</div>";
}
media_views += "</div>";
var media_view = $("<div>");
media_view.append(media_views);
if(status.sensitive) media_view.find(".media_attachment").addClass("sensitive");
for(let i in audio_embeds) {
media_view.append(audio_embeds[i]);
}
return media_views;
return media_view;
}
function link_preview_template(card) {
if(localStorage.setting_link_previews == "true") {
@ -109,7 +118,9 @@ function poll_template(poll) {
let poll_html = "";
var expires_at = new Date(new Date(poll.expires_at).getTime()-Date.now());
var expires_string;
if(expires_at.getUTCDate() == 2) expires_string = "1 "+__("day");
if(expires_at.getUTCMonth() == 1) expires_string = "1 "+__("month");
else if(expires_at.getUTCMonth() > 1) expires_string = (expires_at.getUTCMonth())+" "+__("months");
else if(expires_at.getUTCDate() == 2) expires_string = "1 "+__("day");
else if(expires_at.getUTCDate() > 2) expires_string = (expires_at.getUTCDate()-1)+" "+__("days");
else if(expires_at.getUTCHours() == 1) expires_string = "1 "+__("hour");
else if(expires_at.getUTCHours() > 1) expires_string = expires_at.getUTCHours()+" "+__("hours");
@ -1342,14 +1353,15 @@ ${toot_reblog_button}
<textarea class="emoji_poss" name="status_textarea" placeholder="${__('Toot your reply')}" data-random="${Math.round(Math.random()*1000)}"></textarea>
<div class="media_attachments_preview_area invisible"></div>
<div class="status_poll_editor invisible">
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<div style="height:32px;display:inline-block;padding-top:10px">${__("Expires in")} </div>
<div style="float:right;margin-right:5px"><div class="poll_time"><input type="number" min="0" max="7" placeholder="0-7" class="poll_days">${__('Days')}</div>
<div style="float:right;margin-right:5px"><div class="poll_time"><input type="number" min="0" class="poll_days">${__('Days')}</div>
<div class="poll_time"><input type="number" min="0" max="24" placeholder="0-24" class="poll_hours">${__('Hours')}</div>
<div class="poll_time"><input type="number" min="0" max="60" placeholder="0-60" class="poll_mins">${__('Minutes')}</div></div><br/>
<div class="poll_time_warning invisible"></div>
<div class="switch poll_mc_switch">
<input type="checkbox" class="poll_multiple_choice">
<div class="switch-btn">
@ -1601,14 +1613,15 @@ ${preview_object}
<textarea class="emoji_poss" name="status_textarea" placeholder="${__('Toot your reply')}" data-random="${Math.round(Math.random()*1000)}"></textarea>
<div class="media_attachments_preview_area invisible"></div>
<div class="status_poll_editor invisible">
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<div style="height:32px;display:inline-block;padding-top:10px">${__("Expires in")} </div>
<div style="float:right;margin-right:5px"><div class="poll_time"><input type="number" min="0" max="7" placeholder="0-7" class="poll_days">${__('Days')}</div>
<div style="float:right;margin-right:5px"><div class="poll_time"><input type="number" min="0" class="poll_days">${__('Days')}</div>
<div class="poll_time"><input type="number" min="0" max="24" placeholder="0-24" class="poll_hours">${__('Hours')}</div>
<div class="poll_time"><input type="number" min="0" max="60" placeholder="0-60" class="poll_mins">${__('Minutes')}</div></div><br/>
<div class="poll_time_warning invisible"></div>
<div class="switch poll_mc_switch">
<input type="checkbox" class="poll_multiple_choice">
<div class="switch-btn">
@ -1705,15 +1718,17 @@ var pictures = new Array;
var hidebackward = "";
var hideforward ="";
for(var i=0;i<status.media_attachments.length;i++) {
if(status.media_attachments[i].remote_url != null) {
status.media_attachments[i].url = status.media_attachments[i].remote_url;
pictures.push(status.media_attachments[i].url);
if(status.media_attachments[i].remote_url != null) status.media_attachments[i].url = status.media_attachments[i].remote_url;
if(status.media_attachments[i].type == "image") pictures.push(status.media_attachments[i].url);
}
}
if(media == 0) hidebackward = " style='display:none'";
if(media == status.media_attachments.length-1) hideforward = " style='display:none'";
console.log(media);
console.log(parseInt(media));
var mediacnt = pictures.indexOf(pictures.find(function(data) {if(data==this) return true},status.media_attachments[parseInt(media)].url));
console.log(mediacnt);
if(mediacnt == 0) hidebackward = " style='display:none'";
if(mediacnt == pictures.length-1) hideforward = " style='display:none'";
const status_template = timeline_template(status).html(),
html = (`<div class="media_detail" pictures='${JSON.stringify(pictures)}' cid="${media}">
html = (`<div class="media_detail" pictures='${JSON.stringify(pictures)}' cid="${mediacnt}">
<div class="media_box">
<span class="media_backward"${hidebackward}><i class="fa fa-2x fa-chevron-left"></i></span>
<img src="${status.media_attachments[media].url}">

View File

@ -250,7 +250,7 @@ article.addClass('content_warning');
}
return false;
});
$(document).on('click','.sensitive_alart', function(e) {
$(document).on('click','.sensitive_alert', function(e) {
e.stopPropagation();
$(this).toggleClass('invisible');
return false;
@ -1015,19 +1015,34 @@ if (statuses.length) {
$('#js_profile_recent_images span').text(`${statuses[0].account.statuses_count} ${__('Photos and toots')}`);
$('#js_profile_recent_images a').attr('href', $("#media_link").attr('href'));
for (i in statuses) {
if(statuses[i].sensitive) {
if(statuses[i].sensitive && localStorage.setting_show_nsfw == "false") {
if(statuses[i].media_attachments[0].blurhash) var imgurl = getBlurImage(statuses[i].media_attachments[0].blurhash);
else if(statuses[i].pleroma) var imgurl = "https://"+current_instance+"/images/avi.png";
else var imgurl = "https://"+current_instance+"/avatars/original/missing.png";
}
else {
if(statuses[i].media_attachments[0].remote_url != null) statuses[i].media_attachments[0].url = statuses[i].media_attachments[0].remote_url;
if(statuses[i].media_attachments[0].type == "image") var imgurl = statuses[i].media_attachments[0].url;
else if(statuses[i].media_attachments[0].type == "video" || statuses[i].media_attachments[0].type == "gifv") var imgurl = statuses[i].media_attachments[0].preview_url;
else var imgurl = "https://"+current_instance+"/avatars/original/missing.png";
}
if(statuses[i].media_attachments[0].type == "image")
$(`<div class="profile_recent_images_item media_attachment" otype="image" sid="${statuses[i].id}" oid="${statuses[i].media_attachments[0].id}" url="${imgurl}" mediacount="0">
<img src="${imgurl}">
</div>`).appendTo('#js_profile_recent_images_box');
else
$(`<div class="profile_recent_images_item media_attachment">
<img src="${imgurl}">
</div>`).appendTo('#js_profile_recent_images_box');
}
else {
if(statuses[i].media_attachments[0].remote_url != null) statuses[i].media_attachments[0].url = statuses[i].media_attachments[0].remote_url;
if(statuses[i].media_attachments[0].type == "image")
$(`<div class="profile_recent_images_item media_attachment" otype="image" sid="${statuses[i].id}" oid="${statuses[i].media_attachments[0].id}" url="${statuses[i].media_attachments[0].url}" mediacount="0">
<img src="${statuses[i].media_attachments[0].url}">
</div>`).appendTo('#js_profile_recent_images_box');
else {
if((statuses[i].media_attachments[0].type == "video" || statuses[i].media_attachments[0].type == "gifv") && statuses[i].media_attachments[0].preview_url != statuses[i].media_attachments[0].url) var imgurl = statuses[i].media_attachments[0].preview_url;
else if(statuses[i].pleroma) var imgurl = "https://"+current_instance+"/images/avi.png";
else var imgurl = "https://"+current_instance+"/avatars/original/missing.png";
$(`<div class="profile_recent_images_item media_attachment">
<img src="${imgurl}">
</div>`).appendTo('#js_profile_recent_images_box');
}
}
};
}
});
@ -1342,6 +1357,28 @@ $('#'+place+'_status_form .character_count').text(textLen);
}
});
}
if($('#'+place+'_status_form .poll_days').val() != "" || $('#'+place+'_status_form .poll_hours').val() != "" || $('#'+place+'_status_form .poll_mins').val() != "") {
if($('#'+place+'_status_form .poll_days').val()*86400+$('#'+place+'_status_form .poll_hours').val()*3600+$('#'+place+'_status_form .poll_mins').val()*60 > current_instance_poll_limits.max_expiration) {
is_ready = true;
var pl_days = Math.floor(current_instance_poll_limits.max_expiration/86400);
var pl_hours = Math.floor(current_instance_poll_limits.max_expiration/3600-pl_days*24);
var pl_minutes = Math.floor(current_instance_poll_limits.max_expiration/60-pl_hours*60-pl_days*1440);
$('#'+place+'_status_form .poll_time_warning').removeClass("invisible").text(__("The maximum poll time limit is:")+" "+pl_days+" "+__("Days")+", "+pl_hours+" "+__("Hours")+" "+__("and")+" "+pl_minutes+" "+__("Minutes"));
}
else if($('#'+place+'_status_form .poll_days').val()*86400+$('#'+place+'_status_form .poll_hours').val()*3600+$('#'+place+'_status_form .poll_mins').val()*60 < current_instance_poll_limits.min_expiration) {
is_ready = true;
var pl_days = Math.floor(current_instance_poll_limits.min_expiration/86400);
var pl_hours = Math.floor(current_instance_poll_limits.min_expiration/3600-pl_days*24);
var pl_minutes = Math.floor(current_instance_poll_limits.min_expiration/60-pl_hours*60-pl_days*1440);
var plt_days = "";
var plt_hours = "";
if(pl_days > 0) plt_days = pl_days+" "+__("Days")+", "+pl_hours+" "+__("Hours")+" "+__("and")+" ";
else if(pl_hours > 0) plt_hours = pl_hours+" "+__("Hours")+" "+__("and")+" ";
$('#'+place+'_status_form .poll_time_warning').removeClass("invisible").text(__("The minimum poll time limit is:")+" "+plt_days+plt_hours+pl_minutes+" "+__("Minutes"));
}
else $('#'+place+'_status_form .poll_time_warning').addClass("invisible");
}
else $('#'+place+'_status_form .poll_time_warning').addClass("invisible");
}
if($('#'+place+'_status_form .status_poll_editor').hasClass("invisible")) {
if(is_ready) $('#'+place+'_status_form').addClass('ready');
@ -1355,6 +1392,12 @@ else $('#'+place+'_status_form').removeClass('ready');
else $('#'+place+'_status_form').addClass('ready');
}
});
$(document).on('change keyup','#'+place+'_status_form .poll_field',function() {
if($('#'+place+'_status_form .poll_field:blank').length == 0 && $('#'+place+'_status_form .poll_field').length < current_instance_poll_limits.max_options)
$('#'+place+'_status_form .poll_field:last').after(
$("<input>").addClass("disallow_enter").addClass("textfield").addClass("poll_field").attr("name","options[]").attr("type","text").attr("maxlength",current_instance_poll_limits.max_option_chars)).after(" ").after(
$("<i>").addClass("fa").addClass("fa-circle-o")).after($("<br>"));
});
$(document).on('click','#'+place+'_status_form .status_CW', function(e) {
$('#'+place+'_status_form .status_spoiler').toggleClass('invisible');
$('#'+place+'_status_form .status_textarea').toggleClass('status_has_cw');
@ -1488,8 +1531,6 @@ visibility : form.privacy_option.value
}
if(place == "reply") params.in_reply_to_id = $('#reply_status_form').attr('sid');
else if(place == "single_reply") params.in_reply_to_id = $('#single_reply_status_form').attr('tid');
console.log(params);
console.log(place);
if(!$('#'+place+'_status_form .status_poll_editor').hasClass("invisible")) {
params.poll = new Object;
params.poll.options = new Array;
@ -1575,6 +1616,9 @@ enableAutoComplete($('#'+place+'_status_form .status_top .status_spoiler'));
enableAutoComplete($('#'+place+'_status_form .status_textarea textarea'));
$('#'+place+'_status_form .status_bottom').removeClass('invisible');
$('#'+place+'_status_form .submit_status_label').addClass('active_submit_button');
$('#'+place+'_status_form .poll_field').attr("maxlength",current_instance_poll_limits.max_option_chars);
$('#'+place+'_status_form .poll_days').attr("max",Math.floor(current_instance_poll_limits.max_expiration/86400));
$('#'+place+'_status_form .poll_days').attr("placeholder","0-"+Math.floor(current_instance_poll_limits.max_expiration/86400));
const textCount = $('#'+place+'_status_form textarea').val().length + $('#'+place+'_status_form .status_spoiler').val().length;
let textLen = (current_instance_charlimit - textCount);
$('#'+place+'_status_form .character_count').html(textLen);
@ -1966,6 +2010,10 @@ $("#enable_follow").click(function() {
localStorage.setItem("setting_who_to_follow","true");
setWhoToFollow(true);
});
$("#hide_ffdl").click(function() {
localStorage.hide_firefox_download = "true";
$("#widget_ffdl").slideUp();
});
$("#search_form").focus(function() {
if($("#search_form").val() == "") searchlocalfill();
else searchremotefill($("#search_form").val());
@ -1999,7 +2047,6 @@ $(".media_detail .media_backward").fadeIn();
$(".media_detail .media_box img").attr("src",JSON.parse($(".media_detail").attr("pictures"))[$(".media_detail").attr("cid")]);
});
$(document).on("keyup",".status_poll_editor .poll_time input",function() {
console.log("checked");
if($(this).is(":invalid")) $(this).parent().addClass("redborder");
else $(this).parent().removeClass("redborder");
});

View File

@ -28,6 +28,7 @@ View <span></span> new Toots
<aside class="right_column">
<section class="side_widgets_wrap">
<?php include dirname(__FILE__).('/widgets/side_who_to_follow.php'); ?>
<?php include dirname(__FILE__).('/widgets/side_firefox_addon.php'); ?>
</section>
<?php include dirname(__FILE__).('/widgets/side_footer.php'); ?>
</aside>

View File

@ -22,6 +22,7 @@
<aside class="right_column">
<section class="side_widgets_wrap">
<?php include dirname(__FILE__).('/widgets/side_who_to_follow.php'); ?>
<?php include dirname(__FILE__).('/widgets/side_firefox_addon.php'); ?>
</section>
<?php include dirname(__FILE__).('/widgets/side_footer.php'); ?>
</aside>

View File

@ -22,6 +22,7 @@ View <span></span> new Toots
<aside class="right_column">
<section class="side_widgets_wrap">
<?php include dirname(__FILE__).('/widgets/side_who_to_follow.php'); ?>
<?php include dirname(__FILE__).('/widgets/side_firefox_addon.php'); ?>
</section>
<?php include dirname(__FILE__).('/widgets/side_footer.php'); ?>
</aside>

View File

@ -20,6 +20,7 @@ View <span></span> new Toots
<aside class="right_column">
<section class="side_widgets_wrap">
<?php include dirname(__FILE__).('/widgets/side_who_to_follow.php'); ?>
<?php include dirname(__FILE__).('/widgets/side_firefox_addon.php'); ?>
</section>
<?php include dirname(__FILE__).('/widgets/side_footer.php'); ?>
</aside>

View File

@ -22,6 +22,7 @@
<aside class="right_column">
<section class="side_widgets_wrap">
<?php include dirname(__FILE__).('/widgets/side_who_to_follow.php'); ?>
<?php include dirname(__FILE__).('/widgets/side_firefox_addon.php'); ?>
</section>
<?php include dirname(__FILE__).('/widgets/side_footer.php'); ?>
</aside>

Binary file not shown.

View File

@ -1,18 +1,22 @@
# Niklas Poslovski <ni.pos@yandex.com>, 2018. #zanata
# Niklas Poslovski <ni.pos@yandex.com>, 2019. #zanata
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-07 17:11+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"POT-Creation-Date: 2019-06-21 08:47+0000\n"
"PO-Revision-Date: 2019-07-17 11:04+0000\n"
"Last-Translator: vinzv <vinz@vinzv.de>\n"
"Language-Team: German\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 2.2.5\n"
"X-Pootle-Path: /de/halcyon/de.po\n"
"X-Pootle-Revision: 100\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.8\n"
"X-Loco-Source-Locale: de_DE\n"
"X-Loco-Parser: loco_parse_po\n"
"X-POOTLE-MTIME: 1563361466.668788\n"
msgid "Language"
msgstr "Sprache"
@ -47,6 +51,15 @@ msgstr "Tschechisch"
msgid "Language_fr_FR"
msgstr "Französisch"
msgid "Language_nl_NL"
msgstr "Niederländisch"
msgid "Language_ca_ES"
msgstr "Katalanisch (Spanien)"
msgid "Language_ar_DZ"
msgstr "Arabisch (Algerien)"
msgid "Sensitive content"
msgstr "Sensitiver Inhalt"
@ -930,3 +943,79 @@ msgstr "Bilder in voller Höhe anzeigen"
msgid "Show threads in thread view in timeline"
msgstr "Threads in der Thread-Ansicht in der Timeline anzeigen"
msgid "Unblock"
msgstr "Sperrung aufheben"
msgid "Unmute"
msgstr "Stummschalten deaktivieren"
msgid "Accept"
msgstr "Annehmen"
msgid "Reject"
msgstr "Abweisen"
msgid "You can only add four pictures to one post!"
msgstr "Du kannst nur vier Bilder zu einem Beitrag hinzufügen!"
msgid "You can not add media files to posts with polls!"
msgstr "Du kannst keine Mediendateien zu Beiträgen mit Umfragen hinzufügen!"
msgid "Add a caption to the media file"
msgstr "Eine Beschriftung zur Mediendatei hinzufügen"
msgid "Caption added successfully!"
msgstr "Beschreibung wurde erfolgreich hinzugefügt!"
msgid "Share a link on Mastodon"
msgstr "Einen Link auf Mastodon teilen"
msgid "Share a link with your followers"
msgstr "Einen Link mit deinen Followern teilen"
msgid "Post a Toot on Mastodon"
msgstr "Einen Toot auf Mastodon senden"
msgid ""
"Toot posted successfully but your browser doesn't allow closing the window"
msgstr ""
"Toot erfolgreich gepostet, aber dein Browser erlaubt es nicht, das Fenster "
"zu schließen"
msgid "Sign up"
msgstr "Registrieren"
msgid "Username"
msgstr "Benutzername"
msgid "Log in and Toot"
msgstr "Anmelden und tooten"
msgid "New to Mastodon?"
msgstr "Neu bei Mastodon?"
msgid ""
"Get instant updates from your friends, industry experts, favorite "
"celebrities, and what's happening around the world."
msgstr ""
"Bekomme direkte Updates von deinen Freunden, Branchenexperten, "
"Lieblingsstars und was auf der ganzen Welt passiert."
msgid "What is Mastodon? Learn more."
msgstr "Was ist Mastodon? Erfahre mehr."
msgid "Please describe what you can see in the picture."
msgstr "Bitte beschreibe, was du in diesem Bild siehst."
msgid "Save"
msgstr "Speichern"
msgid "BLOCKS"
msgstr "GEBLOCKT"
msgid "MUTES"
msgstr "STUMMGESCHALTET"
msgid "FOLLOW REQUESTS"
msgstr "FOLGEANFRAGEN"

Binary file not shown.

View File

@ -1,18 +1,22 @@
# Niklas Poslovski <ni.pos@yandex.com>, 2018. #zanata
# Niklas Poslovski <ni.pos@yandex.com>, 2019. #zanata
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-07 17:12+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"POT-Creation-Date: 2019-06-21 08:47+0000\n"
"PO-Revision-Date: 2019-06-21 09:13+0000\n"
"Last-Translator: Niklas Poslovski <ni.pos@yandex.com>\n"
"Language-Team: English (United States)\n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 2.2.5\n"
"X-Pootle-Path: /en/halcyon/en.po\n"
"X-Pootle-Revision: 75\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.8\n"
"X-Loco-Source-Locale: de_DE\n"
"X-Loco-Parser: loco_parse_po\n"
"X-POOTLE-MTIME: 1561108411.448793\n"
msgid "Language"
msgstr "Language"
@ -50,6 +54,12 @@ msgstr "French"
msgid "Language_nl_NL"
msgstr "Dutch"
msgid "Language_ca_ES"
msgstr "Catalan"
msgid "Language_ar_DZ"
msgstr "Arabic"
msgid "Sensitive content"
msgstr "Sensitive content"
@ -932,3 +942,78 @@ msgstr "Show pictures in full height"
msgid "Show threads in thread view in timeline"
msgstr "Show threads in thread view in timeline"
msgid "Unblock"
msgstr "Unblock"
msgid "Unmute"
msgstr "Unmute"
msgid "Accept"
msgstr "Accept"
msgid "Reject"
msgstr "Reject"
msgid "You can only add four pictures to one post!"
msgstr "You can only add four pictures to one post!"
msgid "You can not add media files to posts with polls!"
msgstr "You can not add media files to posts with polls!"
msgid "Add a caption to the media file"
msgstr "Add a caption to the media file"
msgid "Caption added successfully!"
msgstr "Caption added successfully!"
msgid "Share a link on Mastodon"
msgstr "Share a link on Mastodon"
msgid "Share a link with your followers"
msgstr "Share a link with your followers"
msgid "Post a Toot on Mastodon"
msgstr "Post a Toot on Mastodon"
msgid ""
"Toot posted successfully but your browser doesn't allow closing the window"
msgstr ""
"Toot posted successfully but your browser doesn't allow closing the window"
msgid "Sign up"
msgstr "Sign up"
msgid "Username"
msgstr "Username"
msgid "Log in and Toot"
msgstr "Log in and Toot"
msgid "New to Mastodon?"
msgstr "New to Mastodon?"
msgid ""
"Get instant updates from your friends, industry experts, favorite "
"celebrities, and what's happening around the world."
msgstr ""
"Get instant updates from your friends, industry experts, favorite "
"celebrities, and what's happening around the world."
msgid "What is Mastodon? Learn more."
msgstr "What is Mastodon? Learn more."
msgid "Please describe what you can see in the picture."
msgstr "Please describe what you can see in the picture."
msgid "Save"
msgstr "Save"
msgid "BLOCKS"
msgstr "BLOCKS"
msgid "MUTES"
msgstr "MUTES"
msgid "FOLLOW REQUESTS"
msgstr "FOLLOW REQUESTS"

View File

@ -12,7 +12,7 @@ die('Forbidden');
<script src="/assets/js/player/youplay.js"></script>
</head>
<body style="margin:0;height:100%;overflow:hidden">
<video class="video-js vjs-default-skin" controls id="player" poster="<?=htmlspecialchars($_GET["preview"])?>" style="width:100%;height:100%">
<video class="video-js vjs-default-skin" controls id="player" poster="<?=htmlspecialchars($_GET["preview"])?>" title="<?=htmlspecialchars($_GET["title"])?>" style="width:100%;height:100%">
Your browser does not support the video tag.
</video>
<script>

View File

@ -28,6 +28,7 @@
<aside class="right_column">
<section class="side_widgets_wrap">
<?php include dirname(__FILE__).('/widgets/side_who_to_follow.php'); ?>
<?php include dirname(__FILE__).('/widgets/side_firefox_addon.php'); ?>
</section>
<?php include dirname(__FILE__).('/widgets/side_footer.php'); ?>
</aside>

View File

@ -4,6 +4,7 @@
<div class="article_wrap">
<aside class="left_column">
<?php include dirname(__FILE__).('/widgets/side_who_to_follow.php'); ?>
<?php include dirname(__FILE__).('/widgets/side_firefox_addon.php'); ?>
<?php include dirname(__FILE__).('/widgets/side_footer.php'); ?>
</aside>
<article class="center_column">

View File

@ -4,6 +4,7 @@
<div class="article_wrap">
<aside class="left_column">
<?php include dirname(__FILE__).('/widgets/side_who_to_follow.php'); ?>
<?php include dirname(__FILE__).('/widgets/side_firefox_addon.php'); ?>
<?php include dirname(__FILE__).('/widgets/side_footer.php'); ?>
</aside>
<article class="center_column">

View File

@ -63,6 +63,7 @@
<aside class="right_column">
<section class="side_widgets_wrap">
<?php include dirname(__FILE__).('/widgets/side_who_to_follow.php'); ?>
<?php include dirname(__FILE__).('/widgets/side_firefox_addon.php'); ?>
</section>
<?php include dirname(__FILE__).('/widgets/side_footer.php'); ?>
</aside>

View File

@ -48,6 +48,7 @@
<aside class="right_column">
<section class="side_widgets_wrap">
<?php include dirname(__FILE__).('/widgets/side_who_to_follow.php'); ?>
<?php include dirname(__FILE__).('/widgets/side_firefox_addon.php'); ?>
</section>
<?php include dirname(__FILE__).('/widgets/side_footer.php'); ?>
</aside>

View File

@ -62,6 +62,7 @@
<aside class="right_column">
<section class="side_widgets_wrap">
<?php include dirname(__FILE__).('/widgets/side_who_to_follow.php'); ?>
</section>
<?php include dirname(__FILE__).('/widgets/side_footer.php'); ?>
</aside>

View File

@ -62,6 +62,7 @@
<aside class="right_column">
<section class="side_widgets_wrap">
<?php include dirname(__FILE__).('/widgets/side_who_to_follow.php'); ?>
<?php include dirname(__FILE__).('/widgets/side_firefox_addon.php'); ?>
</section>
<?php include dirname(__FILE__).('/widgets/side_footer.php'); ?>
</aside>

View File

@ -1 +1 @@
2.4.0
2.4.1

View File

@ -10,14 +10,15 @@
<textarea class="emoji_poss" name="status_textarea" placeholder="<?=_('What\'s happening?')?>" data-random="14839"></textarea>
<div class="media_attachments_preview_area invisible"></div>
<div class="status_poll_editor invisible">
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<div style="height:32px;display:inline-block;padding-top:10px"><?=_("Expires in")?> </div>
<div style="float:right;margin-right:5px"><div class="poll_time"><input type="number" min="0" max="7" placeholder="0-7" class="poll_days"><?=_('Days')?></div>
<div style="float:right;margin-right:5px"><div class="poll_time"><input type="number" min="0" class="poll_days"><?=_('Days')?></div>
<div class="poll_time"><input type="number" min="0" max="24" placeholder="0-24" class="poll_hours"><?=_('Hours')?></div>
<div class="poll_time"><input type="number" min="0" max="60" placeholder="0-60" class="poll_mins"><?=_('Minutes')?></div></div><br/>
<div class="poll_time_warning invisible"></div>
<div class="switch poll_mc_switch">
<input type="checkbox" class="poll_multiple_choice">
<div class="switch-btn">

View File

@ -11,14 +11,15 @@
<textarea class="emoji_poss" name="status_textarea" placeholder="<?=('What\'s happening?')?>" data-random="30210"></textarea>
<div class="media_attachments_preview_area invisible"></div>
<div class="status_poll_editor invisible">
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<div style="height:32px;display:inline-block;padding-top:10px"><?=_("Expires in")?> </div>
<div style="float:right;margin-right:5px"><div class="poll_time"><input type="number" min="0" max="7" placeholder="0-7" class="poll_days"><?=_('Days')?></div>
<div style="float:right;margin-right:5px"><div class="poll_time"><input type="number" min="0" class="poll_days"><?=_('Days')?></div>
<div class="poll_time"><input type="number" min="0" max="24" placeholder="0-24" class="poll_hours"><?=_('Hours')?></div>
<div class="poll_time"><input type="number" min="0" max="60" placeholder="0-60" class="poll_mins"><?=_('Minutes')?></div></div><br/>
<div class="poll_time_warning invisible"></div>
<div class="switch poll_mc_switch">
<input type="checkbox" class="poll_multiple_choice">
<div class="switch-btn">

View File

@ -12,14 +12,15 @@
<textarea class="emoji_poss" name="status_textarea" placeholder="<?=_('What\'s happening?')?>" data-random="39303"></textarea>
<div class="media_attachments_preview_area invisible"></div>
<div class="status_poll_editor invisible">
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field" maxlength="25"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<i class="fa fa-circle-o"></i> <input name="options[]" type="text" class="disallow_enter textfield poll_field"><br/>
<div style="height:32px;display:inline-block;padding-top:10px"><?=_("Expires in")?> </div>
<div style="float:right;margin-right:5px"><div class="poll_time"><input type="number" min="0" max="7" placeholder="0-7" class="poll_days"><?=_('Days')?></div>
<div style="float:right;margin-right:5px"><div class="poll_time"><input type="number" min="0" class="poll_days"><?=_('Days')?></div>
<div class="poll_time"><input type="number" min="0" max="24" placeholder="0-24" class="poll_hours"><?=_('Hours')?></div>
<div class="poll_time"><input type="number" min="0" max="60" placeholder="0-60" class="poll_mins"><?=_('Minutes')?></div></div><br/>
<div class="poll_time_warning invisible"></div>
<div class="switch poll_mc_switch">
<input type="checkbox" class="poll_multiple_choice">
<div class="switch-btn">

View File

@ -0,0 +1,12 @@
<div class="side_widget with_button side_widgets_footer" id="widget_ffdl" style="display:none">
<div class="form_title">
<h2><?=_('Firefox Extension')?></h2>
<a href="javascript:void(0)" class="headerbtn" id="hide_ffdl"><?=_('HIDE')?></a>
</div>
<?=_('Halcyon does now have a new, free extension for the Firefox browser which can replace all Twitter Tweet buttons with Halcyon Toot buttons so that you can easily share all content on your favorite social network!')?>
<center><br/>
<button onclick="window.open('https://addons.mozilla.org/addon/halcyon-share/')" class="halcyon_button">
<span><?=_('Download it!')?></span>
</button>
</center>
</div>