User:98DOUBLE7/common.css: Difference between revisions
Jump to navigation
Jump to search
Created page with "// ==UserScript== // @name Baka-Tsuki Enhancements // @namespace https://greasyfork.org/users/7517 // @description Formats pages for comfort reading. // @version..." |
(No difference)
|
Latest revision as of 15:36, 13 August 2015
// ==UserScript==
// @name Baka-Tsuki Enhancements
// @namespace https://greasyfork.org/users/7517
// @description Formats pages for comfort reading.
// @version 1.1.2
// @author akarin
// @include /https?:\/\/(www\.)?baka-tsuki\.org\/project\/index.php\?/
// @require http://code.jquery.com/jquery-latest.min.js
// @grant none
// ==/UserScript==
(function($) {
var bte = {
transition: 200,
replaceThumbs: true,
replaceLinks: true,
content: {
style: null,
settings: null
},
styles: {
customCSS: '',
width: '',
backgroundColor: '',
contentColor: '',
textColor: '',
fontFamily: '',
fontSize: '',
linkColor: '',
linkHoverColor: ''
}
};
bte.load = function() {
bte.replaceThumbs = loadValue('replaceThumbs', true);
bte.replaceLinks = loadValue('replaceLinks', true);
bte.styles.customCSS = loadValue('styles.customCSS', '');
bte.styles.width = loadValue('styles.width', '720px');
bte.styles.backgroundColor = loadValue('styles.backgroundColor', '#fffaea');
bte.styles.contentColor = loadValue('styles.contentColor', '#eae5d5');
bte.styles.textColor = loadValue('styles.textColor', '#333020');
bte.styles.fontFamily = loadValue('styles.fontFamily', '"Gentium Plus", serif');
bte.styles.fontSize = loadValue('styles.fontSize', '13pt');
bte.styles.linkColor = loadValue('styles.linkColor', '#1969cb');
bte.styles.linkHoverColor = loadValue('styles.linkHoverColor', '#2d7de0');
};
bte.save = function() {
saveValue('replaceThumbs', bte.replaceThumbs);
saveValue('replaceLinks', bte.replaceLinks);
saveValue('styles.customCSS', bte.styles.customCSS);
saveValue('styles.width', bte.styles.width);
saveValue('styles.backgroundColor', bte.styles.backgroundColor);
saveValue('styles.contentColor', bte.styles.contentColor);
saveValue('styles.textColor', bte.styles.textColor);
saveValue('styles.fontFamily', bte.styles.fontFamily);
saveValue('styles.fontSize', bte.styles.fontSize);
saveValue('styles.linkColor', bte.styles.linkColor);
saveValue('styles.linkHoverColor', bte.styles.linkHoverColor);
};
bte.clear = function() {
localStorage.clear();
};
bte.main = function() {
if (document.URL.match(/\/index\.php\?(.*)action=render/)) {
bte.render();
}
else {
bte.prepare();
}
};
bte.prepare = function() {
var ul = $('#right-navigation div.vectorTabs ul');
if (ul.length > 0) {
var url = document.URL.replace('title=', 'action=render&title=');
$('<li id="bte-plus"><span><a href="' + url + '">Render</a></span></li>').prependTo(ul);
}
};
bte.render = function() {
$('*').removeAttr('style');
bte.load();
bte.restyle();
$('body').html('<div id="bte-content">' + $('body').html() + '</div>');
if (bte.replaceThumbs) {
$('img[src*="/thumb/"]').each(function() {
var src = $(this).prop('src').replace(/\/thumb\//, '/').replace(/\/(?!.*\/).*$/, '');
$(this).prop('src', src);
});
}
if (bte.replaceLinks) {
$('a[href*="title="]:not([href*="title=File:"])').each(function() {
var href = $(this).prop('href');
if (href.match(/https?:\/\/(www\.)?baka-tsuki\.org\/project\/index.php\?(.*)title=/)) {
$(this).prop('href', href.replace('title=', 'action=render&title='));
}
});
}
var returnUrl = document.URL.replace('action=render&', '').replace(/[&\?]?action=render$/, '');
var toolbar = $([
'<div id="bte-toolbar">',
'<div id="bte-left-navigation"><ul>',
'<li id="bte-btn-return">',
'<a href="' + returnUrl + '">Return</a>',
'</li>',
'</ul></div>',
'<div id="bte-right-navigation"><ul>',
'<li id="bte-btn-settings">',
'<a href="javascript:void(0);">Settings</a>',
'</li>',
'</ul></div>',
'</div>'].join('')).prependTo('body');
$('#bte-btn-settings a', toolbar).click(function() {
if (bte.content.settings.css('display') !== 'none') {
return;
}
bte.settings.load();
dimmer.show();
bte.content.settings.show(bte.transition);
});
var dimmer = $('<div id="bte-dimmer"></div>').hide().prependTo('body').click(function() {
$('.bte-hide').hide(bte.transition);
$(this).hide();
});
bte.content.settings = $([
'<div id="bte-settings" class="bte-hide">',
'<h2>Settings</h2>',
'<div id="bte-settings-options"><table width="100%" cellspacing="0" cellpadding="0" border="0">',
'<tr>',
'<td>Content width: </td>',
'<td><input id="bte-option-width" type="text" value=""></td>',
'</tr>',
'<tr>',
'<td>Background color: </td>',
'<td><input id="bte-option-bgcolor" type="text" value=""></td>',
'</tr>',
'<tr>',
'<td>Content background color: </td>',
'<td><input id="bte-option-contentcolor" type="text" value=""></td>',
'</tr>',
'<tr>',
'<td>Text color: </td>',
'<td><input id="bte-option-textcolor" type="text" value=""></td>',
'</tr>',
'<tr>',
'<td>Text font: </td>',
'<td><input id="bte-option-fontfamily" type="text" value=""></td>',
'</tr>',
'<tr>',
'<td>Text size: </td>',
'<td><input id="bte-option-fontsize" type="text" value=""></td>',
'</tr>',
'<tr>',
'<td>Link color: </td>',
'<td><input id="bte-option-linkcolor" type="text" value=""></td>',
'</tr>',
'<tr>',
'<td>Hover link color: </td>',
'<td><input id="bte-option-hoverlinkcolor" type="text" value=""></td>',
'</tr>',
'<tr>',
'<td>Custom CSS: </td>',
'<td><textarea id="bte-option-customcss" /></td>',
'</tr>',
'</table></div>',
'<div id="bte-settings-buttons">',
'<a id="bte-btn-settings-reset" class="bte-link-button" href="javascript:void(0);">Reset</a>',
'<a id="bte-btn-settings-cancel" class="bte-link-button" href="javascript:void(0);">Cancel</a>',
'<a id="bte-btn-settings-apply" class="bte-link-button" href="javascript:void(0);">Apply</a>',
'<a id="bte-btn-settings-save" class="bte-link-button" href="javascript:void(0);">Save</a>',
'</div>',
'</div>'].join('')).hide().insertBefore(toolbar);
$('a#bte-btn-settings-reset', bte.content.settings).click(function() {
if (true === confirm('Reset settings?')) {
bte.settings.reset();
dimmer.trigger('click');
}
});
$('a#bte-btn-settings-cancel', bte.content.settings).click(function() {
dimmer.trigger('click');
});
$('a#bte-btn-settings-apply', bte.content.settings).click(function() {
bte.settings.save();
});
$('a#bte-btn-settings-save', bte.content.settings).click(function() {
bte.settings.save();
dimmer.trigger('click');
});
};
bte.settings = {
load: function() {
$('#bte-option-customcss', bte.content.settings).val(bte.styles.customCSS);
$('#bte-option-width', bte.content.settings).val(bte.styles.width);
$('#bte-option-bgcolor', bte.content.settings).val(bte.styles.backgroundColor);
$('#bte-option-contentcolor', bte.content.settings).val(bte.styles.contentColor);
$('#bte-option-textcolor', bte.content.settings).val(bte.styles.textColor);
$('#bte-option-fontfamily', bte.content.settings).val(bte.styles.fontFamily);
$('#bte-option-fontsize', bte.content.settings).val(bte.styles.fontSize);
$('#bte-option-linkcolor', bte.content.settings).val(bte.styles.linkColor);
$('#bte-option-hoverlinkcolor', bte.content.settings).val(bte.styles.linkHoverColor);
},
save: function() {
bte.styles.customCSS = $('#bte-option-customcss', bte.content.settings).val();
bte.styles.width = $('#bte-option-width', bte.content.settings).val().checkInput();
bte.styles.backgroundColor = $('#bte-option-bgcolor', bte.content.settings).val().checkInput();
bte.styles.contentColor = $('#bte-option-contentcolor', bte.content.settings).val().checkInput();
bte.styles.textColor = $('#bte-option-textcolor', bte.content.settings).val().checkInput();
bte.styles.fontFamily = $('#bte-option-fontfamily', bte.content.settings).val().checkInput();
bte.styles.fontSize = $('#bte-option-fontsize', bte.content.settings).val().checkInput();
bte.styles.linkColor = $('#bte-option-linkcolor', bte.content.settings).val().checkInput();
bte.styles.linkHoverColor = $('#bte-option-hoverlinkcolor', bte.content.settings).val().checkInput();
bte.save();
bte.restyle();
},
reset: function() {
bte.clear();
bte.load();
bte.restyle();
}
};
bte.restyle = function() {
if (bte.content.style !== null) {
bte.content.style.remove();
}
bte.content.style = $('<style type="text/css" />').html([
// Main
'body { ',
'background: ' + bte.styles.contentColor + '; ',
'color: ' + bte.styles.textColor + '; ',
'font-family: ' + bte.styles.fontFamily + '; ',
'font-size: ' + bte.styles.fontSize + '; ',
'margin: 0; padding: 0; font-weight: normal; line-height: 1.5em; }',
'#bte-content { ',
'width: ' + bte.styles.width + '; ',
'background: ' + bte.styles.backgroundColor + '; ',
'max-width: 95%; margin: 0 auto; padding: 2em; overflow-x: hidden; box-shadow: 0 0 30px rgba(65,65,65,0.2); }',
'a, a:visited { ',
'color: ' + bte.styles.linkColor + '; ',
'text-decoration: none; }',
'a:hover { ',
'color: ' + bte.styles.linkHoverColor + '; ',
'text-decoration: underline; }',
'img { display: block; width: auto; height: auto; max-width: 100%; background: white; padding: 3px; border: 1px solid #e0dee0; border-radius: 3px; box-sizing: border-box; box-shadow: 0 0 1px rgba(65,65,65,0.5); }',
'h1, h2, h3, h4 { text-align: center; font-family: "PT Sans", sans-serif; margin: 0.6em 0 1em; }',
'.thumbcaption { text-align: center; font-style: italic; font-size: 0.9em; }',
// BTE
'a.bte-link-button { display: inline-block; margin: 2px 5px; padding: 2px 8px 5px; background: #364657; color: #f8f8f8; text-decoration: none; font-weight: bold; font-size: 1em; line-height: 1.3em; border: none; border-radius: 3px; transition: 0.2s; }',
'a.bte-link-button:hover { background: #556f89; text-decoration: none; }',
// Toolbar
'#bte-toolbar { position: fixed; width: 100%; height: 40px; left: 0; top: -32px; background: #2a3744; color: white; border: none; box-shadow: 0 1px 1px rgba(65,65,65,0.2); opacity: 0.3; transition: 0.4s; }',
'#bte-toolbar > * { opacity: 0; transition: 0.2s; }',
'#bte-toolbar:hover, #bte-dimmer:not([style*="display: none;"]) ~ #bte-toolbar { top: 0; opacity: 1; transition: 0.1s; }',
'#bte-toolbar:hover > *, #bte-dimmer:not([style*="display: none;"]) ~ #bte-toolbar > * { opacity: 1; }',
'#bte-toolbar > [id$="-navigation"] { display: inline; margin: 0 10px; padding: 5px; font-size: 13pt; }',
'#bte-toolbar > [id$="-navigation"] ul { float: left; height: 100%; list-style-type: none; list-style-image: none; margin: 0; padding: 0; }',
'#bte-toolbar > [id$="-navigation"] ul > li { display: block; float: left; height: 100%; margin: 0; padding: 0; white-space: nowrap; }',
'#bte-toolbar > [id$="-navigation"] ul > li a, #bte-toolbar > [id$="-navigation"] ul > li a:visited { color: white; font-size: 13pt; }',
'#bte-toolbar #bte-left-navigation { float: left; }',
'#bte-toolbar #bte-right-navigation { float: right; }',
// Dimmer
'#bte-dimmer { display: block; position: fixed; width: 100%; height: 100%; left: 0; top: 0; margin: 0; padding: 0; background: rgba(42,55,68,0.6); overflow: hidden; }',
// Settings
'#bte-settings { position: fixed; width: 600px; height: auto; max-height: 80%; left: 50%; top: 10%; margin-left: -300px; padding: 3px; background: white; text-align: center; border: 8px solid #2a3744; border-radius: 3px; box-shadow: 0 0 1px rgba(65,65,65,0.2); }',
'#bte-settings h2 { color: #2a3744; margin: 0.6em 0 0.2em; cursor: default; }',
'#bte-settings h2:after { content: ""; display: block; relative: absolute; width: 98%; height: 8px; margin: 0.6em auto 0; border-top: 1px solid #eee; background: center bottom no-repeat radial-gradient(#f6f6f6, #fff 70%); background-size: 100% 16px; }',
'#bte-settings #bte-settings-options { width: 100%; margin: 0; padding: 10px; color: #2a3744; box-sizing: padding-box; overflow: auto; }',
'#bte-settings #bte-settings-options td { padding: 5px 8px; cursor: default; vertical-align: top; }',
'#bte-settings #bte-settings-options td:first-of-type { width: 250px; }',
'#bte-settings #bte-settings-options input, #bte-settings #bte-settings-options textarea { width: 300px; max-width: 300px; padding: 5px; outlint: none; border: 1px solid rgba(45,52,57,0.3); border-radius: 2px; box-shadow: 0 0 1px rgba(65,65,65,0.2); }',
'#bte-settings #bte-settings-options input:focus { outline: 0; border-color: rgba(45,52,57,0.6); }',
'#bte-settings #bte-settings-buttons { width: 100%; height: 40px; margin: 5px 5px 0; padding: 0; box-sizing: padding-box; text-align: center; }',
// Hidden
'div.magnify, span.mw-editsection { display: none; }',
bte.styles.customCSS
].join('')).appendTo('head');
};
String.prototype.checkInput = function() {
return this.replace(/;[\s\S]*$/, '').trim();
};
function loadValue(key, value) {
try {
value = JSON.parse(localStorage.getItem(key)) || value;
} catch (e) {}
return value;
}
function saveValue(key, value) {
localStorage.setItem(key, JSON.stringify(value));
}
bte.main();
})(jQuery);