mirror of
https://bitbucket.org/skobkin/chrome_point_plus.git
synced 2024-11-27 12:23:10 +00:00
Merged skobkin/chrome_point_plus into master
This commit is contained in:
commit
6d8368be93
|
@ -13,6 +13,9 @@
|
||||||
"options_text_saved": {
|
"options_text_saved": {
|
||||||
"message": "Reload page to apply changes."
|
"message": "Reload page to apply changes."
|
||||||
},
|
},
|
||||||
|
"options_text_new_version": {
|
||||||
|
"message": "Point+ just updated.\nCheck your settings and try some new functions!"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
"options_tabs_media": {
|
"options_tabs_media": {
|
||||||
|
|
|
@ -13,6 +13,9 @@
|
||||||
"options_text_saved": {
|
"options_text_saved": {
|
||||||
"message": "Для применения изменений перезагрузите страницу."
|
"message": "Для применения изменений перезагрузите страницу."
|
||||||
},
|
},
|
||||||
|
"options_text_new_version": {
|
||||||
|
"message": "Point+ только что обновился.\nПроверьте настройки и оцените новые функции!"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
"options_tabs_media": {
|
"options_tabs_media": {
|
||||||
|
|
|
@ -213,14 +213,6 @@ div#markItUpText-input {
|
||||||
-webkit-filter: blur(30px);
|
-webkit-filter: blur(30px);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* point-plus-debug */
|
|
||||||
.point-plus-debug{
|
|
||||||
float: right;
|
|
||||||
display: block;
|
|
||||||
color: rgba(255,255,255,.75);
|
|
||||||
padding: 10px 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-tag-nsfw.hide-nsfw-posts,
|
.post-tag-nsfw.hide-nsfw-posts,
|
||||||
.post-tag-сиськи.hide-nsfw-posts{
|
.post-tag-сиськи.hide-nsfw-posts{
|
||||||
display: none;
|
display: none;
|
||||||
|
@ -237,11 +229,10 @@ div#markItUpText-input {
|
||||||
color: green;
|
color: green;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* point-plus-debug */
|
||||||
|
#point-plus-debug{
|
||||||
|
float: right;
|
||||||
|
display: block;
|
||||||
|
color: rgba(255,255,255,.75);
|
||||||
|
padding: 10px 0px;
|
||||||
|
}
|
||||||
|
|
|
@ -1,3 +1,13 @@
|
||||||
|
// Maintaining options version
|
||||||
|
chrome.storage.sync.get('options_version', function(data) {
|
||||||
|
var pp_version = getVersion();
|
||||||
|
console.info('Point+ %s. Options are for %s.', pp_version, data.options_version);
|
||||||
|
|
||||||
|
if (data.options_version != pp_version) {
|
||||||
|
chrome.tabs.create({url: 'options.html'});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// Message listener
|
// Message listener
|
||||||
chrome.extension.onMessage.addListener(function(message, sender) {
|
chrome.extension.onMessage.addListener(function(message, sender) {
|
||||||
console.log('Received message: %O', message);
|
console.log('Received message: %O', message);
|
||||||
|
@ -70,3 +80,12 @@ chrome.extension.onMessage.addListener(function(message, sender) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Getting version from manifest.json
|
||||||
|
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;
|
||||||
|
}
|
|
@ -1,37 +1,62 @@
|
||||||
var ppOptions = {};
|
var ppOptions = {};
|
||||||
|
|
||||||
// Initializing full options structure
|
// Binding event listeners
|
||||||
// Saves options to localStorage.
|
$(function() {
|
||||||
function pp_init_options() {
|
pp_restore_options();
|
||||||
$('.option-node').find('input').each(function(idx, $input) {
|
|
||||||
console.log($(this));
|
|
||||||
|
|
||||||
// Using option types
|
// Delegating events
|
||||||
if ($(this).hasClass('option-boolean')) {
|
$('#tabs-content').on('click', 'input', function() {
|
||||||
ppOptions[$(this).prop('id').replace(/-/g, '_')] = {
|
pp_save_options();
|
||||||
'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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
console.log('Saving options: %O', ppOptions);
|
// Initializing full options structure
|
||||||
|
function pp_init_options() {
|
||||||
|
var pp_version = getVersion();
|
||||||
|
|
||||||
// Saving parameters
|
chrome.storage.sync.get('options_version', function(data) {
|
||||||
chrome.storage.sync.set({'options': ppOptions}, function() {
|
console.info('Point+ %s, local options are for %s', pp_version, data.options_version);
|
||||||
console.log('Default options initialized');
|
|
||||||
|
// Checking last options version
|
||||||
|
if (data.options_version != getVersion()) {
|
||||||
|
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({
|
||||||
|
options: ppOptions,
|
||||||
|
options_version: getVersion()
|
||||||
|
}, function() {
|
||||||
|
console.log('Default options initialized. Version upgraded to %s.', pp_version);
|
||||||
|
|
||||||
|
if (!confirm(chrome.i18n.getMessage('options_text_new_version'))) {
|
||||||
|
window.close();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Saves options to localStorage.
|
// Saves options to sync storage.
|
||||||
// @todo: optimize it!
|
// @todo: optimize it! (merge)
|
||||||
function pp_save_options() {
|
function pp_save_options() {
|
||||||
$('.option-node').find('input').each(function(idx, $input) {
|
$('.option-node').find('input').each(function(idx, $input) {
|
||||||
console.log($(this));
|
console.log($(this));
|
||||||
|
@ -39,15 +64,15 @@ function pp_save_options() {
|
||||||
// Using option types
|
// Using option types
|
||||||
if ($(this).hasClass('option-boolean')) {
|
if ($(this).hasClass('option-boolean')) {
|
||||||
ppOptions[$(this).prop('id').replace(/-/g, '_')] = {
|
ppOptions[$(this).prop('id').replace(/-/g, '_')] = {
|
||||||
'type': 'boolean',
|
type: 'boolean',
|
||||||
'value': $(this).prop('checked')
|
value: $(this).prop('checked')
|
||||||
};
|
};
|
||||||
} else if ($(this).hasClass('option-enum')) {
|
} else if ($(this).hasClass('option-enum')) {
|
||||||
if ($(this).prop('checked')) {
|
if ($(this).prop('checked')) {
|
||||||
ppOptions[$(this).prop('name').replace(/-/g, '_')] = {
|
ppOptions[$(this).prop('name').replace(/-/g, '_')] = {
|
||||||
'type': 'enum',
|
type: 'enum',
|
||||||
'value': $(this).val()
|
value: $(this).val()
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -55,7 +80,7 @@ function pp_save_options() {
|
||||||
console.log('Saving options: %O', ppOptions);
|
console.log('Saving options: %O', ppOptions);
|
||||||
|
|
||||||
// Saving parameters
|
// Saving parameters
|
||||||
chrome.storage.sync.set({'options': ppOptions}, function() {
|
chrome.storage.sync.set({options: ppOptions}, function() {
|
||||||
// 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'));
|
||||||
});
|
});
|
||||||
|
@ -65,12 +90,12 @@ function pp_save_options() {
|
||||||
function pp_restore_options() {
|
function pp_restore_options() {
|
||||||
// Cleaning old style options
|
// Cleaning old style options
|
||||||
// Delete after some time
|
// Delete after some time
|
||||||
chrome.storage.sync.get('option_fancybox', function(value) {
|
chrome.storage.sync.get('option_fancybox', function(data) {
|
||||||
if (value === true || value === false) {
|
if ((data.option_fancybox === true) || (data.option_fancybox === false)) {
|
||||||
console.log('Found old-style options. Cleaning...');
|
console.log('Found old-style options. Cleaning...');
|
||||||
chrome.storage.sync.get(null, function(old_options) {
|
chrome.storage.sync.get(null, function(data) {
|
||||||
console.log('Old data: %O', old_options);
|
console.log('Old data: %O', data);
|
||||||
for (option in old_options) {
|
for (option in data) {
|
||||||
chrome.storage.sync.remove(option);
|
chrome.storage.sync.remove(option);
|
||||||
}
|
}
|
||||||
console.log('All old data removed');
|
console.log('All old data removed');
|
||||||
|
@ -78,56 +103,43 @@ function pp_restore_options() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Loading options
|
// Loading options
|
||||||
chrome.storage.sync.get('options', function(options) {
|
chrome.storage.sync.get('options', function(options) {
|
||||||
// Initializing clean options
|
|
||||||
// @todo: rewrite for all options
|
|
||||||
if (options.option_embedding === undefined) {
|
|
||||||
console.warn('Clean options detected. Initializing...');
|
|
||||||
pp_init_options();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setting options in DOM
|
try {
|
||||||
$.each(options.options, function(key, data) {
|
// Setting options in DOM
|
||||||
switch (data.type) {
|
$.each(options.options, function(key, data) {
|
||||||
case 'boolean':
|
switch (data.type) {
|
||||||
if (data.value) {
|
case 'boolean':
|
||||||
$('#' + key.replace(/_/g, '-')).prop('checked', true);
|
if (data.value) {
|
||||||
|
$('#' + key.replace(/_/g, '-')).prop('checked', true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'enum':
|
||||||
|
$('.option-node .option-enum[name="' + key.replace(/_/g, '-') + '"][value="' + data.value + '"]').prop('checked', true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
console.warn('Invalid option "%s" type: %O', key, data);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
});
|
||||||
|
} catch (ex) {
|
||||||
case 'enum':
|
console.error('Error while loading extension options: %O', ex);
|
||||||
$('.option-node .option-enum[name="' + key.replace(/_/g, '-') + '"][value="' + data.value + '"]').prop('checked', true);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
console.warn('Invalid option "%s" type: %O', key, data);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
// Showing version
|
// Showing version
|
||||||
$('#pp-version').html('Point+ ' + getVersion()
|
$('#pp-version').html('Point+ ' + getVersion()
|
||||||
+ ' by <a href="https://skobkin-ru.point.im/" target="_blank">@skobkin-ru</a><br>\n\
|
+ ' 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>'
|
& <a href="https://nokitakaze.point.im/" target="_blank">@NokitaKaze</a>'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Initializing new options
|
||||||
|
pp_init_options();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
document.addEventListener('DOMContentLoaded', pp_restore_options);
|
|
||||||
var point_plus_options_save_button = document.querySelector('#save');
|
|
||||||
if (point_plus_options_save_button !== null) {
|
|
||||||
point_plus_options_save_button.addEventListener('click', pp_save_options);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Binding event listeners
|
|
||||||
$(function() {
|
|
||||||
// Delegating events
|
|
||||||
$('#tabs-content').on('click', 'input', function() {
|
|
||||||
pp_save_options();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Getting version from manifest.json
|
// Getting version from manifest.json
|
||||||
function getVersion() {
|
function getVersion() {
|
||||||
|
|
|
@ -1,34 +1,31 @@
|
||||||
|
// Showing page action
|
||||||
|
chrome.extension.sendMessage({
|
||||||
|
type: 'showPageAction'
|
||||||
|
});
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
// Grouping console log
|
// Grouping console log
|
||||||
console.group('point-plus');
|
console.group('point-plus');
|
||||||
console.info('Point+ %s', getVersion());
|
console.info('Point+ %s', getVersion());
|
||||||
|
|
||||||
// Проверяем, загрузились ли мы
|
// Проверяем, загрузились ли мы
|
||||||
// @todo: Убрать это говно и нормально пилить расширение не принося пользователям костыли
|
var point_plus_debug = $('#point-plus-debug');
|
||||||
// Хочешь детект? Делай невидимый элемент где-нибудь в подвале. И айдишник, а не класс. Их искать быстрее.
|
if (point_plus_debug.length > 0) {
|
||||||
// Хочешь показать пользователю обработку - делай индикатор и встраивай в интерфейс сайта.
|
console.error('Point+ %s already loaded.', point_plus_debug.data('point-plus-version'));
|
||||||
var point_plus_debug = $('.point-plus-debug');
|
|
||||||
if (point_plus_debug.length > 0){
|
|
||||||
console.info('Point+ already loaded, version: %s', point_plus_debug.attr('data-point-plus-version'));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
point_plus_debug = null;
|
$('<div id="point-plus-debug">').attr({
|
||||||
var new_div = document.createElement('div');
|
|
||||||
$(new_div).attr({
|
|
||||||
'data-point-plus-version': getVersion()
|
'data-point-plus-version': getVersion()
|
||||||
}).addClass('point-plus-debug').text('Point+ v' + getVersion() + ' loading...');
|
}).text('Point+ ' + getVersion() + ' loading...')
|
||||||
var obj = $('#user-menu-cb')[0];
|
.insertBefore('#user-menu-cb');
|
||||||
obj.parentElement.insertBefore(new_div, obj);
|
|
||||||
new_div = null;
|
|
||||||
obj = null;
|
|
||||||
|
|
||||||
// Черновики. Ставим хандлер и восстанавливаем предыдущее состояние
|
// Черновики. Ставим хандлер и восстанавливаем предыдущее состояние
|
||||||
draft_set_save_handler();
|
draft_set_save_handler();
|
||||||
draft_restore();
|
draft_restore();
|
||||||
|
|
||||||
// Loading options
|
// Loading options
|
||||||
chrome.storage.sync.get('options', function(options_data) {
|
chrome.storage.sync.get('options', function(sync_data) {
|
||||||
var options = options_data.options;
|
var options = sync_data.options;
|
||||||
|
|
||||||
// Options debug
|
// Options debug
|
||||||
console.debug('Options loaded: %O', options);
|
console.debug('Options loaded: %O', options);
|
||||||
|
@ -524,12 +521,7 @@ $(document).ready(function() {
|
||||||
set_space_key_skip_handler();
|
set_space_key_skip_handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
$('.point-plus-debug').fadeOut(500);
|
$('#point-plus-debug').fadeOut(1000);
|
||||||
});
|
|
||||||
|
|
||||||
// Showing page action
|
|
||||||
chrome.extension.sendMessage({
|
|
||||||
type: 'showPageAction'
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"name": "Point+",
|
"name": "Point+",
|
||||||
"version": "1.17.1",
|
"version": "1.17.3",
|
||||||
"default_locale": "ru",
|
"default_locale": "ru",
|
||||||
"author": "__MSG_ext_author__",
|
"author": "__MSG_ext_author__",
|
||||||
"homepage_url": "https://bitbucket.org/skobkin/chrome_point_plus",
|
"homepage_url": "https://bitbucket.org/skobkin/chrome_point_plus",
|
||||||
|
|
Loading…
Reference in a new issue