NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Auto Check Remember Login
// @name:en Auto Check Remember Login
// @name:vi Tự Động Check Ghi Nhớ Đăng nhập
// @namespace https://greasyfork.org/users/37096/
// @homepage https://greasyfork.org/scripts/30726/
// @supportURL https://greasyfork.org/scripts/30726/feedback
// @version 1.3.0.2a
// @description The script will automatically check all remember login checkbox
// @description:en The script will automatically check all remember login checkbox
// @description:vi Script này sẽ tự động check tất cả các checkbox ghi nhớ đăng nhập
// @author Hồng Minh Tâm
// @include *
// @icon https://4.bp.blogspot.com/-PijzdJYq1vk/WVhqpk1wGdI/AAAAAAAAAKw/Eu1Z_gDYU_UXtGGyN6v2ceE6unPCUaVSQCLcBGAs/s1600/auto-check-remember-login.png
// @compatible chrome
// @compatible firefox
// @compatible opera
// @license GNU GPLv3
// @grant GM_registerMenuCommand
// @grant GM_addStyle
// @grant GM_setValue
// @grant GM_getValue
// ==/UserScript==
(function() {
'use strict';
var ACRL = {
name: 'Auto Check Remember Login',
optionsDefault: {
language: undefined,
checked: true,
wait: {
enable: true,
limit: 1000,
delay: 100
},
masks: {
values: ['remember', 'cookie', 'persistent-login', 'ghinho', 'ricordami', 'lembrar', 'recordarme', 'recordar'],
texts: ['Remember', 'Keep me', 'Stay signed in', 'Ghi nhớ', 'Ricordami', 'Lembrar', 'Lembre-se de mim', 'Recordarme', 'Recordar', 'Запомнить', 'Se souvenir'],
},
},
languages: {
vi: {
name: 'Tiếng Việt',
'Auto Check Remember Login': 'Tự Động Check Ghi Nhớ Đăng nhập',
'Settings': 'Cài đặt',
'Language': 'Ngôn ngữ',
'Show advanced settings': 'Hiện thị cài đặt nâng cao',
'Uncheck all remember login checkbox': 'Bỏ check tất cả các checkbox ghi nhớ đăng nhập',
'Wait until a checkbox is found': 'Chờ cho đến khi một checkbox được tìm thấy',
'Limit wait': 'Giới hạn chờ',
'Delay wait': 'Trì hoãn chờ',
'Browser default': 'Mặc định của trình duyệt',
'Reset settings': 'Đặt lại cài đặt',
'Cancel': 'Hủy bỏ'
}
},
checkboxs: undefined,
init: function() {
ACRL.loadSettings();
ACRL.setLangBrowser();
ACRL.registerCommands();
if(ACRL.options.masks) {
if(ACRL.options.wait && ACRL.options.wait.enable) {
ACRL.waitForElement('input[type=checkbox]', ACRL.checkRememberLogin, ACRL.options.wait.limit, ACRL.options.wait.delay);
} else {
ACRL.checkRememberLogin();
}
}
},
setSettings: function() {
GM_setValue('options', ACRL.options);
},
getSettings: function() {
return GM_getValue('options');
},
loadSettings: function() {
var options = ACRL.getSettings('options');
if(options) {
ACRL.options = options;
} else {
ACRL.options = ACRL.optionsDefault;
ACRL.setSettings();
}
},
resetSettings: function() {
ACRL.options = ACRL.optionsDefault;
ACRL.setSettings();
},
getLangs: function() {
var language;
var languages = [{ value: 'en', label: 'English' }];
for (language in ACRL.languages) {
languages.push({ value: language, label: ACRL.languages[language].name });
}
languages.sort(ACRL.sort.dynamicSort('text'));
return languages;
},
setLangBrowser: function() {
ACRL.languageBrowser = ACRL.getLangBrowser();
},
getLangBrowser: function() {
return (navigator.language || navigator.userLanguage || 'en').replace('-', '_').toLowerCase().split('_')[0];
},
changeLang: function(text, language) {
if(typeof(language) === "undefined") {
if(typeof(ACRL.options.language) !== "undefined") {
language = ACRL.options.language;
} else {
language = ACRL.languageBrowser;
}
}
if(ACRL.languages[language] && ACRL.languages[language][text]) {
return ACRL.languages[language][text];
}
return text;
},
sort: {
dynamicSort: function(property) {
var sortOrder = 1;
if(property[0] === '-') {
sortOrder = -1;
property = property.substr(1);
}
return function(a, b) {
var result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;
return result * sortOrder;
};
}
},
commands : [
{
caption : 'Settings',
execute : function() {
ACRL.openSettings();
}
}
],
addCommands : function(cmd) {
if (typeof GM_registerMenuCommand != 'undefined') {
GM_registerMenuCommand(ACRL.changeLang(ACRL.name)+' - '+ACRL.changeLang(cmd.caption), cmd.execute);
}
},
registerCommands : function() {
ACRL.commands.forEach(function(cmd) {
ACRL.addCommands(cmd);
});
},
checkRememberLogin: function() {
ACRL.checkboxs = document.querySelectorAll('input[type=checkbox]');
if(ACRL.checkboxs) {
for(var i = 0; i < ACRL.checkboxs.length; i++) {
var checkbox = ACRL.checkboxs[i];
ACRL.checkValues(checkbox);
ACRL.checkTexts(checkbox);
}
}
},
waitForElement: function(selector, callback, limit, delay) {
if(limit === undefined) {
limit = 10000;
}
if(delay === undefined) {
delay = 100;
}
if( delay <= 0 ) {
delay = 1;
}
if(document.querySelectorAll(selector).length) {
callback(document.querySelectorAll(selector));
} else {
if(!limit) {
return;
} else {
setTimeout(function() {
ACRL.waitForElement(selector, callback, (limit > delay)?(limit - delay):0, delay);
}, (limit > delay)?delay:limit);
}
}
},
createPattern: function(value) {
return new RegExp(value, 'i');
},
getCheckBoxText: function(element) {
var checkboxElementText = element;
var checkboxText = null;
do {
checkboxElementText = checkboxElementText.nextSibling;
if(checkboxElementText) {
checkboxText = (checkboxElementText.textContent || checkboxElementText.innerText || checkboxElementText.nodeValue || checkboxElementText.innerHTML).trim();
} else {
checkboxText = null;
break;
}
} while (!checkboxText);
return checkboxText;
},
checkValue: function(element, value) {
var patt = ACRL.createPattern(value);
if(patt.test(element.name) || patt.test(element.id) || patt.test(element.className) || patt.test(element.value)) {
return true;
}
return false;
},
checkText: function(checkboxText, text) {
var patt = ACRL.createPattern(text);
if(patt.test(checkboxText)) {
return true;
}
return false;
},
checkValues: function(checkbox) {
if(ACRL.options.masks.values && checkbox.checked !== ACRL.options.checked) {
for(var i = 0; i < ACRL.options.masks.values.length; i++) {
var value = ACRL.options.masks.values[i];
if(ACRL.checkValue(checkbox, value)) {
checkbox.click();
break;
}
}
}
},
checkTexts: function(checkbox) {
if(ACRL.options.masks.texts && checkbox.checked !== ACRL.options.checked) {
var checkboxText = ACRL.getCheckBoxText(checkbox);
if(checkboxText) {
for(var i = 0; i < ACRL.options.masks.texts.length; i++) {
var text = ACRL.options.masks.texts[i];
if(ACRL.checkText(checkboxText, text)) {
checkbox.click();
break;
}
}
}
}
},
openSettings: function() {
ACRL.loadSettings();
var itemLanguages = ACRL.getLangs();
itemLanguages.unshift({ value: undefined, label: ACRL.changeLang('Browser default') });
var comboboxLanguage = new ACRL.form.Select(ACRL.changeLang('Language') + ':', { required: true, items: itemLanguages, value: ACRL.options.language }, function(e) {
ACRL.options.language = e.target.value;
if(e.target.value === "undefined") {
ACRL.options.language = undefined;
}
ACRL.setSettings();
ACRL.openSettings();
});
comboboxLanguage.selectElement.value = ACRL.options.language;
var checkboxUncheck = new ACRL.form.CheckInput('checkbox', ACRL.changeLang('Uncheck all remember login checkbox'), { checked: !ACRL.options.checked }, function(e) {
ACRL.options.checked = !e.target.checked;
ACRL.setSettings();
});
var textboxLimitWait = new ACRL.form.Control('number', ACRL.changeLang('Limit wait') + ' (ms):', { required: true, value: ACRL.options.wait.limit, min: 0, disabled: !ACRL.options.wait.enable }, function(e) {
ACRL.options.wait.limit = e.target.value;
ACRL.setSettings();
});
var textboxDelayWait = new ACRL.form.Control('number', ACRL.changeLang('Delay wait') + ' (ms):', { required: true, value: ACRL.options.wait.delay, min: 1, disabled: !ACRL.options.wait.enable }, function(e) {
ACRL.options.wait.delay = e.target.value;
ACRL.setSettings();
});
var checkboxEnableWait = new ACRL.form.CheckInput('checkbox', ACRL.changeLang('Wait until a checkbox is found'), { checked: ACRL.options.wait.enable }, function(e) {
textboxLimitWait.inputElement.disabled = !e.target.checked;
textboxDelayWait.inputElement.disabled = !e.target.checked;
ACRL.options.wait.enable = e.target.checked;
ACRL.options.wait.limit = textboxLimitWait.inputElement.value;
ACRL.options.wait.delay = textboxDelayWait.inputElement.value;
ACRL.setSettings();
});
var formElement = ACRL.createElement('acrl-form', undefined, [comboboxLanguage.element, checkboxUncheck.element, checkboxEnableWait.element, textboxLimitWait.element, textboxDelayWait.element]);
var buttonResetElement = ACRL.createElement('button', { class: 'acrl-btn red' }, ACRL.changeLang('Reset settings'));
ACRL.Dialog.closeId('modal-setting');
var dialog = new ACRL.Dialog(ACRL.changeLang(ACRL.name)+' - '+ACRL.changeLang('Settings'), formElement, 'modal-setting', [buttonResetElement/*, buttonCloseElement*/]);
buttonResetElement.onclick = function() {
ACRL.resetSettings();
ACRL.openSettings();
};
dialog.show();
},
Dialog: (function() {
function Dialog(title, htmlContent, id, buttonFooters) {
if(typeof(id) === "undefined") {
id = 'modal-'+(Math.floor(Math.random() * 1000000) + 1);
}
this.title = title;
this.htmlContent = htmlContent;
this.id = id;
var buttonCloseElement = ACRL.createElement('button', { 'class': 'acrl-close' }, '\u00d7');
var modalHeaderElement = ACRL.createElement('div', { 'class': 'acrl-modal-header' }, [this.title, buttonCloseElement]);
var modalBodyElement = ACRL.createElement('div', { 'class': 'acrl-modal-body' }, this.htmlContent);
var modalFooterElement = ACRL.createElement('div', { 'class': 'acrl-modal-footer' }, buttonFooters);
var modalContentElement = ACRL.createElement('div', { 'class': 'acrl-modal-content' }, [modalHeaderElement, modalBodyElement, modalFooterElement]);
var modalElement = ACRL.createElement('div', { 'class': 'acrl-modal', 'id': this.id }, [modalContentElement]);
buttonCloseElement.onclick = this.close.bind(this);
modalElement.onclick = this.close.bind(this);
modalContentElement.onclick = function(e) {
e.stopPropagation();
};
this.dialog = modalElement;
}
Dialog.prototype = {
show: function() {
document.body.appendChild(this.dialog);
},
close: function(dialog) {
this.dialog.remove();
}
};
Dialog.closeId = function(id) {
if(document.getElementById(id) !== null) {
document.getElementById(id).remove();
}
};
return Dialog;
}()),
form: {
Control: (function() {
function Control(type, label, attribute, event) {
if(typeof(attribute) !== 'object') {
attribute = {};
}
if(typeof(attribute.id) === 'undefined') {
attribute.id = type+'-'+(Math.floor(Math.random() * 1000000) + 1);
}
var inputElement = ACRL.createElement('input', attribute);
inputElement.type = type;
inputElement.className = 'acrl-form-control';
var labelElement = ACRL.createElement('label', { for: attribute.id }, label);
var controlElement = ACRL.createElement('div', { class: 'acrl-form-group', }, [labelElement, inputElement]);
this.label = label;
this.id = attribute.id;
this.inputElement = inputElement;
this.element = controlElement;
inputElement.oninput = event;
if(type === 'number') {
inputElement.oninput = function(e) {
e.target.value = parseInt(e.target.value) ? e.target.value.replace(/^0+/, '') : (this.min || 0);
event(e);
};
} else {
inputElement.oninput = event;
}
}
Control.prototype = {
oninput: function(event) {
this.inputElement.oninput = function(e) {
e.target.value = parseInt(e.target.value) ? e.target.value.replace(/^0+/, '') : (this.min || 0);
event(e);
};
}
};
return Control;
}()),
Select: (function() {
function Select(label, attribute, event) {
var items = [],
itemElements = [];
if(typeof(attribute) !== 'object') {
attribute = {};
}
if(typeof(attribute.id) === 'undefined') {
attribute.id = 'select-'+(Math.floor(Math.random() * 1000000) + 1);
}
if(typeof(attribute.items) !== 'undefined') {
items = attribute.items;
delete attribute.items;
}
var selectElement = ACRL.createElement('select', attribute);
selectElement.className = 'acrl-form-control';
if(!Array.isArray(items)) {
items = [items];
}
for(var i = 0; i < items.length; i++) {
var text = items[i].label;
delete items[i].label;
var itemElement = ACRL.createElement('option', items[i], text);
selectElement.appendChild(itemElement);
itemElements.push(itemElement);
}
var labelElement = ACRL.createElement('label', { for: attribute.id }, label);
var controlElement = ACRL.createElement('div', { class: 'acrl-form-group', }, [labelElement, selectElement]);
this.label = label;
this.id = attribute.id;
this.selectElement = selectElement;
this.element = controlElement;
this.itemElements = itemElements;
selectElement.onchange = event;
}
Select.prototype = {
onchange: function(event) {
this.selectElement.onchange = event();
}
};
return Select;
}()),
CheckInput: (function() {
function CheckInput(type, label, attribute, event) {
if(typeof(attribute) !== 'object') {
attribute = {};
}
if(typeof(attribute.id) === 'undefined') {
attribute.id = type+'-'+(Math.floor(Math.random() * 1000000) + 1);
}
var inputElement = ACRL.createElement('input', attribute);
inputElement.type = type;
inputElement.className = 'acrl-form-check-input';
var textElement = ACRL.createElement('span', undefined, label);
var labelElement = ACRL.createElement('label', { class: 'acrl-form-check-label' }, [inputElement, textElement]);
var checkInputElement = ACRL.createElement('div', { class: 'acrl-form-check', }, labelElement);
this.label = label;
this.id = attribute.id;
this.inputElement = inputElement;
this.element = checkInputElement;
inputElement.onchange = event;
}
CheckInput.prototype = {
onchange: function(event) {
this.inputElement.onchange = event;
},
};
CheckInput.createGroup = function(name, checkInputs) {
var checkInputGroup = ACRL.createElement('div', { class: 'acrl-form-group', id: name});
for(var i = 0; i < checkInputs.length; i++) {
var checkInput = checkInputs[i];
checkInput.inputElement.name = name;
checkInputGroup.appendChild(checkInput.element);
}
return checkInputGroup;
};
return CheckInput;
}()),
},
createElement: function(element, attribute, inner) {
if(typeof(element) === "undefined") {
return false;
}
if(typeof(inner) === "undefined") {
inner = "";
}
var el = document.createElement(element);
if(typeof(attribute) === 'object') {
for(var key in attribute){
el.setAttribute(key,attribute[key]);
}
if(typeof(attribute.disabled) !== 'undefined') {
el.disabled = attribute.disabled;
}
if(typeof(attribute.checked) !== 'undefined') {
el.checked = attribute.checked;
}
if(typeof(attribute.required) !== 'undefined') {
el.required = attribute.required;
}
}
if(!Array.isArray(inner)) {
inner = [inner];
}
for(var k = 0; k < inner.length; k++) {
if(inner[k].nodeName) {
el.appendChild(inner[k]);
} else {
el.appendChild(document.createTextNode(inner[k]));
}
}
return el;
}
};
GM_addStyle([
'[class*="acrl-"], [class*="acrl-"] * { color: #333; font-family: Arial, Helvetica, sans-serif; font-size: 14px; font-weight: 400; line-height: 1.5; padding: 0; margin: 0; min-width: auto; min-height: auto; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }',
'[class*="acrl-"]:before, [class*="acrl-"]:after, [class*="acrl-"] *:before, [class*="acrl-"] *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }',
'.inline[class*="acrl-"] { display: inline-block; }',
'.inline[class*="acrl-"] + .inline { margin-left: 10px }',
/*modal*/
'.acrl-modal { z-index: 9999999999; padding-top: 100px; position: fixed; top: 0; right: 0; bottom: 0; left: 0; overflow: auto; background-color: rgba(0,0,0,0.5); }',
'.acrl-modal-content { margin: auto; background-color: #fff; position: relative; outline: 0; width: 600px; }',
'.acrl-modal-header { color: #fff; background-color: #2196F3; padding: 15px; font-weight: 700; position: relative; }',
'.acrl-modal-body { padding: 15px; }',
'.acrl-modal-footer { background-color: #f9f9f9; border-top: 1px solid #ddd; padding: 8px 15px; text-align: right; }',
'.acrl-modal-footer > button + button { margin-left: 8px; }',
'.acrl-modal-footer:empty { display: none; }',
'.acrl-modal-footer:before, .acrl-modal-footer:after { content: ""; display: table; clear: both; }',
'.acrl-modal .acrl-close { position: absolute; right: 0; top: 0; bottom: 0; padding: 0 20px; border: none; box-shadow: none; border-radius: 0; outline: 0; text-decoration: none; color: inherit; background-color: inherit; font-size: 24px; font-weight: 700; }',
'.acrl-modal .acrl-close:hover { color: #fff; background-color: #f44336; }',
/*form*/
'.acrl-form-group > label { display: inline-block; margin-bottom: 5px; }',
'.acrl-form-control { padding: 5px 10px; color: #333; background-color: #fff; border: 1px solid #ccc; width: 100%; display: block; margin-bottom: 10px }',
'.acrl-form-group.inline .acrl-form-control { display: inline-block; margin-left: 8px; width: auto; }',
'.acrl-form-control[disabled] { background-color: #eee; color: #888 }',
'.acrl-form-check { display: block; margin-bottom: 10px; }',
'.acrl-form-group.inline .acrl-form-check { display: inline-block; }',
'.acrl-form-group.inline .acrl-form-check + .acrl-form-check { margin-left: 10px; }',
'.acrl-form-check-label { position: relative; padding: 0; margin: 0; display: inline-block; }',
'.acrl-form-check-input { display: none !important; }',
'input.acrl-form-check-input + span, input.acrl-form-check-input + span { padding: 0; margin: 0; }',
'.acrl-form-check-input + span:before { position: relative; top: 5px; display: inline-block; width: 20px; height: 20px; content: ""; border: 2px solid #c0c0c0; margin-right: 8px }',
'.acrl-form-check-input:checked + span:before { border-color: #3e97eb; }',
'.acrl-form-check-input:checked + span:after { content: ""; position: absolute; }',
'.acrl-form-check-input[type="checkbox"] +span:before { border-radius: 2px; }',
'.acrl-form-check-input[type="checkbox"]:checked + span:before { background: #3e97eb; }',
'.acrl-form-check-input[type="checkbox"]:checked + span:after { top: 8px; left: 7px; width: 6px; height: 12px; transform: rotate(45deg); border: 2px solid #fff; border-top: 0; border-left: 0; }',
'.acrl-form-check-input[type="radio"] +span:before { border-radius: 50%; }',
'.acrl-form-check-input[type="radio"]:checked + span:after { top: 10px; left: 5px; width: 10px; height: 10px; border-radius: 50%; background: #3e97eb; }',
/*button*/
'.acrl-btn { padding: 5px 10px; color: #333; background-color: #fff; border: 1px solid #ccc; }',
'.acrl-btn:hover { color: #333; background-color: #e6e6e6; }',
'.acrl-btn.blue { color: #fff; background-color: #2196F3; border-color: #2196F3; }',
'.acrl-btn.red { color: #fff; background-color: #f44336; border-color: #f44336; }',
'.acrl-btn.left { float: left; }'
].join('\n'));
ACRL.init();
})();