hide embedded content and quotes from timelines

This commit is contained in:
Hannes Mannerheim 2016-01-22 21:19:08 +01:00
parent 22bd622bee
commit 0fe484d7db
27 changed files with 453 additions and 80 deletions

View File

@ -547,6 +547,10 @@ class QvitterPlugin extends Plugin {
// add id to all attachments
$attachment_url_to_id[$enclosure_o->url]['id'] = $attachment->id;
// add an attachment version to all attachments
// this means we can force all cached attachments to update, if we change this
$attachment_url_to_id[$enclosure_o->url]['version'] = '1.2';
// add data about thumbnails
$thumb = $attachment->getThumbnail();
$large_thumb = $attachment->getThumbnail(1000,3000,false);
@ -654,6 +658,7 @@ class QvitterPlugin extends Plugin {
$attachment['quoted_notice']['content'] = $quoted_notice->content;
$attachment['quoted_notice']['nickname'] = $quoted_notice_author->nickname;
$attachment['quoted_notice']['fullname'] = $quoted_notice_author->fullname;
$attachment['quoted_notice']['is_local'] = $quoted_notice_author->isLocal();
$quoted_notice_attachments = $quoted_notice->attachments();
foreach($quoted_notice_attachments as $q_attach) {
if(is_object($q_attach)) {

View File

@ -2451,6 +2451,19 @@ body.rtl .queet.rtl .expanded-content {
}
#feed-body.embedded-content-hidden-by-user .queet-content > .oembed-data,
#feed-body.embedded-content-hidden-by-user .queet-content > .queet-thumbs,
#feed-body.quotes-hidden-by-user .queet-text .quote-link-container,
.queet-text a.hidden-embedded-link-in-queet-text,
.queet-text a.hidden-quote-link-in-queet-text {
display:none;
}
#feed-body.embedded-content-hidden-by-user .queet-text a.hidden-embedded-link-in-queet-text,
#feed-body.quotes-hidden-by-user .queet-text a.hidden-quote-link-in-queet-text {
display:inline;
}
.stream-item.activity .created-at a {
display:none;
}

View File

@ -97,7 +97,8 @@ function getMenu(menuArray) {
'data-menu-row-type': this.type,
'data-profile-prefs-topic': this.topic,
'data-profile-prefs-namespace': this.namespace,
'data-profile-pref-state': prefEnabledOrDisabled
'data-profile-pref-state': prefEnabledOrDisabled,
'data-profile-pref-callback': this.callback
});
}
}
@ -743,15 +744,24 @@ function setNewCurrentStream(streamObject,setLocation,fallbackId,actionOnSuccess
// also mark this stream as the current stream immediately, if a saved copy exists
addStreamToHistoryMenuAndMarkAsCurrent(streamObject);
// make sure page-container and feed is visible
$('#page-container').css('opacity','1');
$('#feed').css('opacity','1');
// run callbacks for this stream
if(streamObject.callbacks !== false) {
$.each(streamObject.callbacks, function(){
if(typeof window[this] == 'function') {
window[this]();
}
});
}
// maybe do something
if(typeof actionOnSuccess == 'function') {
actionOnSuccess();
// make sure page-container and feed is visible
$('#page-container').css('opacity','1');
$('#feed').css('opacity','1');
// don't invoke actionOnSuccess later if we already invoked it here
actionOnSuccess = false;
}
@ -941,6 +951,15 @@ function setNewCurrentStream(streamObject,setLocation,fallbackId,actionOnSuccess
$('#page-container').css('opacity','1');
$('#feed').css('opacity','1');
// run callbacks for this stream
if(streamObject.callbacks !== false) {
$.each(streamObject.callbacks, function(){
if(typeof window[this] == 'function') {
window[this]();
}
});
}
$('.reload-stream').show();
$('body').removeClass('loading-older');$('body').removeClass('loading-newer');
@ -2024,7 +2043,7 @@ function buildQueetHtml(obj, idInStream, extraClasses, requeeted_by, isConversat
var urlToHideWithoutProtocol = removeProtocolFromUrl(urlToHide);
if(urlToHideWithoutProtocol == removeProtocolFromUrl($(aElement).attr('href'))
|| urlToHideWithoutProtocol == removeProtocolFromUrl($(aElement).text())) {
$(aElement).css('display','none');
$(aElement).addClass('hidden-embedded-link-in-queet-text')
}
});
});
@ -2094,7 +2113,7 @@ function buildQueetHtml(obj, idInStream, extraClasses, requeeted_by, isConversat
/* ·
·
· Place quoted notices in the queet text
· Place or update quoted notices in the queet text
·
· @param quotedNotices: object returned by buildAttachmentHTML()
· @param queetText: jQuery object for queet text
@ -2104,23 +2123,42 @@ function buildQueetHtml(obj, idInStream, extraClasses, requeeted_by, isConversat
function placeQuotedNoticesInQueetText(quotedNotices,queetText) {
$.each(quotedNotices,function(k,qoutedNotice){
if(typeof qoutedNotice.url != 'undefined') {
var quoteLinkFound = queetText.find('a[href*="' + removeProtocolFromUrl(qoutedNotice.url) + '"]');
var quoteLinkFound = queetText.find('a[href*="' + removeProtocolFromUrl(qoutedNotice.url) + '"]:not(.quote-link-container)');
// if we can't found it in a href, we might find it in data-quote-url attribute!
if(quoteLinkFound.length==0) {
quoteLinkFound = queetText.find('a[data-quote-url*="' + removeProtocolFromUrl(qoutedNotice.url) + '"]');
quoteLinkFound = queetText.find('a[data-quote-url*="' + removeProtocolFromUrl(qoutedNotice.url) + '"]:not(.quote-link-container)');
}
if(quoteLinkFound.length>0) {
$.each(quoteLinkFound,function(){
$(this).addClass(qoutedNotice.class);
$(this).attr('href',qoutedNotice.href);
$(this).attr('data-quote-url',qoutedNotice.url);
$(this).html(qoutedNotice.html);
// remove unnecessary line breaks, i.e. remove br between two quoted notices
if($(this).prev().is('br')) {
$(this).prev().remove();
// restore old style links (this can be removed later)
if($(this).children('.quoted-notice-header, .oembed-item-header').length>0) {
$(this).html($(this).attr('href'));
$(this).removeAttr('style');
$(this).removeClass('quoted-notice');
$(this).removeClass('oembed-item');
}
if(!$(this).next().is('br')) {
$(this).after('<br>');
// place a container if we don't have it
if(!$(this).next().is('.quote-link-container')) {
$(this).after('<a class="quote-link-container"></a>');
}
// update the link and the (maybe newly added) quote container after the link
if($(this).next().is('.quote-link-container')) {
$(this).addClass('hidden-quote-link-in-queet-text');
$(this).attr('data-quote-url',qoutedNotice.url);
$(this).next().addClass(qoutedNotice.class);
$(this).next().attr('href',qoutedNotice.href);
$(this).next().html(qoutedNotice.html);
// remove unnecessary line breaks, i.e. remove br between two quoted notices
if($(this).prev().is('br')) {
$(this).prev().remove();
}
if(!$(this).next().next().is('br')) {
$(this).next().after('<br>');
}
}
});
}

View File

@ -894,7 +894,8 @@ function searchForUpdatedNoticeData(obj) {
// we might want to hide urls (rendered as attachments) in the queet text
$.each(queetFoundInFeed.find('.queet-text').find('a'),function(){
if(attachmentsHTMLBuild.urlsToHide.indexOf($(this).text()) > -1) {
$(this).css('display','none');
$(this).removeAttr('style'); // temporary fix
$(this).addClass('hidden-embedded-link-in-queet-text');
}
});
queetFoundInFeed.find('.queet-text').after(attachmentsHTMLBuild.html);
@ -1135,32 +1136,6 @@ function displayOrHideUnreadNotifications(notifications) {
}
/* ·
·
· Mark all notifications as seen
·
· · · · · · · · · · · · · */
function markAllNotificationsAsSeen(arg,callback) {
display_spinner();
getFromAPI('qvitter/mark_all_notifications_as_seen.json',function(data){
if(data === false) {
showErrorMessage(window.sL.ERRORfailedMarkingAllNotificationsAsRead);
callback(true);
}
else {
helloAPI(function(){
$('.stream-item').removeClass('not-seen');
$('#new-queets-bar').trigger('click'); // show any hidden notifications (this will also remove the dropdown menu)
remove_spinner();
callback(true);
});
}
});
}
/* ·
·

View File

@ -1296,12 +1296,86 @@ $('body').on('click','.row-type-profile-prefs-toggle',function(e){
window.qvitterProfilePrefs[prefTopic] = '0';
}
// run callback
if(typeof thisToggle.attr('data-profile-pref-callback') != 'undefined'
&& thisToggle.attr('data-profile-pref-state') != 'undefined'
&& typeof window[thisToggle.attr('data-profile-pref-callback')] == 'function') {
window[thisToggle.attr('data-profile-pref-callback')]();
}
}
});
});
/* ·
·
· Mark all notifications as seen
·
· · · · · · · · · · · · · */
function markAllNotificationsAsSeen(arg,callback) {
display_spinner();
getFromAPI('qvitter/mark_all_notifications_as_seen.json',function(data){
if(data === false) {
showErrorMessage(window.sL.ERRORfailedMarkingAllNotificationsAsRead);
callback(true);
}
else {
helloAPI(function(){
$('.stream-item').removeClass('not-seen');
$('#new-queets-bar').trigger('click'); // show any hidden notifications (this will also remove the dropdown menu)
remove_spinner();
callback(true);
});
}
});
}
/* ·
·
· Show or hide embedded content in timeline?
·
· · · · · · · · · · · · · */
function showOrHideEmbeddedContentInTimelineFromProfilePref() {
if(typeof window.qvitterProfilePrefs['hide_embedded_in_timeline:' + window.currentStreamObject.path] != 'undefined') {
var showHide = window.qvitterProfilePrefs['hide_embedded_in_timeline:' + window.currentStreamObject.path];
if(parseInt(showHide,10) == 1) {
$('#feed-body').addClass('embedded-content-hidden-by-user');
}
else {
$('#feed-body').removeClass('embedded-content-hidden-by-user');
}
}
else {
$('#feed-body').removeClass('embedded-content-hidden-by-user');
}
}
/* ·
·
· Show or hide quotes in timeline?
·
· · · · · · · · · · · · · */
function showOrHideQuotesInTimelineFromProfilePref() {
if(typeof window.qvitterProfilePrefs['hide_quotes_in_timeline:' + window.currentStreamObject.path] != 'undefined') {
var showHide = window.qvitterProfilePrefs['hide_quotes_in_timeline:' + window.currentStreamObject.path];
if(parseInt(showHide,10) == 1) {
$('#feed-body').addClass('quotes-hidden-by-user');
}
else {
$('#feed-body').removeClass('quotes-hidden-by-user');
}
}
else {
$('#feed-body').removeClass('quotes-hidden-by-user');
}
}
/* ·
·
@ -2631,9 +2705,12 @@ $('body').on('click','button.shorten',function () {
·
· · · · · · · · · · · · · */
$('body').on('click','.reload-stream',function () {
setNewCurrentStream(URLtoStreamRouter(window.location.href),false,false,false);
reloadCurrentStream();
});
// can be used a callback too, e.g. from profile pref toggles
function reloadCurrentStream() {
setNewCurrentStream(URLtoStreamRouter(window.location.href),false,false,false);
}
/* ·
·

View File

@ -132,6 +132,7 @@ function pathToStreamRouter(path) {
id: false, // if we can read a id number string from the path, add it to this property
maxIdOrPage: 'maxId', // whether this stream uses 'maxId' or 'page' for paging (maxId is default)
menu: false, // optional menu in the header
callbacks: false, // functions to run after this timeline is loaded to feed-body
type: 'notices' // notices, notifications, users, groups, lists etc. notices is default
};
@ -141,6 +142,28 @@ function pathToStreamRouter(path) {
streamObject.name = 'public timeline';
streamObject.streamHeader = window.sL.publicTimeline;
streamObject.stream = 'statuses/public_timeline.json';
if(window.loggedIn !== false) {
streamObject.menu = [
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_embedded_in_timeline:' + streamObject.path,
label: window.sL.hideEmbeddedInTimeline,
callback: 'showOrHideEmbeddedContentInTimelineFromProfilePref'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_quotes_in_timeline:' + streamObject.path,
label: window.sL.hideQuotesInTimeline,
callback: 'showOrHideQuotesInTimelineFromProfilePref'
}
];
streamObject.callbacks = [
'showOrHideEmbeddedContentInTimelineFromProfilePref',
'showOrHideQuotesInTimelineFromProfilePref'
];
}
return streamObject;
}
@ -150,6 +173,28 @@ function pathToStreamRouter(path) {
streamObject.name = 'public and external timeline';
streamObject.streamHeader = window.sL.publicAndExtTimeline;
streamObject.stream = 'statuses/public_and_external_timeline.json';
if(window.loggedIn !== false) {
streamObject.menu = [
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_embedded_in_timeline:' + streamObject.path,
label: window.sL.hideEmbeddedInTimeline,
callback: 'showOrHideEmbeddedContentInTimelineFromProfilePref'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_quotes_in_timeline:' + streamObject.path,
label: window.sL.hideQuotesInTimeline,
callback: 'showOrHideQuotesInTimelineFromProfilePref'
}
];
streamObject.callbacks = [
'showOrHideEmbeddedContentInTimelineFromProfilePref',
'showOrHideQuotesInTimelineFromProfilePref'
];
}
return streamObject;
}
@ -168,6 +213,28 @@ function pathToStreamRouter(path) {
streamObject.stream = 'search.json?q=' + searchQuery;
streamObject.id = searchQuery;
streamObject.maxIdOrPage = 'page';
if(window.loggedIn !== false) {
streamObject.menu = [
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_embedded_in_timeline:' + streamObject.path,
label: window.sL.hideEmbeddedInTimeline,
callback: 'showOrHideEmbeddedContentInTimelineFromProfilePref'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_quotes_in_timeline:' + streamObject.path,
label: window.sL.hideQuotesInTimeline,
callback: 'showOrHideQuotesInTimelineFromProfilePref'
}
];
streamObject.callbacks = [
'showOrHideEmbeddedContentInTimelineFromProfilePref',
'showOrHideQuotesInTimelineFromProfilePref'
];
}
return streamObject;
}
}
@ -193,6 +260,28 @@ function pathToStreamRouter(path) {
streamObject.streamHeader = '#' + replaceHtmlSpecialChars(pathSplit[1]);
streamObject.id = pathSplit[1];
streamObject.stream = 'statusnet/tags/timeline/' + streamObject.id + '.json';
if(window.loggedIn !== false) {
streamObject.menu = [
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_embedded_in_timeline:' + streamObject.path,
label: window.sL.hideEmbeddedInTimeline,
callback: 'showOrHideEmbeddedContentInTimelineFromProfilePref'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_quotes_in_timeline:' + streamObject.path,
label: window.sL.hideQuotesInTimeline,
callback: 'showOrHideQuotesInTimelineFromProfilePref'
}
];
streamObject.callbacks = [
'showOrHideEmbeddedContentInTimelineFromProfilePref',
'showOrHideQuotesInTimelineFromProfilePref'
];
}
return streamObject;
}
@ -243,6 +332,28 @@ function pathToStreamRouter(path) {
streamObject.nickname = pathSplit[1];
streamObject.streamHeader = '!' + replaceHtmlSpecialChars(pathSplit[1]);
streamObject.stream = 'statusnet/groups/timeline/' + streamObject.nickname + '.json';
if(window.loggedIn !== false) {
streamObject.menu = [
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_embedded_in_timeline:' + streamObject.path,
label: window.sL.hideEmbeddedInTimeline,
callback: 'showOrHideEmbeddedContentInTimelineFromProfilePref'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_quotes_in_timeline:' + streamObject.path,
label: window.sL.hideQuotesInTimeline,
callback: 'showOrHideQuotesInTimelineFromProfilePref'
}
];
streamObject.callbacks = [
'showOrHideEmbeddedContentInTimelineFromProfilePref',
'showOrHideQuotesInTimelineFromProfilePref'
];
}
return streamObject;
}
@ -289,19 +400,40 @@ function pathToStreamRouter(path) {
if(window.loggedIn.screen_name == streamObject.nickname) {
streamObject.stream = 'statuses/friends_timeline.json';
streamObject.streamSubHeader = window.sL.timeline;
streamObject.menu = [
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_replies',
label: window.sL.hideRepliesToPeopleIDoNotFollow
},
{
type: 'divider'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_embedded_in_timeline:' + streamObject.path,
label: window.sL.hideEmbeddedInTimeline,
callback: 'showOrHideEmbeddedContentInTimelineFromProfilePref'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_quotes_in_timeline:' + streamObject.path,
label: window.sL.hideQuotesInTimeline,
callback: 'showOrHideQuotesInTimelineFromProfilePref'
}
];
streamObject.callbacks = [
'showOrHideEmbeddedContentInTimelineFromProfilePref',
'showOrHideQuotesInTimelineFromProfilePref'
];
}
else {
streamObject.stream = 'statuses/friends_timeline.json?screen_name=' + streamObject.nickname + '&withuserarray=1';
streamObject.parentPath = streamObject.nickname;
}
streamObject.menu = [
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_replies',
label: window.sL.hideRepliesToPeopleIDoNotFollow
}
];
return streamObject;
}
@ -319,6 +451,28 @@ function pathToStreamRouter(path) {
streamObject.stream = 'statuses/mentions.json?screen_name=' + streamObject.nickname + '&withuserarray=1';
streamObject.streamSubHeader = '<div class="queet-streams"><a class="queet-stream queets" href="' + window.siteInstanceURL + streamObject.nickname + '">' + window.sL.notices + '</a> /</div>' + window.sL.mentions + '<div class="queet-streams">/ <a class="queet-stream favorites" href="' + window.siteInstanceURL + streamObject.nickname + '/favorites">' + window.sL.favoritesNoun + '</a></div>';
}
if(window.loggedIn !== false) {
streamObject.menu = [
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_embedded_in_timeline:' + streamObject.path,
label: window.sL.hideEmbeddedInTimeline,
callback: 'showOrHideEmbeddedContentInTimelineFromProfilePref'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_quotes_in_timeline:' + streamObject.path,
label: window.sL.hideQuotesInTimeline,
callback: 'showOrHideQuotesInTimelineFromProfilePref'
}
];
streamObject.callbacks = [
'showOrHideEmbeddedContentInTimelineFromProfilePref',
'showOrHideQuotesInTimelineFromProfilePref'
];
}
return streamObject;
}
@ -341,31 +495,56 @@ function pathToStreamRouter(path) {
{
type: 'divider'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_embedded_in_timeline:' + streamObject.path,
label: window.sL.hideEmbeddedInTimeline,
callback: 'showOrHideEmbeddedContentInTimelineFromProfilePref'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_quotes_in_timeline:' + streamObject.path,
label: window.sL.hideQuotesInTimeline,
callback: 'showOrHideQuotesInTimelineFromProfilePref'
},
{
type: 'divider'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'disable_notify_replies_and_mentions',
label: window.sL.notifyRepliesAndMentions
label: window.sL.notifyRepliesAndMentions,
callback: 'reloadCurrentStream'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'disable_notify_favs',
label: window.sL.notifyFavs
label: window.sL.notifyFavs,
callback: 'reloadCurrentStream'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'disable_notify_repeats',
label: window.sL.notifyRepeats
label: window.sL.notifyRepeats,
callback: 'reloadCurrentStream'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'disable_notify_follows',
label: window.sL.notifyFollows
label: window.sL.notifyFollows,
callback: 'reloadCurrentStream'
}
];
streamObject.callbacks = [
'showOrHideEmbeddedContentInTimelineFromProfilePref',
'showOrHideQuotesInTimelineFromProfilePref'
];
}
return streamObject;
}
@ -384,6 +563,28 @@ function pathToStreamRouter(path) {
streamObject.streamHeader = '@' + replaceHtmlSpecialChars(streamObject.nickname);
streamObject.streamSubHeader = '<div class="queet-streams"><a class="queet-stream queets" href="' + window.siteInstanceURL + streamObject.nickname + '">' + window.sL.notices + '</a> / <a class="queet-stream mentions" href="' + window.siteInstanceURL + streamObject.nickname + '/replies">' + window.sL.mentions + '</a> /</div>' + window.sL.favoritesNoun;
}
if(window.loggedIn !== false) {
streamObject.menu = [
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_embedded_in_timeline:' + streamObject.path,
label: window.sL.hideEmbeddedInTimeline,
callback: 'showOrHideEmbeddedContentInTimelineFromProfilePref'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_quotes_in_timeline:' + streamObject.path,
label: window.sL.hideQuotesInTimeline,
callback: 'showOrHideQuotesInTimelineFromProfilePref'
}
];
streamObject.callbacks = [
'showOrHideEmbeddedContentInTimelineFromProfilePref',
'showOrHideQuotesInTimelineFromProfilePref'
];
}
return streamObject;
}
@ -440,6 +641,28 @@ function pathToStreamRouter(path) {
streamObject.streamHeader = window.sL.nicknamesListWithListName.replace('{list-name}',streamObject.nickname).replace('{nickname}',pathSplit[0]);
streamObject.streamSubHeader = window.sL.nicknamesListWithListName.replace('{list-name}',streamObject.nickname).replace('{nickname}',pathSplit[0]) + '<div class="queet-streams">/ <a class="queet-stream list-members" href="' + window.siteInstanceURL + pathSplit[0] + '/all/' + streamObject.nickname + '/tagged">' + window.sL.listMembers + '</a> / <a class="queet-stream list-subscribers" href="' + window.siteInstanceURL + pathSplit[0] + '/all/' + streamObject.nickname + '/subscribers">' + window.sL.listSubscribers + '</a></div>';
}
if(window.loggedIn !== false) {
streamObject.menu = [
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_embedded_in_timeline:' + streamObject.path,
label: window.sL.hideEmbeddedInTimeline,
callback: 'showOrHideEmbeddedContentInTimelineFromProfilePref'
},
{
type: 'profile-prefs-toggle',
namespace: 'qvitter',
topic: 'hide_quotes_in_timeline:' + streamObject.path,
label: window.sL.hideQuotesInTimeline,
callback: 'showOrHideQuotesInTimelineFromProfilePref'
}
];
streamObject.callbacks = [
'showOrHideEmbeddedContentInTimelineFromProfilePref',
'showOrHideQuotesInTimelineFromProfilePref'
];
}
return streamObject;
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Eingebettete Inhaltsvorschau nicht anzeigen in dieser Timeline",
"hideQuotesInTimeline":"Verberge Zitate in dieser Timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Ocultar contenido incrustado en esta línea temporal",
"hideQuotesInTimeline":"Ocultar citas en esta línea temporal"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -162,5 +162,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Cacher le contenu intégré dans ces avis",
"hideQuotesInTimeline":"Cacher les citations dans ces avis"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -161,5 +161,7 @@
"addEditLanguageLink":"Hjälp till att översätta {site-title} till ett annat språk",
"onlyPartlyTranslated":"Bara {percent}% av gränssnittet är översatt till svenska. Du kan hjälpa till med översättningen på <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitters hemsida</a>",
"startRant":"Påbörja en harang",
"continueRant":"Fortsätt harangen"
"continueRant":"Fortsätt harangen",
"hideEmbeddedInTimeline":"Dölj inbäddat innehåll i detta flöde",
"hideQuotesInTimeline":"Dölj citat i detta flöde"
}

View File

@ -160,5 +160,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}

View File

@ -160,5 +160,7 @@
"addEditLanguageLink":"Help translate {site-title} to another language",
"onlyPartlyTranslated":"{site-title} is only partly translated to <em>{language-name}</em> ({percent}%). You can help complete the translation at <a href=\"https://git.gnu.io/h2p/Qvitter/tree/master/locale\">Qvitter's repository homepage</a>",
"startRant":"Start a rant",
"continueRant":"Continue the rant"
"continueRant":"Continue the rant",
"hideEmbeddedInTimeline":"Hide embedded content in this timeline",
"hideQuotesInTimeline":"Hide quotes in this timeline"
}