diff --git a/js/interface_common.js b/js/interface_common.js
index 1032e60..2ebd87d 100644
--- a/js/interface_common.js
+++ b/js/interface_common.js
@@ -208,8 +208,8 @@ function updateHashtagModal(postboard,hashtag,timeoutArgs) {
requestHashtag(postboard,hashtag,resource,timeoutArgs);
if( _hashtagPendingPostsUpdated ) {
- if (resource != 'mention' && $.Options.getShowDesktopNotifPostsModalOpt() === 'enable') {
- $.MAL.showDesktopNotif(false, polyglot.t('You got')+' '+polyglot.t("new_posts", _hashtagPendingPostsUpdated)+' '+polyglot.t('in search result')+'.', false,'twister_notification_new_posts_modal', $.Options.getShowDesktopNotifPostsModalTimerOpt(), function() {
+ if (resource != 'mention' && $.Options.showDesktopNotifPostsModal.val === 'enable') {
+ $.MAL.showDesktopNotif(false, polyglot.t('You got')+' '+polyglot.t("new_posts", _hashtagPendingPostsUpdated)+' '+polyglot.t('in search result')+'.', false,'twister_notification_new_posts_modal', $.Options.showDesktopNotifPostsModalTimer.val, function() {
$(".postboard-news").hide();
displayHashtagPending($(".hashtag-modal .postboard-posts"));
}, false)
@@ -231,10 +231,9 @@ function openMentionsModal(e)
e.preventDefault();
}
- if(!defaultScreenName)
- {
- alert(polyglot.t("No one can mention you because you are not logged in."));
- return;
+ if (!defaultScreenName) {
+ alert(polyglot.t("No one can mention you because you are not logged in."));
+ return;
}
var username;
@@ -370,7 +369,7 @@ function openWhoToFollowModal() {
function newConversationModal(username,resource) {
var hashtagModalContent = $( "#hashtag-modal-template" ).children().clone(true);
-
+
requestPost(hashtagModalContent.find(".postboard-posts"),username,resource,
function(args){
postLi=args.hashtagModalContent.find(".postboard-posts").children().first();
@@ -406,7 +405,7 @@ function openConversationModal(username,resource)
{
var conversationModalClass = "conversation-modal";
- openModal( conversationModalClass );
+ openModal( conversationModalClass );
var conversationModalContent = newConversationModal(username,resource);
conversationModalContent.appendTo("." + conversationModalClass + " .modal-content");
@@ -419,21 +418,21 @@ function openConversationModal(username,resource)
function watchHashChange(e)
{
- if(e!=null){
+ if(e!=null){
var prevurlsplit = e.oldURL.split('#');
- var prevhashstring=prevurlsplit[1];
+ var prevhashstring=prevurlsplit[1];
var notFirstModalView=(prevhashstring!=undefined && prevhashstring.length>0 );
var notNavigatedBackToFirstModalView=(window.history.state==null || ( window.history.state!=null && window.history.state.showCloseButton!=false ) )
-
+
if(notFirstModalView && notNavigatedBackToFirstModalView ){
$('.modal-back').css('display','inline');
} else {
window.history.pushState({showCloseButton:false},null,null);
$('.modal-back').css('display','none');
}
-
+
}
loadModalFromHash();
@@ -461,7 +460,7 @@ function loadModalFromHash(){
}else if (hashdata[1] == 'following') {
openFollowingModal(hashdata[2]);
}else if (hashdata[1] == 'conversation') {
- splithashdata2=hashdata[2].split(':')
+ splithashdata2=hashdata[2].split(':')
//console.log('username='+splithashdata2[0]+' resource='+splithashdata2[1]);
openConversationModal(splithashdata2[0],splithashdata2[1]);
}
@@ -479,11 +478,11 @@ function initHashWatching()
{
// Register custom protocol handler
already_registered = _getResourceFromStorage("twister_protocol_registered");
-
+
if (window.navigator && window.navigator.registerProtocolHandler && !already_registered){
var local_twister_url = window.location.protocol + '//' + window.location.host + '/home.html#%s';
window.navigator.registerProtocolHandler('web+twister', local_twister_url, 'Twister');
- _putResourceIntoStorage("twister_protocol_registered", true);
+ _putResourceIntoStorage("twister_protocol_registered", true);
}
// Register hash spy and launch it once
@@ -500,9 +499,9 @@ var reTwistPopup = function( e )
{
if(!defaultScreenName)
{
- e.stopPropagation();
- alert(polyglot.t("You have to log in to retransmit messages."));
- return;
+ e.stopPropagation();
+ alert(polyglot.t('You have to log in to retransmit messages.'));
+ return;
}
var reTwistClass = "reTwist";
@@ -628,7 +627,7 @@ var postExpandFunction = function( e, postLi )
$postExpandedContent.slideDown( "fast" );
- if ($.Options.getShowPreviewOpt() == 'enable'){
+ if ($.Options.showPreview.val === 'enable') {
var previewContainer=$postExpandedContent.find(".preview-container")[0];
/* was the preview added before... */
if ($(previewContainer).children().length == 0) {
@@ -676,9 +675,9 @@ var postReplyClick = function( e )
{
if(!defaultScreenName)
{
- e.stopPropagation();
- alert(polyglot.t("You have to log in to post replies."));
- return;
+ e.stopPropagation();
+ alert(polyglot.t('You have to log in to post replies.'));
+ return;
}
var post = $(this).closest(".post");
if( !post.hasClass( "original" ) ) {
@@ -703,14 +702,13 @@ var composeNewPost = function( e, postAreaNew )
//se o usuário clicar fora é pra fechar
postAreaNew.clickoutside( unfocusThis );
- if ($.Options.getSplitPostsOpt() === "enable")
+ if ($.Options.splitPosts.val === 'enable')
usePostSpliting = true;
- else if ($.Options.getSplitPostsOpt() === "only-new") {
+ else if ($.Options.splitPosts.val === 'only-new') {
var $postOrig = postAreaNew.closest(".post-data");
- if (!$postOrig.length) {
+ if (!$postOrig.length)
$postOrig = postAreaNew.closest(".modal-content").find(".post-data");
- }
if ($postOrig.length)
usePostSpliting = false;
@@ -749,7 +747,7 @@ function replyTextInput(e) {
var $this = $( this );
var tweetForm = $this.parents("form");
if( tweetForm != undefined ) {
- if ($.Options.getUnicodeConversionOpt() !== "disable")
+ if ($.Options.unicodeConversion.val !== 'disable')
$this.val(convert2Unicodes($this.val(), $this));
if (usePostSpliting && !$this.parents('.directMessages').length) {
@@ -933,14 +931,14 @@ function replyTextKeySend(e) {
var tweetAction = tweetForm.find(".post-submit");
if( !tweetAction.length ) tweetAction = tweetForm.find(".dm-submit");
- if( $.Options.keyEnterToSend() && $('.dropdown-menu').css('display') == 'none'){
+ if ($.Options.keysSend.val === 'enter' && $('.dropdown-menu').css('display') == 'none') {
if (e.keyCode === 13 && (!e.metaKey && !e.ctrlKey)) {
$this.val($this.val().trim());
if( !tweetAction.hasClass("disabled")) {
tweetAction.click();
}
}
- } else if( !$.Options.keyEnterToSend() ){
+ } else if ($.Options.keysSend.val === 'ctrlenter') {
if (e.keyCode === 13 && (e.metaKey || e.ctrlKey)) {
$this.val($this.val().trim());
if( !tweetAction.hasClass("disabled") ) {
@@ -1295,37 +1293,29 @@ function convert2Unicodes(s, ta)
ta.data("disabledUnicodeRules", []);
var ranges = getRangesForUnicodeConversion(s);
var list;
- if ($.Options.getUnicodeConversionOpt() === "enable" || $.Options.getConvertPunctuationsOpt())
- {
+ if ($.Options.unicodeConversion.val === 'enable' || $.Options.convertPunctuations.val) {
list = unicodeConversionList.punctuation;
s = getUnicodeReplacement(s, list, ranges, ta);
}
- if ($.Options.getUnicodeConversionOpt() === "enable"|| $.Options.getConvertEmotionsOpt())
- {
+ if ($.Options.unicodeConversion.val === 'enable' || $.Options.convertEmotions.val) {
list = unicodeConversionList.emotions;
s = getUnicodeReplacement(s, list, ranges, ta);
}
- if ($.Options.getUnicodeConversionOpt() === "enable"|| $.Options.getConvertSignsOpt())
- {
+ if ($.Options.unicodeConversion.val === 'enable' || $.Options.convertSigns.val) {
list = unicodeConversionList.signs;
s = getUnicodeReplacement(s, list, ranges, ta);
}
- if ($.Options.getUnicodeConversionOpt() === "enable"|| $.Options.getConvertFractionsOpt())
- {
+ if ($.Options.unicodeConversion.val === 'enable' || $.Options.convertFractions.val) {
list = unicodeConversionList.fractions;
s = getUnicodeReplacement(s, list, ranges, ta);
}
- if (ta.data("unicodeConversionStack").length > 0)
- {
+ if (ta.data("unicodeConversionStack").length > 0) {
var ub = ta.closest(".post-area-new").find(".undo-unicode");
ub.text(polyglot.t("undo") + ": " + ta.data("unicodeConversionStack")[0].u);
$.MAL.enableButton(ub);
- }
- else
- {
+ } else
$.MAL.disableButton(ta.closest(".post-area-new").find(".undo-unicode"));
- }
return s;
}
@@ -1446,7 +1436,7 @@ var postSubmit = function(e, oldLastPostId)
closeModal($this);
} else if ($this.parents('.prompt-wrapper').length) {
closePrompt();
- }
+ }
if($this.closest('.post-area,.post-reply-content')){
$('.post-area-new').removeClass('open').find('textarea').blur();
@@ -1471,7 +1461,7 @@ var retweetSubmit = function(e)
function changeStyle() {
var style, profile, menu;
- var theme = $.Options.getTheme();
+ var theme = $.Options.theme.val;
if(theme == 'nin')
{
@@ -1582,7 +1572,7 @@ function initInterfaceCommon() {
$( ".modal-propagate").click( retweetSubmit );
$( ".expanded-content .show-more").bind('click', openConversationClick);
- if ($.Options.getUnicodeConversionOpt() === "disable")
+ if ($.Options.unicodeConversion.val === 'disable')
$( ".undo-unicode" ).click( undoLastUnicode ).css("display", "none");
else
$( ".undo-unicode" ).click( undoLastUnicode );
@@ -1601,7 +1591,7 @@ function initInterfaceCommon() {
replaceDashboards();
$( window ).resize(replaceDashboards);
- if ($.Options.getWhoToFollowOpt() === 'enable')
+ if ($.Options.WhoToFollow.val === 'enable')
initWhoToFollow();
else
killInterfaceModule('who-to-follow');
diff --git a/js/interface_home.js b/js/interface_home.js
index 30173fd..7a3be18 100644
--- a/js/interface_home.js
+++ b/js/interface_home.js
@@ -6,8 +6,7 @@
//***********************************************
//******************* DECLARATIONS **************
//***********************************************
-var InterfaceFunctions = function()
-{
+var InterfaceFunctions = function() {
//faço os binds no init
this.init = function()
{
@@ -115,18 +114,17 @@ var InterfaceFunctions = function()
});
});
}
-
- if ($.Options.getTopTrendsOpt() === 'enable')
+ if ($.Options.TopTrends.val === 'enable')
initTopTrends();
else
killInterfaceModule('toptrends');
- if ($.Options.getTwistdayReminderOpt() === 'enable')
+ if ($.Options.TwistdayReminder.val === 'enable')
initTwistdayReminder();
else
killInterfaceModule('twistday-reminder');
}
-};
+}
function initTopTrends() {
var $tt = initInterfaceModule('toptrends');
@@ -148,9 +146,9 @@ function updateTrendingHashtags() {
function(args, ret) {
//console.log('hashtags trends: '+ret);
for( var i = 0; i < ret.length; i++ ) {
- if ($.Options.getFilterLangOpt() !== 'disable' && $.Options.getFilterLangForTopTrendsOpt())
+ if ($.Options.filterLang.val !== 'disable' && $.Options.filterLangForTopTrends.val)
var langFilterData = filterLang(ret[i]);
- if (typeof(langFilterData) === 'undefined' || langFilterData['pass'] || $.Options.getFilterLangSimulateOpt()) {
+ if (typeof(langFilterData) === 'undefined' || langFilterData['pass'] || $.Options.filterLangSimulate.val) {
var $li = $('
');
var hashtagLinkTemplate = $('#hashtag-link-template').clone(true);
@@ -159,7 +157,7 @@ function updateTrendingHashtags() {
hashtagLinkTemplate.text('#'+ret[i]);
$li.append(hashtagLinkTemplate);
- if ($.Options.getFilterLangOpt() !== 'disable' && $.Options.getFilterLangSimulateOpt()) {
+ if ($.Options.filterLang.val !== 'disable' && $.Options.filterLangSimulate.val) {
if (typeof(langFilterData) !== 'undefined') {
$li.append(' '+((langFilterData['pass']) ? polyglot.t('passed') : polyglot.t('blocked'))+': '+langFilterData['prob'][0].toString()+'');
} else {
@@ -180,10 +178,10 @@ function updateTrendingHashtags() {
console.log('Error with gettrendinghashtags. Older twister daemon?');
}, {}
);
- if ($list.children().length && $.Options.getTopTrendsAutoUpdateOpt() === 'enable' && $.Options.getTopTrendsAutoUpdateTimerOpt() > 0)
- setTimeout(updateTrendingHashtags, $.Options.getTopTrendsAutoUpdateTimerOpt()*1000);
+ if ($list.children().length && $.Options.TopTrendsAutoUpdate.val === 'enable' && $.Options.TopTrendsAutoUpdateTimer.val > 0)
+ setTimeout(updateTrendingHashtags, $.Options.TopTrendsAutoUpdateTimer.val * 1000);
}
-};
+}
function initTwistdayReminder() {
var $module = initInterfaceModule('twistday-reminder');
@@ -235,7 +233,7 @@ function refreshTwistdayReminder() {
list.find('[data-screen-name='+lucky+']').closest('li').remove();
}
- var showUpcomingTimer = ($.Options.getTwistdayReminderShowUpcomingOpt() === 'enable') ? $.Options.getTwistdayReminderShowUpcomingTimerOpt() *3600 : 0;
+ var showUpcomingTimer = ($.Options.TwistdayReminderShowUpcoming.val === 'enable') ? $.Options.TwistdayReminderShowUpcomingTimer.val * 3600 : 0;
var listCurrent = $module.find('.current .list');
var listUpcoming = $module.find('.upcoming .list');
var d = new Date();
@@ -283,8 +281,8 @@ function refreshTwistdayReminder() {
function(arg, ret) { console.log('ajax error:' + ret); }, null);
}
}
- if ($.Options.getTwistdayReminderAutoUpdateOpt() === 'enable' && $.Options.getTwistdayReminderAutoUpdateTimerOpt() > 0)
- setTimeout(refreshTwistdayReminder, $.Options.getTwistdayReminderAutoUpdateTimerOpt()*1000);
+ if ($.Options.TwistdayReminderAutoUpdate.val === 'enable' && $.Options.TwistdayReminderAutoUpdateTimer.val > 0)
+ setTimeout(refreshTwistdayReminder, $.Options.TwistdayReminderAutoUpdateTimer.val * 1000);
}
}
diff --git a/js/interface_localization.js b/js/interface_localization.js
index 36b6f75..1d0ff5e 100644
--- a/js/interface_localization.js
+++ b/js/interface_localization.js
@@ -6,24 +6,22 @@
// translators: add your language code here such as "es" for Spanish, "ru" for Russian
var knownLanguages = ["en","es","nl","it","fr","ru","de","zh-CN","ja","pt-BR","tr","uk","cs"];
-if( $.Options.getOption('locLang','auto') == 'auto'){
- // detect language with JavaScript
- preferredLanguage = window.navigator.userLanguage || window.navigator.language || "en";
- if(knownLanguages.indexOf(preferredLanguage) > -1){
- // en for en or similar
- preferredLanguage = preferredLanguage;
- }
- else if(knownLanguages.indexOf(preferredLanguage.split("-")[0]) > -1){
- // en for en-US or similar
- preferredLanguage = preferredLanguage.split("-")[0];
- }
- else{
- // did not find match
- preferredLanguage = "en";
- }
-}else{
- preferredLanguage = $.Options.getOption('locLang','en');
-}
+if ($.Options.locLang.val === 'auto') {
+ // detect language with JavaScript
+ preferredLanguage = window.navigator.userLanguage || window.navigator.language || 'en';
+ if (knownLanguages.indexOf(preferredLanguage) > -1) {
+ // en for en or similar
+ preferredLanguage = preferredLanguage;
+ } else if (knownLanguages.indexOf(preferredLanguage.split('-')[0]) > -1) {
+ // en for en-US or similar
+ preferredLanguage = preferredLanguage.split('-')[0];
+ } else {
+ // did not find match
+ preferredLanguage = 'en';
+ }
+} else
+ preferredLanguage = $.Options.locLang.val;
+
// set up Polyglot
polyglot = new Polyglot();
var wordset = {};
diff --git a/js/mobile_abstract.js b/js/mobile_abstract.js
index bc165c1..00b7bb7 100644
--- a/js/mobile_abstract.js
+++ b/js/mobile_abstract.js
@@ -24,13 +24,13 @@ var MAL = function()
$.mobile.hidePageLoadingMsg();
var curPage = $.mobile.activePage.attr("id");
$( '#'+curPage+' .content ul.posts').listview('refresh');
-
+
installPostboardClick();
} else {
$(".postboard-loading").hide();
}
}
-
+
this.dmThreadListLoaded = function() {
if( $.hasOwnProperty("mobile") ) {
$.mobile.hidePageLoadingMsg();
@@ -103,8 +103,8 @@ var MAL = function()
newTweetsBarMenu.text(String(newPosts));
newTweetsBarMenu.addClass("show");
- if ($.Options.getShowDesktopNotifPostsOpt() === 'enable') {
- this.showDesktopNotif(false, polyglot.t('You got')+' '+polyglot.t('new_posts', newPosts)+' '+polyglot.t('in postboard')+'.', false,'twister_notification_new_posts', $.Options.getShowDesktopNotifPostsTimerOpt(), (function() {
+ if ($.Options.showDesktopNotifPosts.val === 'enable') {
+ this.showDesktopNotif(false, polyglot.t('You got')+' '+polyglot.t('new_posts', newPosts)+' '+polyglot.t('in postboard')+'.', false,'twister_notification_new_posts', $.Options.showDesktopNotifPostsTimer.val, (function() {
requestTimelineUpdate('pending',this,followingUsers,promotedPostsOnly);
}).bind(newPosts), false)
}
@@ -117,7 +117,7 @@ var MAL = function()
}
}
}
-
+
this.getStreamPostsParent = function() {
if( $.hasOwnProperty("mobile") ) {
return $( '.timeline ul');
@@ -183,7 +183,7 @@ var MAL = function()
return "#hashtag?hashtag=" + h;
}
}
-
+
this.dmchatUrl = function(username) {
if( $.hasOwnProperty("mobile") ) {
return "#dmchat?user=" + username;
@@ -199,7 +199,7 @@ var MAL = function()
return "#following?user=" + username;
}
}
-
+
this.followUrl = function(username) {
if( $.hasOwnProperty("mobile") ) {
return "#following?follow=" + username;
@@ -232,7 +232,7 @@ var MAL = function()
}
}
-
+
this.updateNewMentionsUI = function(newMentions) {
if( $.hasOwnProperty("mobile") ) {
var $mentionsCounterBtnText = $(".mentions-count .ui-btn-text");
@@ -398,20 +398,22 @@ var MAL = function()
window.location.href = "home.html";
}
}
-
+
this.soundNotifyMentions = function() {
- if( $.hasOwnProperty("mobile") ) {
- } else {
- $.Options.mensNotif();
- }
- }
+ if ($.mobile) {
+ } else {
+ if ($.Options.sndMention.val !== 'false')
+ playSound('player', $.Options.sndMention.val);
+ }
+ };
this.soundNotifyDM = function() {
- if( $.hasOwnProperty("mobile") ) {
- } else {
- $.Options.DMsNotif();
- }
- }
+ if ($.mobile) {
+ } else {
+ if ($.Options.sndDM.val !== 'false')
+ playSound('playerSec', $.Options.sndDM.val);
+ }
+ };
this.showDesktopNotif = function(notifyTitle, notifyBody, notifyIcon, notifyTag, notifyTimer, actionOnClick, actionOnPermDenied) {
function doNotification() {
@@ -451,7 +453,7 @@ var MAL = function()
} else {
doNotification();
}
- }
+ };
this.reqRepAfterCB = function(postLi, postsFromJson) {
if ($.hasOwnProperty("mobile")) {
@@ -488,18 +490,38 @@ var MAL = function()
jQuery.MAL = new MAL;
+function playSound(player, sound) {
+ if ($.mobile) {
+ } else {
+ var player = $('#'+player);
+ if (player.length) {
+ player[0].pause();
+ //player.empty();
+
+ if (player[0].canPlayType('audio/mpeg;'))
+ player.attr({type: 'audio/mpeg', src: 'sound/' + sound + '.mp3'});
+ else
+ player.attr({type: 'audio/ogg', src: 'sound/' + sound + '.ogg'});
+
+ player[0].volume = $.Options.playerVol.val;
+ player[0].play();
+ } else
+ console.warn('cannot find player to play sound, selector: #'+player);
+ }
+}
+
function filterLang(string) {
- var langFilterMode = $.Options.getFilterLangOpt();
+ var langFilterMode = $.Options.filterLang.val;
if (langFilterMode !== 'disable') {
var langFilterSubj = '';
var langFilterProb = [];
var langFilterPass = true;
var langFilterReason = '';
- var langFilterList = $.Options.getFilterLangListOpt();
+ var langFilterList = $.Options.filterLangList.val;
if (langFilterList.length > 0) {
- var langFilterAccuracy = $.Options.getFilterLangAccuracyOpt();
+ var langFilterAccuracy = $.Options.filterLangAccuracy.val;
langFilterPass = (langFilterMode === 'whitelist') ? false : true;
langFilterReason = polyglot.t('this doesnt contain that', {'this': polyglot.t(langFilterMode), 'that': polyglot.t('language of this')});
diff --git a/js/options.js b/js/options.js
index ee0f278..3813c82 100644
--- a/js/options.js
+++ b/js/options.js
@@ -1,691 +1,353 @@
-$(function() {
-
-});
-
-var _desktopNotificationTimeout = 10; // it should be an option
-
-var TwisterOptions = function()
-{
- this.getOption = function(optionName, defaultValue) {
- var keyName = "options:" + optionName;
- if( $.localStorage.isSet(keyName) )
- return $.localStorage.get(keyName);
- else
- return defaultValue;
- }
-
- this.setOption = function(optionName, value) {
- var keyName = "options:" + optionName;
- $.localStorage.set(keyName, value);
- }
-
- this.soundNotifOptions = function() {
- $('#notifyForm select').each(function() {
- this.value = $.Options.getOption(this.id, 'false');
- });
-
- var player = $('#player');
- player[0].pause();
- $('#player').empty();
-
- $('form#notifyForm').on('change', 'select', function() {
- $.Options.setOption(this.id, this.value);
-
- if(this.value == false) {player[0].pause(); return;}
- if (player[0].canPlayType('audio/mpeg;')) {
- player.attr('type', 'audio/mpeg');
- player.attr('src', 'sound/'+this.value+'.mp3');
- } else {
- player.attr('type', 'audio/ogg');
- player.attr('src', 'sound/'+this.value+'.ogg');
- }
-
- player[0].play();
- });
- }
-
- this.volumeControl = function() {
- var playerVol = $('#playerVol');
- playerVol[0].value = this.getOption(playerVol[0].id, 1);
- $('.volValue').text((playerVol[0].value * 100).toFixed());
-
- playerVol.on('change', function() {
- $.Options.setOption(this.id, this.value);
- $('#player')[0].volume = (this.value);
- $('.volValue').text((this.value * 100).toFixed());
- });
- }
-
- this.DMsNotif = function() {
- var sndDM = this.getOption('sndDM', 'false');
- if ( sndDM === 'false') return;
- var player = $('#player');
- $('#player').empty();
-
- if (player[0].canPlayType('audio/mpeg;')) {
- player.attr('type', 'audio/mpeg');
- player.attr('src', 'sound/'+sndDM+'.mp3');
- } else {
- player.attr('type', 'audio/ogg');
- player.attr('src', 'sound/'+sndDM+'.ogg');
+function twisterOptions() {
+ this.add({
+ name: 'locLang',
+ selector: '#language',
+ valDefault: 'auto',
+ tickMethod: function (elem) {
+ if (elem.value !== 'auto')
+ twisterRpc('setpreferredspamlang', [elem.value]);
+ location.reload();
+ },
+ tickNotOnInit: 1
+ });
+ this.add({
+ name: 'theme',
+ valDefault: 'original',
+ tickMethod: function () {location.reload();},
+ tickNotOnInit: 1
+ });
+ this.add({
+ name: 'TopTrends',
+ valDefault: 'enable',
+ tickMethod: function (elem) {
+ $('#TopTrendsCont').css('display', (elem.value === 'enable') ? 'block' : 'none');
}
- player[0].volume = this.getOption('playerVol',1);
- player[0].play();
- }
-
- this.mensNotif = function() {
- var sndMention = this.getOption('sndMention', 'false');
- if (sndMention === 'false') return;
- var player = $('#playerSec');
- $('#playerSec').empty();
-
- if (player[0].canPlayType('audio/mpeg;')) {
- player.attr('type', 'audio/mpeg');
- player.attr('src', 'sound/'+sndMention+'.mp3');
- } else {
- player.attr('type', 'audio/ogg');
- player.attr('src', 'sound/'+sndMention+'.ogg');
+ });
+ this.add({
+ name: 'TopTrendsAutoUpdate',
+ valDefault: 'enable',
+ tickMethod: function (elem) {
+ $('#TopTrendsAutoUpdateOpt').css('display', (elem.value === 'enable') ? 'inline' : 'none');
}
- player[0].volume = this.getOption('playerVol',1);
- player[0].play();
- }
-
- this.getShowDesktopNotifPostsOpt = function() {
- return this.getOption('showDesktopNotifPosts', 'enable');
- }
-
- this.setShowDesktopNotifPostsOpt = function () {
- function showDesktopNotifPostsDesc() {
- if ($.Options.getShowDesktopNotifPostsOpt() === 'enable')
- $('#showDesktopNotifPostsDesc').css('display', 'inline');
- else
- $('#showDesktopNotifPostsDesc').css('display', 'none');
+ });
+ this.add({
+ name: 'TopTrendsAutoUpdateTimer',
+ type: 'numeric',
+ valDefault: '120',
+ valMes: 'second(s)',
+ getMethod: function (val) {return parseInt(val);}
+ });
+ this.add({
+ name: 'WhoToFollow',
+ valDefault: 'enable'
+ });
+ this.add({
+ name: 'TwistdayReminder',
+ valDefault: 'enable',
+ tickMethod: function (elem) {
+ $('#TwistdayReminderCont').css('display', (elem.value === 'enable') ? 'block' : 'none');
}
- $('#showDesktopNotifPosts').val( this.getShowDesktopNotifPostsOpt() );
- showDesktopNotifPostsDesc();
- $('#showDesktopNotifPosts').on('change', function() {
- $.Options.setOption(this.id, this.value);
- showDesktopNotifPostsDesc();
- });
- }
-
- this.getShowDesktopNotifPostsTimerOpt = function () {
- return parseInt(this.getOption('showDesktopNotifPostsTimer', '6'));
- }
-
- this.setShowDesktopNotifPostsTimerOpt = function () {
- $('#showDesktopNotifPostsTimer').val( this.getShowDesktopNotifPostsTimerOpt().toString() );
- $('#showDesktopNotifPostsTimer').on('keyup', function () { setElemValNumeric(this, polyglot.t('second(s)')); });
- }
-
- this.getShowDesktopNotifPostsModalOpt = function() {
- return this.getOption('showDesktopNotifPostsModal', 'enable');
- }
-
- this.setShowDesktopNotifPostsModalOpt = function () {
- function showDesktopNotifPostsModalDesc() {
- if ($.Options.getShowDesktopNotifPostsModalOpt() === 'enable')
- $('#showDesktopNotifPostsModalDesc').css('display', 'inline');
- else
- $('#showDesktopNotifPostsModalDesc').css('display', 'none');
+ });
+ this.add({
+ name: 'TwistdayReminderAutoUpdate',
+ valDefault: 'enable',
+ tickMethod: function (elem) {
+ $('#TwistdayReminderAutoUpdateOpt').css('display', (elem.value === 'enable') ? 'inline' : 'none');
}
- $('#showDesktopNotifPostsModal').val( this.getShowDesktopNotifPostsModalOpt() );
- showDesktopNotifPostsModalDesc();
- $('#showDesktopNotifPostsModal').on('change', function() {
- $.Options.setOption(this.id, this.value);
- showDesktopNotifPostsModalDesc();
- });
- }
-
- this.getShowDesktopNotifPostsModalTimerOpt = function () {
- return parseInt(this.getOption('showDesktopNotifPostsModalTimer', '6'));
- }
-
- this.setShowDesktopNotifPostsModalTimerOpt = function () {
- $('#showDesktopNotifPostsModalTimer').val( this.getShowDesktopNotifPostsModalTimerOpt().toString() );
- $('#showDesktopNotifPostsModalTimer').on('keyup', function () { setElemValNumeric(this, polyglot.t('second(s)')); });
- }
-
- this.getShowDesktopNotifMentionsOpt = function() {
- return this.getOption('showDesktopNotifMentions', 'enable');
- }
-
- this.setShowDesktopNotifMentionsOpt = function () {
- function showDesktopNotifMentionsDesc() {
- if ($.Options.getShowDesktopNotifMentionsOpt() === 'enable')
- $('#showDesktopNotifMentionsDesc').css('display', 'inline');
- else
- $('#showDesktopNotifMentionsDesc').css('display', 'none');
+ });
+ this.add({
+ name: 'TwistdayReminderAutoUpdateTimer',
+ type: 'numeric',
+ valDefault: '3600',
+ valMes: 'second(s)',
+ getMethod: function (val) {return parseInt(val);}
+ });
+ this.add({
+ name: 'TwistdayReminderShowUpcoming',
+ valDefault: 'enable',
+ tickMethod: function (elem) {
+ $('#TwistdayReminderShowUpcomingOpt').css('display', (elem.value === 'enable') ? 'inline' : 'none');
}
- $('#showDesktopNotifMentions').val( this.getShowDesktopNotifMentionsOpt() );
- showDesktopNotifMentionsDesc();
- $('#showDesktopNotifMentions').on('change', function() {
- $.Options.setOption(this.id, this.value);
- showDesktopNotifMentionsDesc();
- });
- }
-
- this.getShowDesktopNotifMentionsTimerOpt = function () {
- return parseInt(this.getOption('showDesktopNotifMentionsTimer', '60'));
- }
-
- this.setShowDesktopNotifMentionsTimerOpt = function () {
- $('#showDesktopNotifMentionsTimer').val( this.getShowDesktopNotifMentionsTimerOpt().toString() );
- $('#showDesktopNotifMentionsTimer').on('keyup', function () {setElemValNumeric(this, polyglot.t('second(s)'));});
- }
-
- this.getShowDesktopNotifDMsOpt = function() {
- return this.getOption('showDesktopNotifDMs', 'enable');
- }
-
- this.setShowDesktopNotifDMsOpt = function () {
- function showDesktopNotifDMsDesc() {
- if ($.Options.getShowDesktopNotifDMsOpt() === 'enable')
- $('#showDesktopNotifDMsDesc').css('display', 'inline');
- else
- $('#showDesktopNotifDMsDesc').css('display', 'none');
+ });
+ this.add({
+ name: 'TwistdayReminderShowUpcomingTimer',
+ type: 'numeric',
+ valDefault: '72',
+ valMes: 'hour(s)',
+ getMethod: function (val) {return parseInt(val);}
+ });
+ this.add({
+ name: 'showDesktopNotifPosts',
+ valDefault: 'enable',
+ tickMethod: function (elem) {
+ $('#showDesktopNotifPostsDesc').css('display', (elem.value === 'enable') ? 'inline' : 'none');
}
- $('#showDesktopNotifDMs').val( this.getShowDesktopNotifDMsOpt() );
- showDesktopNotifDMsDesc();
- $('#showDesktopNotifDMs').on('change', function() {
- $.Options.setOption(this.id, this.value);
- showDesktopNotifDMsDesc();
- });
- }
-
- this.getShowDesktopNotifDMsTimerOpt = function () {
- return parseInt(this.getOption('showDesktopNotifDMsTimer', '60'));
- }
-
- this.setShowDesktopNotifDMsTimerOpt = function () {
- $('#showDesktopNotifDMsTimer').val( this.getShowDesktopNotifDMsTimerOpt().toString() );
- $('#showDesktopNotifDMsTimer').on('keyup', function () { setElemValNumeric(this, polyglot.t('second(s)')); });
- }
-
- this.setTestDesktopNotif = function() {
- $('#testDesktopNotif').on('click', function() {
- $.MAL.showDesktopNotif(false, polyglot.t('notify_desktop_test'), false,'twister_notification_test', false, false, function() { alert(polyglot.t('notify_desktop_perm_denied', {'this_domain': document.domain})) })
- })
- }
-
- this.keysSendDefault = 'ctrlenter';
- this.keysSend = function() {
- $('#keysOpt select').val( this.getOption('keysSend',this.keysSendDefault) );
- $('#keysOpt select').on('change', function() { $.Options.setOption(this.id, this.value); });
- }
-
- this.keyEnterToSend = function() {
- return this.getOption('keysSend', this.keysSendDefault) === 'enter';
- }
-
- this.setLang = function() {
- $('#language').val( this.getOption('locLang', 'auto') );
- $('#language').on('change', function() {
- $.Options.setOption('locLang', $(this).val());
- if($(this).val() != 'auto') {
- twisterRpc("setpreferredspamlang", [$(this).val()]);
- }
- location.reload();
- })
- }
-
- this.getTheme = function() {
- return this.getOption('theme', 'original');
- }
-
- this.setTheme = function() {
- $('#theme').val( this.getTheme() )
- $('#theme').on('change', function() {
- $.Options.setOption('theme', $(this).val());
- location.reload();
- });
- }
-
- this.getLineFeedsOpt = function() {
- return this.getOption('displayLineFeeds', 'disable');
- }
-
- this.setLineFeedsOpt = function() {
- $('#lineFeedsOpt select').val( this.getLineFeedsOpt() );
- $('#lineFeedsOpt select').on('change', function() { $.Options.setOption(this.id, this.value); });
- }
-
- this.getShowPreviewOpt = function() {
- return this.getOption('displayPreview', 'disable');
- }
-
- this.setShowPreviewOpt = function () {
- $('#showPreviewOpt select').val( this.getShowPreviewOpt() );
- $('#showPreviewOpt select').on('change', function() { $.Options.setOption(this.id, this.value); });
- }
-
- this.getUnicodeConversionOpt = function () {
- return this.getOption('unicodeConversion', 'disable');
- }
-
- this.setUnicodeConversionOpt = function () {
- $('#unicodeConversion').val( this.getUnicodeConversionOpt() );
-
- if (this.getUnicodeConversionOpt() === 'custom')
- $('#unicodeConversionOpt .suboptions').css('height', 'auto');
-
- $('#unicodeConversion').on('change', function () {
- $.Options.setOption(this.id, this.value);
- if (this.value === 'custom')
- $('#unicodeConversionOpt .suboptions').css('height', 'auto');
- else
- $('#unicodeConversionOpt .suboptions').css('height', '0px');
- });
- }
-
- this.getConvertPunctuationsOpt = function() {
- return this.getOption('convertPunctuationsOpt', false);
- }
-
- this.setConvertPunctuationsOpt = function () {
- $('#convertPunctuationsOpt').prop('checked', this.getConvertPunctuationsOpt());
- $('#convertPunctuationsOpt').on('change', function() { $.Options.setOption(this.id, this.checked); });
- }
-
- this.getConvertEmotionsOpt = function() {
- return this.getOption('convertEmotionsOpt', false);
- }
-
- this.setConvertEmotionsOpt = function () {
- $('#convertEmotionsOpt').prop('checked', this.getConvertEmotionsOpt());
- $('#convertEmotionsOpt').on('change', function() { $.Options.setOption(this.id, this.checked); });
- }
-
- this.getConvertSignsOpt = function() {
- return this.getOption('convertSignsOpt', false);
- }
-
- this.setConvertSignsOpt = function () {
- $('#convertSignsOpt').prop('checked', this.getConvertSignsOpt());
- $('#convertSignsOpt').on('change', function() { $.Options.setOption(this.id, this.checked); });
- }
-
- this.getConvertFractionsOpt = function() {
- return this.getOption('convertFractionsOpt', false);
- }
-
- this.setConvertFractionsOpt = function () {
- $('#convertFractionsOpt').prop('checked', this.getConvertFractionsOpt());
- $('#convertFractionsOpt').on('change', function() { $.Options.setOption(this.id, this.checked); });
- }
-
- this.getUseProxyOpt = function () {
- return this.getOption('useProxy', 'disable');
- }
-
- this.setUseProxyOpt = function () {
- $('#useProxy').val( this.getUseProxyOpt() );
-
- if (this.getUseProxyOpt() === 'disable')
- $('#useProxyForImgOnly').attr('disabled', 'disabled');
-
- $('#useProxy').on('change', function () {
- $.Options.setOption(this.id, this.value);
- if (this.value === 'disable')
- $('#useProxyForImgOnly').attr('disabled', 'disabled');
- else
- $('#useProxyForImgOnly').removeAttr('disabled');
- });
- }
-
- this.getUseProxyForImgOnlyOpt = function () {
- return this.getOption('useProxyForImgOnly', false);
- }
-
- this.setUseProxyForImgOnlyOpt = function () {
- $('#useProxyForImgOnly').prop('checked', this.getUseProxyForImgOnlyOpt());
- $('#useProxyForImgOnly').on('change', function () { $.Options.setOption(this.id, this.checked); });
- }
-
- this.getTopTrendsOpt = function() {
- return this.getOption('TopTrends', 'enable');
- }
-
- this.setTopTrendsOpt = function () {
- function TopTrendsCfg() {
- if ($.Options.getTopTrendsOpt() === 'enable')
- $('#TopTrendsCont').show();
- else
- $('#TopTrendsCont').hide();
+ });
+ this.add({
+ name: 'showDesktopNotifPostsTimer',
+ type: 'numeric',
+ valDefault: '6',
+ valMes: 'second(s)',
+ getMethod: function (val) {return parseInt(val);}
+ });
+ this.add({
+ name: 'showDesktopNotifPostsModal',
+ valDefault: 'enable',
+ tickMethod: function (elem) {
+ $('#showDesktopNotifPostsModalDesc').css('display', (elem.value === 'enable') ? 'inline' : 'none');
}
- $('#TopTrends').val( this.getTopTrendsOpt() );
- TopTrendsCfg();
- $('#TopTrends').on('change', function() {
- $.Options.setOption(this.id, this.value);
- TopTrendsCfg();
- });
- }
-
- this.getTopTrendsAutoUpdateOpt = function() {
- return this.getOption('TopTrendsAutoUpdate', 'enable');
- }
-
- this.setTopTrendsAutoUpdateOpt = function () {
- function TopTrendsAutoUpdateCfg() {
- if ($.Options.getTopTrendsAutoUpdateOpt() === 'enable')
- $('#TopTrendsAutoUpdateOpt').css('display', 'inline');
- else
- $('#TopTrendsAutoUpdateOpt').css('display', 'none');
+ });
+ this.add({
+ name: 'showDesktopNotifPostsModalTimer',
+ type: 'numeric',
+ valDefault: '6',
+ valMes: 'second(s)',
+ getMethod: function (val) {return parseInt(val);}
+ });
+ this.add({
+ name: 'showDesktopNotifMentions',
+ valDefault: 'enable',
+ tickMethod: function (elem) {
+ $('#showDesktopNotifMentionsDesc').css('display', (elem.value === 'enable') ? 'inline' : 'none');
}
- $('#TopTrendsAutoUpdate').val( this.getTopTrendsAutoUpdateOpt() );
- TopTrendsAutoUpdateCfg();
- $('#TopTrendsAutoUpdate').on('change', function() {
- $.Options.setOption(this.id, this.value);
- TopTrendsAutoUpdateCfg();
- });
- }
-
- this.getTopTrendsAutoUpdateTimerOpt = function () {
- return parseInt(this.getOption('TopTrendsAutoUpdateTimer', '120'));
- }
-
- this.setTopTrendsAutoUpdateTimerOpt = function () {
- $('#TopTrendsAutoUpdateTimer').val( this.getTopTrendsAutoUpdateTimerOpt().toString() );
- $('#TopTrendsAutoUpdateTimer').on('keyup', function () { setElemValNumeric(this, polyglot.t('second(s)')); });
- }
-
- this.getTwistdayReminderOpt = function() {
- return this.getOption('TwistdayReminder', 'enable');
- }
-
- this.setTwistdayReminderOpt = function () {
- function TwistdayReminderCfg() {
- if ($.Options.getTwistdayReminderOpt() === 'enable')
- $('#TwistdayReminderCont').show();
- else
- $('#TwistdayReminderCont').hide();
+ });
+ this.add({
+ name: 'showDesktopNotifMentionsTimer',
+ type: 'numeric',
+ valDefault: '60',
+ valMes: 'second(s)',
+ getMethod: function (val) {return parseInt(val);}
+ });
+ this.add({
+ name: 'showDesktopNotifDMs',
+ valDefault: 'enable',
+ tickMethod: function (elem) {
+ $('#showDesktopNotifDMsDesc').css('display', (elem.value === 'enable') ? 'inline' : 'none');
}
- $('#TwistdayReminder').val( this.getTwistdayReminderOpt() );
- TwistdayReminderCfg();
- $('#TwistdayReminder').on('change', function() {
- $.Options.setOption(this.id, this.value);
- TwistdayReminderCfg();
- });
- }
-
- this.getTwistdayReminderAutoUpdateOpt = function() {
- return this.getOption('TwistdayReminderAutoUpdate', 'enable');
- }
-
- this.setTwistdayReminderAutoUpdateOpt = function () {
- function TwistdayReminderAutoUpdateCfg() {
- if ($.Options.getTwistdayReminderAutoUpdateOpt() === 'enable')
- $('#TwistdayReminderAutoUpdateOpt').css('display', 'inline');
- else
- $('#TwistdayReminderAutoUpdateOpt').css('display', 'none');
+ });
+ this.add({
+ name: 'showDesktopNotifDMsTimer',
+ type: 'numeric',
+ valDefault: '60',
+ valMes: 'second(s)',
+ getMethod: function (val) {return parseInt(val);}
+ });
+ this.add({
+ name: 'displayLineFeeds',
+ valDefault: 'enable'
+ });
+ this.add({
+ name: 'displayPreview',
+ valDefault: 'disable'
+ });
+ this.add({
+ name: 'unicodeConversion',
+ valDefault: 'disable',
+ tickMethod: function (elem) {
+ $('#unicodeConversionOpt .suboptions').css('height', (elem.value === 'custom') ? 'auto' : '0');
}
- $('#TwistdayReminderAutoUpdate').val( this.getTwistdayReminderAutoUpdateOpt() );
- TwistdayReminderAutoUpdateCfg();
- $('#TwistdayReminderAutoUpdate').on('change', function() {
- $.Options.setOption(this.id, this.value);
- TwistdayReminderAutoUpdateCfg();
- });
- }
-
- this.getTwistdayReminderAutoUpdateTimerOpt = function () {
- return parseInt(this.getOption('TwistdayReminderAutoUpdateTimer', '3600'));
- }
-
- this.setTwistdayReminderAutoUpdateTimerOpt = function () {
- $('#TwistdayReminderAutoUpdateTimer').val( this.getTwistdayReminderAutoUpdateTimerOpt().toString() );
- $('#TwistdayReminderAutoUpdateTimer').on('keyup', function () { setElemValNumeric(this, polyglot.t('second(s)')); });
- }
-
- this.getTwistdayReminderShowUpcomingOpt = function() {
- return this.getOption('TwistdayReminderShowUpcoming', 'enable');
- }
-
- this.setTwistdayReminderShowUpcomingOpt = function () {
- function TwistdayReminderShowUpcomingCfg() {
- if ($.Options.getTwistdayReminderShowUpcomingOpt() === 'enable')
- $('#TwistdayReminderShowUpcomingOpt').css('display', 'inline');
- else
- $('#TwistdayReminderShowUpcomingOpt').css('display', 'none');
+ });
+ this.add({
+ name: 'convertPunctuationsOpt',
+ type: 'checkbox',
+ valDefault: false
+ });
+ this.add({
+ name: 'convertEmotionsOpt',
+ type: 'checkbox',
+ valDefault: false
+ });
+ this.add({
+ name: 'convertSignsOpt',
+ type: 'checkbox',
+ valDefault: false
+ });
+ this.add({
+ name: 'convertFractionsOpt',
+ type: 'checkbox',
+ valDefault: false
+ });
+ this.add({
+ name: 'useProxy',
+ valDefault: 'disable',
+ tickMethod: function (elem) {
+ $('#useProxyForImgOnly').attr('disabled', (elem.value === 'disable') ? true : false);
}
- $('#TwistdayReminderShowUpcoming').val( this.getTwistdayReminderShowUpcomingOpt() );
- TwistdayReminderShowUpcomingCfg();
- $('#TwistdayReminderShowUpcoming').on('change', function() {
- $.Options.setOption(this.id, this.value);
- TwistdayReminderShowUpcomingCfg();
- });
- }
-
- this.getTwistdayReminderShowUpcomingTimerOpt = function () {
- return parseInt(this.getOption('TwistdayReminderShowUpcomingTimer', '72'));
- }
-
- this.setTwistdayReminderShowUpcomingTimerOpt = function () {
- $('#TwistdayReminderShowUpcomingTimer').val( this.getTwistdayReminderShowUpcomingTimerOpt().toString() );
- $('#TwistdayReminderShowUpcomingTimer').on('keyup', function () { setElemValNumeric(this, polyglot.t('hour(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 () {
- return this.getOption('splitPosts', 'disable');
- }
-
- this.setSplitPostsOpt = function () {
- $('#splitPosts').val( this.getSplitPostsOpt() );
- $('#splitPosts').on('change', function () { $.Options.setOption(this.id, this.value); });
- }
-
- this.getHideRepliesOpt = function () {
- return this.getOption('hideReplies', 'following');
- }
-
- this.setHideRepliesOpt = function () {
- $('#hideReplies').val( this.getHideRepliesOpt() );
- $('#hideReplies').on('change', function () { $.Options.setOption(this.id, this.value); });
- }
-
- this.getHideCloseRTsOpt = function () {
- return this.getOption('hideCloseRTs', 'disable');
- };
-
- this.setHideCloseRTsOpt = function () {
- function hideCloseRTsCfg() {
- if ($.Options.getHideCloseRTsOpt() === 'disable')
- $('#hideCloseRTsDesc').css('display', 'none');
- else
- $('#hideCloseRTsDesc').css('display', 'inline');
+ });
+ this.add({
+ name: 'useProxyForImgOnly',
+ type: 'checkbox',
+ valDefault: false
+ });
+ this.add({
+ name: 'splitPosts',
+ valDefault: 'disable'
+ });
+ this.add({
+ name: 'isFollowingMe',
+ valDefault: 'in-profile'
+ });
+ this.add({
+ name: 'dmCopySelf',
+ valDefault: 'enable'
+ });
+ this.add({
+ name: 'hideReplies',
+ valDefault: 'following'
+ });
+ this.add({
+ name: 'hideCloseRTs',
+ valDefault: 'disable',
+ tickMethod: function (elem) {
+ $('#hideCloseRTsDesc').css('display', (elem.value === 'show-if') ? 'inline' : 'none');
}
- $('#hideCloseRTs').val( this.getHideCloseRTsOpt() );
- hideCloseRTsCfg();
- $('#hideCloseRTs').on('change', function () {
- $.Options.setOption(this.id, this.value);
- hideCloseRTsCfg();
- });
- };
-
- this.getHideCloseRTsHourOpt = function () {
- return parseInt(this.getOption('hideCloseRtsHour', '1'));
- };
-
- this.setHideCloseRTsHourOpt = function () {
- $('#hideCloseRtsHour').val( this.getHideCloseRTsHourOpt().toString() );
- $('#hideCloseRtsHour').on('keyup', function () { setElemValNumeric(this, polyglot.t('hour(s)')); });
- };
-
- this.getFilterLangOpt = function() {
- return this.getOption('filterLang', 'disable');
- }
-
- this.setFilterLangOpt = function () {
- function filterLangListCont() {
- if ( $.Options.getFilterLangOpt() !== 'disable' )
- $('#filterLangListCont').css('display', 'block');
- else
- $('#filterLangListCont').css('display', 'none');
+ });
+ this.add({
+ name: 'hideCloseRtsHour',
+ type: 'numeric',
+ valDefault: '1',
+ valMes: 'hour(s)',
+ getMethod: function (val) {return parseInt(val);}
+ });
+ this.add({
+ name: 'filterLang',
+ valDefault: 'disable',
+ tickMethod: function (elem) {
+ $('#filterLangListCont').css('display', (elem.value === 'disable') ? 'none' : 'block');
}
- $('#filterLang').val( this.getFilterLangOpt() );
- filterLangListCont();
- $('#filterLang').on('change', function() {
- $.Options.setOption(this.id, this.value);
- filterLangListCont();
- });
- }
-
- this.getFilterLangListOpt = function () {
- return this.getOption('filterLangList', '').replace(/\s+/g, '').split(/\s*,\s*/);
- }
-
- this.setFilterLangListOpt = function () {
- $('#filterLangList').val( this.getFilterLangListOpt() );
-
- $('#filterLangList').on('keyup', function () { $.Options.setOption(this.id, this.value); });
- }
-
- this.getFilterLangAccuracyOpt = function () {
- return parseFloat(this.getOption('filterLangAccuracy', '0.82'));
- }
+ });
+ this.add({
+ name: 'filterLangList',
+ valDefault: '',
+ getMethod: function (val) {return val.split(/\s*,\s*/);}
+ });
+ this.add({
+ name: 'filterLangAccuracy',
+ valDefault: '0.82',
+ getMethod: function (val) {return parseFloat(val);},
+ tickMethod: function (elem) {$('#filterLangAccuracyVal').text(elem.value);}
+ });
+ this.add({
+ name: 'filterLangForPostboard',
+ type: 'checkbox',
+ valDefault: true
+ });
+ this.add({
+ name: 'filterLangForSearching',
+ type: 'checkbox',
+ valDefault: true
+ });
+ this.add({
+ name: 'filterLangForTopTrends',
+ type: 'checkbox',
+ valDefault: true
+ });
+ this.add({
+ name: 'filterLangSimulate',
+ type: 'checkbox',
+ valDefault: true
+ });
+ this.add({
+ name: 'keysSend',
+ valDefault: 'ctrlenter'
+ });
+ this.add({
+ name: 'sndMention',
+ valDefault: 'false',
+ tickMethod: function () {$.MAL.soundNotifyMentions();}, // FIXME it's wrapped because $.MAL may be not loaded yet; $.MAL methods should be static
+ tickNotOnInit: 1
+ });
+ this.add({
+ name: 'sndDM',
+ valDefault: 'false',
+ tickMethod: function () {$.MAL.soundNotifyDM();}, // FIXME it's wrapped because $.MAL may be not loaded yet; $.MAL methods should be static
+ tickNotOnInit: 1
+ });
+ this.add({
+ name: 'playerVol',
+ valDefault: 1,
+ getMethod: function (val) {return parseFloat(val);},
+ tickMethod: function (elem) {$('.volValue').text((elem.value * 100).toFixed());}
+ });
+}
- this.setFilterLangAccuracyOpt = function () {
- $('#filterLangAccuracy').val( this.getFilterLangAccuracyOpt() );
- $('#filterLangAccuracyVal').text( this.getFilterLangAccuracyOpt() );
- $('#filterLangAccuracy').on('change', function () {
- $.Options.setOption(this.id, this.value);
- $('#filterLangAccuracyVal').text(this.value);
- });
+twisterOptions.prototype.add = function (option) {
+ if (option.name && !this[option.name])
+ this[option.name] = new twisterOption(option);
+};
+
+twisterOptions.prototype.initControls = function () {
+ for (var option in this) {
+ if (typeof this[option] === 'object') {
+ var elem = $(this[option].option.selector);
+ if (elem.length) {
+ if (elem.attr('type') && elem.attr('type').toLowerCase() === 'checkbox')
+ elem.prop('checked', /^\s*1|true\s*$/i.test(this[option].val))
+ .on('change', (this[option].tick).bind(this[option]))
+ ;
+ else {
+ elem.val(this[option].val)
+ .on((elem[0].tagName === 'SELECT') ? 'change' : 'input', (this[option].tick).bind(this[option]))
+ ;
+ }
+ if (!this[option].option.tickNotOnInit && typeof this[option].option.tickMethod === 'function')
+ this[option].option.tickMethod(elem[0]);
+ } else
+ console.warn('cannot find option \''+option+'\' controls, selector: '+this[option].option.selector);
+ }
}
- this.getFilterLangForPostboardOpt = function () {
- return this.getOption('filterLangForPostboard', true);
- }
+ $('#testDesktopNotif').on('click', function() {
+ $.MAL.showDesktopNotif(false, polyglot.t('notify_desktop_test'), false,'twister_notification_test', false, false, function() { alert(polyglot.t('notify_desktop_perm_denied', {'this_domain': document.domain})) })
+ });
+};
- this.setFilterLangForPostboardOpt = function () {
- $('#filterLangForPostboard').prop('checked', this.getFilterLangForPostboardOpt());
- $('#filterLangForPostboard').on('click', function () { $.Options.setOption(this.id, this.checked); });
- }
+function twisterOption(option) {
+ this.option = option;
- this.getFilterLangForSearchingOpt = function () {
- return this.getOption('filterLangForSearching', true);
+ if (!option.selector)
+ this.option.selector = '#' + option.name;
+ if (option.valRaw) {
+ this.set(option.valRaw);
+ } else {
+ var keyName = 'options:' + option.name;
+ if ($.localStorage.isSet(keyName))
+ this.option.valRaw = $.localStorage.get(keyName);
+ else
+ this.option.valRaw = option.valDefault;
+ this.val = (this.option.getMethod) ? this.option.getMethod(this.option.valRaw) : this.option.valRaw;
}
+}
- this.setFilterLangForSearchingOpt = function () {
- $('#filterLangForSearching').prop('checked', this.getFilterLangForSearchingOpt());
- $('#filterLangForSearching').on('click', function () { $.Options.setOption(this.id, this.checked); });
- }
+twisterOption.prototype.val = undefined;
- this.getFilterLangForTopTrendsOpt = function () {
- return this.getOption('filterLangForTopTrends', true);
- }
+twisterOption.prototype.set = function (val) {
+ this.val = (this.option.getMethod) ? this.option.getMethod(val) : val;
+ this.option.valRaw = val;
- this.setFilterLangForTopTrendsOpt = function () {
- $('#filterLangForTopTrends').prop('checked', this.getFilterLangForTopTrendsOpt());
- $('#filterLangForTopTrends').on('click', function () { $.Options.setOption(this.id, this.checked); });
- }
+ $.localStorage.set('options:' + this.option.name, val);
+};
- this.getFilterLangSimulateOpt = function () {
- return this.getOption('filterLangSimulate', true);
+twisterOption.prototype.tick = function (event) {
+ if (this.option.type !== 'numeric' || checkForNumeric(event.target)) {
+ this.set((this.option.type === 'checkbox') ? event.target.checked : event.target.value);
+ if (this.option.valMes)
+ $(event.target).next('span').text(polyglot.t(this.option.valMes));
+ if (typeof this.option.tickMethod === 'function')
+ this.option.tickMethod(event.target);
}
+};
- this.setFilterLangSimulateOpt = function () {
- $('#filterLangSimulate').prop('checked', this.getFilterLangSimulateOpt());
- $('#filterLangSimulate').on('click', function () { $.Options.setOption(this.id, this.checked); });
- }
+jQuery.Options = new twisterOptions();
- this.getIsFollowingMeOpt = function () {
- return this.getOption('isFollowingMe', 'in-profile');
- };
- this.setIsFollowingMeOpt = function () {
- $('#isFollowingMe').val( this.getIsFollowingMeOpt() );
- $('#isFollowingMe').on('change', function () { $.Options.setOption(this.id, this.value); });
- };
-
- this.getDMCopySelfOpt = function() {
- return this.getOption('dmCopySelf', 'enable');
- }
-
- this.setDMCopySelfOpt = function () {
- $('#dmCopySelfOpt select').val( this.getDMCopySelfOpt() );
- $('#dmCopySelfOpt select').on('change', function() { $.Options.setOption(this.id, this.value); });
- }
-
- this.InitOptions = function() {
- this.soundNotifOptions();
- this.volumeControl();
- this.keysSend();
- this.setLang();
- this.setTheme();
- this.setShowDesktopNotifPostsOpt();
- this.setShowDesktopNotifPostsTimerOpt();
- this.setShowDesktopNotifPostsModalOpt();
- this.setShowDesktopNotifPostsModalTimerOpt();
- this.setShowDesktopNotifMentionsOpt();
- this.setShowDesktopNotifMentionsTimerOpt();
- this.setShowDesktopNotifDMsOpt();
- this.setShowDesktopNotifDMsTimerOpt();
- this.setTestDesktopNotif();
- this.setLineFeedsOpt();
- this.setShowPreviewOpt();
- this.setUnicodeConversionOpt();
- this.setConvertPunctuationsOpt();
- this.setConvertEmotionsOpt();
- this.setConvertSignsOpt();
- this.setConvertFractionsOpt();
- this.setUseProxyOpt();
- this.setUseProxyForImgOnlyOpt();
- this.setTopTrendsOpt();
- this.setTopTrendsAutoUpdateOpt();
- this.setTopTrendsAutoUpdateTimerOpt();
- this.setTwistdayReminderOpt();
- this.setTwistdayReminderAutoUpdateOpt();
- this.setTwistdayReminderAutoUpdateTimerOpt();
- this.setTwistdayReminderShowUpcomingOpt();
- this.setTwistdayReminderShowUpcomingTimerOpt();
- this.setWhoToFollowOpt();
- this.setSplitPostsOpt();
- this.setHideRepliesOpt();
- this.setHideCloseRTsHourOpt();
- this.setHideCloseRTsOpt();
- this.setFilterLangOpt();
- this.setFilterLangListOpt();
- this.setFilterLangAccuracyOpt();
- this.setFilterLangForPostboardOpt();
- this.setFilterLangForSearchingOpt();
- this.setFilterLangForTopTrendsOpt();
- this.setFilterLangSimulateOpt();
- this.setIsFollowingMeOpt();
- this.setDMCopySelfOpt();
+function checkForNumeric(elem) {
+ if (/^\d+\.?\d*$/.test(elem.value) && parseFloat(elem.value) > 0) {
+ elem.style.backgroundColor = '';
+ return true;
+ } else {
+ elem.style.backgroundColor = '#f00';
+ $(elem).next('span').text(polyglot.t('only positive numbers!'));
+ return false;
}
-
- function setElemValNumeric(elem, mes) {
- //var elem = $(elem_nm);
- if (/^\d+$/.test(elem.value) && parseFloat(elem.value) > 0) {
- elem.style.backgroundColor = '';
- $.Options.setOption(elem.id, elem.value);
- $(elem).next('span').text(mes);
- } else {
- elem.style.backgroundColor = '#f00';
- $(elem).next('span').text(polyglot.t('only positive numbers!'));
- }
- };
-}
-
-jQuery.Options = new TwisterOptions;
-
-function localizeLabels()
-{
- $("label[for=tab_language]").text(polyglot.t("Language"));
- $("label[for=t-2]").text(polyglot.t("Theme"));
- $("label[for=t-3]").text(polyglot.t("Notifications"));
- $("label[for=t-4]").text(polyglot.t("Keys"));
- $("label[for=t-5]").text(polyglot.t("Appearance"));
- $("label[for=t-6]").text(polyglot.t("Users"));
-}
-
-$(document).ready(localizeLabels);
+};
diff --git a/js/twister_actions.js b/js/twister_actions.js
index fc63fee..f8fda6f 100644
--- a/js/twister_actions.js
+++ b/js/twister_actions.js
@@ -162,12 +162,12 @@ function requestPost(containerToAppend,username,resource,cbFunc,cbArgs){
console.log(postFromJson);
appendPostToContainer(postFromJson,args.containerToAppend);
-
+
if(args.cbFunc!=undefined) args.cbFunc(args.cbArgs);
-
- }
- },
- {containerToAppend:containerToAppend,cbFunc:cbFunc,cbArgs:cbArgs}
+
+ }
+ },
+ {containerToAppend:containerToAppend,cbFunc:cbFunc,cbArgs:cbArgs}
);
}
@@ -185,7 +185,7 @@ function requestPostRecursively(containerToAppend,username,resource,count,useGet
}
profilePostsLoading = true;
-
+
if( useGetposts ) {
req = {username: username}
if( max_id != -1 ) {
@@ -290,7 +290,7 @@ function updateProfileData(profileModalContent, username) {
getFollowers( username, profileModalContent.find(".followers-count") );
getNumFollowing( username, profileModalContent.find(".following-count") );
getWhoFollows ( username, profileModalContent.find(".who-follow") );
-
+
profileModalContent.find(".following-count").parent().attr("href", $.MAL.followingUrl(username));
var postsView = profileModalContent.find(".postboard-posts");
@@ -333,7 +333,7 @@ function requestHashtag(postboard,hashtag,resource, timeoutArgs) {
dhtget( hashtag, resource, "m",
function(args, data) {
processHashtag(args.postboard, args.hashtag, data);
- }, {postboard:postboard,hashtag:hashtag},
+ }, {postboard:postboard,hashtag:hashtag},
timeoutArgs);
}
@@ -345,14 +345,14 @@ function processHashtag(postboard, hashtag, data) {
if( !(key in _hashtagProcessedMap) ) {
_hashtagProcessedMap[key] = true;
- if ($.Options.getFilterLangOpt() !== 'disable' && $.Options.getFilterLangForSearchingOpt()) {
+ if ($.Options.filterLang.val !== 'disable' && $.Options.filterLangForSearching.val) {
if (typeof(userpost['rt']) !== 'undefined') {
var msg = userpost['rt']['msg'];
} else {
var msg = userpost['msg'];
}
langFilterData = filterLang(msg);
- if ($.Options.getFilterLangSimulateOpt()) {
+ if ($.Options.filterLangSimulate.val) {
data[i]['langFilter'] = langFilterData;
} else {
if (!langFilterData['pass'])
diff --git a/js/twister_directmsg.js b/js/twister_directmsg.js
index b01a4a3..653f991 100644
--- a/js/twister_directmsg.js
+++ b/js/twister_directmsg.js
@@ -121,7 +121,7 @@ function newDirectMsg(msg, dm_screenname) {
if( lastPostId != undefined ) {
var paramsOrig = [defaultScreenName, lastPostId + 1, dm_screenname, msg]
var paramsOpt = paramsOrig
- var copySelf = ($.Options.getDMCopySelfOpt() === 'enable')
+ var copySelf = ($.Options.dmCopySelf.val === 'enable')
if( copySelf && dm_screenname[0] !== '*' ) {
paramsOpt = paramsOrig.concat(true)
}
diff --git a/js/twister_formatpost.js b/js/twister_formatpost.js
index 36ce3d7..964370d 100644
--- a/js/twister_formatpost.js
+++ b/js/twister_formatpost.js
@@ -122,7 +122,7 @@ function postToElem( post, kind, promoted ) {
if (typeof(promoted) !== 'undefined' && promoted) {
elem.find('.post-propagate').remove();
} else {
- if ($.Options.getFilterLangOpt() !== 'disable' && $.Options.getFilterLangSimulateOpt()) {
+ if ($.Options.filterLang.val !== 'disable' && $.Options.filterLangSimulate.val) {
// FIXME it's must be stuff from template actually
if (typeof(post['langFilter']) !== 'undefined') {
if (typeof(post['langFilter']['prob'][0]) !== 'undefined')
@@ -253,8 +253,8 @@ function htmlFormatMsg(msg, mentions) {
}
function proxyURL(url) {
- var proxyOpt = $.Options.getUseProxyOpt();
- if (proxyOpt !== 'disable' && !$.Options.getUseProxyForImgOnlyOpt()) {
+ var proxyOpt = $.Options.useProxy.val;
+ if (proxyOpt !== 'disable' && !$.Options.useProxyForImgOnly.val) {
// proxy alternatives may be added to options page
if (proxyOpt === 'ssl-proxy-my-addr') {
url = ['https://ssl-proxy.my-addr.org/myaddrproxy.php/',
@@ -270,7 +270,7 @@ function proxyURL(url) {
// TODO: add options for emotions; msg = $.emotions(msg);
// TODO: add at least basic markdown (optional) like *text* -> bold text and _text_ -> italic text
function _formatText(msg) {
- if ($.Options.getLineFeedsOpt() === 'enable')
+ if ($.Options.displayLineFeeds.val === 'enable')
msg = msg.replace(/\n/g, '
');
return msg;
diff --git a/js/twister_io.js b/js/twister_io.js
index a6366db..0680d5e 100644
--- a/js/twister_io.js
+++ b/js/twister_io.js
@@ -208,7 +208,7 @@ function getProfileResource( username, resource, item, cbFunc, cbArg ){
function getFullname( username, item ){
// Set the username first in case the profile has no fullname
item.text(username);
- getProfileResource( username, "fullname", undefined,
+ getProfileResource( username, "fullname", undefined,
function(args, value) {
if( value ) {
value.replace(/^\s+|\s+$/g, '');
@@ -217,7 +217,7 @@ function getFullname( username, item ){
}
}, {item: item} );
if (typeof(twisterFollowingO) !== 'undefined' &&
- ($.Options.getIsFollowingMeOpt() === 'everywhere' || item.hasClass('profile-name'))) {
+ ($.Options.isFollowingMe.val === 'everywhere' || item.hasClass('profile-name'))) {
if (twisterFollowingO.knownFollowers.indexOf(username) > -1) {
item.addClass('isFollowing');
item.attr("title", polyglot.t("follows you"));
@@ -332,10 +332,9 @@ function _putResourceIntoStorage(locator, data) {
// get avatar and set it in img.attr("src")
function getAvatar( username, img ){
- var theme = $.Options.getTheme();
- if( username == "nobody" ) {
- if(theme == 'nin') {img.attr('src', "theme_nin/img/tornado_avatar.png");}
- else {img.attr('src', "img/tornado_avatar.png");}
+ if (username === 'nobody') {
+ img.attr('src', ($.Options.theme.val === 'nin') ?
+ 'theme_nin/img/tornado_avatar.png' : 'img/tornado_avatar.png');
return;
}
diff --git a/js/twister_newmsgs.js b/js/twister_newmsgs.js
index bae9288..4cc3c95 100644
--- a/js/twister_newmsgs.js
+++ b/js/twister_newmsgs.js
@@ -102,8 +102,8 @@ function requestMentionsCount() {
if ( _newMentions ) {
$.MAL.soundNotifyMentions();
- if ($.Options.getShowDesktopNotifMentionsOpt() === 'enable') {
- $.MAL.showDesktopNotif(false, polyglot.t('You got')+' '+polyglot.t('new_mentions', _newMentions)+'.', false,'twister_notification_new_mentions', $.Options.getShowDesktopNotifMentionsTimerOpt(), function(){$.MAL.showMentions(defaultScreenName)}, false)
+ if ($.Options.showDesktopNotifMentions.val === 'enable') {
+ $.MAL.showDesktopNotif(false, polyglot.t('You got')+' '+polyglot.t('new_mentions', _newMentions)+'.', false,'twister_notification_new_mentions', $.Options.showDesktopNotifMentionsTimer.val, function(){$.MAL.showMentions(defaultScreenName)}, false)
}
}
}
@@ -117,8 +117,8 @@ function requestMentionsCount() {
if ( newDMs ) {
$.MAL.soundNotifyDM();
- if ($.Options.getShowDesktopNotifDMsOpt() === 'enable') {
- $.MAL.showDesktopNotif(false, polyglot.t('You got')+' '+polyglot.t('new_direct_messages', newDMs)+'.', false, 'twister_notification_new_DMs', $.Options.getShowDesktopNotifDMsTimerOpt(), function(){$.MAL.showDMchat()}, false)
+ if ($.Options.showDesktopNotifDMs.val === 'enable') {
+ $.MAL.showDesktopNotif(false, polyglot.t('You got')+' '+polyglot.t('new_direct_messages', newDMs)+'.', false, 'twister_notification_new_DMs', $.Options.showDesktopNotifDMsTimer.val, function(){$.MAL.showDMchat()}, false)
}
}
}
diff --git a/js/twister_timeline.js b/js/twister_timeline.js
index 0ae2b5c..38f5449 100644
--- a/js/twister_timeline.js
+++ b/js/twister_timeline.js
@@ -365,9 +365,9 @@ function willBeHidden(post){
if (post['userpost']['rt']['n'] === defaultScreenName)
return false;
- if ($.Options.getHideCloseRTsOpt() != 'disable' &&
+ if ($.Options.hideCloseRTs.val !== 'disable' &&
followingUsers.indexOf(post['userpost']['rt']['n']) > -1 &&
- parseInt(post['userpost']['time']) - parseInt(post['userpost']['rt']['time']) < $.Options.getHideCloseRTsHourOpt() * 3600)
+ parseInt(post['userpost']['time']) - parseInt(post['userpost']['rt']['time']) < $.Options.hideCloseRTsHour.val * 3600)
{
return true;
}
@@ -376,12 +376,11 @@ function willBeHidden(post){
} else {
var msg = post['userpost']['msg'];
- if ($.Options.getHideRepliesOpt() !== 'disable' &&
- /^\@/.test(msg) &&
+ if ($.Options.hideReplies.val !== 'disable' && /^\@/.test(msg) &&
!(new RegExp('@' + defaultScreenName + '( |,|;|\\.|:|\\/|\\?|\\!|\\\\|\'|"|\\n|\\t|$)').test(msg)))
{
- if ($.Options.getHideRepliesOpt() === 'only-me' ||
- ($.Options.getHideRepliesOpt() === 'following' &&
+ if ($.Options.hideReplies.val === 'only-me' ||
+ ($.Options.hideReplies.val === 'following' &&
followingUsers.indexOf(msg.substring(1, msg.search(/ |,|;|\.|:|\/|\?|\!|\\|'|"|\n|\t|$/))) === -1 ))
{
return true;
@@ -389,9 +388,9 @@ function willBeHidden(post){
}
}
- if ($.Options.getFilterLangOpt() !== 'disable' && $.Options.getFilterLangForPostboardOpt()) {
+ if ($.Options.filterLang.val !== 'disable' && $.Options.filterLangForPostboard.val) {
post['langFilter'] = filterLang(msg);
- if (!post['langFilter']['pass'] && !$.Options.getFilterLangSimulateOpt()) {
+ if (!post['langFilter']['pass'] && !$.Options.filterLangSimulate.val) {
// TODO maybe we need a counter of posts blocked by language filter and even caching of them and button to show?
//console.log('post by @'+post['userpost']['n']+' was hidden because it didn\'t passed by language filter:');
return true;
diff --git a/options.html b/options.html
index 72ed3a2..13e8f92 100644
--- a/options.html
+++ b/options.html
@@ -21,10 +21,12 @@
-
diff --git a/theme_nin/js/theme_option.js b/theme_nin/js/theme_option.js
index 844fd5b..40ff8b4 100644
--- a/theme_nin/js/theme_option.js
+++ b/theme_nin/js/theme_option.js
@@ -46,5 +46,16 @@ $(function(){
$(this).text('').attr('title', polyglot.t('Unfollow'));
});
+ if (/\/options.html$/i.test(document.location))
+ $(document).ready(localizeLabels);
});
+function localizeLabels() {
+ $("label[for=tab_language]").text(polyglot.t("Language"));
+ $("label[for=t-2]").text(polyglot.t("Theme"));
+ $("label[for=t-3]").text(polyglot.t("Notifications"));
+ $("label[for=t-4]").text(polyglot.t("Keys"));
+ $("label[for=t-5]").text(polyglot.t("Appearance"));
+ $("label[for=t-6]").text(polyglot.t("Users"));
+}
+