// ==UserScript==
// @name Pardus QuickList Manager
// @namespace .pardus.at
// @description Allows users to save and load quicklists
// @include http*://*.pardus.at/ambush.php*
// @author Rhindon
// @version 1.1a
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// ==/UserScript==
// PREFERENCES -- There's probably no reason for these to change.
var CookieName = "QLMList";
var CookiePrefix = "QLMItem_";
var delimeter = '~';
var MoveButtons = true;
// ////////////////////////////////////////////////////////////////////////
// Imported -- Rhindon's Standard Cookie Code
// -- Stores GreaseMonkey Values instead of actual Cookies
// ////////////////////////////////////////////////////////////////////////
function createCookie(name,value) {
subdomain = window.location.host.substr(0, window.location.host.indexOf('.'));
GM_setValue(subdomain + '-' + name,value);
}
function readCookie(name) {
subdomain = window.location.host.substr(0, window.location.host.indexOf('.'));
try {
var temp = GM_getValue(subdomain + '-' + name);
if(temp != '~~~DELETED~~~') return temp;
return null;
} catch(err) {
return null;
}
}
function eraseCookie(name) {
GM_deleteValue(name);
}
// ////////////////////////////////////////////////////////////////////////
// End imported code
// ////////////////////////////////////////////////////////////////////////
function initQLManager() {
var options = getOptions();
var html = "
";
html += " ";
var table = document.getElementById('readlist');
var newRow = table.insertRow(table.rows.length);
newRow.innerHTML = html;
if(MoveButtons) moveButtons();
document.getElementById("saveBtn").addEventListener('click',save, false);
document.getElementById("saveasBtn").addEventListener('click',saveAs, false);
document.getElementById("deleteBtn").addEventListener('click',del, true);
document.getElementById("qllist").addEventListener('change',setQLtextarea, true);
}
function moveButtons() {
var html = " | Quick Buttons |
";
html += " |
";
// Seems to be a problem doing the QL... I'll see if I can fix it later.
// html += "
|
";
var ths = document.getElementsByTagName('th');
var table = null;
for(var i = 0; i < ths.length; i++) {
if(ths[i].innerHTML.indexOf('Ambush mode') >= 0) {
table = ths[i].parentNode.parentNode;
break;
}
}
table.innerHTML = html + table.innerHTML;
}
function setQLtextarea() {
if(document.getElementById('qllist').value == "Select a QL:") {
document.getElementsByName('readlist')[0].value = "";
return;
}
document.getElementsByName('readlist')[0].value = document.getElementById('qllist').value;
}
function save(e) {
var name = document.getElementById('qllist').options[document.getElementById('qllist').selectedIndex].text;
if(value == "") {
alert("No QL Value to save");
return false;
}
if(name == "" || name == "Select a QL:" || name == "No saved QLs")
name = prompt("Please enter a name for your quicklist");
var value = document.getElementsByName('readlist')[0].value;
addQL(name, value);
resetOptions();
}
function saveAs(e) {
e.stopPropagation();
if(value == "") {
alert("No QL Value to save");
}
var name = prompt("Please enter a name for your quicklist");
var value = document.getElementsByName('readlist')[0].value;
addQL(name, value);
resetOptions();
}
function del() {
var name = document.getElementById('qllist').options[document.getElementById('qllist').selectedIndex].text;
deleteQL(name);
resetOptions();
}
function resetOptions() {
document.getElementById('qllist').innerHTML = getOptions();
}
function addQL(name, qlValue) {
var nameList = readCookie(CookieName);
if(nameList == null) nameList = "";
if(nameList.indexOf(delimeter + name + delimeter) < 0) {
nameList += delimeter + name + delimeter;
}
createCookie(CookieName, nameList);
createCookie(CookiePrefix + name, qlValue);
}
function getOptions() {
var nameList = readCookie(CookieName);
if(nameList == null) return;
nameList = nameList.replace(/~~/g, '~');
var names = nameList.split(delimeter);
var opts = "";
for(var i = 0; i < names.length; i++) {
if(!names[i]) continue;
var ql = readCookie(CookiePrefix + names[i]);
opts += "";
}
if(opts.length > 0) {
opts = "" + opts;
} else {
opts = "";
}
return opts;
}
function deleteQL(name) {
var nameList = readCookie(CookieName);
if(nameList == null) return;
if(confirm("Are you sure you want to delete the QL: " + name)) {
nameList = nameList.replace(delimeter + name + delimeter, "");
createCookie(CookieName, nameList);
eraseCookie(CookiePrefix + name);
}
}
initQLManager();