mirror of
https://bitbucket.org/skobkin/chrome_point_plus.git
synced 2024-11-23 18:56:04 +00:00
Merged in isqua/chrome_point_plus/refactor_options (pull request #19) Refactor options.js
This commit is contained in:
commit
9c365446eb
|
@ -1,81 +1,61 @@
|
||||||
var ppOptions = {};
|
/**
|
||||||
|
* Получает версию настроек из манифеста
|
||||||
|
* @returns {String} Версия настроек
|
||||||
|
*/
|
||||||
|
function getVersion() {
|
||||||
|
var xhr = new XMLHttpRequest(),
|
||||||
|
manifest;
|
||||||
|
|
||||||
// Binding event listeners
|
xhr.open('GET', chrome.extension.getURL('manifest.json'), false);
|
||||||
$(function() {
|
xhr.send(null);
|
||||||
pp_restore_options();
|
|
||||||
|
|
||||||
// Delegating events
|
manifest = JSON.parse(xhr.responseText);
|
||||||
$('#tabs-content').on('click', 'input', function() {
|
|
||||||
pp_save_options();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Initializing full options structure
|
return manifest.version;
|
||||||
function pp_init_options() {
|
}
|
||||||
var pp_version = getVersion();
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Объект, управляющий сохранением настроек на странице настроек
|
||||||
|
*
|
||||||
|
* При создании сохраняет версию, восстанавливает настройки, слушает изменения на инпутах.
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
function Options() {
|
||||||
|
this.version = getVersion();
|
||||||
|
|
||||||
|
this.restore();
|
||||||
|
|
||||||
|
$('#tabs-content').on('click', 'input', this._onChange.bind(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получает версию настроек. Если она не равна версии приложения, записывает в сторедж плагина настройки из инпутов
|
||||||
|
* и версию приложения.
|
||||||
|
*/
|
||||||
|
Options.prototype.init = function() {
|
||||||
chrome.storage.sync.get('options_version', function(data) {
|
chrome.storage.sync.get('options_version', function(data) {
|
||||||
console.info('Point+ %s, local options are for %s', pp_version, data.options_version);
|
this.logVersion(data.options_version);
|
||||||
|
|
||||||
// Checking last options version
|
if (data.options_version !== this.version) {
|
||||||
if (data.options_version != getVersion()) {
|
|
||||||
console.log('Initializing options...');
|
console.log('Initializing options...');
|
||||||
|
|
||||||
$('.option-node').find('input').each(function(idx, $input) {
|
|
||||||
console.debug($(this));
|
|
||||||
|
|
||||||
// Using option types
|
|
||||||
if ($(this).hasClass('option-boolean')) {
|
|
||||||
ppOptions[$(this).prop('id').replace(/-/g, '_')] = {
|
|
||||||
type: 'boolean',
|
|
||||||
value: $(this).prop('checked')
|
|
||||||
};
|
|
||||||
} else if ($(this).hasClass('option-enum')) {
|
|
||||||
if ($(this).prop('checked')) {
|
|
||||||
ppOptions[$(this).prop('name').replace(/-/g, '_')] = {
|
|
||||||
type: 'enum',
|
|
||||||
value: $(this).val()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Updating options
|
|
||||||
chrome.storage.sync.set({
|
chrome.storage.sync.set({
|
||||||
options: ppOptions,
|
options: this.getValues(),
|
||||||
options_version: getVersion()
|
options_version: this.version
|
||||||
}, function() {
|
}, function() {
|
||||||
console.log('Default options initialized. Version upgraded to %s.', pp_version);
|
console.log('Default options initialized. Version upgraded to %s.', this.version);
|
||||||
|
|
||||||
if (!confirm(chrome.i18n.getMessage('options_text_new_version'))) {
|
alert(chrome.i18n.getMessage('options_text_new_version'));
|
||||||
window.close();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
}.bind(this));
|
||||||
}
|
|
||||||
|
|
||||||
// Saves options to sync storage.
|
|
||||||
// @todo: optimize it! (merge)
|
|
||||||
function pp_save_options() {
|
|
||||||
$('.option-node').find('input').each(function(idx, $input) {
|
|
||||||
console.log($(this));
|
|
||||||
|
|
||||||
// Using option types
|
|
||||||
if ($(this).hasClass('option-boolean')) {
|
|
||||||
ppOptions[$(this).prop('id').replace(/-/g, '_')] = {
|
|
||||||
type: 'boolean',
|
|
||||||
value: $(this).prop('checked')
|
|
||||||
};
|
};
|
||||||
} else if ($(this).hasClass('option-enum')) {
|
|
||||||
if ($(this).prop('checked')) {
|
/**
|
||||||
ppOptions[$(this).prop('name').replace(/-/g, '_')] = {
|
* Сохраняет настройки
|
||||||
type: 'enum',
|
*/
|
||||||
value: $(this).val()
|
Options.prototype.save = function() {
|
||||||
};
|
var ppOptions = this.getValues();
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
console.log('Saving options: %O', ppOptions);
|
console.log('Saving options: %O', ppOptions);
|
||||||
|
|
||||||
|
@ -84,68 +64,143 @@ function pp_save_options() {
|
||||||
// Update status to let user know options were saved.
|
// Update status to let user know options were saved.
|
||||||
$('#status').html(chrome.i18n.getMessage('options_text_saved'));
|
$('#status').html(chrome.i18n.getMessage('options_text_saved'));
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
// Restores select box state to saved value from localStorage.
|
/**
|
||||||
function pp_restore_options() {
|
* Получает настройки из стореджа плагина, устанавливает соответствующим инпутам соответствующие значения.
|
||||||
// Cleaning old style options
|
*/
|
||||||
// Delete after some time
|
Options.prototype.restore = function() {
|
||||||
chrome.storage.sync.get('option_fancybox', function(data) {
|
this.checkOldStyle();
|
||||||
if ((data.option_fancybox === true) || (data.option_fancybox === false)) {
|
|
||||||
console.log('Found old-style options. Cleaning...');
|
|
||||||
chrome.storage.sync.get(null, function(data) {
|
|
||||||
console.log('Old data: %O', data);
|
|
||||||
for (option in data) {
|
|
||||||
chrome.storage.sync.remove(option);
|
|
||||||
}
|
|
||||||
console.log('All old data removed');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Loading options
|
chrome.storage.sync.get('options', function(data) {
|
||||||
chrome.storage.sync.get('options', function(options) {
|
this._options = data.options;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Setting options in DOM
|
// Setting options in DOM
|
||||||
$.each(options.options, function(key, data) {
|
$.each(data.options, function(key, data) {
|
||||||
switch (data.type) {
|
switch (data.type) {
|
||||||
case 'boolean':
|
case 'boolean':
|
||||||
if (data.value) {
|
if (data.value) {
|
||||||
$('#' + key.replace(/_/g, '-')).prop('checked', true);
|
$('#' + this.getOptionName(key)).prop('checked', true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'enum':
|
case 'enum':
|
||||||
$('.option-node .option-enum[name="' + key.replace(/_/g, '-') + '"][value="' + data.value + '"]').prop('checked', true);
|
$('.option-node .option-enum[name="' + this.getOptionName(key) + '"][value="' + data.value + '"]').prop('checked', true);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
console.warn('Invalid option "%s" type: %O', key, data);
|
console.warn('Invalid option "%s" type: %O', key, data);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
}.bind(this));
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
console.error('Error while loading extension options: %O', ex);
|
console.log('Error while loading extension options: %O', ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.showCopyright();
|
||||||
|
this.init();
|
||||||
|
}.bind(this));
|
||||||
|
};
|
||||||
|
|
||||||
// Showing version
|
/**
|
||||||
$('#pp-version').html('Point+ ' + getVersion()
|
* @returns {Object} Хеш настроек вида { имя_настроки: значение_настройки }
|
||||||
+ ' by <a href="https://skobkin-ru.point.im/" target="_blank">@skobkin-ru</a><br>\n\
|
*/
|
||||||
& <a href="https://nokitakaze.point.im/" target="_blank">@NokitaKaze</a>'
|
Options.prototype.getValues = function() {
|
||||||
|
return this._options;
|
||||||
|
};
|
||||||
|
|
||||||
|
Options.prototype._onChange = function(event) {
|
||||||
|
var $input = $(event.target);
|
||||||
|
|
||||||
|
console.log(arguments);
|
||||||
|
|
||||||
|
if (this.isBoolean($input)) {
|
||||||
|
this._options[this.getOptionKey($input.prop('id'))] = {
|
||||||
|
type: 'boolean',
|
||||||
|
value: $input.prop('checked')
|
||||||
|
};
|
||||||
|
} else if (this.isEnum($input)) {
|
||||||
|
this._options[this.getOptionKey($input.prop('name'))] = {
|
||||||
|
type: 'enum',
|
||||||
|
value: $input.val()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
this.save();
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {jQuery} $option Элемент опции
|
||||||
|
* @returns {Boolean} Является ли настройка булевой
|
||||||
|
*/
|
||||||
|
Options.prototype.isBoolean = function($option) {
|
||||||
|
return $option.hasClass('option-boolean');
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {jQuery} $option Элемент опции
|
||||||
|
* @returns {Boolean} Является ли настройка енумом
|
||||||
|
*/
|
||||||
|
Options.prototype.isEnum = function($option) {
|
||||||
|
return $option.hasClass('option-enum');
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {String} name Имя инпута
|
||||||
|
* @returns {String} Ключ для хеша настроек
|
||||||
|
*/
|
||||||
|
Options.prototype.getOptionKey = function(name) {
|
||||||
|
return name.replace(/-/g, '_');
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {String} Ключ хеша настроек
|
||||||
|
* @returns {String} Имя инпута
|
||||||
|
*/
|
||||||
|
Options.prototype.getOptionName = function(key) {
|
||||||
|
return key.replace(/_/g, '-');
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Выводит в консоль версию настроек и версию плагина
|
||||||
|
* @param {String} optionsVersion
|
||||||
|
*/
|
||||||
|
Options.prototype.logVersion = function(optionsVersion) {
|
||||||
|
console.info('Point+ %s, local options are for %s', this.version, optionsVersion);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Добавляет копирайт в подвал
|
||||||
|
*/
|
||||||
|
Options.prototype.showCopyright = function() {
|
||||||
|
$('#pp-version').html('Point+ ' + this.version
|
||||||
|
+ ' by <a href="https://skobkin-ru.point.im/" target="_blank">@skobkin-ru</a><br>\n'
|
||||||
|
+ '& <a href="https://nokitakaze.point.im/" target="_blank">@NokitaKaze</a>'
|
||||||
);
|
);
|
||||||
|
};
|
||||||
|
|
||||||
// Initializing new options
|
/**
|
||||||
pp_init_options();
|
* Проверяет, не старого ли формата настройки. И если старого, то удаляет их.
|
||||||
|
*/
|
||||||
|
Options.prototype.checkOldStyle = function() {
|
||||||
|
chrome.storage.sync.get('option_fancybox', function(data) {
|
||||||
|
if ((data.option_fancybox === true) || (data.option_fancybox === false)) {
|
||||||
|
console.log('Found old-style options. Cleaning...');
|
||||||
|
|
||||||
|
chrome.storage.sync.get(null, function(data) {
|
||||||
|
|
||||||
|
console.log('Old data: %O', data);
|
||||||
|
|
||||||
|
for (option in data) {
|
||||||
|
chrome.storage.sync.remove(option);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('All old data removed');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// Getting version from manifest.json
|
new Options();
|
||||||
function getVersion() {
|
|
||||||
var xhr = new XMLHttpRequest();
|
|
||||||
xhr.open('GET', chrome.extension.getURL('manifest.json'), false);
|
|
||||||
xhr.send(null);
|
|
||||||
var manifest = JSON.parse(xhr.responseText);
|
|
||||||
return manifest.version;
|
|
||||||
}
|
|
||||||
|
|
|
@ -3,6 +3,44 @@ chrome.extension.sendMessage({
|
||||||
type: 'showPageAction'
|
type: 'showPageAction'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Объект для получения опций
|
||||||
|
* @param {Object} options Хеш настроек
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
function OptionsManager(options) {
|
||||||
|
this._options = options;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {String} optionName Имя опции
|
||||||
|
* @returns {Boolean|String|Null} Значение опции
|
||||||
|
*/
|
||||||
|
OptionsManager.prototype.get = function(optionName) {
|
||||||
|
return this._options.hasOwnProperty(optionName) ? this._options[optionName].value : null;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверяет, равна ли опция значению value. Если value не переданно, проверяет задана ли она и не равна ли false/''
|
||||||
|
* @param {String} optionName Имя опции
|
||||||
|
* @param {Boolean|String} [value=true] Значение опции
|
||||||
|
* @returns {Boolean}
|
||||||
|
*/
|
||||||
|
OptionsManager.prototype.is = function(optionName, value) {
|
||||||
|
if (typeof value !== 'undefined') {
|
||||||
|
return this.get(optionName) === value;
|
||||||
|
} else {
|
||||||
|
return Boolean(this.get(optionName));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns {Object} Хеш опций
|
||||||
|
*/
|
||||||
|
OptionsManager.prototype.getOptions = function() {
|
||||||
|
return this._options;
|
||||||
|
};
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
// Grouping console log
|
// Grouping console log
|
||||||
console.group('point-plus');
|
console.group('point-plus');
|
||||||
|
@ -25,24 +63,24 @@ $(document).ready(function() {
|
||||||
|
|
||||||
// Loading options
|
// Loading options
|
||||||
chrome.storage.sync.get('options', function(sync_data) {
|
chrome.storage.sync.get('options', function(sync_data) {
|
||||||
var options = sync_data.options;
|
var options = new OptionsManager(sync_data.options);
|
||||||
|
|
||||||
// Options debug
|
// Options debug
|
||||||
try {
|
try {
|
||||||
console.debug('Options loaded: %O', options);
|
console.debug('Options loaded: %O', options.getOptions());
|
||||||
}catch(e){}
|
}catch(e){}
|
||||||
create_tag_system();
|
create_tag_system();
|
||||||
|
|
||||||
// Embedding
|
// Embedding
|
||||||
if (options.option_embedding.value == true) {
|
if (options.is('option_embedding')) {
|
||||||
// Load pictures from Booru, Tumblr and some other sites
|
// Load pictures from Booru, Tumblr and some other sites
|
||||||
if (options.option_images_load_booru.value == true) {
|
if (options.is('option_images_load_booru')) {
|
||||||
load_all_booru_images();
|
load_all_booru_images();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse webm-links and create video instead
|
// Parse webm-links and create video instead
|
||||||
if (options.option_videos_parse_links.value == true) {
|
if (options.is('option_videos_parse_links')) {
|
||||||
if (options.option_videos_parse_links_type.value == "all") {
|
if (option.is('option_videos_parse_links_type', 'all')) {
|
||||||
parse_all_videos(options);
|
parse_all_videos(options);
|
||||||
} else {
|
} else {
|
||||||
parse_webm(options);
|
parse_webm(options);
|
||||||
|
@ -50,12 +88,12 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse audio links
|
// Parse audio links
|
||||||
if (options.option_audios_parse_links.value == true) {
|
if (options.is('option_audios_parse_links')) {
|
||||||
parse_all_audios(options);
|
parse_all_audios(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Soundcloud
|
// Soundcloud
|
||||||
if (options.option_embedding_soundcloud.value == true) {
|
if (options.is('option_embedding_soundcloud')) {
|
||||||
// Injecting JS API
|
// Injecting JS API
|
||||||
chrome.extension.sendMessage({
|
chrome.extension.sendMessage({
|
||||||
type: 'injectJSFile',
|
type: 'injectJSFile',
|
||||||
|
@ -79,7 +117,7 @@ $(document).ready(function() {
|
||||||
</div>');
|
</div>');
|
||||||
|
|
||||||
// Replace or prepend
|
// Replace or prepend
|
||||||
if (options.option_embedding_soundcloud_orig_link.value == true) {
|
if (options.is('option_embedding_soundcloud_orig_link')) {
|
||||||
// Before
|
// Before
|
||||||
$(this).before($player);
|
$(this).before($player);
|
||||||
} else {
|
} else {
|
||||||
|
@ -91,19 +129,19 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse pleer.com links and create audio instead
|
// Parse pleer.com links and create audio instead
|
||||||
if (options.option_embedding_pleercom.value == true) {
|
if (options.is('option_embedding_pleercom')) {
|
||||||
parse_pleercom_links(options);
|
parse_pleercom_links(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse coub.com links and create iframe instead
|
// Parse coub.com links and create iframe instead
|
||||||
if (options.option_embedding_coubcom.value == true) {
|
if (options.is('option_embedding_coubcom')) {
|
||||||
parse_coub_links(options);
|
parse_coub_links(options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fancybox
|
// Fancybox
|
||||||
if (options.option_fancybox.value == true) {
|
if (options.is('option_fancybox')) {
|
||||||
if (options.option_fancybox_bind_images_to_one_flow.value == true) {
|
if (options.is('option_fancybox_bind_images_to_one_flow')) {
|
||||||
// Linking images in posts to the galleries
|
// Linking images in posts to the galleries
|
||||||
$('.post-content .text').each(function() {
|
$('.post-content .text').each(function() {
|
||||||
$(this).find('a.postimg:not(.youtube)').attr('data-fancybox-group', 'one_flow_gallery');
|
$(this).find('a.postimg:not(.youtube)').attr('data-fancybox-group', 'one_flow_gallery');
|
||||||
|
@ -115,7 +153,7 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Images
|
// Images
|
||||||
if (options.option_fancybox_images.value == true) {
|
if (options.is('option_fancybox_images')) {
|
||||||
// Init fancybox
|
// Init fancybox
|
||||||
$('.postimg:not(.youtube)').fancybox({
|
$('.postimg:not(.youtube)').fancybox({
|
||||||
type: 'image'
|
type: 'image'
|
||||||
|
@ -123,14 +161,14 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Правим хинты у фансибокса
|
// Правим хинты у фансибокса
|
||||||
if (options.option_fancybox_smart_hints.value == true) {
|
if (options.is('option_fancybox_smart_hints')) {
|
||||||
fancybox_set_smart_hints();
|
fancybox_set_smart_hints();
|
||||||
} else {
|
} else {
|
||||||
$('.post .postimg').attr('data-fancybox-title', ' ');
|
$('.post .postimg').attr('data-fancybox-title', ' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Videos
|
// Videos
|
||||||
if (options.option_fancybox_videos.value == true) {
|
if (options.is('option_fancybox_videos')) {
|
||||||
$('.postimg.youtube').addClass('fancybox-media').fancybox({
|
$('.postimg.youtube').addClass('fancybox-media').fancybox({
|
||||||
helpers: {
|
helpers: {
|
||||||
media: {
|
media: {
|
||||||
|
@ -144,7 +182,7 @@ $(document).ready(function() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// Posts
|
// Posts
|
||||||
if (options.option_fancybox_posts.value == true) {
|
if (options.is('option_fancybox_posts')) {
|
||||||
// Excluding some sort of piece-of-shit makeup
|
// Excluding some sort of piece-of-shit makeup
|
||||||
$('.post-id a').not('#comments .post-id a, #top-post .post-id a').attr('data-fancybox-type', 'iframe').fancybox({
|
$('.post-id a').not('#comments .post-id a, #top-post .post-id a').attr('data-fancybox-type', 'iframe').fancybox({
|
||||||
maxWidth: 780
|
maxWidth: 780
|
||||||
|
@ -153,10 +191,10 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// NSFW Filtering
|
// NSFW Filtering
|
||||||
if (options.option_nsfw.value == true) {
|
if (options.is('option_nsfw')) {
|
||||||
$('.post-tag-nsfw,.post-tag-сиськи').find('a.postimg:not(.youtube)').attr('data-fancybox-group', 'hidden-images');
|
$('.post-tag-nsfw,.post-tag-сиськи').find('a.postimg:not(.youtube)').attr('data-fancybox-group', 'hidden-images');
|
||||||
|
|
||||||
if (options.option_nsfw_hide_posts.value == true) {
|
if (options.is('option_nsfw_hide_posts')) {
|
||||||
if ($('#comments').length == 0) {
|
if ($('#comments').length == 0) {
|
||||||
console.log('Hide NSFW posts in feed, %i hidden', $('.post').length);
|
console.log('Hide NSFW posts in feed, %i hidden', $('.post').length);
|
||||||
$('.post').addClass('hide-nsfw-posts');
|
$('.post').addClass('hide-nsfw-posts');
|
||||||
|
@ -164,20 +202,20 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Blurred posts
|
// Blurred posts
|
||||||
if (options.option_nsfw_blur_posts_entire.value == true) {
|
if (options.is('option_nsfw_blur_posts_entire')) {
|
||||||
console.log('Bluring NSFW posts');
|
console.log('Bluring NSFW posts');
|
||||||
$('.post').addClass('blur-nsfw-entire');
|
$('.post').addClass('blur-nsfw-entire');
|
||||||
} else if (options.option_nsfw_blur_posts_images.value == true) {
|
} else if (options.is('option_nsfw_blur_posts_images')) {
|
||||||
console.log('Bluring images in NSFW posts');
|
console.log('Bluring images in NSFW posts');
|
||||||
$('.post').addClass('blur-nsfw-images');
|
$('.post').addClass('blur-nsfw-images');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Blurred comments
|
// Blurred comments
|
||||||
if ($('.post').hasClass('post-tag-nsfw') || $('.post').hasClass('post-tag-сиськи')) {
|
if ($('.post').hasClass('post-tag-nsfw') || $('.post').hasClass('post-tag-сиськи')) {
|
||||||
if (options.option_nsfw_blur_comments_entire.value == true) {
|
if (options.is('option_nsfw_blur_comments_entire')) {
|
||||||
console.log('Bluring comments');
|
console.log('Bluring comments');
|
||||||
$('#comments').addClass('blur-nsfw-entire');
|
$('#comments').addClass('blur-nsfw-entire');
|
||||||
} else if (options.option_nsfw_blur_comments_images.value == true) {
|
} else if (options.is('option_nsfw_blur_comments_images')) {
|
||||||
// @hint Никита Ветров официально складывает с себя все претензии, если у кого-то от этого говна упадёт драйвер видео-карты
|
// @hint Никита Ветров официально складывает с себя все претензии, если у кого-то от этого говна упадёт драйвер видео-карты
|
||||||
console.log('Bluring images in comments');
|
console.log('Bluring images in comments');
|
||||||
$('#comments').addClass('blur-nsfw-images');
|
$('#comments').addClass('blur-nsfw-images');
|
||||||
|
@ -187,7 +225,7 @@ $(document).ready(function() {
|
||||||
|
|
||||||
// Hotkeys
|
// Hotkeys
|
||||||
// Send by CTRL+Enter
|
// Send by CTRL+Enter
|
||||||
if (options.option_ctrl_enter.value == true) {
|
if (options.is('option_ctrl_enter')) {
|
||||||
// Reply
|
// Reply
|
||||||
// Delegated event for all comments
|
// Delegated event for all comments
|
||||||
$('.content-wrap #comments').on('keydown.point_plus', '.reply-form textarea', function(e) {
|
$('.content-wrap #comments').on('keydown.point_plus', '.reply-form textarea', function(e) {
|
||||||
|
@ -206,7 +244,7 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
// Look and feel
|
// Look and feel
|
||||||
// Fluid #main layout
|
// Fluid #main layout
|
||||||
if (options.option_fluid_layout.value == true) {
|
if (options.is('option_fluid_layout')) {
|
||||||
$('#main, #header, #subheader, #footer').css({
|
$('#main, #header, #subheader, #footer').css({
|
||||||
'width': '95%',
|
'width': '95%',
|
||||||
'max-width': '95%'
|
'max-width': '95%'
|
||||||
|
@ -214,7 +252,7 @@ $(document).ready(function() {
|
||||||
// TODO: fix #main #left-menu #top-link position
|
// TODO: fix #main #left-menu #top-link position
|
||||||
}
|
}
|
||||||
// Image resizing
|
// Image resizing
|
||||||
if (options.option_images_load_original.value == true) {
|
if (options.is('option_images_load_original')) {
|
||||||
// Setting new image source
|
// Setting new image source
|
||||||
$('.postimg:not(.youtube) img').each(function() {
|
$('.postimg:not(.youtube) img').each(function() {
|
||||||
console.log($(this).parent('.postimg').attr('href'));
|
console.log($(this).parent('.postimg').attr('href'));
|
||||||
|
@ -229,14 +267,14 @@ $(document).ready(function() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// Visual editor
|
// Visual editor
|
||||||
if (options.option_visual_editor_post.value == true) {
|
if (options.is('option_visual_editor_post')) {
|
||||||
// Add classes
|
// Add classes
|
||||||
$('#new-post-form #text-input, .post-content #text-input').addClass('markitup').css('height', '20em');
|
$('#new-post-form #text-input, .post-content #text-input').addClass('markitup').css('height', '20em');
|
||||||
// Init
|
// Init
|
||||||
$('.markitup').markItUp(mySettings);
|
$('.markitup').markItUp(mySettings);
|
||||||
|
|
||||||
// Send by CTRL+Enter
|
// Send by CTRL+Enter
|
||||||
if (options.option_ctrl_enter.value == true) {
|
if (options.is('option_ctrl_enter')) {
|
||||||
// New post
|
// New post
|
||||||
$('#new-post-form #text-input, .post-content #text-input').on('keydown.point_plus', function(e) {
|
$('#new-post-form #text-input, .post-content #text-input').on('keydown.point_plus', function(e) {
|
||||||
if (e.ctrlKey && (e.keyCode == 10 || e.keyCode == 13)) {
|
if (e.ctrlKey && (e.keyCode == 10 || e.keyCode == 13)) {
|
||||||
|
@ -247,7 +285,7 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Google search
|
// Google search
|
||||||
if (options.option_search_with_google.value == true) {
|
if (options.is('option_search_with_google')) {
|
||||||
$('#search-form input[type="text"]').attr('placeholder', 'Google').keydown(function(e) {
|
$('#search-form input[type="text"]').attr('placeholder', 'Google').keydown(function(e) {
|
||||||
if (e.keyCode == 10 || e.keyCode == 13) {
|
if (e.keyCode == 10 || e.keyCode == 13) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
@ -256,7 +294,7 @@ $(document).ready(function() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// WebSocket
|
// WebSocket
|
||||||
if (options.option_ws.value == true) {
|
if (options.is('option_ws')) {
|
||||||
// SSL or plain
|
// SSL or plain
|
||||||
ws = new WebSocket(((location.protocol == 'https:') ? 'wss' : 'ws') + '://point.im/ws');
|
ws = new WebSocket(((location.protocol == 'https:') ? 'wss' : 'ws') + '://point.im/ws');
|
||||||
console.log('WebSocket created: %O', ws);
|
console.log('WebSocket created: %O', ws);
|
||||||
|
@ -297,7 +335,7 @@ $(document).ready(function() {
|
||||||
console.debug(wsMessage);
|
console.debug(wsMessage);
|
||||||
|
|
||||||
// Check option
|
// Check option
|
||||||
if (options.option_ws_comments.value != true) {
|
if ( ! options.is('option_ws_comments')) {
|
||||||
console.log('Comments processing disabled');
|
console.log('Comments processing disabled');
|
||||||
console.groupEnd();
|
console.groupEnd();
|
||||||
break;
|
break;
|
||||||
|
@ -411,13 +449,13 @@ $(document).ready(function() {
|
||||||
$commentTemplate.before($anchor);
|
$commentTemplate.before($anchor);
|
||||||
|
|
||||||
// Fading out highlight if needed
|
// Fading out highlight if needed
|
||||||
if (options.option_ws_comments_color_fadeout.value == true) {
|
if (options.is('option_ws_comments_color_fadeout')) {
|
||||||
console.log('Fading out the highlight');
|
console.log('Fading out the highlight');
|
||||||
$commentTemplate.children('.pp-highlight').fadeOut(20000);
|
$commentTemplate.children('.pp-highlight').fadeOut(20000);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Desktop notifications
|
// Desktop notifications
|
||||||
if (options.option_ws_comments_notifications.value == true) {
|
if (options.is('option_ws_comments_notifications')) {
|
||||||
console.log('Showing desktop notification');
|
console.log('Showing desktop notification');
|
||||||
chrome.extension.sendMessage({
|
chrome.extension.sendMessage({
|
||||||
type: 'showNotification',
|
type: 'showNotification',
|
||||||
|
@ -473,11 +511,11 @@ $(document).ready(function() {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
// Font size
|
// Font size
|
||||||
if ((options.option_enlarge_font.value == true) && (options.option_enlarge_font_size.value !== undefined)) {
|
if ((options.is('option_enlarge_font')) && (option.get('option_enlarge_font_size'))) {
|
||||||
$('body').css('font-size', (options.option_enlarge_font_size.value / 100) + 'em');
|
$('body').css('font-size', (option.get('option_enlarge_font_size') / 100) + 'em');
|
||||||
}
|
}
|
||||||
// @ before username
|
// @ before username
|
||||||
if (options.option_at_before_username.value == true) {
|
if (options.is('option_at_before_username')) {
|
||||||
chrome.extension.sendMessage({
|
chrome.extension.sendMessage({
|
||||||
type: 'injectCSSFile',
|
type: 'injectCSSFile',
|
||||||
file: 'css/modules/at_before_username.css'
|
file: 'css/modules/at_before_username.css'
|
||||||
|
@ -485,35 +523,35 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hightlight post with new comments
|
// Hightlight post with new comments
|
||||||
if (options.option_other_hightlight_post_comments.value == true) {
|
if (options.is('option_other_hightlight_post_comments')) {
|
||||||
mark_unread_post();
|
mark_unread_post();
|
||||||
}
|
}
|
||||||
// Show recommendation count and unique commentators count
|
// Show recommendation count and unique commentators count
|
||||||
if (options.option_other_show_recommendation_count.value == true) {
|
if (options.is('option_other_show_recommendation_count')) {
|
||||||
set_posts_count_label();
|
set_posts_count_label();
|
||||||
}
|
}
|
||||||
// `Space` key scroll handler
|
// `Space` key scroll handler
|
||||||
if (options.option_other_scroll_space_key.value == true){
|
if (options.is('option_other_scroll_space_key')){
|
||||||
set_space_key_skip_handler();
|
set_space_key_skip_handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Система комментариев у пользователей
|
// Система комментариев у пользователей
|
||||||
if (options.option_other_comments_user_system.value == true) {
|
if (options.is('option_other_comments_user_system')) {
|
||||||
hints_init_user_system();
|
hints_init_user_system();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nesting level indicator
|
// Nesting level indicator
|
||||||
if (options.option_other_comments_nesting_level.value == true) {
|
if (options.is('option_other_comments_nesting_level')) {
|
||||||
draw_nesting_level_indicator();
|
draw_nesting_level_indicator();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Обновляем кол-во постов и непрочитанных комментариев
|
// Обновляем кол-во постов и непрочитанных комментариев
|
||||||
if (options.option_other_comments_count_refresh.value == true){
|
if (options.is('option_other_comments_count_refresh')) {
|
||||||
set_comments_refresh_tick(options);
|
set_comments_refresh_tick(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Твиты из Твиттера
|
// Твиты из Твиттера
|
||||||
if (options.option_embedding_twitter_tweets.value == true){
|
if (options.is('option_embedding_twitter_tweets')) {
|
||||||
twitter_tweet_embedding_init();
|
twitter_tweet_embedding_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -665,7 +703,7 @@ function parse_webm(current_options) {
|
||||||
|
|
||||||
obj.parentElement.insertBefore(player, obj);
|
obj.parentElement.insertBefore(player, obj);
|
||||||
|
|
||||||
if (current_options.option_videos_parse_leave_links.value == false) {
|
if (current_options.is('option_videos_parse_leave_links', false)) {
|
||||||
$(obj).hide();
|
$(obj).hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -692,7 +730,7 @@ function parse_all_videos(current_options) {
|
||||||
|
|
||||||
obj.parentElement.insertBefore(player, obj);
|
obj.parentElement.insertBefore(player, obj);
|
||||||
|
|
||||||
if (current_options.option_videos_parse_leave_links.value == false) {
|
if (current_options.is('option_videos_parse_leave_links', false)) {
|
||||||
$(obj).hide();
|
$(obj).hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -741,7 +779,7 @@ function parse_all_audios(current_options){
|
||||||
|
|
||||||
obj.parentElement.insertBefore(player, obj);
|
obj.parentElement.insertBefore(player, obj);
|
||||||
|
|
||||||
if (current_options.option_audios_parse_leave_links.value == false) {
|
if (current_options.is('option_audios_parse_leave_links', false)) {
|
||||||
$(obj).hide();
|
$(obj).hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -801,7 +839,7 @@ function set_posts_count_label() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function parse_pleercom_links(current_options) {
|
function parse_pleercom_links(current_options) {
|
||||||
if (current_options.option_embedding_pleercom_nokita_server.value) {
|
if (current_options.is('option_embedding_pleercom_nokita_server')) {
|
||||||
parse_pleercom_links_nokita();
|
parse_pleercom_links_nokita();
|
||||||
} else {
|
} else {
|
||||||
parse_pleercom_links_ajax(current_options);
|
parse_pleercom_links_ajax(current_options);
|
||||||
|
@ -852,7 +890,6 @@ function create_pleercom_ajax(id, current_options) {
|
||||||
'postdata': 'action=download&id=' + id,
|
'postdata': 'action=download&id=' + id,
|
||||||
'dont_set_content_type': true,
|
'dont_set_content_type': true,
|
||||||
'pleer_id': id,
|
'pleer_id': id,
|
||||||
'current_options':current_options,
|
|
||||||
'headers': [['Accept', '*'], ['Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8']],
|
'headers': [['Accept', '*'], ['Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8']],
|
||||||
'success': function(a) {
|
'success': function(a) {
|
||||||
var answer = JSON.parse(a);
|
var answer = JSON.parse(a);
|
||||||
|
@ -865,7 +902,7 @@ function create_pleercom_ajax(id, current_options) {
|
||||||
});
|
});
|
||||||
$('.embeded_audio_' + this.settings.pleer_id)[0].appendChild(player);
|
$('.embeded_audio_' + this.settings.pleer_id)[0].appendChild(player);
|
||||||
|
|
||||||
if (this.settings.current_options.option_embedding_pleercom_orig_link.value == false){
|
if (current_options.is('option_embedding_pleercom_orig_link', false)){
|
||||||
$('.pleercom_original_link_'+this.settings.pleer_id).hide();
|
$('.pleercom_original_link_'+this.settings.pleer_id).hide();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1001,7 +1038,7 @@ function parse_coub_links(current_options) {
|
||||||
|
|
||||||
obj.parentElement.insertBefore(player, obj);
|
obj.parentElement.insertBefore(player, obj);
|
||||||
|
|
||||||
if (current_options.option_embedding_coubcom_orig_link.value == false) {
|
if (current_options.is('option_embedding_coubcom_orig_link', false)) {
|
||||||
$(obj).hide();
|
$(obj).hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1238,7 +1275,7 @@ function set_comments_refresh_tick(current_options) {
|
||||||
}, 60000);
|
}, 60000);
|
||||||
|
|
||||||
// Ставим слежение за позицией мыши
|
// Ставим слежение за позицией мыши
|
||||||
if (current_options.option_other_comments_count_refresh_title.value == true) {
|
if (current_options.is('option_other_comments_count_refresh_title')) {
|
||||||
$(document).
|
$(document).
|
||||||
on('mouseenter', function() {
|
on('mouseenter', function() {
|
||||||
set_comments_refresh_clear_title_marks();
|
set_comments_refresh_clear_title_marks();
|
||||||
|
@ -1311,7 +1348,7 @@ function comments_count_refresh_tick(current_options) {
|
||||||
$('#main #left-menu #menu-comments .unread').text('0').hide();
|
$('#main #left-menu #menu-comments .unread').text('0').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((current_options.option_other_comments_count_refresh_title.value == true) &&
|
if ((current_options.is('option_other_comments_count_refresh_title')) &&
|
||||||
(!window_focused)) {
|
(!window_focused)) {
|
||||||
var new_title = document.title.replace(new RegExp('^\\[[0-9]+\\; [0-9]+\\] '), '');
|
var new_title = document.title.replace(new RegExp('^\\[[0-9]+\\; [0-9]+\\] '), '');
|
||||||
if ((count_recent > 0) || (count_comments > 0)) {
|
if ((count_recent > 0) || (count_comments > 0)) {
|
||||||
|
|
Loading…
Reference in a new issue