Browse Source

Merge pull request #1 from miguelfreitas/master

update
master
Eugene Lifescale 10 years ago
parent
commit
6374da5da9
  1. 10
      css/style.css
  2. 49
      home.html
  3. 252
      js/interface_common.js
  4. 36
      js/interface_home.js
  5. 706
      js/interface_localization.js
  6. 80
      js/jQueryPlugins.js
  7. 303
      js/options.js
  8. 3
      js/twister_following.js
  9. 2
      js/twister_timeline.js
  10. 30
      licenses/caret.license
  11. 25
      licenses/franc.license
  12. 9
      licenses/notify.js.license
  13. 24
      options.html
  14. 5
      theme_calm/css/style.css
  15. 13
      theme_nin/css/style.css
  16. 10
      theme_nin/sass/style.sass

10
css/style.css

@ -785,6 +785,7 @@ textarea.splited-post {
opacity: 1; opacity: 1;
} }
.refresh-toptrends,
.refresh-users, .refresh-users,
.view-all-users .view-all-users
{ {
@ -794,8 +795,9 @@ textarea.splited-post {
} }
/*********************************** /***********************************
**********TOP TRENDS**************** ************ TOP TRENDS ************
***********************************/ ***********************************/
ol.toptrends-list { ol.toptrends-list {
margin: 0% 5% 5% 5%; margin: 0% 5% 5% 5%;
padding: 5px; padding: 5px;
@ -803,9 +805,9 @@ ol.toptrends-list {
border-top: solid 1px rgba( 69, 71, 77, .1 ); border-top: solid 1px rgba( 69, 71, 77, .1 );
} }
.toptrends h3 .toptrends h3 {
{ margin: 5% 0% 2% 5%;
margin: 5% 5% 2% 5%; display: inline;
} }
/*********************************** /***********************************

49
home.html

@ -114,7 +114,7 @@
<!-- LADO ESQUERDO DE MÓDULOS INIT --> <!-- LADO ESQUERDO DE MÓDULOS INIT -->
<div class="dashboard left"> <div class="dashboard left">
<!-- PROFILE MODULE INIT --> <!-- PROFILE MODULE -->
<div class="module mini-profile"> <div class="module mini-profile">
<div class="mini-profile-info"> <div class="mini-profile-info">
<!-- THEME NIN added sub-menu (mentions, messages and edit profile) --> <!-- THEME NIN added sub-menu (mentions, messages and edit profile) -->
@ -151,29 +151,12 @@
</form> </form>
</div> </div>
</div> </div>
<!-- PROFILE MODULE INIT -->
<!-- WHO TO FOLLOW MODULE INIT --> <!-- WHO TO FOLLOW MODULE -->
<div class="module who-to-follow"> <div class="module who-to-follow"></div>
<h3>Who to Follow</h3>
<small>.</small>
<a class="refresh-users">Refresh</a>
<small>.</small>
<a class="view-all-users" href="#whotofollow">View All</a>
<ol class="follow-suggestions">
<!-- use "follow-suggestion-template" here -->
</ol>
</div>
<!-- WHO TO FOLLOW MODULE END -->
<!-- WHO TO FOLLOW MODULE INIT --> <!-- TOP TRENDS MODULE -->
<div class="module toptrends"> <div class="module toptrends"></div>
<h3><span>Top Trends</span></h3>
<ol class="toptrends-list">
<!-- use "follow-suggestion-template" here -->
</ol>
</div>
<!-- WHO TO FOLLOW MODULE END -->
</div> </div>
<!-- LADO ESQUERDO DE MÓDULOS END --> <!-- LADO ESQUERDO DE MÓDULOS END -->
@ -225,6 +208,28 @@
<!-- TEMPLATES INIT --> <!-- TEMPLATES INIT -->
<div id="templates" style="display:none;"> <div id="templates" style="display:none;">
<!-- TEMPLATE DE WHO-TO-FOLLOW MODULE -->
<div id="who-to-follow-template">
<h3 class="label">Who to Follow</h3>
<small>.</small>
<a class="refresh-users">Refresh</a>
<small>.</small>
<a class="view-all-users" href="#whotofollow">View All</a>
<ol class="follow-suggestions">
<!-- use "follow-suggestion-template" here -->
</ol>
</div>
<!-- TEMPLATE DE TOP TRENDS MODULE -->
<div id="toptrends-template">
<h3 class="label">Top Trends</h3>
<small>.</small>
<a class="refresh-toptrends">Refresh</a>
<ol class="toptrends-list">
<!-- use "follow-suggestion-template" here -->
</ol>
</div>
<!-- TEMPLATE DE WHO-TO-FOLLOW SUGGESTION --> <!-- TEMPLATE DE WHO-TO-FOLLOW SUGGESTION -->
<li id="follow-suggestion-template" class="twister-user"> <li id="follow-suggestion-template" class="twister-user">
<div class=""> <div class="">

252
js/interface_common.js

@ -292,7 +292,7 @@ function refreshWhoToFollow(e) {
e.stopPropagation(); e.stopPropagation();
e.preventDefault(); e.preventDefault();
$('.follow-suggestions').html(''); $('.module.who-to-follow .follow-suggestions').empty();
getRandomFollowSuggestion(processSuggestion); getRandomFollowSuggestion(processSuggestion);
getRandomFollowSuggestion(processSuggestion); getRandomFollowSuggestion(processSuggestion);
@ -729,10 +729,11 @@ var composeNewPost = function( e, postAreaNew )
} }
var textArea = postAreaNew.find("textarea"); var textArea = postAreaNew.find("textarea");
textArea.focus();
if( textArea.attr("data-reply-to") && !textArea.val().length ) { if( textArea.attr("data-reply-to") && !textArea.val().length ) {
textArea.val(textArea.attr("data-reply-to")); textArea.val(textArea.attr("data-reply-to"));
} }
if (!postAreaNew.find("textarea:focus").length)
postAreaNew.find("textarea:last").focus();
} }
//Reduz Área do Novo post //Reduz Área do Novo post
@ -751,63 +752,76 @@ function checkPostForMentions(post, mentions, max) {
var splitedPostsCount = 1; var splitedPostsCount = 1;
var usePostSpliting = false; var usePostSpliting = false;
function replyTextKeypress(e) { function replyTextInput(e) {
e = e || event; e = e || event;
var $this = $( this ); var $this = $( this );
var tweetForm = $this.parents("form"); var tweetForm = $this.parents("form");
if( tweetForm != undefined ) { if( tweetForm != undefined ) {
if ($.Options.getUnicodeConversionOpt() !== "disable") if ($.Options.getUnicodeConversionOpt() !== "disable")
$this.val(convert2Unicodes($this.val(), $this)); $this.val(convert2Unicodes($this.val(), $this));
var c = 140 - $this.val().length;
if (usePostSpliting && !$this.parents('.directMessages').length) { if (usePostSpliting && !$this.parents('.directMessages').length) {
var $tas = tweetForm.find("textarea"); var $tas = tweetForm.find("textarea");
splitedPostsCount = $tas.length; splitedPostsCount = $tas.length;
if ($this.hasClass('splited-post')) var icurrentta = $tas.index(this); // current textarea $tas index
$this.css('height', '28px'); if (splitedPostsCount > 1)
var pml = getPostSplitingPML();
else
var pml = 140;
var cci = getPostSpittingCI(icurrentta);
var caretPos = $this.caret();
var reply_to = $this.attr('data-reply-to'); var reply_to = $this.attr('data-reply-to');
for (var i = 0; i < $tas.length; i++) {
var pml = 140 - (i+1).toString().length - splitedPostsCount.toString().length - 4;
//if mention exists, we shouldn't add it while posting.
if (typeof(reply_to) !== 'undefined' &&
!checkPostForMentions($tas[i].value, reply_to, pml - reply_to.length)) {
pml -= reply_to.length;
}
for (var i = 0; i < $tas.length; i++) {
if ($tas[i].value.length > pml) { if ($tas[i].value.length > pml) {
var endings = $tas[i].value.match(/ |,|;|\.|:|\/|\?|\!|\\|'|"|\n|\t/g); if (pml === 140)
var ci = $tas[i].value.lastIndexOf(endings[endings.length - 1]); pml = getPostSplitingPML();
for (var j = endings.length - 2; j >= 0 && ci > pml; j--) { var ci = getPostSpittingCI(i);
ci = $tas[i].value.lastIndexOf(endings[j], ci - 1);
}
ci = (ci > pml ? pml : ci);
if (i < splitedPostsCount - 1) { if (i < splitedPostsCount - 1) {
$tas[i + 1].value = $tas[i].value.substr(ci) + $tas[i + 1].value; $tas[i + 1].value = $tas[i].value.substr(ci) + $tas[i + 1].value;
$tas[i].value = $tas[i].value.substr(0, ci); $tas[i].value = $tas[i].value.substr(0, ci);
if (caretPos > cci) {
caretPos -= ci;
icurrentta += 1;
cci = getPostSpittingCI(icurrentta);
var $targetta = $($tas[icurrentta]);
} else if (i === icurrentta)
$($tas[i]).caret(caretPos);
} else { } else {
var $oldta = $($tas[i]); var $oldta = $($tas[i]);
if (typeof($.fn.textcomplete) === 'function') {
$oldta.textcomplete('destroy');
e.stopImmediatePropagation(); // something goes wrong in $.fn.textcomplete if we don't stop this immediately
}
var $newta = $($oldta).clone(true); var $newta = $($oldta).clone(true);
var cp = $oldta.val(); var cp = $oldta.val();
$oldta.after($newta);
$newta.val(cp.substr(ci));
$oldta.val(cp.substr(0, ci)); $oldta.val(cp.substr(0, ci));
$oldta.on("click", function(e) {
e.stopPropagation(); $tas = tweetForm.find("textarea");
splitedPostsCount = $tas.length;
pml = getPostSplitingPML();
$oldta.on('focus', function() {
this.style.height = '80px'; this.style.height = '80px';
}); });
$oldta.unbind("keyup");
$oldta.on("blur", replyTextKeypress);
$oldta.addClass('splited-post'); $oldta.addClass('splited-post');
$oldta.on('focusout', function() {this.style.height = '28px';}); // FIXME move this to CSS
tweetForm.find(".textcomplete-wrapper").append($newta); // FIXME come find textcomplete-wrapper anywhere in code if (caretPos > cci) {
$newta.val(cp.substr(ci)); caretPos -= ci;
$newta.focus(); icurrentta += 1;
if ($newta[0].setSelectionRange) cci = getPostSpittingCI(icurrentta);
$newta[0].setSelectionRange($newta.val().length, $newta.val().length); var $targetta = $newta;
else if ($newta[0].createTextRange) $oldta[0].style.height = '28px'; // FIXME move this to CSS
$newta[0].createTextRange().moveEnd('character', $newta.val().length); } else if (i === icurrentta) {
$($tas[i]).caret(caretPos);
$tas = tweetForm.find("textarea"); replyTextUpdateRemaining($tas[i]);
splitedPostsCount = $tas.length; if (typeof($.fn.textcomplete) === 'function')
setTextcompleteOn($tas[i]);
}
} }
} else if ($tas.length > 1 && $tas[i].value.length === 0) { } else if ($tas.length > 1 && $tas[i].value.length === 0) {
@ -819,34 +833,113 @@ function replyTextKeypress(e) {
} }
$tas = tweetForm.find("textarea"); $tas = tweetForm.find("textarea");
splitedPostsCount = $tas.length; splitedPostsCount = $tas.length;
if (splitedPostsCount > 1)
pml = getPostSplitingPML();
else
pml = 140;
caretPos = -1;
if (icurrentta >= i && icurrentta > 0) {
icurrentta -= 1;
cci = getPostSpittingCI(icurrentta);
}
var $targetta = $($tas[icurrentta]);
}
}
if (typeof($targetta) !== 'undefined' && $targetta[0] !== document.activeElement) {
$this = $targetta;
$this.focus();
$this.caret(caretPos);
}
} }
} }
c = 140 - $tas[$tas.length - 1].value.length - (2 * splitedPostsCount.toString().length) - 4; function getPostSplitingPML() {
var pml = 140 -(i+1).toString().length -splitedPostsCount.toString().length -4;
// if mention exists, we shouldn't add it while posting.
if (typeof(reply_to) !== 'undefined' && if (typeof(reply_to) !== 'undefined' &&
!checkPostForMentions($tas[$tas.length - 1].value, reply_to, 140 - c - reply_to.length)) !checkPostForMentions($tas[i].value, reply_to, pml -reply_to.length)) {
c -= reply_to.length; pml -= reply_to.length;
} }
var remainingCount = tweetForm.find(".post-area-remaining");
if( c < 0 ) return pml;
remainingCount.addClass("warn"); }
else
remainingCount.removeClass("warn"); function getPostSpittingCI(ita) {
var ci;
var endings = $tas[ita].value.match(/ |,|;|\.|:|\/|\?|\!|\\|'|"|\n|\t/g);
if (endings) {
ci = $tas[ita].value.lastIndexOf(endings[endings.length - 1]);
for (var j = endings.length - 2; j >= 0 && ci > pml; j--) {
ci = $tas[ita].value.lastIndexOf(endings[j], ci - 1);
}
}
if (!(ci > 0))
ci = pml;
return (ci > pml) ? pml : ci;
}
}
function replyTextUpdateRemaining(ta) {
if (ta === document.activeElement ) {
var $this = $(ta);
var tweetForm = $this.closest('form');
if( tweetForm != undefined ) {
var remainingCount = tweetForm.find(".post-area-remaining");
var c = replyTextCountRemaining(ta);
if (usePostSpliting && !$this.parents('.directMessages').length) if (usePostSpliting && !$this.parents('.directMessages').length && splitedPostsCount > 1)
remainingCount.text(splitedPostsCount.toString() + ". post: " + c.toString()); remainingCount.text((tweetForm.find("textarea").index(ta)+1).toString() +'/' +splitedPostsCount.toString() +": " +c.toString());
else else
remainingCount.text(c.toString()); remainingCount.text(c.toString());
var tweetAction = tweetForm.find(".post-submit"); var tweetAction = tweetForm.find(".post-submit");
if( !tweetAction.length ) tweetAction = tweetForm.find(".dm-submit"); if( !tweetAction.length ) tweetAction = tweetForm.find(".dm-submit");
if( c >= 0 && c < 140 && var disable = false;
$this.val() != $this.attr("data-reply-to") ) { $this.closest('form').find("textarea").each(function() {
if (replyTextCountRemaining(this) < 0) {
disable = true; // alternatively we could call replyTextInput()
return false;
}
});
if (!disable && c >= 0 && c < 140 && $this.val() != $this.attr("data-reply-to")) {
remainingCount.removeClass("warn");
$.MAL.enableButton(tweetAction); $.MAL.enableButton(tweetAction);
} else { } else {
if (disable)
remainingCount.addClass("warn");
$.MAL.disableButton(tweetAction); $.MAL.disableButton(tweetAction);
} }
}
}
}
function replyTextCountRemaining(ta) {
var $this = $(ta);
var c;
if (usePostSpliting && !$this.parents('.directMessages').length && splitedPostsCount > 1) {
c = 140 -ta.value.length -($this.closest('form').find("textarea").index(ta)+1).toString().length -splitedPostsCount.toString().length -4;
var reply_to = $this.attr('data-reply-to');
if (typeof(reply_to) !== 'undefined' &&
!checkPostForMentions(ta.value, reply_to, 140 -c -reply_to.length))
c -= reply_to.length;
} else
c = 140 - ta.value.length;
return c;
}
function replyTextKeySend(e) {
e = e || event;
var $this = $( this );
var tweetForm = $this.parents('form');
if( tweetForm != undefined ) {
var tweetAction = tweetForm.find(".post-submit");
if( !tweetAction.length ) tweetAction = tweetForm.find(".dm-submit");
if( $.Options.keyEnterToSend() && $('.dropdown-menu').css('display') == 'none'){ if( $.Options.keyEnterToSend() && $('.dropdown-menu').css('display') == 'none'){
if (e.keyCode === 13 && (!e.metaKey && !e.ctrlKey)) { if (e.keyCode === 13 && (!e.metaKey && !e.ctrlKey)) {
@ -1445,19 +1538,20 @@ function replaceDashboards() {
if ($(window).width() >= 1200 && !$('.wrapper').hasClass('w1200')) { if ($(window).width() >= 1200 && !$('.wrapper').hasClass('w1200')) {
$('.wrapper').addClass('w1200'); $('.wrapper').addClass('w1200');
$('.userMenu').addClass('w1200'); $('.userMenu').addClass('w1200');
var wf = $('.module.who-to-follow'); var wtf = $('.module.who-to-follow');
wf.detach(); if (wtf.length > 0) {
wf.appendTo($('.dashboard.right')); wtf.detach();
wtf.appendTo($('.dashboard.right'));
}
} else if ($(window).width() < 1200 && $('.wrapper').hasClass('w1200')) { } else if ($(window).width() < 1200 && $('.wrapper').hasClass('w1200')) {
$('.wrapper').removeClass('w1200'); $('.wrapper').removeClass('w1200');
$('.userMenu').removeClass('w1200'); $('.userMenu').removeClass('w1200');
var wf = $('.module.who-to-follow'); var wtf = $('.module.who-to-follow');
wf.detach(); if (wtf.length > 0) {
$('.module.mini-profile').after(wf); wtf.detach();
$('.module.mini-profile').after(wtf);
}
} }
$( ".who-to-follow .refresh-users" ).bind( "click", refreshWhoToFollow );
//$( ".who-to-follow .view-all-users" ).bind( "click", function(){window.location.hash = "#whotofollow"} );
} }
function initInterfaceCommon() { function initInterfaceCommon() {
@ -1508,7 +1602,9 @@ function initInterfaceCommon() {
$( ".undo-unicode" ).click( undoLastUnicode ); $( ".undo-unicode" ).click( undoLastUnicode );
var $replyText = $( ".post-area-new textarea" ); var $replyText = $( ".post-area-new textarea" );
$replyText.on("keyup", replyTextKeypress ); $replyText.on('input', replyTextInput); // input event fires in modern browsers (IE9+) on any changes in textarea (and copypasting with mouse too)
$replyText.on('input focus', function() {replyTextUpdateRemaining(this);});
$replyText.on('keyup', replyTextKeySend);
$( ".open-profile-modal").bind( "click", function(e){ e.stopPropagation(); } ); $( ".open-profile-modal").bind( "click", function(e){ e.stopPropagation(); } );
//$( ".open-hashtag-modal").bind( "click", openHashtagModal ); //$( ".open-hashtag-modal").bind( "click", openHashtagModal );
@ -1519,6 +1615,11 @@ function initInterfaceCommon() {
replaceDashboards(); replaceDashboards();
$( window ).resize(replaceDashboards); $( window ).resize(replaceDashboards);
if ($.Options.getWhoToFollowOpt() === 'enable')
initWhoToFollow();
else
killWhoToFollow();
$('.tox-ctc').on('click', function(){ $('.tox-ctc').on('click', function(){
window.prompt(polyglot.t('copy_to_clipboard'), $(this).attr('data')) window.prompt(polyglot.t('copy_to_clipboard'), $(this).attr('data'))
}); });
@ -1528,24 +1629,41 @@ function initInterfaceCommon() {
if (typeof($.fn.textcomplete) === 'function') { if (typeof($.fn.textcomplete) === 'function') {
$('textarea') $('textarea')
.on('focus', function () { .on('focus', function () { setTextcompleteOn(this); })
var element = this; .on('focusout', function () { $(this).textcomplete('destroy'); })
;
}
}
function initWhoToFollow() {
var wtf = $('.module.who-to-follow');
if (wtf.length) {
wtf.html($('#who-to-follow-template').html()).show();
var wtfRefresh = wtf.find('.refresh-users');
wtfRefresh.on('click', refreshWhoToFollow);
setTimeout(function() { wtfRefresh.click() }, 100);
//wtf.find('.view-all-users').on('click', function() { window.location.hash = '#whotofollow'; });
}
}
function killWhoToFollow() {
var wtf = $('.module.who-to-follow');
if (wtf.length)
wtf.empty().hide();
}
function setTextcompleteOn(element) {
var $this = $(element);
// Cursor has not set yet. And wait 100ms to skip global click event. // Cursor has not set yet. And wait 100ms to skip global click event.
setTimeout(function () { setTimeout(function () {
// Cursor is ready. // Cursor is ready.
$(element).textcomplete(getMentionsForAutoComplete(), { $this.textcomplete(getMentionsForAutoComplete(), {
'appendTo': ($(element).parents('.dashboard').length > 0) ? $(element).parent() : $('body'), 'appendTo': ($this.parents('.dashboard').length > 0) ? $this.parent() : $('body'),
'listPosition': setTextcompleteDropdownListPos 'listPosition': setTextcompleteDropdownListPos
}); });
}, 100); }, 100);
})
.on('focusout', function () {
$(this).textcomplete('destroy');
})
;
} }
}
// following workaround function is for calls from $.fn.textcomplete only // following workaround function is for calls from $.fn.textcomplete only
// we need this because currently implementation of caret position detection is way too imperfect // we need this because currently implementation of caret position detection is way too imperfect

36
js/interface_home.js

@ -99,10 +99,6 @@ var InterfaceFunctions = function()
twisterFollowingO = TwisterFollowing(defaultScreenName); twisterFollowingO = TwisterFollowing(defaultScreenName);
setTimeout("getRandomFollowSuggestion(processSuggestion)", 1000);
setTimeout("getRandomFollowSuggestion(processSuggestion)", 1000);
setTimeout("getRandomFollowSuggestion(processSuggestion)", 1000);
if( args.cbFunc ) if( args.cbFunc )
args.cbFunc(args.cbArg); args.cbFunc(args.cbArg);
}, {cbFunc:cbFunc, cbArg:cbArg}); }, {cbFunc:cbFunc, cbArg:cbArg});
@ -122,16 +118,35 @@ var InterfaceFunctions = function()
}); });
} }
setTimeout(updateTrendingHashtags, 1000); if ($.Options.getTopTrendsOpt() === 'enable')
if ($.Options.getTopTrendsAutoUpdateOpt() === 'enable' && $.Options.getTopTrendsAutoUpdateTimerOpt() > 0) initTopTrends();
setInterval(updateTrendingHashtags, $.Options.getTopTrendsAutoUpdateTimerOpt()*1000); else
killTopTrends();
} }
}; };
function initTopTrends() {
var $tt = $('.module.toptrends');
if ($tt.length) {
$tt.html($('#toptrends-template').html()).show();
var $ttRefresh = $tt.find('.refresh-toptrends');
$ttRefresh.on('click', updateTrendingHashtags);
setTimeout(function() { $ttRefresh.click() }, 100);
}
}
function killTopTrends() {
var $tt = $('.module.toptrends');
if ($tt.length)
$tt.empty().hide();
}
function updateTrendingHashtags() { function updateTrendingHashtags() {
var $ttl = $('.module.toptrends .toptrends-list');
if ($ttl.length) {
twisterRpc('gettrendinghashtags', [10], twisterRpc('gettrendinghashtags', [10],
function(args, ret) { function(args, ret) {
$('.toptrends-list').empty(); $ttl.empty();
//console.log('hashtags trends: '+ret); //console.log('hashtags trends: '+ret);
for( var i = 0; i < ret.length; i++ ) { for( var i = 0; i < ret.length; i++ ) {
if ($.Options.getFilterLangOpt() !== 'disable' && $.Options.getFilterLangForTopTrendsOpt()) if ($.Options.getFilterLangOpt() !== 'disable' && $.Options.getFilterLangForTopTrendsOpt())
@ -153,7 +168,7 @@ function updateTrendingHashtags() {
} }
} }
$('.toptrends-list').append($li); $ttl.append($li);
} }
} }
}, {}, }, {},
@ -161,6 +176,9 @@ function updateTrendingHashtags() {
console.log('Error with gettrendinghashtags. Older twister daemon?'); console.log('Error with gettrendinghashtags. Older twister daemon?');
}, {} }, {}
); );
if ($.Options.getTopTrendsAutoUpdateOpt() === 'enable' && $.Options.getTopTrendsAutoUpdateTimerOpt() > 0)
setTimeout(updateTrendingHashtags, $.Options.getTopTrendsAutoUpdateTimerOpt()*1000);
}
}; };
//*********************************************** //***********************************************

706
js/interface_localization.js

@ -4,7 +4,7 @@
// uses Polyglot.js ( https://github.com/airbnb/polyglot.js ) to translate interface // uses Polyglot.js ( https://github.com/airbnb/polyglot.js ) to translate interface
// translators: add your language code here such as "es" for Spanish, "ru" for Russian // translators: add your language code here such as "es" for Spanish, "ru" for Russian
var knownLanguages = ["en","es","nl","it","fr","ru","de","zh","ja","pt-BR","tr","uk","cs"]; var knownLanguages = ["en","es","nl","it","fr","ru","de","zh-CN","ja","pt-BR","tr","uk","cs"];
if( $.Options.getOption('locLang','auto') == 'auto'){ if( $.Options.getOption('locLang','auto') == 'auto'){
// detect language with JavaScript // detect language with JavaScript
@ -295,7 +295,20 @@ if(preferredLanguage == "en"){
"Terminate Daemon": "Terminate Daemon", "Terminate Daemon": "Terminate Daemon",
"New post": "New post", "New post": "New post",
"Search": "Search", "Search": "Search",
"Direct Msg": "Direct Msg" "Direct Msg": "Direct Msg",
"Traffic information": "Traffic information",
"DHT Torrents:": "DHT Torrents:",
"Peers:": "Peers:",
"Peer List Size:": "Peer List Size:",
"Active Requests:": "Active Requests:",
"Download:": "Download:",
"Upload:": "Upload:",
"DHT Download:": "DHT Download:",
"DHT Upload:": "DHT Upload:",
"IP Overhead Download:": "IP Overhead Download:",
"IP Overhead Upload:": "IP Overhead Upload:",
"Payload Download:": "Payload Download:",
"Payload Upload:": "Payload Upload:",
}; };
} }
if(preferredLanguage == "es"){ if(preferredLanguage == "es"){
@ -575,7 +588,7 @@ if(preferredLanguage == "uk"){
"ajax_error": "Помилка Ajax: %{error}", // JavaScript error "ajax_error": "Помилка Ajax: %{error}", // JavaScript error
"All users publicly followed by": "Усі публічні користувачі яких читають", "All users publicly followed by": "Усі публічні користувачі яких читають",
"Available": "Доступний", // username is available "Available": "Доступний", // username is available
"Appearance": "Appearance", "Appearance": "Вигляд",
"Block chain information": "Інформація про ланцюжок блоків", "Block chain information": "Інформація про ланцюжок блоків",
"Block chain is up-to-date, twister is ready to use!": "Ланцюг блоків оновлено, twister готовий до використання!", "Block chain is up-to-date, twister is ready to use!": "Ланцюг блоків оновлено, twister готовий до використання!",
"Block generation": "Генерація блоку ", "Block generation": "Генерація блоку ",
@ -585,16 +598,16 @@ if(preferredLanguage == "uk"){
"Collapse": "Згорнути", // smaller view of a post "Collapse": "Згорнути", // smaller view of a post
"Configure block generation": "Налаштувати генерацію блоку", "Configure block generation": "Налаштувати генерацію блоку",
"Connections:": "З’єднання: ", // to network "Connections:": "З’єднання: ", // to network
"Connection lost.": "З’єднання втрачеон.", "Connection lost.": "З’єднання втрачено.",
"days": "%{smart_count} день |||| %{smart_count} днів", "days": "%{smart_count} день |||| %{smart_count} днів",
"Detailed information": "Детальна інформація", "Detailed information": "Детальна інформація",
"DHT network down.": "Мережа DHT недоступна.", "DHT network down.": "Мережа DHT недоступна.",
"Direct Messages": "Особисті повідомлення", "Direct Messages": "Особисті повідомлення",
"Disable": ідключено", "Disable": имкнено",
"Display mentions to @": "Показати згадування @", "Display mentions to @": "Показати події @",
"Display retransmissions": "Показати пересилання", "Display retransmissions": "Показати пересилання",
"DNS to obtain list of peers:": "DNS для отримання пірів:", "DNS to obtain list of peers:": "DNS для отримання пірів:",
"dns address": "адреса dns", "dns address": "адреса DNS",
"downloading_block_chain": "Завантаження ланцюга блоків, будь ласка, зачекайте перед продовженням (ланцюг блоків віком %{days} днів).", "downloading_block_chain": "Завантаження ланцюга блоків, будь ласка, зачекайте перед продовженням (ланцюг блоків віком %{days} днів).",
"download_posts_status": "Завантажено %{portion} повідомлень", // Downloaded 10/30 posts "download_posts_status": "Завантажено %{portion} повідомлень", // Downloaded 10/30 posts
"Enable": "Включено", "Enable": "Включено",
@ -606,23 +619,23 @@ if(preferredLanguage == "uk"){
"Expand": "Розгорнути", // larger view of a post "Expand": "Розгорнути", // larger view of a post
"Favorite": "Улюблені", "Favorite": "Улюблені",
"File APIs not supported in this browser.": "File APIs не підтримуєтся цим браузером.", "File APIs not supported in this browser.": "File APIs не підтримуєтся цим браузером.",
"Follow": "Підписатись", "Follow": "Читати",
"Following config": "Following config", "Following config": "Налаштування читання",
"Which way do you want to follow": "Which way do you want to follow", "Which way do you want to follow": "У який спосіб ви бажаєте читати",
"Followed by": "Підписаний на", "Followed by": "Читає",
"followed_by": "%{username} підписан", "followed_by": "%{username} читає",
"Followers": "Читачі", "Followers": "Читачі",
"Following": "Читаємі", "Following": "Читає",
"Following users": "Підписані користувачі", "Following users": "Підписані користувачі",
"Force connection to peer:": "Примусове з’єднання з піром:", "Force connection to peer:": "Примусове з’єднання з піром:",
"General information": "Загальна інформація", "General information": "Загальна інформація",
"Generate blocks (send promoted messages)": "Генерація блоків (відправка рекламних повідомень)", "Generate blocks (send promoted messages)": "Генерація блоків (відправка рекламних повідомлень)",
"Home": "Головна", // homepage "Home": "Головна", // homepage
"hours": "%{smart_count} година |||| %{smart_count} годин", "hours": "%{smart_count} година |||| %{smart_count} годин",
"Internal error: lastPostId unknown (following yourself may fix!)": "Внутрішня помилка: lastPostId невизначено (підписка на себе може виправити!)", "Internal error: lastPostId unknown (following yourself may fix!)": "Внутрішня помилка: lastPostId невизначено (підписка на себе може виправити помилку!)",
"Known peers:": "Відомі піри: ", "Known peers:": "Відомі піри: ",
"Last block is ahead of your computer time, check your clock.": "Останній блок датований майбутнім часом, перевірте свій годинник.", "Last block is ahead of your computer time, check your clock.": "Останній блок датований майбутнім часом, перевірте свій годинник.",
"mentions_at": "Згадування @%{user}", "mentions_at": "Події @%{user}",
"minutes": "%{smart_count} хвилина |||| %{smart_count} хвилин", "minutes": "%{smart_count} хвилина |||| %{smart_count} хвилин",
"Must be 16 characters or less.": "Повинно бути не більше 16 символів.", // username "Must be 16 characters or less.": "Повинно бути не більше 16 символів.", // username
"Network": "Мережа", "Network": "Мережа",
@ -630,27 +643,27 @@ if(preferredLanguage == "uk"){
"Network status": "Статус мережі", "Network status": "Статус мережі",
"New direct message...": "Нове особисте повідомлення...", "New direct message...": "Нове особисте повідомлення...",
"New Post...": "Нове повідомлення...", "New Post...": "Нове повідомлення...",
"You got": "You got", "You got": "Ви отримали",
"in postboard": "in postboard", "in postboard": "в стрічці",
"in search result": "in search result", "in search result": "в пошуковому запиті",
"in top trends": "in top trends", "in top trends": "в трендах",
"new_posts": "%{smart_count} нове повідомлення |||| %{smart_count} нових повідомлень", "new_posts": "%{smart_count} нове повідомлення |||| %{smart_count} нових повідомлень",
"new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions", "new_mentions": "%{smart_count} нова подія |||| %{smart_count} нових подій",
"new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages", "new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages",
"nobody": "nobody", // used to promote a post without attaching the user "nobody": "анонімно", // used to promote a post without attaching the user
"Not available": "Не доступне", // username is not available "Not available": "Не доступне", // username is not available
"notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.", "notify_desktop_error": "Twister не може створити виринаюче повідомлення: невідома помилка.",
"notify_desktop_perm_denied": "Twister cannot perform desktop notification: permission denied.\n\nIf you want to get notifications, allow them for %{this_domain} in settings of your browser.", "notify_desktop_perm_denied": "Twister не може створити сповіщення на робочому столі: доступ обмежено.\n\nЯкщо ви бажаєте отримувати сповіщення, дозвольте їх виконання в налаштуваннях браузера для %{this_domain}.",
"notify_desktop_test": "All the twisters gonna twist.\nNow you are welcome too.", "notify_desktop_test": "All the twisters gonna twist.\nNow you are welcome too.",
"notify_desktop_title": "Watch out, it's twister over here!", "notify_desktop_title": "Watch out, it's twister over here!",
"Number of blocks in block chain:": "Кількість блоків у ланцюгу: ", "Number of blocks in block chain:": "Кількість блоків у ланцюгу: ",
"Number of CPUs to use": "Кількість CPUs до використання ", "Number of CPUs to use": "Кількість CPU до використання ",
"Only alphanumeric and underscore allowed.": "Тільки літеро-численні сиволи та нижнє підкреслення дозволені.", "Only alphanumeric and underscore allowed.": "Допустимі тільки латинські символи, числа та нижнє підкреслення.",
"peer address": "адреса піру", "peer address": "адреса піру",
"Private": "Особистий", "Private": "Особистий",
"Profile": "Проіфль", "Profile": "Профіль",
"Postboard": "Стрічка оновлень", "Postboard": "Стрічка оновлень",
"post": "відістати", // verb - button to post a message "post": "надіслати", // verb - button to post a message
"Post to promote:": "Рекламне повідомлення: ", "Post to promote:": "Рекламне повідомлення: ",
"Posts": "Повідомлення", "Posts": "Повідомлення",
"propagating_nickname": "Поширення інформації шо до %{username} у мережі...", "propagating_nickname": "Поширення інформації шо до %{username} у мережі...",
@ -666,38 +679,38 @@ if(preferredLanguage == "uk"){
"search": "пошук", "search": "пошук",
"seconds": "%{smart_count} секунда |||| %{smart_count} секунд", "seconds": "%{smart_count} секунда |||| %{smart_count} секунд",
"send": "відіслати", "send": "відіслати",
"Send post with username": "Відіслати повідомлення з ім’ям ", "Send post with username": "Надіслати повідомлення від",
"Sent Direct Message": "Відіслати особисте повідомлення", "Sent Direct Message": "Надіслати особисте повідомлення",
"Sent Post to @": "Відіслати повідомлення @", "Sent Post to @": "Надіслати повідомлення @",
"Setup account": "Налаштувати акаунт", "Setup account": "Налаштувати акаунт",
"switch_to_network": "Локальний сервер не підєднаний до мережі або \n" + "switch_to_network": "Локальний сервер не підєднаний до мережі або \n" +
"ланцюг блоків не актуальний. Якщо ви залишитесь на цій сторінці\n" + "ланцюг блоків не актуальний. Якщо ви залишитесь на цій сторінці\n" +
"ваші дії можуть не спрацювати.\n" + "ваші дії можуть не спрацювати.\n" +
"Чи бажаєта ви перевірити сторінку зі статусом мережі?", "Чи бажаєте ви перевірити сторінку зі статусом мережі?",
"The File APIs are not fully supported in this browser.": "File APIs не повністью підтримуєтся браузером.", "The File APIs are not fully supported in this browser.": "File APIs не повністю підтримується браузером.",
"time_ago": "%{time} тому", // 5 minutes ago "time_ago": "%{time} тому", // 5 minutes ago
"Time of the last block:": "Час останнього блоку: ", "Time of the last block:": "Час останнього блоку: ",
"Type message here": "Напишіть повідомлення тут", "Type message here": "Напишіть повідомлення тут",
"Unfollow": "Відписатись", "Unfollow": "Відписатись",
"Update": "Оновити", "Update": "Оновити",
"Auto updating": "Auto updating", "Auto updating": "Автоматичне оновлення",
"Updating status...": "Оновлення статусу...", // status of block chain "Updating status...": "Оновлення статусу...", // status of block chain
"user_not_yet_accepted": "Інші піри ще не прийняли цього користувача.\n" + "user_not_yet_accepted": "Інші піри ще не прийняли цього користувача.\n" +
"Нажаль, у цьому стані не можливо зберегти профіль\n" + "Нажаль, у цьому стані не можливо зберегти профіль\n" +
"або послати якісь повідомлення.\n\n" + "або надсилати якісь повідомлення.\n\n" +
"Будь ласка, зачекайте декілька хвилин для продовження.\n\n" + "Будь ласка, зачекайте декілька хвилин для продовження.\n\n" +
"Кнопка 'Зберегти зміни' стане доступною автоматично,\n" + "Кнопка 'Зберегти зміни' стане доступною автоматично,\n" +
"коли цей процес завершится. (Я обіцяю, це останній раз,\n"+ "коли цей процес завершится. (Я обіцяю, це останній раз,\n"+
"коли ви змушені чекати перед використанням twister).\n\n" + "коли ви змушені чекати перед використанням Twister).\n\n" +
"Підказка: тим часом ви можете вибрати аватар!", "Підказка: тим часом ви можете вибрати аватар!",
"users_mentions": "Згадування @%{username}", "users_mentions": "Події @%{username}",
"users_profile": "Профіль %{username}", "users_profile": "Профіль %{username}",
"username_undefined": "Користувач невизначений, потрібен логін.", "username_undefined": "Користувач невизначений, необхідно вказати нік.",
"View": "Дивитись", "View": "Дивитись",
"View All": "Дивитись все", "View All": "Дивитись все",
"Who to Follow": "Кого читати", "Who to Follow": "Кого читати",
"Your message was sent!": "Ваше повідомлення відправлене!", "Your message was sent!": "Ваше повідомлення відправлене!",
"twister login": "Вхід до twister", "twister login": "Вхід до Twister",
"Existing local users": "Вже зареєстровані", "Existing local users": "Вже зареєстровані",
"Or...": "Або...", "Or...": "Або...",
"Create a new user": "Створити нового користувача", "Create a new user": "Створити нового користувача",
@ -713,7 +726,7 @@ if(preferredLanguage == "uk"){
"Mining difficulty:": "Складність майнінгу:", "Mining difficulty:": "Складність майнінгу:",
"Block generation status": "Статус генерації блоків", "Block generation status": "Статус генерації блоків",
"Current hash rate:": "Поточна швидкість хешування:", "Current hash rate:": "Поточна швидкість хешування:",
"Terminate Daemon:": "Зупинити twister:", "Terminate Daemon:": "Зупинити Twister:",
"Exit": "Вихід", "Exit": "Вихід",
"Save Changes": "Зберегти зміни", "Save Changes": "Зберегти зміни",
"Secret key:": "Секретний ключ:", "Secret key:": "Секретний ключ:",
@ -726,201 +739,201 @@ if(preferredLanguage == "uk"){
"You don't have any followers because you are not logged in.": "You don't have any followers because you are not logged in.", "You don't have any followers because you are not logged in.": "You don't have any followers because you are not logged in.",
"No one can mention you because you are not logged in.": "No one can mention you because you are not logged in.", "No one can mention you because you are not logged in.": "No one can mention you because you are not logged in.",
"You don't have any profile because you are not logged in.": "You don't have any profile because you are not logged in.", "You don't have any profile because you are not logged in.": "You don't have any profile because you are not logged in.",
"Options": "Options", "Options": "Опції",
"Switch to Promoted posts": "Switch to Promoted posts", "Switch to Promoted posts": "Рекламні пости",
"Switch to Normal posts": "Switch to Normal posts", "Switch to Normal posts": "Звичайні пости",
"Use language": "Use language", "Use language": "Використати мову",
"Ignore": "Ignore", "Ignore": "Ігнорувати",
"Theme": "Theme", "Theme": "Тема",
"Keys": "Keys", "Keys": "Гарячі клавіші",
"Notifications": "Оповіщення", "Notifications": "Оповіщення",
"Desktop notifications": "Настільні повідомлення", "Desktop notifications": "Настільні повідомлення",
"Sound notifications": "Звукові сповіщення", "Sound notifications": "Звукові сповіщення",
"Volume": "Гучність", "Volume": "Гучність",
"Test": "Випроба", "Test": "Випроба",
"Send key": "Send key", "Send key": "Надсилання повідомлення",
"Posts display": "Posts display", "Posts display": "Відображення постів",
"Post editor": "Post editor", "Post editor": "Редактор посту",
"Inline image preview": "Inline image preview", "Inline image preview": "Контекстний перегляд зображення",
"Display": "Display", "Display": "Відображати",
"Line feeds": "Line feeds", "Line feeds": "Line feeds",
"Supported punctuations:": "Supported punctuations:", "Supported punctuations:": "Supported punctuations:",
"Supported emotions:": "Supported emotions:", "Supported emotions:": "Supported emotions:",
"Supported signs:": "Supported signs:", "Supported signs:": "Підтримувані підписи:",
"Supported fractions:": "Supported fractions:", "Supported fractions:": "Підтримувані фракції:",
"Automatic unicode conversion options": "Automatic unicode conversion options", "Automatic unicode conversion options": "Automatic unicode conversion options",
"Convert punctuations to unicode": "Convert punctuations to unicode", "Convert punctuations to unicode": "Convert punctuations to unicode",
"Convert emotions codes to unicode symbols": "Convert emotions codes to unicode symbols", "Convert emotions codes to unicode symbols": "Конвертувати смайли в символи Unicode",
"Convert common signs to unicode": "Convert common signs to unicode", "Convert common signs to unicode": "Convert common signs to unicode",
"Convert fractions to unicode": "Convert fractions to unicode", "Convert fractions to unicode": "Конвертувати фракції в Unicode",
"Convert all": "Convert all", "Convert all": "Конвертувати усі",
"Auto": "Auto", "Auto": "Автоматично",
"Original": "Original", "Original": "Оригінал",
"none": "none", "none": "немає",
"Custom": "Custom", "Custom": "Вибірково",
"Mentions": "Mentions", "Mentions": "Mentions",
"Use proxy for image preview only": "Use proxy for image preview only", "Use proxy for image preview only": "Використовуати Proxy тільки для попереднього перегляду зображень",
"Use external links behind a proxy": "Use external links behind a proxy", "Use external links behind a proxy": "Use external links behind a proxy",
"There aren't any posts with this hashtag.": "There aren't any posts with this hashtag.", "There aren't any posts with this hashtag.": "Не знайдено публікацій за цим теґом.",
"Split only new post": "Split only new post", "Split only new post": "Розділяти тільки нові публікації",
"Split all": "Split all", "Split all": "Поєднати усі",
"Don't split": "Don't split", "Don't split": "Не розділювати",
"Split long posts": "Split long posts", "Split long posts": "Розділити довгі повідомлення",
"Posts that begin with mention": "Posts that begin with mention", "Posts that begin with mention": "Повідомлення, що починаються з події",
"Show all": "Show all", "Show all": "Відображати усі",
"Show only if I am in": "Show only if I am in", "Show only if I am in": "Show only if I am in",
"Show if it's between users I follow": "Show if it's between users I follow", "Show if it's between users I follow": "Show if it's between users I follow",
"Postboard displays": "Postboard displays", "Postboard displays": "Відображення публікацій",
"RTs those are close to original twist": "RTs those are close to original twist", "RTs those are close to original twist": "RTs those are close to original twist",
"Show if the original is older than": "Show if the original is older than", "Show if the original is older than": "Показувати, якщо оригінал старіше за",
"hour(s)": "hour(s)", "hour(s)": "годин",
"second(s)": "second(s)", "second(s)": "секунд",
"only positive numbers!": "only positive numbers are allowed!", "only positive numbers!": "Дозволені тільки позитивні числа!",
"Language filtering": "Language filtering", "Language filtering": "Фільтрування за мовою",
"By blacklist": "By blacklist", "By blacklist": "За чорним списком",
"By whitelist": "By whitelist", "By whitelist": "За білим списком",
"Comma separated ISO 639-3 language codes": "Comma separated ISO 639-3 language codes", "Comma separated ISO 639-3 language codes": "Розділені комою у мовному кодуванні ISO 639-3",
"Accuracy": "Accuracy", "Accuracy": "Точність",
"Simulation mode": "Simulation mode", "Simulation mode": "Режим симуляції",
"This post is treated by language filter": "This post is %{treated} by language filter.", "This post is treated by language filter": "Цю публікацію %{treated} за мовним фільтром.",
"blocked": "blocked", "blocked": "заблоковано",
"passed": "passed", "passed": "пройшло",
"not analyzed": "not analyzed", "not analyzed": "не проаналізовано",
"Reason: this": "Reason: %{this}", "Reason: this": "Причина: %{this}",
"this doesnt contain that": "%{this} does not contain %{that}", "this doesnt contain that": "%{this} не містить %{that}",
"this is undefined": "%{this} is undefined", "this is undefined": "%{this} невідомо",
"blacklist": "blacklist", "blacklist": "чорний список",
"whitelist": "whitelist", "whitelist": "білий список",
"language of this": "language of this", "language of this": "мова цього",
"its undefined language": "it is undefined language", "its undefined language": "це невідома мова",
"its this, blacklisted": "it is %{this}, blacklisted", "its this, blacklisted": "%{this} занесено до чорного списку",
"its this, whitelisted": "it is %{this}, whitelisted", "its this, whitelisted": "%{this} занесено до білого списку",
"Most possible language: this": "Most possible language: %{this}", "Most possible language: this": "Найбільш вірогідні мови: %{this}",
"Scope of usage": "Scope of usage", "Scope of usage": "Сфера використання",
"Show with every user name": "Show with every user name", "Show with every user name": "Відображати поряд з кожним ніком",
"Show at profile modal only": "Show at profile modal only", "Show at profile modal only": "Відображати тільки в модальному вікні профілю",
"Show if a user follows me": "Show if a user follows me", "Show if a user follows me": "Якщо користувач читає мене",
"follows you": "follows you", "follows you": "стежить за тобою",
"Show conversation": "Show conversation", "Show conversation": "Показати бесіду",
"Mark all as read": "Mark all as read", "Mark all as read": "Позначити усі як прочитані",
"show_more_count": "%{smart_count} more...", "show_more_count": "%{smart_count} більше...",
"hide": "hide", "hide": "сховати",
"Show more in this conversation...": "Show more in this conversation...", "Show more in this conversation...": "Показати більше у цій бесіді...",
"conversation_title": "Conversation of @%{username}", "conversation_title": "Розмова з @%{username}",
"copy_to_clipboard": "Press Ctrl/Cmd+C to copy then Enter to close", "copy_to_clipboard": "Щоб скопіювати, натисніть Ctrl/Cmd+C а потім Enter щоб закрити",
"Normal posts": "Normal posts", "Normal posts": "Звичайні пости",
"Promoted posts": "Promoted posts", "Promoted posts": "Рекламні пости",
"Messages": "Messages", "Messages": "Повідомлення",
"Edit profile": "Edit profile", "Edit profile": "Редагувати профіль",
"Top Trends": "Top Trends", "Top Trends": "Тренди",
"twisted again by": "twisted again by", "twisted again by": "twisted again by",
"undo": "undo", "undo": "відмінити",
"Are you sure you want to exit the daemon?\nThe Twister client will stop working.": "Are you sure you want to exit the daemon?\nThe Twister client will stop working.", "Are you sure you want to exit the daemon?\nThe Twister client will stop working.": "Ви впевнені, що бажаєте зупинити системний демон? \nУ такому разі, клієнт Twister буде зупинено допоки ви не запустите його знову.",
"Daemon exited...": "Daemon exited...", "Daemon exited...": "Системний демон припинив роботу...",
"Secret Key": "Secret Key", "Secret Key": "Секретний ключ",
"Copy to clipboard": "Copy to clipboard", "Copy to clipboard": "Скопіювати до буферу",
"Full name here": "Full name here", "Full name here": "Повне ім’я",
"Describe yourself": "Describe yourself", "Describe yourself": "Розкажи про себе",
"Location": "Location", "Location": "Розташування",
"website": "website", "website": "Вебсайт",
"Tox address": "Tox address", "Tox address": "Адреса Tox",
"Bitmessage address": "Bitmessage address", "Bitmessage address": "Адреса Bitmessage",
"Language": "Language", "Language": "Мова",
"Sound": "Sound", "Sound": "Звук",
"Users": "Users", "Users": "Користувачі",
"Direct Message's copy to self": "Direct Message's copy to self", "Direct Message's copy to self": "Direct Message's copy to self",
}; };
} }
if(preferredLanguage == "zh"){ if(preferredLanguage == "zh-CN"){
polyglot.locale("zh"); polyglot.locale("zh-CN");
wordset = { wordset = {
"Actions ▼": "操作 ▼", "Actions ▼": "操作 ▼",
"Active DHT nodes:": "活动的DHT节点: ", "Active DHT nodes:": "活动的DHT节点: ",
"Add DNS": "添加DNS", "Add DNS": "添加DNS",
"Add peer": "添加节点", "Add peer": "添加节点",
"ajax_error": "Ajax错误: %{error}", // JavaScript error "ajax_error": "AJAX错误:%{error}", // JavaScript error
"All users publicly followed by": "所有用户均被关注", "All users publicly followed by": "公开关注的所有用户,被",
"Available": "可用", // username is available "Available": "可用", // username is available
"Appearance": "外观", "Appearance": "外观",
"Block chain information": "块链信息", "Block chain information": "块链信息",
"Block chain is up-to-date, twister is ready to use!": "块链已经更新,Twister已经可以使用!", "Block chain is up-to-date, twister is ready to use!": "块链已经更新,Twister 已经可以使用!",
"Block generation": "块生成器 ", "Block generation": "块生成器",
"Cancel": "取消", "Cancel": "取消",
"Change user": "切换用户", "Change user": "切换用户",
"Checking...": "检查中...", // checking if username is available "Checking...": "检查中...", // checking if username is available
"Collapse": "Collapse", // smaller view of a post "Collapse": "折叠", // smaller view of a post
"Configure block generation": "配置块生成器", "Configure block generation": "配置块生成器",
"Connections:": "连接数:", // to network "Connections:": "连接数:", // to network
"Connection lost.": "接中断。", "Connection lost.": "接中断。",
"days": "%{smart_count} 天", "days": "%{smart_count} 天",
"Detailed information": "详细信息", "Detailed information": "详细信息",
"DHT network down.": "DHT网络中断。", "DHT network down.": "DHT网络中断。",
"Direct Messages": "即时消息", "Direct Messages": "私信",
"Disable": "关闭", "Disable": "关闭",
"Display mentions to @": "显示@", "Display mentions to @": "显示@",
"Display retransmissions": "显示转发", "Display retransmissions": "显示转发",
"DNS to obtain list of peers:": "获取节点列表的DNS:", "DNS to obtain list of peers:": "用DNS获取节点列表:",
"downloading_block_chain": "下载块链中,请等待下载完成(块链已经落后 %{days} 天)。", "downloading_block_chain": "区块链下载中,请等待下载完成(区块链仍落后 %{days} 天)。",
"download_posts_status": "已下载 %{portion} 推文", // Downloaded 10/30 posts "download_posts_status": "已下载 %{portion} 推文", // Downloaded 10/30 posts
"Enable": "开启", "Enable": "开启",
"error": "错误:%{error}", "error": "错误:%{error}",
"error_connecting_to_daemon": "连接本地Twister守护进程错误", "error_connecting_to_daemon": "连接本地的 Twister 后台进程时出错",
"Error in 'createwalletuser' RPC.": "PRC 'createwalletuser' 错误", "Error in 'createwalletuser' RPC.": "'createwalletuser' RPC 错误",
"Error in 'importprivkey'": "'importprivkey' 错误 RPC: %{rpc}", "Error in 'importprivkey'": "'importprivkey' 错误%{rpc}",
"Error in 'sendnewusertransaction' RPC.": "RPC 'sendnewusertransaction' 错误。", "Error in 'sendnewusertransaction' RPC.": "'sendnewusertransaction' RPC 错误。",
"Expand": "展", // larger view of a post "Expand": "展", // larger view of a post
"Favorite": "收藏", "Favorite": "收藏",
"File APIs not supported in this browser.": "这个浏览器不支持文件APIs", "File APIs not supported in this browser.": "这个浏览器不支持 File API。",
"Follow": "关注", "Follow": "关注",
"Following config": "Following config", "Following config": "关注配置",
"Which way do you want to follow": "Which way do you want to follow", "Which way do you want to follow": "你想以哪种方式关注",
"Followed by": "关注", "Followed by": "关注",
"followed_by": "被 %{username} 关注", "followed_by": "被 %{username} 关注",
"Followers": "粉丝", "Followers": "粉丝",
"Following": "关注", "Following": "关注",
"Following users": "关注的", "Following users": "关注的用户",
"Force connection to peer:": "强制连接到节点:", "Force connection to peer:": "强制连接到节点:",
"General information": "常规信息", "General information": "常规信息",
"Generate blocks (send promoted messages)": "生成块(发送广信息)", "Generate blocks (send promoted messages)": "生成块(发送广信息)",
"Home": "主页", // homepage "Home": "主页", // homepage
"hours": "%{smart_count} hour |||| %{smart_count} 小时", "hours": "%{smart_count} 小时",
"Internal error: lastPostId unknown (following yourself may fix!)": "内部错误:最后推文Id位置(尝试关注你自己进行修复!)", "Internal error: lastPostId unknown (following yourself may fix!)": "内部错误:最后推文ID未知(关注你自己也许能修复!)",
"Known peers:": "已知节点:", "Known peers:": "已知节点:",
"Last block is ahead of your computer time, check your clock.": "最后的块已经慢于你的系统时间,请检查你的系统时间。", "Last block is ahead of your computer time, check your clock.": "最后的区块已经超前于你的系统时间,请检查你的时钟系统。",
"mentions_at": "提 @%{user}", "mentions_at": "提 @%{user}",
"minutes": "%{smart_count} 分钟", "minutes": "%{smart_count} 分钟",
"Must be 16 characters or less.": "必须少于16个字符", // username "Must be 16 characters or less.": "必须少于16个字符", // username
"Network": "网络", "Network": "网络",
"Network config": "网络配置", "Network config": "网络配置",
"Network status": "网络状态", "Network status": "网络状态",
"New direct message...": "新的即时信息...", "New direct message...": "新私信...",
"New Post...": "新推文...", "New Post...": "新推文...",
"You got": "你收到", "You got": "你收到",
"in postboard": "在时间线里", "in postboard": "在时间线里",
"in search result": "在搜索结果里", "in search result": "在搜索结果里",
"in top trends": "在热词趋势里", "in top trends": "在热词趋势里",
"new_posts": "%{smart_count} 新推文", "new_posts": "%{smart_count} 新推文",
"new_mentions": "%{smart_count} 新的提及 |||| %{smart_count} 新的提及", "new_mentions": "%{smart_count} 新的提及",
"new_direct_messages": "%{smart_count} 新私信 |||| %{smart_count} 新私信", "new_direct_messages": "%{smart_count} 新私信",
"nobody": "nobody", // used to promote a post without attaching the user "nobody": "无名", // used to promote a post without attaching the user
"Not available": "用户名不可用", // username is not available "Not available": "用户名不可用", // username is not available
"notify_desktop_error": "Twister 无法发出桌面提醒: 发生未知错误.", "notify_desktop_error": "Twister 无法发出桌面提醒:发生未知错误。",
"notify_desktop_perm_denied": "Twister 无法发出桌面提醒: 权限被拒绝.\n\n如果你想收到提醒, 在你的浏览器设置中允许 %{this_domain} 发出提醒.", "notify_desktop_perm_denied": "Twister 无法发出桌面提醒:权限被拒绝。\n\n如果你想收到提醒,请在你的浏览器设置中允许 %{this_domain} 发出提醒。",
"notify_desktop_test": "我们都用 Twister.\n欢迎你加入.", "notify_desktop_test": "我们都在用 Twister。\n欢迎你的加入。",
"notify_desktop_title": "注意, twister 在这!", "notify_desktop_title": "注意,Twister 在这里!",
"Number of blocks in block chain:": "块链中的块数:", "Number of blocks in block chain:": "块链中的块数:",
"Number of CPUs to use": "使用CPU数目", "Number of CPUs to use": "使用CPU数目",
"Only alphanumeric and underscore allowed.": "只允许字母和下划线", "Only alphanumeric and underscore allowed.": "只允许字母和下划线",
"peer address": "节点地址", "peer address": "节点地址",
"Private": "私", "Private": "私",
"Profile": "个人信息", "Profile": "个人信息",
"Postboard": "信息流", "Postboard": "信息流",
"post": "发送", // verb - button to post a message "post": "发送", // verb - button to post a message
"Post to promote:": "要发布的广告信息:", "Post to promote:": "要发送的推广信息:",
"Posts": "推文", "Posts": "推文",
"propagating_nickname": "Propagating nickname %{username} to the network...", "propagating_nickname": "正在传播昵称 %{username} 到网络中...",
"Public": "公", "Public": "公",
"Refresh": "刷新", "Refresh": "刷新",
"retransmit_this": "转发推文给你的粉丝?", "retransmit_this": "转发推文给你的粉丝?",
"Reply": "回复", "Reply": "回复",
@ -933,114 +946,114 @@ if(preferredLanguage == "zh"){
"seconds": "%{smart_count} 秒", "seconds": "%{smart_count} 秒",
"send": "发送", "send": "发送",
"Send post with username": "发送推文的用户名", "Send post with username": "发送推文的用户名",
"Sent Direct Message": "发送即时消息", "Sent Direct Message": "发送私信",
"Sent Post to @": "发送推文 @", "Sent Post to @": "发送推文 @",
"Setup account": "设置号", "Setup account": "设置号",
"switch_to_network": "本地守护进程没有连接网络或\n" + "switch_to_network": "本地的后台进程没有连接到网络,或者\n" +
"块链已经过时。如果你留在此页\n" + "块链已经过时。如果你留在此页\n" +
"你的操作将不会生效\n" + "你的操作将不会生效\n" +
"你要马上跳转到网络状态页吗?", "你要跳转到网络状态页吗?",
"The File APIs are not fully supported in this browser.": "这个浏览器不能完全支持文件APIs", "The File APIs are not fully supported in this browser.": "这个浏览器不能完全支持 File API。",
"time_ago": "%{time} 之前", // 5 minutes ago "time_ago": "%{time} 之前", // 5 minutes ago
"Time of the last block:": "最新块的时间:", "Time of the last block:": "最新块的时间:",
"Type message here": "输入消息内容", "Type message here": "输入消息内容",
"Unfollow": "取消关注", "Unfollow": "取消关注",
"Update": "更新", "Update": "更新",
"Auto updating": "自动更新", "Auto updating": "自动更新",
"Updating status...": "更新状态中...", // status of block chain "Updating status...": "状态更新中...", // status of block chain
"user_not_yet_accepted": "其他节点还没有接受新用户。\n" + "user_not_yet_accepted": "其他节点还没有接受这个新用户。\n" +
"很抱歉,现在你还不能保存你的个人简介\n" + "很抱歉,现在你还不能保存你的个人简介\n" +
"或发送新的推文。\n\n" + "或发送新的推文。\n\n" +
"请稍等几分钟再试试。\n\n" + "请稍等几分钟再试试。\n\n" +
"当节点接受用户操作完成后\n" + "当相应操作完成后\n" +
"“保存”将会自动转换为可以。(我保证这是\n"+ "“保存更改”按钮将会自动转换为可用。(我保证这是\n"+
"在你使用 Twister 前的最后一次等待。\n\n" + "在你使用 Twister 前的最后一次等待。\n\n" +
"提示:在先选好你的头像! ", "提示:在这时你可以先选好你的头像!",
"users_mentions": "提 @%{username}", "users_mentions": "提 @%{username}",
"users_profile": "%{username} 的简介", "users_profile": "%{username} 的个人简介",
"username_undefined": "用户名未设置,请先登录!", "username_undefined": "用户名未定义,请先登录!",
"View": "查看", "View": "查看",
"View All": "查看全部", "View All": "查看全部",
"Who to Follow": "推荐关注", "Who to Follow": "推荐关注",
"Your message was sent!": "你的信息已发送!", "Your message was sent!": "你的信息已发送!",
"twister login": "登录 Twister", "twister login": "登录 Twister",
"Existing local users": "有本地用户", "Existing local users": "有本地用户",
"Or...": "或...", "Or...": "或...",
"Create a new user": "创建一个新用户", "Create a new user": "创建新用户",
"Login": "登录", "Login": "登录",
"Check availability": "检查是否可用", "Check availability": "检查是否可用",
"Create this nickname": "使用这个昵称", "Create this nickname": "使用这个昵称",
"Type nickname here": "输入你的昵称", "Type nickname here": "输入你的昵称",
"Import secret key": "导入钥", "Import secret key": "导入钥",
"52-characters secret": "52位密钥串", "52-characters secret": "52位私钥字符串",
"With nickname": "With nickname", "With nickname": "昵称",
"Import key": "导入密钥", "Import key": "导入密钥",
"Client Version:": "客户端版本:", "Client Version:": "客户端版本:",
"Mining difficulty:": "挖矿难度:", "Mining difficulty:": "挖矿难度:",
"Block generation status": "块链状态", "Block generation status": "块链生成器状态",
"Current hash rate:": "当前hash速率:", "Current hash rate:": "当前hash速率:",
"Terminate Daemon:": "断开守护进程数:", "Terminate Daemon:": "终止后台进程:",
"Exit": "退出", "Exit": "退出",
"Save Changes": "保存设置", "Save Changes": "保存更改",
"Secret key:": "钥:", "Secret key:": "钥:",
"You have to log in to post messages.": "You have to log in to post messages.", "You have to log in to post messages.": "你必须登录才能发送信息。",
"You have to log in to post replies.": "You have to log in to post replies.", "You have to log in to post replies.": "你必须登录才能发送回复。",
"You have to log in to retransmit messages.": "You have to log in to retransmit messages.", "You have to log in to retransmit messages.": "你必须登录才能转发信息",
"You have to log in to use direct messages.": "You have to log in to use direct messages.", "You have to log in to use direct messages.": "你必须登录才能进行私信。",
"You have to log in to follow users.": "You have to log in to follow users.", "You have to log in to follow users.": "你必须登录才能关注用户。",
"You are not following anyone because you are not logged in.": "You are not following anyone because you are not logged in.", "You are not following anyone because you are not logged in.": "你没有关注任何人,因为你还没登录",
"You don't have any followers because you are not logged in.": "You don't have any followers because you are not logged in.", "You don't have any followers because you are not logged in.": "你没有任何粉丝,因为你还没登录",
"No one can mention you because you are not logged in.": "No one can mention you because you are not logged in.", "No one can mention you because you are not logged in.": "没人能提及你,因为你还没登录",
"You don't have any profile because you are not logged in.": "You don't have any profile because you are not logged in.", "You don't have any profile because you are not logged in.": "你没有任何个人简介,因为你还没登录",
"Options": "Options", "Options": "选项",
"Switch to Promoted posts": "Switch to Promoted posts", "Switch to Promoted posts": "切换到推广发送",
"Switch to Normal posts": "Switch to Normal posts", "Switch to Normal posts": "切换到普通发送",
"Use language": "Use language", "Use language": "界面语言",
"Ignore": "Ignore", "Ignore": "忽略",
"Theme": "Theme", "Theme": "主题",
"Keys": "Keys", "Keys": "按键",
"Notifications": "Notifications", "Notifications": "通知",
"Desktop notifications": "Desktop notifications", "Desktop notifications": "桌面通知",
"Sound notifications": "Sound notifications", "Sound notifications": "声音通知",
"Volume": "Volume", "Volume": "音量",
"Test": "Test", "Test": "测试",
"Send key": "Send key", "Send key": "发送键",
"Posts display": "Posts display", "Posts display": "推文显示",
"Post editor": "Post editor", "Post editor": "信息编辑器",
"Inline image preview": "Inline image preview", "Inline image preview": "内嵌图像预览",
"Display": "Display", "Display": "显示",
"Line feeds": "Line feeds", "Line feeds": "Line feeds",
"Supported punctuations:": "Supported punctuations:", "Supported punctuations:": "支持的标点符号:",
"Supported emotions:": "Supported emotions:", "Supported emotions:": "支持的表情符号:",
"Supported signs:": "Supported signs:", "Supported signs:": "支持的标记符号:",
"Supported fractions:": "Supported fractions:", "Supported fractions:": "支持的分数形式:",
"Automatic unicode conversion options": "Automatic unicode conversion options", "Automatic unicode conversion options": "自动转换 Unicode",
"Convert punctuations to unicode": "Convert punctuations to unicode", "Convert punctuations to unicode": "转换标点符号到 Unicode 形式",
"Convert emotions codes to unicode symbols": "Convert emotions codes to unicode symbols", "Convert emotions codes to unicode symbols": "转换表情码到 Unicode 符号",
"Convert common signs to unicode": "Convert common signs to unicode", "Convert common signs to unicode": "转换常见符号到 Unicode 形式",
"Convert fractions to unicode": "Convert fractions to unicode", "Convert fractions to unicode": "转换分数到 Unicode 形式",
"Convert all": "Convert all", "Convert all": "全部转换",
"Auto": "Auto", "Auto": "自动",
"Original": "Original", "Original": "原版",
"none": "none", "none": "",
"Custom": "Custom", "Custom": "自定义",
"Mentions": "Mentions", "Mentions": "提及",
"Use proxy for image preview only": "Use proxy for image preview only", "Use proxy for image preview only": "只对图像预览使用代理",
"Use external links behind a proxy": "Use external links behind a proxy", "Use external links behind a proxy": "在代理的后方使用外部链接",
"There aren't any posts with this hashtag.": "There aren't any posts with this hashtag.", "There aren't any posts with this hashtag.": "这个话题还没有任何推文呢。",
"Split only new post": "Split only new post", "Split only new post": "只拆分新推文",
"Split all": "Split all", "Split all": "全部拆分",
"Don't split": "Don't split", "Don't split": "不拆分",
"Split long posts": "Split long posts", "Split long posts": "拆分长推文",
"Posts that begin with mention": "Posts that begin with mention", "Posts that begin with mention": "将推文的提及放在开头",
"Show all": "Show all", "Show all": "全部显示",
"Show only if I am in": "Show only if I am in", "Show only if I am in": "只显示如果我在其中",
"Show if it's between users I follow": "Show if it's between users I follow", "Show if it's between users I follow": "显示我关注的用户",
"Postboard displays": "Postboard displays", "Postboard displays": "信息流显示偏好",
"RTs those are close to original twist": "RTs those are close to original twist", "RTs those are close to original twist": "靠近原推文的 RT",
"Show if the original is older than": "Show if the original is older than", "Show if the original is older than": "显示,如果比原件晚",
"hour(s)": "hour(s)", "hour(s)": "小时",
"second(s)": "second(s)", "second(s)": "",
"only positive numbers!": "只允许正数字!", "only positive numbers!": "只允许正数字!",
"Language filtering": "语言过滤", "Language filtering": "语言过滤",
"By blacklist": "用黑名单", "By blacklist": "用黑名单",
@ -1048,53 +1061,70 @@ if(preferredLanguage == "zh"){
"Comma separated ISO 639-3 language codes": "英文逗号分隔的 ISO 639-3 语言代码", "Comma separated ISO 639-3 language codes": "英文逗号分隔的 ISO 639-3 语言代码",
"Accuracy": "严格度", "Accuracy": "严格度",
"Simulation mode": "模拟模式", "Simulation mode": "模拟模式",
"This post is treated by language filter": "这条推文被语言过滤器 %{treated} .", "This post is treated by language filter": "这条推文被语言过滤器 %{treated}",
"blocked": "阻止", "blocked": "阻止",
"passed": "放行", "passed": "放行",
"not analyzed": "未分析", "not analyzed": "未分析",
"Reason: this": "原因: %{this}", "Reason: this": "原因: %{this}",
"this doesnt contain that": "%{this} 不包含 %{that}", "this doesnt contain that": "%{this} 不包含 %{that}",
"this is undefined": "%{this} 未定义", "this is undefined": "%{this} 未定义",
"blacklist": "黑名单", "blacklist": "黑名单",
"whitelist": "白名单", "whitelist": "白名单",
"language of this": "此语言", "language of this": "此语言",
"its undefined language": "它是未识别语言", "its undefined language": "它是未定义的语言",
"its this, blacklisted": "它是 %{this}, 被黑名单", "its this, blacklisted": "它是 %{this},被列在黑名单",
"its this, whitelisted": "它是 %{this}, 被白名单", "its this, whitelisted": "它是 %{this},被列在白名单",
"Most possible language: this": "最可能的语言: %{this}", "Most possible language: this": "最可能的语言%{this}",
"Scope of usage": "使用范围", "Scope of usage": "使用范围",
"Show with every user name": "Show with every user name", "Show with every user name": "显示出每个用户名",
"Show at profile modal only": "Show at profile modal only", "Show at profile modal only": "只显示在个人简介",
"Show if a user follows me": "Show if a user follows me", "Show if a user follows me": "在一名用户关注我时",
"follows you": "follows you", "follows you": "关注你",
"Show conversation": "Show conversation", "Show conversation": "显示对话",
"Mark all as read": "Mark all as read", "Mark all as read": "全部标记已读",
"show_more_count": "%{smart_count} more...", "show_more_count": "还有 %{smart_count} 条...",
"hide": "hide", "hide": "隐藏",
"Show more in this conversation...": "Show more in this conversation...", "Show more in this conversation...": "显示更多此对话的内容...",
"conversation_title": "Conversation of @%{username}", "conversation_title": "@%{username} 的对话",
"copy_to_clipboard": "Press Ctrl/Cmd+C to copy then Enter to close", "copy_to_clipboard": "按 Ctrl/Cmd+C 复制,然后按 Enter 关闭",
"Normal posts": "Normal posts", "Normal posts": "普通推文",
"Promoted posts": "Promoted posts", "Promoted posts": "推广推文",
"Messages": "Messages", "Messages": "消息",
"Edit profile": "Edit profile", "Edit profile": "编辑个人简介",
"Top Trends": "Top Trends", "Top Trends": "热门趋势",
"twisted again by": "twisted again by", "twisted again by": "转推由",
"undo": "undo", "undo": "撤销",
"Are you sure you want to exit the daemon?\nThe Twister client will stop working.": "Are you sure you want to exit the daemon?\nThe Twister client will stop working.", "Are you sure you want to exit the daemon?\nThe Twister client will stop working.": "你确定要退出后台进程?\nTwister 客户端将停止工作。",
"Daemon exited...": "Daemon exited...", "Daemon exited...": "后台进程已退出...",
"Secret Key": "Secret Key", "Secret Key": "私钥",
"Copy to clipboard": "Copy to clipboard", "Copy to clipboard": "复制到剪贴板",
"Full name here": "Full name here", "Full name here": "输入全称",
"Describe yourself": "Describe yourself", "Describe yourself": "介绍你自己",
"Location": "Location", "Location": "位置",
"website": "website", "website": "网站",
"Tox address": "Tox address", "Tox address": "Tox 软件地址",
"Bitmessage address": "Bitmessage address", "Bitmessage address": "比特信地址",
"Language": "Language", "Language": "语言",
"Sound": "Sound", "Sound": "声音",
"Users": "Users", "Users": "用户",
"Direct Message's copy to self": "Direct Message's copy to self", "Direct Message's copy to self": "将私信发一份副本给我",
"Terminate Daemon": "终止后台进程",
"New post": "新推文",
"Search": "搜索",
"Direct Msg": "私信",
"Traffic information": "传输信息",
"DHT Torrents:": "DHT种子:",
"Peers:": "节点:",
"Peer List Size:": "节点列表大小:",
"Active Requests:": "活动请求:",
"Download:": "下载:",
"Upload:": "上传:",
"DHT Download:": "DHT下载:",
"DHT Upload:": "DHT上传:",
"IP Overhead Download:": "IP层开销下载:",
"IP Overhead Upload:": "IP层开销上传:",
"Payload Download:": "有效载荷下载:",
"Payload Upload:": "有效载荷上传:",
}; };
} }
@ -1924,13 +1954,13 @@ if(preferredLanguage == "ru"){
"Detailed information": "Подробная информация", "Detailed information": "Подробная информация",
"DHT network down.": "Недоступна DHT сеть.", "DHT network down.": "Недоступна DHT сеть.",
"Direct Messages": "Личные сообщения", "Direct Messages": "Личные сообщения",
"Disable": "Отключено", "Disable": "Вимкнено",
"Display mentions to @": "Показать ответы для @", "Display mentions to @": "Показать ответы для @",
"Display retransmissions": "Показать репосты", "Display retransmissions": "Показать репосты",
"DNS to obtain list of peers:": "DNS адрес для получения пиров:", "DNS to obtain list of peers:": "DNS адрес для получения пиров:",
"downloading_block_chain": "Загрузка цепочки блоков, пожалуйста подождите, (Цепочка блоков устарела на %{days} дней).", "downloading_block_chain": "Загрузка цепочки блоков, пожалуйста подождите, (Цепочка блоков устарела на %{days} дней).",
"download_posts_status": "Загружено %{portion} постов", // Downloaded 10/30 posts "download_posts_status": "Загружено %{portion} постов", // Downloaded 10/30 posts
"Enable": "Включено", "Enable": "Увімкнено",
"error": "Ошибка: %{error}", "error": "Ошибка: %{error}",
"error_connecting_to_daemon": "Ошибка подключения к локальному демону twisterd.", "error_connecting_to_daemon": "Ошибка подключения к локальному демону twisterd.",
"Error in 'createwalletuser' RPC.": "Ошибка при обращении к RPC - при попытке выполнить 'createwalletuser'.", "Error in 'createwalletuser' RPC.": "Ошибка при обращении к RPC - при попытке выполнить 'createwalletuser'.",
@ -3249,7 +3279,7 @@ if(preferredLanguage == "cs"){
"ajax_error": "Ajax chyba: %{error}", // JavaScript error "ajax_error": "Ajax chyba: %{error}", // JavaScript error
"All users publicly followed by": "Všichni uživatelé, které veřejně sleduje", "All users publicly followed by": "Všichni uživatelé, které veřejně sleduje",
"Available": "Je volná", // username is available "Available": "Je volná", // username is available
"Appearance": "Appearance", "Appearance": "Vzhled",
"Block chain information": "Informace o blockchainu", "Block chain information": "Informace o blockchainu",
"Block chain is up-to-date, twister is ready to use!": "Blockchain je aktuální, twister je připraven k použití!", "Block chain is up-to-date, twister is ready to use!": "Blockchain je aktuální, twister je připraven k použití!",
"Block generation": "Generování bloků ", "Block generation": "Generování bloků ",
@ -3280,8 +3310,8 @@ if(preferredLanguage == "cs"){
"Favorite": "Přidat k oblíbeným", "Favorite": "Přidat k oblíbeným",
"File APIs not supported in this browser.": "Upozornění: váš webový prohlížeč nepodporuje File API.", "File APIs not supported in this browser.": "Upozornění: váš webový prohlížeč nepodporuje File API.",
"Follow": "Sledovat", "Follow": "Sledovat",
"Following config": "Following config", "Following config": "Nastavení sledování",
"Which way do you want to follow": "Which way do you want to follow", "Which way do you want to follow": "Zvolte způsob sledování",
"Followed by": "tohoto uživatele sleduje", "Followed by": "tohoto uživatele sleduje",
"followed_by": "Uživatelé, které sleduje %{username}", "followed_by": "Uživatelé, které sleduje %{username}",
"Followers": "Sledující", "Followers": "Sledující",
@ -3303,19 +3333,19 @@ if(preferredLanguage == "cs"){
"Network status": "Stav sítě", "Network status": "Stav sítě",
"New direct message...": "Nová přímá zpráva...", "New direct message...": "Nová přímá zpráva...",
"New Post...": "Nový příspěvek...", "New Post...": "Nový příspěvek...",
"You got": "You got", "You got": "Máte",
"in postboard": "in postboard", "in postboard": "na nástěnce",
"in search result": "in search result", "in search result": "ve výsledcích hledání",
"in top trends": "in top trends", "in top trends": "v hlavních trendech",
"new_posts": "%{smart_count} nový příspěvek |||| %{smart_count} nové příspěvky |||| %{smart_count} nových příspěvků", "new_posts": "%{smart_count} nový příspěvek |||| %{smart_count} nové příspěvky |||| %{smart_count} nových příspěvků",
"new_mentions": "%{smart_count} new mention |||| %{smart_count} new mentions", "new_mentions": "%{smart_count} novou zmínku |||| %{smart_count} nové zmínky |||| %{smart_count} nových zmínek",
"new_direct_messages": "%{smart_count} new direct message |||| %{smart_count} new direct messages", "new_direct_messages": "%{smart_count} novou přímou zprávu |||| %{smart_count} nové přímé zprávy |||| %{smart_count} nových přímých zpráv",
"nobody": "nikdo", // used to promote a post without attaching the user "nobody": "nikdo", // used to promote a post without attaching the user
"Not available": "Tuto přezdívku již někdo používá", // username is not available "Not available": "Tuto přezdívku již někdo používá", // username is not available
"notify_desktop_error": "Twister cannot perform desktop notification: unknown error occured.", "notify_desktop_error": "Twisteru se nepodařilo zobrazit upozornění na ploše: došlo k neznámé chybě.",
"notify_desktop_perm_denied": "Twister cannot perform desktop notification: permission denied.\n\nIf you want to get notifications, allow them for %{this_domain} in settings of your browser.", "notify_desktop_perm_denied": "Twisteru se nepodařilo zobrazit upozornění na ploše: přístup byl odepřen.\n\nPokud chcete používat upozornění na ploše, povolte je pro %{this_domain} v nastavení vašeho prohlížeče.",
"notify_desktop_test": "All the twisters gonna twist.\nNow you are welcome too.", "notify_desktop_test": "Twister to umí pořádně roztočit.\nKaždý je tu vítán.",
"notify_desktop_title": "Watch out, it's twister over here!", "notify_desktop_title": "Twister",
"Number of blocks in block chain:": "Počet bloků v blockchainu: ", "Number of blocks in block chain:": "Počet bloků v blockchainu: ",
"Number of CPUs to use": "Kolik jader procesoru použít? ", "Number of CPUs to use": "Kolik jader procesoru použít? ",
"Only alphanumeric and underscore allowed.": "Povolena jsou jen písmena, čísla a podtržítko.", "Only alphanumeric and underscore allowed.": "Povolena jsou jen písmena, čísla a podtržítko.",
@ -3353,7 +3383,7 @@ if(preferredLanguage == "cs"){
"Type message here": "Sem napište příspěvek", "Type message here": "Sem napište příspěvek",
"Unfollow": "Přestat sledovat", "Unfollow": "Přestat sledovat",
"Update": "Aktualizovat", "Update": "Aktualizovat",
"Auto updating": "Auto updating", "Auto updating": "Automatická aktualizace",
"Updating status...": "Aktualizuji stav...", // status of block chain "Updating status...": "Aktualizuji stav...", // status of block chain
"user_not_yet_accepted": "Ostatní uzly ještě nepřijaly tohoto nového uživatele.\n" + "user_not_yet_accepted": "Ostatní uzly ještě nepřijaly tohoto nového uživatele.\n" +
"Proto zatím není možné uložit profil nebo vkládat příspěvky.\n" + "Proto zatím není možné uložit profil nebo vkládat příspěvky.\n" +
@ -3409,7 +3439,7 @@ if(preferredLanguage == "cs"){
"Desktop notifications": "Upozornění na ploše", "Desktop notifications": "Upozornění na ploše",
"Sound notifications": "Zvuková upozornění", "Sound notifications": "Zvuková upozornění",
"Volume": "Hlasitost", "Volume": "Hlasitost",
"Test": "Pokus", "Test": "Zkouška",
"Send key": "Klávesa pro odeslání", "Send key": "Klávesa pro odeslání",
"Posts display": "Zobrazení příspěvků", "Posts display": "Zobrazení příspěvků",
"Post editor": "Editor příspěvků", "Post editor": "Editor příspěvků",
@ -3446,29 +3476,29 @@ if(preferredLanguage == "cs"){
"RTs those are close to original twist": "Přeposlání blízká původnímu příspěvku", "RTs those are close to original twist": "Přeposlání blízká původnímu příspěvku",
"Show if the original is older than": "Ukázat pokud je už originál starší než", "Show if the original is older than": "Ukázat pokud je už originál starší než",
"hour(s)": "hodin", "hour(s)": "hodin",
"second(s)": "vteřinou(ami)", "second(s)": "vteřin",
"only positive numbers!": "povolena jsou jen čísla!", "only positive numbers!": "povolena jsou jen kladná čísla!",
"Language filtering": "Language filtering", "Language filtering": "Filtrování jazyků",
"By blacklist": "By blacklist", "By blacklist": "Černá listina",
"By whitelist": "By whitelist", "By whitelist": "Bílá listina",
"Comma separated ISO 639-3 language codes": "Comma separated ISO 639-3 language codes", "Comma separated ISO 639-3 language codes": "Kódy jazyků ve formátu ISO 639-3, oddělené čárkami",
"Accuracy": "Accuracy", "Accuracy": "Přesnost",
"Simulation mode": "Simulation mode", "Simulation mode": "Režim simulace",
"This post is treated by language filter": "This post is %{treated} by language filter.", "This post is treated by language filter": "Tento příspěvek %{treated} jazykovým filtrem.",
"blocked": "blocked", "blocked": "byl zablokován",
"passed": "passed", "passed": "prošel",
"not analyzed": "not analyzed", "not analyzed": "nebyl analyzován",
"Reason: this": "Reason: %{this}", "Reason: this": "Důvod: %{this}",
"this doesnt contain that": "%{this} does not contain %{that}", "this doesnt contain that": "%{this} neobsahuje %{that}",
"this is undefined": "%{this} is undefined", "this is undefined": "%{this} není definována",
"blacklist": "blacklist", "blacklist": "černá listina",
"whitelist": "whitelist", "whitelist": "bílá listina",
"language of this": "language of this", "language of this": "tento jazyk",
"its undefined language": "it is undefined language", "its undefined language": "jazyk nelze určit",
"its this, blacklisted": "it is %{this}, blacklisted", "its this, blacklisted": "jazyk %{this} je na černé listině",
"its this, whitelisted": "it is %{this}, whitelisted", "its this, whitelisted": "jazyk %{this} je na bílé listině",
"Most possible language: this": "Most possible language: %{this}", "Most possible language: this": "Nejpravděpodobnější jazyk: %{this}",
"Scope of usage": "Scope of usage", "Scope of usage": "Rozsah použití",
"Show with every user name": "Ukázat u každé přezdívky", "Show with every user name": "Ukázat u každé přezdívky",
"Show at profile modal only": "Ukázat jen v okně profilu", "Show at profile modal only": "Ukázat jen v okně profilu",
"Show if a user follows me": "Ukazovat, zda mně uživatel sleduje", "Show if a user follows me": "Ukazovat, zda mně uživatel sleduje",
@ -3501,6 +3531,22 @@ if(preferredLanguage == "cs"){
"Sound": "Zvuky", "Sound": "Zvuky",
"Users": "Uživatelé", "Users": "Uživatelé",
"Direct Message's copy to self": "Posílat kopie přímých zpráv sám sobě", "Direct Message's copy to self": "Posílat kopie přímých zpráv sám sobě",
"New post": "Nový příspěvek",
"Search": "Hledat",
"Direct Msg": "Přímá zpráva",
"Traffic information": "Informace o provozu na síti",
"DHT Torrents:": "DHT Torrenty:",
"Peers:": "Uzly:",
"Peer List Size:": "Velikost seznamu uzlů:",
"Active Requests:": "Aktivní požadavky:",
"Download:": "Stahování:",
"Upload:": "Odesílání:",
"DHT Download:": "DHT - stahování:",
"DHT Upload:": "DHT - odesílání:",
"IP Overhead Download:": "IP Overhead - stahování:",
"IP Overhead Upload:": "IP Overhead - odesílání:",
"Payload Download:": "Data aplikace - stahování:",
"Payload Upload:": "Data aplikace - odesílání:",
}; };
} }
@ -3524,7 +3570,7 @@ var fixedLabels = [
"button", "button",
".postboard-news", ".postboard-news",
".post-area-new textarea", ".post-area-new textarea",
".refresh-users, .view-all-users", ".refresh-toptrends, .refresh-users, .view-all-users",
".who-to-follow h3", ".who-to-follow h3",
".userMenu-search-field", ".userMenu-search-field",
"a.dropdown-menu-item, a.direct-messages", "a.dropdown-menu-item, a.direct-messages",

80
js/jQueryPlugins.js

@ -12,3 +12,83 @@
return $(this); return $(this);
} }
})(jQuery); })(jQuery);
(function($) {
$.fn.caret = function(pos) {
var target = this[0];
var isContentEditable = target.contentEditable === 'true';
//get
if (arguments.length == 0) {
//HTML5
if (window.getSelection) {
//contenteditable
if (isContentEditable) {
target.focus();
var range1 = window.getSelection().getRangeAt(0),
range2 = range1.cloneRange();
range2.selectNodeContents(target);
range2.setEnd(range1.endContainer, range1.endOffset);
return range2.toString().length;
}
//textarea
return target.selectionStart;
}
//IE<9
if (document.selection) {
target.focus();
//contenteditable
if (isContentEditable) {
var range1 = document.selection.createRange(),
range2 = document.body.createTextRange();
range2.moveToElementText(target);
range2.setEndPoint('EndToEnd', range1);
return range2.text.length;
}
//textarea
var pos = 0,
range = target.createTextRange(),
range2 = document.selection.createRange().duplicate(),
bookmark = range2.getBookmark();
range.moveToBookmark(bookmark);
while (range.moveStart('character', -1) !== 0) pos++;
return pos;
}
// Addition for jsdom support
if (target.selectionStart)
return target.selectionStart;
//not supported
return 0;
}
//set
if (pos == -1)
pos = this[isContentEditable? 'text' : 'val']().length;
//HTML5
if (window.getSelection) {
//contenteditable
if (isContentEditable) {
target.focus();
window.getSelection().collapse(target.firstChild, pos);
}
//textarea
else
target.setSelectionRange(pos, pos);
}
//IE<9
else if (document.body.createTextRange) {
if (isContentEditable) {
var range = document.body.createTextRange();
range.moveToElementText(target);
range.moveStart('character', pos);
range.collapse(true);
range.select();
} else {
var range = target.createTextRange();
range.move('character', pos);
range.select();
}
}
if (!isContentEditable)
target.focus();
return pos;
}
})(jQuery);

303
js/options.js

@ -21,7 +21,7 @@ var TwisterOptions = function()
this.soundNotifOptions = function() { this.soundNotifOptions = function() {
$('#notifyForm select').each(function() { $('#notifyForm select').each(function() {
this.value = $.Options.getOption(this.id, "false"); this.value = $.Options.getOption(this.id, 'false');
}); });
var player = $('#player'); var player = $('#player');
@ -46,7 +46,7 @@ var TwisterOptions = function()
this.volumeControl = function() { this.volumeControl = function() {
var playerVol = $('#playerVol'); var playerVol = $('#playerVol');
playerVol[0].value = $.Options.getOption(playerVol[0].id, 1); playerVol[0].value = this.getOption(playerVol[0].id, 1);
$('.volValue').text((playerVol[0].value * 100).toFixed()); $('.volValue').text((playerVol[0].value * 100).toFixed());
playerVol.on('change', function() { playerVol.on('change', function() {
@ -57,8 +57,8 @@ var TwisterOptions = function()
} }
this.DMsNotif = function() { this.DMsNotif = function() {
var sndDM = $.Options.getOption('sndDM', "false"); var sndDM = this.getOption('sndDM', 'false');
if( sndDM == "false") return; if ( sndDM === 'false') return;
var player = $('#player'); var player = $('#player');
$('#player').empty(); $('#player').empty();
@ -69,13 +69,13 @@ var TwisterOptions = function()
player.attr('type', 'audio/ogg'); player.attr('type', 'audio/ogg');
player.attr('src', 'sound/'+sndDM+'.ogg'); player.attr('src', 'sound/'+sndDM+'.ogg');
} }
player[0].volume = $.Options.getOption('playerVol',1); player[0].volume = this.getOption('playerVol',1);
player[0].play(); player[0].play();
} }
this.mensNotif = function() { this.mensNotif = function() {
var sndMention = $.Options.getOption('sndMention', "false"); var sndMention = this.getOption('sndMention', 'false');
if(sndMention == "false") return; if (sndMention === 'false') return;
var player = $('#playerSec'); var player = $('#playerSec');
$('#playerSec').empty(); $('#playerSec').empty();
@ -86,21 +86,20 @@ var TwisterOptions = function()
player.attr('type', 'audio/ogg'); player.attr('type', 'audio/ogg');
player.attr('src', 'sound/'+sndMention+'.ogg'); player.attr('src', 'sound/'+sndMention+'.ogg');
} }
player[0].volume = $.Options.getOption('playerVol',1); player[0].volume = this.getOption('playerVol',1);
player[0].play(); player[0].play();
} }
this.getShowDesktopNotifPostsOpt = function() { this.getShowDesktopNotifPostsOpt = function() {
return $.Options.getOption('showDesktopNotifPosts','enable'); return this.getOption('showDesktopNotifPosts', 'enable');
} }
this.setShowDesktopNotifPostsOpt = function () { this.setShowDesktopNotifPostsOpt = function () {
function showDesktopNotifPostsDesc() { function showDesktopNotifPostsDesc() {
if ($.Options.getShowDesktopNotifPostsOpt() === 'enable') { if ($.Options.getShowDesktopNotifPostsOpt() === 'enable')
$('#showDesktopNotifPostsDesc')[0].style.display= 'inline'; $('#showDesktopNotifPostsDesc').css('display', 'inline');
} else { else
$('#showDesktopNotifPostsDesc')[0].style.display= 'none'; $('#showDesktopNotifPostsDesc').css('display', 'none');
}
} }
$('#showDesktopNotifPosts').val( this.getShowDesktopNotifPostsOpt() ); $('#showDesktopNotifPosts').val( this.getShowDesktopNotifPostsOpt() );
showDesktopNotifPostsDesc(); showDesktopNotifPostsDesc();
@ -111,26 +110,24 @@ var TwisterOptions = function()
} }
this.getShowDesktopNotifPostsTimerOpt = function () { this.getShowDesktopNotifPostsTimerOpt = function () {
return parseInt($.Options.getOption('showDesktopNotifPostsTimer', '6')); return parseInt(this.getOption('showDesktopNotifPostsTimer', '6'));
} }
this.setShowDesktopNotifPostsTimerOpt = function () { this.setShowDesktopNotifPostsTimerOpt = function () {
$('#showDesktopNotifPostsTimer')[0].value = this.getShowDesktopNotifPostsTimerOpt().toString(); $('#showDesktopNotifPostsTimer').val( this.getShowDesktopNotifPostsTimerOpt().toString() );
$('#showDesktopNotifPostsTimer').on('keyup', function () { setElemValNumeric(this, polyglot.t('second(s)')); }); $('#showDesktopNotifPostsTimer').on('keyup', function () { setElemValNumeric(this, polyglot.t('second(s)')); });
} }
this.getShowDesktopNotifPostsModalOpt = function() { this.getShowDesktopNotifPostsModalOpt = function() {
return $.Options.getOption('showDesktopNotifPostsModal','enable'); return this.getOption('showDesktopNotifPostsModal', 'enable');
} }
this.setShowDesktopNotifPostsModalOpt = function () { this.setShowDesktopNotifPostsModalOpt = function () {
function showDesktopNotifPostsModalDesc() { function showDesktopNotifPostsModalDesc() {
if ($.Options.getShowDesktopNotifPostsModalOpt() === 'enable') { if ($.Options.getShowDesktopNotifPostsModalOpt() === 'enable')
$('#showDesktopNotifPostsModalDesc')[0].style.display= 'inline'; $('#showDesktopNotifPostsModalDesc').css('display', 'inline');
} else { else
$('#showDesktopNotifPostsModalDesc')[0].style.display= 'none'; $('#showDesktopNotifPostsModalDesc').css('display', 'none');
}
} }
$('#showDesktopNotifPostsModal').val( this.getShowDesktopNotifPostsModalOpt() ); $('#showDesktopNotifPostsModal').val( this.getShowDesktopNotifPostsModalOpt() );
showDesktopNotifPostsModalDesc(); showDesktopNotifPostsModalDesc();
@ -141,26 +138,24 @@ var TwisterOptions = function()
} }
this.getShowDesktopNotifPostsModalTimerOpt = function () { this.getShowDesktopNotifPostsModalTimerOpt = function () {
return parseInt($.Options.getOption('showDesktopNotifPostsModalTimer', '6')); return parseInt(this.getOption('showDesktopNotifPostsModalTimer', '6'));
} }
this.setShowDesktopNotifPostsModalTimerOpt = function () { this.setShowDesktopNotifPostsModalTimerOpt = function () {
$('#showDesktopNotifPostsModalTimer')[0].value = this.getShowDesktopNotifPostsModalTimerOpt().toString(); $('#showDesktopNotifPostsModalTimer').val( this.getShowDesktopNotifPostsModalTimerOpt().toString() );
$('#showDesktopNotifPostsModalTimer').on('keyup', function () { setElemValNumeric(this, polyglot.t('second(s)')); }); $('#showDesktopNotifPostsModalTimer').on('keyup', function () { setElemValNumeric(this, polyglot.t('second(s)')); });
} }
this.getShowDesktopNotifMentionsOpt = function() { this.getShowDesktopNotifMentionsOpt = function() {
return $.Options.getOption('showDesktopNotifMentions','enable'); return this.getOption('showDesktopNotifMentions', 'enable');
} }
this.setShowDesktopNotifMentionsOpt = function () { this.setShowDesktopNotifMentionsOpt = function () {
function showDesktopNotifMentionsDesc() { function showDesktopNotifMentionsDesc() {
if ($.Options.getShowDesktopNotifMentionsOpt() === 'enable') { if ($.Options.getShowDesktopNotifMentionsOpt() === 'enable')
$('#showDesktopNotifMentionsDesc')[0].style.display= 'inline'; $('#showDesktopNotifMentionsDesc').css('display', 'inline');
} else { else
$('#showDesktopNotifMentionsDesc')[0].style.display= 'none'; $('#showDesktopNotifMentionsDesc').css('display', 'none');
}
} }
$('#showDesktopNotifMentions').val( this.getShowDesktopNotifMentionsOpt() ); $('#showDesktopNotifMentions').val( this.getShowDesktopNotifMentionsOpt() );
showDesktopNotifMentionsDesc(); showDesktopNotifMentionsDesc();
@ -171,26 +166,24 @@ var TwisterOptions = function()
} }
this.getShowDesktopNotifMentionsTimerOpt = function () { this.getShowDesktopNotifMentionsTimerOpt = function () {
return parseInt($.Options.getOption('showDesktopNotifMentionsTimer', '60')); return parseInt(this.getOption('showDesktopNotifMentionsTimer', '60'));
} }
this.setShowDesktopNotifMentionsTimerOpt = function () { this.setShowDesktopNotifMentionsTimerOpt = function () {
$('#showDesktopNotifMentionsTimer')[0].value = this.getShowDesktopNotifMentionsTimerOpt().toString(); $('#showDesktopNotifMentionsTimer').val( this.getShowDesktopNotifMentionsTimerOpt().toString() );
$('#showDesktopNotifMentionsTimer').on('keyup', function () {setElemValNumeric(this, polyglot.t('second(s)'));}); $('#showDesktopNotifMentionsTimer').on('keyup', function () {setElemValNumeric(this, polyglot.t('second(s)'));});
} }
this.getShowDesktopNotifDMsOpt = function() { this.getShowDesktopNotifDMsOpt = function() {
return $.Options.getOption('showDesktopNotifDMs','enable'); return this.getOption('showDesktopNotifDMs', 'enable');
} }
this.setShowDesktopNotifDMsOpt = function () { this.setShowDesktopNotifDMsOpt = function () {
function showDesktopNotifDMsDesc() { function showDesktopNotifDMsDesc() {
if ($.Options.getShowDesktopNotifDMsOpt() === 'enable') { if ($.Options.getShowDesktopNotifDMsOpt() === 'enable')
$('#showDesktopNotifDMsDesc')[0].style.display= 'inline'; $('#showDesktopNotifDMsDesc').css('display', 'inline');
} else { else
$('#showDesktopNotifDMsDesc')[0].style.display= 'none'; $('#showDesktopNotifDMsDesc').css('display', 'none');
}
} }
$('#showDesktopNotifDMs').val( this.getShowDesktopNotifDMsOpt() ); $('#showDesktopNotifDMs').val( this.getShowDesktopNotifDMsOpt() );
showDesktopNotifDMsDesc(); showDesktopNotifDMsDesc();
@ -201,12 +194,11 @@ var TwisterOptions = function()
} }
this.getShowDesktopNotifDMsTimerOpt = function () { this.getShowDesktopNotifDMsTimerOpt = function () {
return parseInt($.Options.getOption('showDesktopNotifDMsTimer', '60')); return parseInt(this.getOption('showDesktopNotifDMsTimer', '60'));
} }
this.setShowDesktopNotifDMsTimerOpt = function () { this.setShowDesktopNotifDMsTimerOpt = function () {
$('#showDesktopNotifDMsTimer')[0].value = this.getShowDesktopNotifDMsTimerOpt().toString(); $('#showDesktopNotifDMsTimer').val( this.getShowDesktopNotifDMsTimerOpt().toString() );
$('#showDesktopNotifDMsTimer').on('keyup', function () { setElemValNumeric(this, polyglot.t('second(s)')); }); $('#showDesktopNotifDMsTimer').on('keyup', function () { setElemValNumeric(this, polyglot.t('second(s)')); });
} }
@ -216,29 +208,29 @@ var TwisterOptions = function()
}) })
} }
this.keysSendDefault = "ctrlenter"; this.keysSendDefault = 'ctrlenter';
this.keysSend = function() { this.keysSend = function() {
$('#keysOpt select')[0].value = $.Options.getOption('keysSend',this.keysSendDefault); $('#keysOpt select').val( this.getOption('keysSend',this.keysSendDefault) );
$('#keysOpt select').on('change', function() { $.Options.setOption(this.id, this.value); });
$('#keysOpt select').on('change', function(){
$.Options.setOption(this.id, this.value);
})
} }
this.keyEnterToSend = function() { this.keyEnterToSend = function() {
return $.Options.getOption('keysSend',this.keysSendDefault) == "enter"; return this.getOption('keysSend', this.keysSendDefault) === 'enter';
} }
this.setLang = function() { this.setLang = function() {
$('#language').val($.Options.getOption('locLang','auto')) $('#language').val( this.getOption('locLang', 'auto') );
$('#language').on('change', function() { $('#language').on('change', function() {
$.Options.setOption('locLang', $(this).val()); $.Options.setOption('locLang', $(this).val());
if($(this).val() != 'auto') {
twisterRpc("setpreferredspamlang", [$(this).val()]);
}
location.reload(); location.reload();
}) })
} }
this.getTheme = function() { this.getTheme = function() {
return $.Options.getOption('theme','original'); return this.getOption('theme', 'original');
} }
this.setTheme = function() { this.setTheme = function() {
@ -250,109 +242,90 @@ var TwisterOptions = function()
} }
this.getLineFeedsOpt = function() { this.getLineFeedsOpt = function() {
return $.Options.getOption('displayLineFeeds',"disable"); return this.getOption('displayLineFeeds', 'disable');
} }
this.setLineFeedsOpt = function() { this.setLineFeedsOpt = function() {
$('#lineFeedsOpt select')[0].value = this.getLineFeedsOpt(); $('#lineFeedsOpt select').val( this.getLineFeedsOpt() );
$('#lineFeedsOpt select').on('change', function() { $.Options.setOption(this.id, this.value); });
$('#lineFeedsOpt select').on('change', function(){
$.Options.setOption(this.id, this.value);
})
} }
this.getShowPreviewOpt = function() { this.getShowPreviewOpt = function() {
return $.Options.getOption('displayPreview',"disable"); return this.getOption('displayPreview', 'disable');
} }
this.setShowPreviewOpt = function () { this.setShowPreviewOpt = function () {
$('#showPreviewOpt select')[0].value = this.getShowPreviewOpt(); $('#showPreviewOpt select').val( this.getShowPreviewOpt() );
$('#showPreviewOpt select').on('change', function() { $.Options.setOption(this.id, this.value); });
$('#showPreviewOpt select').on('change', function(){
$.Options.setOption(this.id, this.value);
});
} }
this.getUnicodeConversionOpt = function () { this.getUnicodeConversionOpt = function () {
return $.Options.getOption('unicodeConversion', "disable"); return this.getOption('unicodeConversion', 'disable');
} }
this.setUnicodeConversionOpt = function () { this.setUnicodeConversionOpt = function () {
$("#unicodeConversion")[0].value = this.getUnicodeConversionOpt(); $('#unicodeConversion').val( this.getUnicodeConversionOpt() );
if (this.getUnicodeConversionOpt() === "custom") if (this.getUnicodeConversionOpt() === 'custom')
$("#unicodeConversionOpt .suboptions")[0].style.height = "230px"; $('#unicodeConversionOpt .suboptions').css('height', 'auto');
$("#unicodeConversion").on('change', function () { $('#unicodeConversion').on('change', function () {
$.Options.setOption(this.id, this.value); $.Options.setOption(this.id, this.value);
if (this.value === "custom") if (this.value === 'custom')
$("#unicodeConversionOpt .suboptions")[0].style.height = "230px"; $('#unicodeConversionOpt .suboptions').css('height', 'auto');
else else
$("#unicodeConversionOpt .suboptions")[0].style.height = "0px"; $('#unicodeConversionOpt .suboptions').css('height', '0px');
}); });
} }
this.getConvertPunctuationsOpt = function() { this.getConvertPunctuationsOpt = function() {
return $.Options.getOption('convertPunctuationsOpt', false); return this.getOption('convertPunctuationsOpt', false);
} }
this.setConvertPunctuationsOpt = function () { this.setConvertPunctuationsOpt = function () {
$('#convertPunctuationsOpt')[0].checked = this.getConvertPunctuationsOpt(); $('#convertPunctuationsOpt').prop('checked', this.getConvertPunctuationsOpt());
$('#convertPunctuationsOpt').on('change', function() { $.Options.setOption(this.id, this.checked); });
$('#convertPunctuationsOpt').on('change', function(){
$.Options.setOption(this.id, this.checked);
});
} }
this.getConvertEmotionsOpt = function() { this.getConvertEmotionsOpt = function() {
return $.Options.getOption('convertEmotionsOpt', false); return this.getOption('convertEmotionsOpt', false);
} }
this.setConvertEmotionsOpt = function () { this.setConvertEmotionsOpt = function () {
$('#convertEmotionsOpt')[0].checked = this.getConvertEmotionsOpt(); $('#convertEmotionsOpt').prop('checked', this.getConvertEmotionsOpt());
$('#convertEmotionsOpt').on('change', function() { $.Options.setOption(this.id, this.checked); });
$('#convertEmotionsOpt').on('change', function(){
$.Options.setOption(this.id, this.checked);
});
} }
this.getConvertSignsOpt = function() { this.getConvertSignsOpt = function() {
return $.Options.getOption('convertSignsOpt', false); return this.getOption('convertSignsOpt', false);
} }
this.setConvertSignsOpt = function () { this.setConvertSignsOpt = function () {
$('#convertSignsOpt')[0].checked = this.getConvertSignsOpt(); $('#convertSignsOpt').prop('checked', this.getConvertSignsOpt());
$('#convertSignsOpt').on('change', function() { $.Options.setOption(this.id, this.checked); });
$('#convertSignsOpt').on('change', function(){
$.Options.setOption(this.id, this.checked);
});
} }
this.getConvertFractionsOpt = function() { this.getConvertFractionsOpt = function() {
return $.Options.getOption('convertFractionsOpt', false); return this.getOption('convertFractionsOpt', false);
} }
this.setConvertFractionsOpt = function () { this.setConvertFractionsOpt = function () {
$('#convertFractionsOpt')[0].checked = this.getConvertFractionsOpt(); $('#convertFractionsOpt').prop('checked', this.getConvertFractionsOpt());
$('#convertFractionsOpt').on('change', function() { $.Options.setOption(this.id, this.checked); });
$('#convertFractionsOpt').on('change', function(){
$.Options.setOption(this.id, this.checked);
});
} }
this.getUseProxyOpt = function () { this.getUseProxyOpt = function () {
return $.Options.getOption('useProxy', 'disable'); return this.getOption('useProxy', 'disable');
} }
this.setUseProxyOpt = function () { this.setUseProxyOpt = function () {
$('#useProxy')[0].value = this.getUseProxyOpt(); $('#useProxy').val( this.getUseProxyOpt() );
if (this.getUseProxyOpt() === 'disable') if (this.getUseProxyOpt() === 'disable')
$('#useProxyForImgOnly').attr('disabled', 'disabled'); $('#useProxyForImgOnly').attr('disabled', 'disabled');
$('#useProxy').on('change', function () { $('#useProxy').on('change', function () {
$.Options.setOption(this.id, this.value); $.Options.setOption(this.id, this.value);
if (this.value === 'disable') if (this.value === 'disable')
$('#useProxyForImgOnly').attr('disabled', 'disabled'); $('#useProxyForImgOnly').attr('disabled', 'disabled');
else else
@ -361,14 +334,30 @@ var TwisterOptions = function()
} }
this.getUseProxyForImgOnlyOpt = function () { this.getUseProxyForImgOnlyOpt = function () {
return $.Options.getOption('useProxyForImgOnly', false); return this.getOption('useProxyForImgOnly', false);
} }
this.setUseProxyForImgOnlyOpt = function () { this.setUseProxyForImgOnlyOpt = function () {
$('#useProxyForImgOnly')[0].checked = this.getUseProxyForImgOnlyOpt(); $('#useProxyForImgOnly').prop('checked', this.getUseProxyForImgOnlyOpt());
$('#useProxyForImgOnly').on('change', function () { $.Options.setOption(this.id, this.checked); });
}
$('#useProxyForImgOnly').on('change', function () { this.getTopTrendsOpt = function() {
$.Options.setOption(this.id, this.checked); return this.getOption('TopTrends', 'enable');
}
this.setTopTrendsOpt = function () {
function TopTrendsCfg() {
if ($.Options.getTopTrendsOpt() === 'enable')
$('#TopTrendsCont').show();
else
$('#TopTrendsCont').hide();
}
$('#TopTrends').val( this.getTopTrendsOpt() );
TopTrendsCfg();
$('#TopTrends').on('change', function() {
$.Options.setOption(this.id, this.value);
TopTrendsCfg();
}); });
} }
@ -378,11 +367,10 @@ var TwisterOptions = function()
this.setTopTrendsAutoUpdateOpt = function () { this.setTopTrendsAutoUpdateOpt = function () {
function TopTrendsAutoUpdateCfg() { function TopTrendsAutoUpdateCfg() {
if ($.Options.getTopTrendsAutoUpdateOpt() === 'enable') { if ($.Options.getTopTrendsAutoUpdateOpt() === 'enable')
$('#TopTrendsAutoUpdateOpt')[0].style.display= 'inline'; $('#TopTrendsAutoUpdateOpt').css('display', 'inline');
} else { else
$('#TopTrendsAutoUpdateOpt')[0].style.display= 'none'; $('#TopTrendsAutoUpdateOpt').css('display', 'none');
}
} }
$('#TopTrendsAutoUpdate').val( this.getTopTrendsAutoUpdateOpt() ); $('#TopTrendsAutoUpdate').val( this.getTopTrendsAutoUpdateOpt() );
TopTrendsAutoUpdateCfg(); TopTrendsAutoUpdateCfg();
@ -397,84 +385,75 @@ var TwisterOptions = function()
} }
this.setTopTrendsAutoUpdateTimerOpt = function () { this.setTopTrendsAutoUpdateTimerOpt = function () {
$('#TopTrendsAutoUpdateTimer')[0].value = this.getTopTrendsAutoUpdateTimerOpt().toString(); $('#TopTrendsAutoUpdateTimer').val( this.getTopTrendsAutoUpdateTimerOpt().toString() );
$('#TopTrendsAutoUpdateTimer').on('keyup', function () { setElemValNumeric(this, polyglot.t('second(s)')); }); $('#TopTrendsAutoUpdateTimer').on('keyup', function () { setElemValNumeric(this, polyglot.t('second(s)')); });
} }
this.getWhoToFollowOpt = function() {
return this.getOption('WhoToFollow', 'enable');
}
this.setWhoToFollowOpt = function () {
$('#WhoToFollow').val(this.getWhoToFollowOpt());
$('#WhoToFollow').on('change', function() { $.Options.setOption(this.id, this.value); });
}
this.getSplitPostsOpt = function () { this.getSplitPostsOpt = function () {
return $.Options.getOption('splitPosts', 'disable'); return this.getOption('splitPosts', 'disable');
} }
this.setSplitPostsOpt = function () { this.setSplitPostsOpt = function () {
$('#splitPosts')[0].value = this.getSplitPostsOpt(); $('#splitPosts').val( this.getSplitPostsOpt() );
$('#splitPosts').on('change', function () { $.Options.setOption(this.id, this.value); });
$('#splitPosts').on('change', function () {
$.Options.setOption(this.id, this.value);
});
} }
this.getHideRepliesOpt = function () { this.getHideRepliesOpt = function () {
return $.Options.getOption('hideReplies', 'following'); return this.getOption('hideReplies', 'following');
} }
this.setHideRepliesOpt = function () { this.setHideRepliesOpt = function () {
$('#hideReplies')[0].value = this.getHideRepliesOpt(); $('#hideReplies').val( this.getHideRepliesOpt() );
$('#hideReplies').on('change', function () { $.Options.setOption(this.id, this.value); });
$('#hideReplies').on('change', function () {
$.Options.setOption(this.id, this.value);
});
} }
this.getHideCloseRTsOpt = function () { this.getHideCloseRTsOpt = function () {
return $.Options.getOption('hideCloseRTs', 'disable'); return this.getOption('hideCloseRTs', 'disable');
}; };
this.setHideCloseRTsOpt = function () { this.setHideCloseRTsOpt = function () {
$('#hideCloseRTs')[0].value = this.getHideCloseRTsOpt(); function hideCloseRTsCfg() {
if ($.Options.getHideCloseRTsOpt() === 'disable')
if (this.getHideCloseRTsOpt() === 'disable') { $('#hideCloseRTsDesc').css('display', 'none');
$('#hideCloseRTsDesc')[0].style.display = 'none'; else
} else { $('#hideCloseRTsDesc').css('display', 'inline');
$('#hideCloseRTsDesc')[0].style.display = 'inline';
} }
$('#hideCloseRTs').val( this.getHideCloseRTsOpt() );
hideCloseRTsCfg();
$('#hideCloseRTs').on('change', function () { $('#hideCloseRTs').on('change', function () {
$.Options.setOption(this.id, this.value); $.Options.setOption(this.id, this.value);
hideCloseRTsCfg();
if (this.value === 'disable') {
$('#hideCloseRTsDesc')[0].style.display = 'none';
} else {
$('#hideCloseRTsDesc')[0].style.display = 'inline';
}
}); });
}; };
this.getHideCloseRTsHourOpt = function () { this.getHideCloseRTsHourOpt = function () {
return parseInt($.Options.getOption('hideCloseRtsHour', '1')); return parseInt(this.getOption('hideCloseRtsHour', '1'));
}; };
this.setHideCloseRTsHourOpt = function () { this.setHideCloseRTsHourOpt = function () {
$('#hideCloseRtsHour')[0].value = this.getHideCloseRTsHourOpt().toString(); $('#hideCloseRtsHour').val( this.getHideCloseRTsHourOpt().toString() );
$('#hideCloseRtsHour').on('keyup', function () { setElemValNumeric(this, polyglot.t('hour(s)')); }); $('#hideCloseRtsHour').on('keyup', function () { setElemValNumeric(this, polyglot.t('hour(s)')); });
}; };
this.getIsFollowingMeOpt = function () {
return $.Options.getOption('isFollowingMe');
};
this.getFilterLangOpt = function() { this.getFilterLangOpt = function() {
return this.getOption('filterLang', 'disable'); return this.getOption('filterLang', 'disable');
} }
this.setFilterLangOpt = function () { this.setFilterLangOpt = function () {
function filterLangListCont() { function filterLangListCont() {
if ( $.Options.getFilterLangOpt() !== 'disable' ) { if ( $.Options.getFilterLangOpt() !== 'disable' )
$('#filterLangListCont')[0].style.display= 'block'; $('#filterLangListCont').css('display', 'block');
} else { else
$('#filterLangListCont')[0].style.display= 'none'; $('#filterLangListCont').css('display', 'none');
}
} }
$('#filterLang').val( this.getFilterLangOpt() ); $('#filterLang').val( this.getFilterLangOpt() );
filterLangListCont(); filterLangListCont();
@ -513,7 +492,6 @@ var TwisterOptions = function()
this.setFilterLangForPostboardOpt = function () { this.setFilterLangForPostboardOpt = function () {
$('#filterLangForPostboard').prop('checked', this.getFilterLangForPostboardOpt()); $('#filterLangForPostboard').prop('checked', this.getFilterLangForPostboardOpt());
$('#filterLangForPostboard').on('click', function () { $.Options.setOption(this.id, this.checked); }); $('#filterLangForPostboard').on('click', function () { $.Options.setOption(this.id, this.checked); });
} }
@ -523,7 +501,6 @@ var TwisterOptions = function()
this.setFilterLangForSearchingOpt = function () { this.setFilterLangForSearchingOpt = function () {
$('#filterLangForSearching').prop('checked', this.getFilterLangForSearchingOpt()); $('#filterLangForSearching').prop('checked', this.getFilterLangForSearchingOpt());
$('#filterLangForSearching').on('click', function () { $.Options.setOption(this.id, this.checked); }); $('#filterLangForSearching').on('click', function () { $.Options.setOption(this.id, this.checked); });
} }
@ -533,7 +510,6 @@ var TwisterOptions = function()
this.setFilterLangForTopTrendsOpt = function () { this.setFilterLangForTopTrendsOpt = function () {
$('#filterLangForTopTrends').prop('checked', this.getFilterLangForTopTrendsOpt()); $('#filterLangForTopTrends').prop('checked', this.getFilterLangForTopTrendsOpt());
$('#filterLangForTopTrends').on('click', function () { $.Options.setOption(this.id, this.checked); }); $('#filterLangForTopTrends').on('click', function () { $.Options.setOption(this.id, this.checked); });
} }
@ -543,28 +519,25 @@ var TwisterOptions = function()
this.setFilterLangSimulateOpt = function () { this.setFilterLangSimulateOpt = function () {
$('#filterLangSimulate').prop('checked', this.getFilterLangSimulateOpt()); $('#filterLangSimulate').prop('checked', this.getFilterLangSimulateOpt());
$('#filterLangSimulate').on('click', function () { $.Options.setOption(this.id, this.checked); }); $('#filterLangSimulate').on('click', function () { $.Options.setOption(this.id, this.checked); });
} }
this.setIsFollowingMeOpt = function () { this.getIsFollowingMeOpt = function () {
$('#isFollowingMe')[0].value = this.getIsFollowingMeOpt(); return this.getOption('isFollowingMe', 'in-profile');
};
$('#isFollowingMe').on('change', function () { this.setIsFollowingMeOpt = function () {
$.Options.setOption(this.id, this.value); $('#isFollowingMe').val( this.getIsFollowingMeOpt() );
}); $('#isFollowingMe').on('change', function () { $.Options.setOption(this.id, this.value); });
}; };
this.getDMCopySelfOpt = function() { this.getDMCopySelfOpt = function() {
return $.Options.getOption('dmCopySelf',"enable"); return this.getOption('dmCopySelf', 'enable');
} }
this.setDMCopySelfOpt = function () { this.setDMCopySelfOpt = function () {
$('#dmCopySelfOpt select')[0].value = this.getDMCopySelfOpt(); $('#dmCopySelfOpt select').val( this.getDMCopySelfOpt() );
$('#dmCopySelfOpt select').on('change', function() { $.Options.setOption(this.id, this.value); });
$('#dmCopySelfOpt select').on('change', function(){
$.Options.setOption(this.id, this.value);
});
} }
this.InitOptions = function() { this.InitOptions = function() {
@ -592,7 +565,9 @@ var TwisterOptions = function()
this.setUseProxyOpt(); this.setUseProxyOpt();
this.setUseProxyForImgOnlyOpt(); this.setUseProxyForImgOnlyOpt();
this.setTopTrendsAutoUpdateOpt(); this.setTopTrendsAutoUpdateOpt();
this.setTopTrendsOpt();
this.setTopTrendsAutoUpdateTimerOpt(); this.setTopTrendsAutoUpdateTimerOpt();
this.setWhoToFollowOpt();
this.setSplitPostsOpt(); this.setSplitPostsOpt();
this.setHideRepliesOpt(); this.setHideRepliesOpt();
this.setHideCloseRTsHourOpt(); this.setHideCloseRTsHourOpt();

3
js/twister_following.js

@ -441,6 +441,7 @@ function getRandomFollowSuggestion(cbFunc, cbArg) {
var i = parseInt( Math.random() * followingUsers.length ); var i = parseInt( Math.random() * followingUsers.length );
if ( (i < followingUsers.length && followingUsers[i] == defaultScreenName) || if ( (i < followingUsers.length && followingUsers[i] == defaultScreenName) ||
typeof(twisterFollowingO) === 'undefined' ||
typeof(twisterFollowingO.followingsFollowings[followingUsers[i]]) === 'undefined') { typeof(twisterFollowingO.followingsFollowings[followingUsers[i]]) === 'undefined') {
setTimeout(function() {getRandomFollowSuggestion(cbFunc, cbArg);}, 500); setTimeout(function() {getRandomFollowSuggestion(cbFunc, cbArg);}, 500);
@ -562,7 +563,7 @@ function showFollowingUsers(){
} }
function processSuggestion(arg, suggestion, followedBy) { function processSuggestion(arg, suggestion, followedBy) {
var dashboard = $(".follow-suggestions"); var dashboard = $('.module.who-to-follow .follow-suggestions');
if( suggestion ) { if( suggestion ) {
var item = $("#follow-suggestion-template").clone(true); var item = $("#follow-suggestion-template").clone(true);
item.removeAttr("id"); item.removeAttr("id");

2
js/twister_timeline.js

@ -189,7 +189,6 @@ function showPosts(req, posts)
var streamItemsParent = $.MAL.getStreamPostsParent(); var streamItemsParent = $.MAL.getStreamPostsParent();
for( var i = 0; i < posts.length; i++ ) { for( var i = 0; i < posts.length; i++ ) {
if (req.users.indexOf(posts[i]['userpost']['n']) > -1 || req.getspam) { // FIXME maybe it's unecessary check but currently we got unwanted adverting posts which are coming with requested ones from 'getposts' sometimes
var post = posts[i]; var post = posts[i];
//console.log(post); //console.log(post);
var streamPost = postToElem(post, "original", req.getspam); var streamPost = postToElem(post, "original", req.getspam);
@ -228,7 +227,6 @@ function showPosts(req, posts)
req.reportProcessedPost(post["userpost"]["n"],post["userpost"]["k"], streamPostAppended); req.reportProcessedPost(post["userpost"]["n"],post["userpost"]["k"], streamPostAppended);
} }
} }
}
// request timeline update for a given list of users // request timeline update for a given list of users
function requestTimelineUpdate(mode, count, timelineUsers, getspam) function requestTimelineUpdate(mode, count, timelineUsers, getspam)

30
licenses/caret.license

@ -0,0 +1,30 @@
Copyright (c) 2009, Gideon Sireling
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of Gideon Sireling nor the names of other
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

25
licenses/franc.license

@ -0,0 +1,25 @@
(The MIT License)
Copyright (c) 2014-2015 Titus Wormer <tituswormer@gmail.com>
Copyright (c) 2008 Kent S Johnson
Copyright (c) 2006 Jacob R Rideout <kde@jacobrideout.net>
Copyright (c) 2004 Maciej Ceglowski
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

9
licenses/notify.js.license

@ -0,0 +1,9 @@
Copyright (c) 2014 Alex Gibson
http://alxgbsn.co.uk/
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction except as noted below, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sublicense, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE

24
options.html

@ -75,7 +75,7 @@
<select name="" id="language"> <select name="" id="language">
<option value="auto">Auto</option> <option value="auto">Auto</option>
<option value="pt-BR">Brazilian Portuguese</option> <option value="pt-BR">Brazilian Portuguese</option>
<option value="zh">Chinese</option> <option value="zh-CN">Chinese Simplified</option>
<option value="cs">Czech</option> <option value="cs">Czech</option>
<option value="nl">Dutch</option> <option value="nl">Dutch</option>
<option value="en">English</option> <option value="en">English</option>
@ -86,6 +86,7 @@
<option value="ru">Russian</option> <option value="ru">Russian</option>
<option value="es">Spanish</option> <option value="es">Spanish</option>
<option value="tr">Turkish</option> <option value="tr">Turkish</option>
<option value="uk">Ukrainian</option>
</select> </select>
</form> </form>
</div> </div>
@ -302,8 +303,15 @@
</div> </div>
<div class="module"> <div class="module">
<p class="label label-h"> Top Trends </p> <p class="label label-h"> Top Trends </p>
<div id="TopTrendsAutoUpdateCont" class="container"> <div class="container">
<form> <form>
<p>
<select id="TopTrends">
<option value="enable">Enable</option>
<option value="disable">Disable</option>
</select>
</p>
<div id="TopTrendsCont" class="container">
<p class="label">Auto updating</p> <p class="label">Auto updating</p>
<select id="TopTrendsAutoUpdate" class="container"> <select id="TopTrendsAutoUpdate" class="container">
<option value="enable">Enable</option> <option value="enable">Enable</option>
@ -312,6 +320,18 @@
<div id="TopTrendsAutoUpdateOpt" class="container"> <div id="TopTrendsAutoUpdateOpt" class="container">
<input type="text" id="TopTrendsAutoUpdateTimer" maxlength="6" size="6"/> <span class="label">second(s)</span> <input type="text" id="TopTrendsAutoUpdateTimer" maxlength="6" size="6"/> <span class="label">second(s)</span>
</div> </div>
</div>
</form>
</div>
</div>
<div class="module">
<p class="label label-h"> Who to Follow </p>
<div class="container">
<form>
<select id="WhoToFollow">
<option value="enable">Enable</option>
<option value="disable">Disable</option>
</select>
</form> </form>
</div> </div>
</div> </div>

5
theme_calm/css/style.css

@ -969,6 +969,7 @@ textarea.splited-post {
text-decoration: none; text-decoration: none;
} }
.refresh-toptrends,
.refresh-users, .refresh-users,
.view-all-users .view-all-users
{ {
@ -979,14 +980,16 @@ textarea.splited-post {
} }
/*********************************** /***********************************
********************* TOP TRENDS ************ TOP TRENDS ************
***********************************/ ***********************************/
.module.toptrends { .module.toptrends {
margin-top: 10px; margin-top: 10px;
} }
.module.toptrends h3 { .module.toptrends h3 {
margin: 5px 0 5px 10px; margin: 5px 0 5px 10px;
font: 14px 'Open Sans', sans-serif; font: 14px 'Open Sans', sans-serif;
display: inline;
} }
.module.toptrends ol { .module.toptrends ol {
margin: 0 0 10px 10px; margin: 0 0 10px 10px;

13
theme_nin/css/style.css

@ -56,7 +56,7 @@
font-style: normal; font-style: normal;
} }
/* line 64, ../sass/_fonts.sass */ /* line 64, ../sass/_fonts.sass */
[class^="icon-"]:before, [class*=" icon-"]:before, .extend-icon:before, .userMenu li.userMenu-config > a:before, .post-context span:before, .post-reply:before, .post-propagate:before, .post-favorite:before, .post .show-more:before, .mini-profile-actions span:before, ul.userMenu-search-profiles button:before, .mini-profile-indicators .userMenu-connections a:before, .mini-profile-indicators .userMenu-messages a:before, .mini-profile-indicators .userMenu-user a:before, .twister-user-remove:before, .refresh-users:before, .modal-close:before, .mark-all-as-read:before, .modal-back:before, .icon-down-after:after { [class^="icon-"]:before, [class*=" icon-"]:before, .extend-icon:before, .userMenu li.userMenu-config > a:before, .post-context span:before, .post-reply:before, .post-propagate:before, .post-favorite:before, .post .show-more:before, .mini-profile-actions span:before, ul.userMenu-search-profiles button:before, .mini-profile-indicators .userMenu-connections a:before, .mini-profile-indicators .userMenu-messages a:before, .mini-profile-indicators .userMenu-user a:before, .twister-user-remove:before, .refresh-toptrends:before, .refresh-users:before, .modal-close:before, .mark-all-as-read:before, .modal-back:before, .icon-down-after:after {
font-family: "fontello"; font-family: "fontello";
font-style: normal; font-style: normal;
font-weight: normal; font-weight: normal;
@ -198,7 +198,7 @@
/* '' */ /* '' */
/* line 183, ../sass/_fonts.sass */ /* line 183, ../sass/_fonts.sass */
.icon-arrows:before, .refresh-users:before { .icon-arrows:before, .refresh-toptrends:before, .refresh-users:before {
content: ""; content: "";
} }
@ -1823,7 +1823,7 @@ button.disabled:hover, .mini-profile-actions span.disabled:hover, a.button.disab
width: 90%; width: 90%;
} }
.options #filterLangListCont div,.options #TopTrendsAutoUpdateCont div { .options #filterLangListCont div,.options #TopTrendsCont div {
float: none; float: none;
padding: 0px 4px; padding: 0px 4px;
} }
@ -2449,7 +2449,7 @@ button.follow:hover, .mini-profile-actions span.follow:hover, button.unfollow, .
} }
/* line 499, ../sass/style.sass */ /* line 499, ../sass/style.sass */
.refresh-users { .refresh-toptrends, .refresh-users {
color: #66686B; color: #66686B;
cursor: pointer; cursor: pointer;
font-size: 11px; font-size: 11px;
@ -2479,13 +2479,16 @@ button.follow:hover, .mini-profile-actions span.follow:hover, button.unfollow, .
} }
/* line 527, ../sass/style.sass */ /* line 527, ../sass/style.sass */
.refresh-users:hover, .view-all-users:hover { .refresh-toptrends:hover, .refresh-users:hover, .view-all-users:hover {
color: #B4C669; color: #B4C669;
text-decoration: none; text-decoration: none;
background-color: transparent; background-color: transparent;
} }
/***********TOP TRENDS************** */ /***********TOP TRENDS************** */
.toptrends h3 {
float: left;
}
/* line 534, ../sass/style.sass */ /* line 534, ../sass/style.sass */
ol.toptrends-list { ol.toptrends-list {
margin: 0; margin: 0;

10
theme_nin/sass/style.sass

@ -516,7 +516,7 @@ textarea.splited-post
.twister-user-remove:hover .twister-user-remove:hover
opacity: 1 opacity: 1
.refresh-users .refresh-toptrends, .refresh-users
@extend .icon-arrows @extend .icon-arrows
@extend .extend-icon @extend .extend-icon
color: $main-color-dark color: $main-color-dark
@ -544,13 +544,17 @@ textarea.splited-post
margin: 0 0 0 15px margin: 0 0 0 15px
position: relative position: relative
.refresh-users:hover, .view-all-users:hover .refresh-toptrends:hover, .refresh-users:hover, .view-all-users:hover
color: $main-color-color color: $main-color-color
text-decoration: none text-decoration: none
background-color: transparent background-color: transparent
/***********TOP TRENDS***************/ /***********TOP TRENDS***************/
.toptrends
h3
float: left
ol.toptrends-list ol.toptrends-list
margin: 0 margin: 0
margin-bottom: 10px margin-bottom: 10px
@ -1096,7 +1100,7 @@ ol.toptrends-list
#filterLangList #filterLangList
width: 90% width: 90%
#filterLangListCont div, #TopTrendsAutoUpdateCont div #filterLangListCont div, #TopTrendsCont div
float: none float: none
padding: 0px 4px padding: 0px 4px

Loading…
Cancel
Save