Javascript clean-up in speed dial head

This commit is contained in:
Paweł Forysiuk 2012-09-15 01:21:52 +02:00 committed by Christian Dywan
parent 5bb5b17986
commit 616633d502
2 changed files with 63 additions and 30 deletions

View File

@ -122,43 +122,44 @@
<script type="text/javascript"> <script type="text/javascript">
var getAction = function (id) function add_tile (ev) {
{ ev.preventDefault();
var s = document.getElementById(id).childNodes[0];
if (s.className == 'preview')
return true;
var url = prompt ("{enter_shortcut_address}", "http://"); var url = prompt ("{enter_shortcut_address}", "http://");
if (!url) return false; if (!url)
return false;
if (url.indexOf ("://") == -1) if (url.indexOf ("://") == -1)
url = "http://" + url; url = "http://" + url;
var id = ev.target.parentNode.parentNode.id;
console.log ("speed_dial-save-add " + id + " " + url + " "); console.log ("speed_dial-save-add " + id + " " + url + " ");
return false;
} }
var renameShortcut = function (id) function rename_tile (ev) {
{ var old_name = ev.target.textContent;
var old_name = document.getElementById(id).childNodes[1].textContent;
var name = prompt ("{enter_shortcut_name}", old_name); var name = prompt ("{enter_shortcut_name}", old_name);
if (!name) return; if (!name)
return;
var id = ev.target.parentNode.id;
console.log ("speed_dial-save-rename " + id + " " + name); console.log ("speed_dial-save-rename " + id + " " + name);
} }
var clearShortcut = function (id) function delete_tile (ev) {
{ ev.preventDefault();
if(!confirm("{are_you_sure}"))
if (!confirm("{are_you_sure}"))
return; return;
var id = ev.target.parentNode.parentNode.id;
console.log ("speed_dial-save-delete " + id); console.log ("speed_dial-save-delete " + id);
} }
var firstNode, secondNode; var firstNode, secondNode;
var cursor; var cursor;
var dial = document.getElementsByClassName("shortcut");
var get_dial_div = function (ele) { var get_dial_div = function (ele) {
var dial_div; var dial_div;
@ -167,10 +168,14 @@
if (ele.className == 'title') if (ele.className == 'title')
dial_div = ele.parentNode; dial_div = ele.parentNode;
if (ele.className.indexOf ('shortcut') != -1) if (ele.className.indexOf ('shortcut') != -1)
dial_dir = ele; dial_div = ele;
return dial_div; return dial_div;
} }
var click = function (ev) {
function click (ev) {
if (ev == undefined)
return;
ev.preventDefault(); ev.preventDefault();
var ele = ev.target; var ele = ev.target;
cursor = ele.style.cursor; cursor = ele.style.cursor;
@ -181,10 +186,13 @@
eparent.className = 'shortcut selected'; eparent.className = 'shortcut selected';
firstNode = eparent.id; firstNode = eparent.id;
} }
document.RemoveEventListener('click', click, false);
}; };
var up = function (ev) { function up (ev) {
if (ev == undefined)
return;
ev.preventDefault();
ele = ev.target; ele = ev.target;
var eparent = get_dial_div (ele); var eparent = get_dial_div (ele);
@ -196,17 +204,19 @@
swap(); swap();
}; };
var over = function (ev) { function over (ev) {
if (ev == undefined) if (ev == undefined)
return; return;
ev.preventDefault();
var ele = ev.target; var ele = ev.target;
var eparent = get_dial_div (ele); var eparent = get_dial_div (ele);
var dial = document.getElementsByClassName("shortcut");
if (firstNode != undefined) if (firstNode != undefined)
{ {
eparent.className = 'shortcut selected'; eparent.className = 'shortcut selected';
for (var i = 0; i <= dial.length; i++) { for (var i = 0; i < dial.length; i++) {
if (eparent.id != firstNode.id && dial[i].id != eparent.id) { if (eparent.id != firstNode.id && dial[i].id != eparent.id) {
dial[i].className = 'shortcut'; dial[i].className = 'shortcut';
} }
@ -219,10 +229,33 @@
console.log ("speed_dial-save-swap " + firstNode + " " + secondNode); console.log ("speed_dial-save-swap " + firstNode + " " + secondNode);
}; };
document.addEventListener('mousedown', click, false); function init () {
document.addEventListener('mouseup', up, false); var new_tile = document.getElementsByClassName ("preview new");
document.addEventListener('mouseover', over, false); new_tile[0].addEventListener ('click', add_tile, false);
var titles = document.getElementsByClassName ("title");
var len = titles.length;
for (var i = 0; i < len; i++) {
if (titles[i].parentNode.childNodes[0].className != "preview new")
titles[i].addEventListener ('click', rename_tile, false);
}
var crosses = document.getElementsByClassName ("cross");
var len = crosses.length;
for (var i = 0; i < len; i++)
crosses[i].addEventListener ('click', delete_tile, false);
var occupied_tiles = document.getElementsByClassName ("shortcut");
var len = occupied_tiles.length;
for (var i = 0; i < len; i++) {
if (occupied_tiles[i].childNodes[0].className != "preview new") {
occupied_tiles[i].addEventListener('mousedown', click, false);
occupied_tiles[i].addEventListener('mouseover', over, false);
occupied_tiles[i].addEventListener('mouseup', up, false);
}
}
}
</script> </script>
</head> </head>
<body> <body onload="init ();">
<div id="content"> <div id="content">

View File

@ -241,11 +241,11 @@ namespace Midori {
} }
markup.append_printf (""" markup.append_printf ("""
<div class="shortcut" id="%u"><div class="preview"> <div class="shortcut" id="%u"><div class="preview">
<a class="cross" href="#" onclick='clearShortcut("%u");'></a> <a class="cross" href="#"></a>
<a href="%s"><img src="data:image/png;base64,%s" title='%s'></a> <a href="%s"><img src="data:image/png;base64,%s" title='%s'></a>
</div><div class="title" onclick='renameShortcut("%u");'>%s</div></div> </div><div class="title">%s</div></div>
""", """,
slot, slot, uri, encoded ?? "", title, slot, title ?? ""); slot, uri, encoded ?? "", title, title ?? "");
} }
else if (tile != "settings") else if (tile != "settings")
keyfile.remove_group (tile); keyfile.remove_group (tile);
@ -255,10 +255,10 @@ namespace Midori {
markup.append_printf (""" markup.append_printf ("""
<div class="shortcut" id="%u"><div class="preview new"> <div class="shortcut" id="%u"><div class="preview new">
<a class="add" href="#" onclick='return getAction("%u");'></a> <a class="add" href="#"></a>
</div><div class="title">%s</div></div> </div><div class="title">%s</div></div>
""", """,
next_slot, next_slot, _("Click to add a shortcut")); next_slot, _("Click to add a shortcut"));
markup.append_printf ("</div>\n</body>\n</html>\n"); markup.append_printf ("</div>\n</body>\n</html>\n");
html = markup.str; html = markup.str;
} }