miguelfreitas
10 years ago
13 changed files with 484 additions and 803 deletions
@ -1,691 +1,353 @@
@@ -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'); |
||||
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 |
||||
}); |
||||
|
||||
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.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'); |
||||
} |
||||
|
||||
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.add({ |
||||
name: 'TopTrendsAutoUpdate', |
||||
valDefault: 'enable', |
||||
tickMethod: function (elem) { |
||||
$('#TopTrendsAutoUpdateOpt').css('display', (elem.value === 'enable') ? 'inline' : 'none'); |
||||
} |
||||
|
||||
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'); |
||||
} |
||||
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'); |
||||
} |
||||
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'); |
||||
} |
||||
$('#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'); |
||||
} |
||||
$('#showDesktopNotifPostsModal').val( this.getShowDesktopNotifPostsModalOpt() ); |
||||
showDesktopNotifPostsModalDesc(); |
||||
$('#showDesktopNotifPostsModal').on('change', function() { |
||||
$.Options.setOption(this.id, this.value); |
||||
showDesktopNotifPostsModalDesc(); |
||||
this.add({ |
||||
name: 'TopTrendsAutoUpdateTimer', |
||||
type: 'numeric', |
||||
valDefault: '120', |
||||
valMes: 'second(s)', |
||||
getMethod: function (val) {return parseInt(val);} |
||||
}); |
||||
} |
||||
|
||||
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'); |
||||
} |
||||
$('#showDesktopNotifMentions').val( this.getShowDesktopNotifMentionsOpt() ); |
||||
showDesktopNotifMentionsDesc(); |
||||
$('#showDesktopNotifMentions').on('change', function() { |
||||
$.Options.setOption(this.id, this.value); |
||||
showDesktopNotifMentionsDesc(); |
||||
this.add({ |
||||
name: 'WhoToFollow', |
||||
valDefault: 'enable' |
||||
}); |
||||
this.add({ |
||||
name: 'TwistdayReminder', |
||||
valDefault: 'enable', |
||||
tickMethod: function (elem) { |
||||
$('#TwistdayReminderCont').css('display', (elem.value === 'enable') ? 'block' : 'none'); |
||||
} |
||||
|
||||
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'); |
||||
} |
||||
$('#showDesktopNotifDMs').val( this.getShowDesktopNotifDMsOpt() ); |
||||
showDesktopNotifDMsDesc(); |
||||
$('#showDesktopNotifDMs').on('change', function() { |
||||
$.Options.setOption(this.id, this.value); |
||||
showDesktopNotifDMsDesc(); |
||||
}); |
||||
this.add({ |
||||
name: 'TwistdayReminderAutoUpdate', |
||||
valDefault: 'enable', |
||||
tickMethod: function (elem) { |
||||
$('#TwistdayReminderAutoUpdateOpt').css('display', (elem.value === 'enable') ? 'inline' : 'none'); |
||||
} |
||||
|
||||
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.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'); |
||||
} |
||||
|
||||
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(); |
||||
} |
||||
$('#TopTrends').val( this.getTopTrendsOpt() ); |
||||
TopTrendsCfg(); |
||||
$('#TopTrends').on('change', function() { |
||||
$.Options.setOption(this.id, this.value); |
||||
TopTrendsCfg(); |
||||
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'); |
||||
} |
||||
|
||||
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'); |
||||
} |
||||
$('#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(); |
||||
} |
||||
$('#TwistdayReminder').val( this.getTwistdayReminderOpt() ); |
||||
TwistdayReminderCfg(); |
||||
$('#TwistdayReminder').on('change', function() { |
||||
$.Options.setOption(this.id, this.value); |
||||
TwistdayReminderCfg(); |
||||
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'); |
||||
} |
||||
|
||||
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'); |
||||
} |
||||
$('#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'); |
||||
} |
||||
$('#TwistdayReminderShowUpcoming').val( this.getTwistdayReminderShowUpcomingOpt() ); |
||||
TwistdayReminderShowUpcomingCfg(); |
||||
$('#TwistdayReminderShowUpcoming').on('change', function() { |
||||
$.Options.setOption(this.id, this.value); |
||||
TwistdayReminderShowUpcomingCfg(); |
||||
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'); |
||||
} |
||||
|
||||
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'); |
||||
} |
||||
$('#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'); |
||||
} |
||||
$('#filterLang').val( this.getFilterLangOpt() ); |
||||
filterLangListCont(); |
||||
$('#filterLang').on('change', function() { |
||||
$.Options.setOption(this.id, this.value); |
||||
filterLangListCont(); |
||||
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'); |
||||
} |
||||
|
||||
this.getFilterLangListOpt = function () { |
||||
return this.getOption('filterLangList', '').replace(/\s+/g, '').split(/\s*,\s*/); |
||||
}); |
||||
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'); |
||||
} |
||||
|
||||
this.setFilterLangListOpt = function () { |
||||
$('#filterLangList').val( this.getFilterLangListOpt() ); |
||||
|
||||
$('#filterLangList').on('keyup', function () { $.Options.setOption(this.id, this.value); }); |
||||
}); |
||||
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); |
||||
} |
||||
|
||||
this.getFilterLangAccuracyOpt = function () { |
||||
return parseFloat(this.getOption('filterLangAccuracy', '0.82')); |
||||
}); |
||||
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'); |
||||
} |
||||
|
||||
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); |
||||
}); |
||||
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'); |
||||
} |
||||
}); |
||||
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.getFilterLangForPostboardOpt = function () { |
||||
return this.getOption('filterLangForPostboard', true); |
||||
} |
||||
twisterOptions.prototype.add = function (option) { |
||||
if (option.name && !this[option.name]) |
||||
this[option.name] = new twisterOption(option); |
||||
}; |
||||
|
||||
this.setFilterLangForPostboardOpt = function () { |
||||
$('#filterLangForPostboard').prop('checked', this.getFilterLangForPostboardOpt()); |
||||
$('#filterLangForPostboard').on('click', function () { $.Options.setOption(this.id, this.checked); }); |
||||
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])) |
||||
; |
||||
} |
||||
|
||||
this.getFilterLangForSearchingOpt = function () { |
||||
return this.getOption('filterLangForSearching', true); |
||||
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.setFilterLangForSearchingOpt = function () { |
||||
$('#filterLangForSearching').prop('checked', this.getFilterLangForSearchingOpt()); |
||||
$('#filterLangForSearching').on('click', function () { $.Options.setOption(this.id, this.checked); }); |
||||
} |
||||
|
||||
this.getFilterLangForTopTrendsOpt = function () { |
||||
return this.getOption('filterLangForTopTrends', 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.setFilterLangForTopTrendsOpt = function () { |
||||
$('#filterLangForTopTrends').prop('checked', this.getFilterLangForTopTrendsOpt()); |
||||
$('#filterLangForTopTrends').on('click', function () { $.Options.setOption(this.id, this.checked); }); |
||||
} |
||||
function twisterOption(option) { |
||||
this.option = option; |
||||
|
||||
this.getFilterLangSimulateOpt = function () { |
||||
return this.getOption('filterLangSimulate', 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.setFilterLangSimulateOpt = function () { |
||||
$('#filterLangSimulate').prop('checked', this.getFilterLangSimulateOpt()); |
||||
$('#filterLangSimulate').on('click', function () { $.Options.setOption(this.id, this.checked); }); |
||||
} |
||||
twisterOption.prototype.val = undefined; |
||||
|
||||
this.getIsFollowingMeOpt = function () { |
||||
return this.getOption('isFollowingMe', 'in-profile'); |
||||
}; |
||||
twisterOption.prototype.set = function (val) { |
||||
this.val = (this.option.getMethod) ? this.option.getMethod(val) : val; |
||||
this.option.valRaw = val; |
||||
|
||||
this.setIsFollowingMeOpt = function () { |
||||
$('#isFollowingMe').val( this.getIsFollowingMeOpt() ); |
||||
$('#isFollowingMe').on('change', function () { $.Options.setOption(this.id, this.value); }); |
||||
}; |
||||
$.localStorage.set('options:' + this.option.name, val); |
||||
}; |
||||
|
||||
this.getDMCopySelfOpt = function() { |
||||
return this.getOption('dmCopySelf', 'enable'); |
||||
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.setDMCopySelfOpt = function () { |
||||
$('#dmCopySelfOpt select').val( this.getDMCopySelfOpt() ); |
||||
$('#dmCopySelfOpt select').on('change', function() { $.Options.setOption(this.id, this.value); }); |
||||
} |
||||
jQuery.Options = new twisterOptions(); |
||||
|
||||
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 setElemValNumeric(elem, mes) { |
||||
//var elem = $(elem_nm);
|
||||
if (/^\d+$/.test(elem.value) && parseFloat(elem.value) > 0) { |
||||
function checkForNumeric(elem) { |
||||
if (/^\d+\.?\d*$/.test(elem.value) && parseFloat(elem.value) > 0) { |
||||
elem.style.backgroundColor = ''; |
||||
$.Options.setOption(elem.id, elem.value); |
||||
$(elem).next('span').text(mes); |
||||
return true; |
||||
} else { |
||||
elem.style.backgroundColor = '#f00'; |
||||
$(elem).next('span').text(polyglot.t('only positive numbers!')); |
||||
return false; |
||||
} |
||||
}; |
||||
} |
||||
|
||||
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); |
||||
}; |
||||
|
Loading…
Reference in new issue