# HG changeset patch # User Matti Hamalainen # Date 1294634625 -7200 # Node ID 6ff1ee9122b2c7a76b142e435a13c2296f0c9ea8 # Parent 2fb901161013bed4c9caf87165b7f5c5db55d598 Work more on generalization of the process. diff -r 2fb901161013 -r 6ff1ee9122b2 index.php --- a/index.php Mon Jan 10 05:43:16 2011 +0200 +++ b/index.php Mon Jan 10 06:43:45 2011 +0200 @@ -58,13 +58,18 @@ "); @@ -287,16 +292,18 @@

($1 = item, $2 = container)
- -
+ +


+
+
@@ -326,8 +333,12 @@ } this.addItem = function(item) { - this.changed = true; - return this.items.push(item); + if (this.items.length < slots) { + this.changed = true; + this.items.push(item); + return true; + } else + return false; } this.deleteItemById = function(id) { @@ -348,10 +359,13 @@ this.moveItemById = function(container, id) { var item = this.getItemByIndex(id); if (item != null) { + if (!container.addItem(item)) + return false; this.deleteItemById(id); - container.addItem(item); this.changed = true; - } + return true; + } else + return false; } this.getItemId = function(item) { @@ -529,8 +543,12 @@ if (curr_container == ret.container) curr_container = null; - for (var i = 0; i < len; i++) - ret.container.moveItemById(list_items, i); + for (var i = 0; i < len; i++) { + if (!ret.container.moveItemById(list_items, i)) { + statusMsg("Internal error moving item "+ i); + return; + } + } list_containers.splice(ret.id, 1); @@ -609,8 +627,12 @@ return; } - for (var i = 0; i < selected.length; i++) - list_items.moveItemById(curr_container, selected[i]); + for (var i = 0; i < selected.length; i++) { + if (!list_items.moveItemById(curr_container, selected[i])) { + statusMsg("Internal error moving item #"+i+": '"+selected[i]+"'."); + return; + } + } list_items.flush(); updatePage(); @@ -656,6 +678,13 @@ } +function expandCmd(cmd, item, name) +{ + var str = cmd.replace(/\$1/g, item); + return str.replace(/\$2/g, name); +} + + function createCommands(mode) { if (list_containers.length == 0) { @@ -667,7 +696,6 @@ var str = ""; for (var i = 0; i < list_containers.length; i++) { var container = list_containers[i]; - var s = ""; var counts = []; var curr = []; @@ -677,28 +705,39 @@ curr[container.items[n]] = 1; } + var cmd_autoclose = document.getElementById("cmd_autoclose").checked; + var cmd_delim = document.getElementById("cmd_delim").value; + var cmd_prefix = document.getElementById("cmd_prefix").value; + if (cmd_delim == "") cmd_delim = ";"; + var cmd_cmd = document.getElementById("cmd_cmd").value; + var cmd_seq = document.getElementById("cmd_sequence").checked; + var s = ""; + for (var n = 0; n < container.items.length; n++) { var item = container.items[n]; + var tmp = ""+item; + + if (counts[item] > 1) { + tmp += " " + curr[item]; + curr[item]++; + } + if (mode == "batmud") { - if (s != "") s += ","; - s += item; - if (counts[item] > 1) { - s += " " + curr[item]; - curr[item]++; + if (cmd_seq) { + s += expandCmd(cmd_cmd, tmp, container.name) + cmd_delim; + } else { + if (s != "") s += ","; + s += tmp; } } } if (mode == "batmud") { - var opt = document.getElementById("cmd_autoclose").checked; - var delim = document.getElementById("cmd_delim").value; - var prefix = document.getElementById("cmd_prefix").value; - if (delim == "") delim = ";"; - - str += "command "+prefix+container.name+" "; - if (opt) str += "open "+container.name+delim; - str += "put "+s+" in "+container.name; - if (opt) str += delim+"close "+container.name; + if (!cmd_seq) str += "command "+cmd_prefix+container.name+" "; + if (cmd_autoclose) str += "open "+container.name+delim; + if (!cmd_seq) str += expandCmd(cmd_cmd, s, container.name); + else str += s; + if (cmd_autoclose) str += delim+"close "+container.name; str += "\n"; } }