summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--[l---------]did-assigndefinition-html.lsp50
-rw-r--r--did-controller.lua9
-rw-r--r--did-model.lua16
-rw-r--r--did.roles4
5 files changed, 77 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index 850529d..9784416 100644
--- a/Makefile
+++ b/Makefile
@@ -5,6 +5,7 @@ VERSION=0.0.1
APP_DIST=\
did* \
template-did-editdefinition-html.lsp \
+ template-searchdefinitionlist-text.lsp \
EXTRA_DIST=README Makefile config.mk
diff --git a/did-assigndefinition-html.lsp b/did-assigndefinition-html.lsp
index ea40188..1b9ee32 120000..100644
--- a/did-assigndefinition-html.lsp
+++ b/did-assigndefinition-html.lsp
@@ -1 +1,49 @@
-did-editdefinition-html.lsp \ No newline at end of file
+<% local form, viewlibrary, page_info = ... %>
+<% require("viewfunctions") %>
+
+<link rel="stylesheet" type="text/css" href="/jquery.autocomplete.css">
+<script type="text/javascript" src="/js/jquery-latest.js"></script>
+<script type="text/javascript" src="/js/jquery.autocomplete.js"></script>
+<script type="text/javascript">
+ var lastdata = {};
+ $(function(){
+// var data = "<% local result = viewlibrary.dispatch_component("listdefinitions", nil, true)
+ local tab = {}
+ for i,res in ipairs(result.value.definitions.value) do
+ tab[#tab+1] = res.did
+ end
+ io.write(table.concat(tab, " ")) %>".split(" ");
+ $("#did").focus();
+ $("#did").attr('autocomplete', 'off');
+// $("#did").autocomplete(data);
+ $("#did").autocomplete("cgi-bin/acf/did/did/searchdefinitionlist");
+ $("#did").progress(function(event,data) {
+ // The data is the number of results
+ if (lastdata != data) {
+ lastdata = data;
+ if (data == 1) {
+ $("#diderrtxt").html("");
+ $("#extension").focus();
+ }
+ else if (data == 0)
+ $("#diderrtxt").html("No result");
+ else
+ $("#diderrtxt").html("");
+ };
+ });
+
+ });
+</script>
+
+<H1>Assign Definition</H1>
+<DL>
+<p class="error" id="errortxt"><p></DD>
+<form action="/cgi-bin/acf/did/did/assigndefinition" method="POST">
+<DT>DID</DT>
+<DD><input class="text" type="text" id="did" name="did" value="">
+<p class="error" id="diderrtxt"><p></DD>
+<DT>Extension</DT>
+<DD><input class="text" type="text" id="extension" name="extension" value=""></DD>
+<DT></DT><DD><input class="submit" type="submit" name="Save" value="Save"></DD>
+</FORM>
+</DL>
diff --git a/did-controller.lua b/did-controller.lua
index 7b27837..a18d4b0 100644
--- a/did-controller.lua
+++ b/did-controller.lua
@@ -20,6 +20,15 @@ function listdefinitions(self)
self.clientdata.identification, self.clientdata.description, self.clientdata.department)
end
+function searchdefinitionlist(self)
+ self.clientdata.did = self.clientdata.q or self.clientdata.did
+ local result = self.model.searchdefinitions(self.clientdata.did)
+ if self.clientdata.q then
+ self.conf.viewtype = "text"
+ end
+ return result
+end
+
function editdefinition(self)
return controllerfunctions.handle_form(self, function() return self.model.getdefinition(self.clientdata.did) end, self.model.updatedefinition, self.clientdata, "Save", "Edit Definition", "Definition Saved")
end
diff --git a/did-model.lua b/did-model.lua
index 0e39d7a..e7d1113 100644
--- a/did-model.lua
+++ b/did-model.lua
@@ -622,6 +622,22 @@ function getdefinitionlist(did, extension, identification, description, departme
return def
end
+function searchdefinitions(did)
+ local result = {}
+ local res, err = pcall(function()
+ local connected = databaseconnect(DatabaseUser)
+ local list = listdefinitions("^"..did)
+ for i,did in ipairs(list) do
+ result[#result+1] = did.did
+ end
+ if connected then databasedisconnect() end
+ end)
+ if not res then
+ def.errtxt = err
+ end
+ return cfe({ type="list", value=result, label="DID list" })
+end
+
function getdefinition(did)
local errtxt
local group = {}
diff --git a/did.roles b/did.roles
index 0c67426..ed9ebdd 100644
--- a/did.roles
+++ b/did.roles
@@ -1,3 +1,3 @@
-USER=did:searchdefinitions,did:listdefinitions,did:listunuseddefinitions,did:listuseddefinitions,did:editdefinition,did:assigndefinition,did:newdefinition,did:viewactivitylog
+USER=did:searchdefinitions,did:searchdefinitionlist,did:listdefinitions,did:listunuseddefinitions,did:listuseddefinitions,did:editdefinition,did:assigndefinition,did:newdefinition,did:viewactivitylog
EXPERT=did:publish,did:publishall,did:status,did:createdatabase,did:createdefinition,did:deletedefinition
-ADMIN=did:searchdefinitions,did:listdefinitions,did:listunuseddefinitions,did:listuseddefinitions,did:editdefinition,did:assigndefinition,did:newdefinition,did:publish,did:publishall,did:status,did:createdatabase,did:createdefinition,did:deletedefinition,did:viewactivitylog
+ADMIN=did:searchdefinitions,did:searchdefinitionlist,did:listdefinitions,did:listunuseddefinitions,did:listuseddefinitions,did:editdefinition,did:assigndefinition,did:newdefinition,did:publish,did:publishall,did:status,did:createdatabase,did:createdefinition,did:deletedefinition,did:viewactivitylog