summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apk-available-html.lsp30
-rw-r--r--apk-controller.lua8
l---------apk-dependent-html.lsp1
-rw-r--r--apk-loaded-html.lsp100
-rw-r--r--apk-model.lua94
l---------apk-toplevel-html.lsp1
-rw-r--r--apk.roles4
7 files changed, 108 insertions, 130 deletions
diff --git a/apk-available-html.lsp b/apk-available-html.lsp
index bcf109f..136f084 100644
--- a/apk-available-html.lsp
+++ b/apk-available-html.lsp
@@ -24,14 +24,19 @@
var MultiString = function(f) {
return f.toString().split('\n').slice(1, -1).join('\n');
}
- var actions = MultiString(function() {/**
+ var <%= page_info.action %>actions = MultiString(function() {/**
<%
local packagecfe = cfe({ type="hidden", value="REPLACEME" })
- --if viewlibrary.check_permission("install") and not packagetable.upgrade then
+ if viewlibrary.check_permission("delete") and page_info.action == "toplevel" then
+ htmlviewfunctions.displayitem(cfe({type="form", value={package=packagecfe}, label="", option="Delete", action="delete" }), page_info, -1)
+ end
if viewlibrary.check_permission("install") then
- htmlviewfunctions.displayitem(cfe({type="form", value={package=packagecfe}, label="", option="Install", action="install" }), page_info, -1)
+ if page_info.action == "dependent" then
+ htmlviewfunctions.displayitem(cfe({type="form", value={package=packagecfe}, label="", option="Promote", action="install" }), page_info, -1)
+ elseif page_info.action ~= "toplevel" then
+ htmlviewfunctions.displayitem(cfe({type="form", value={package=packagecfe}, label="", option="Install", action="install" }), page_info, -1)
+ end
end
- --if viewlibrary.check_permission("upgrade") and packagetable.upgrade then
if viewlibrary.check_permission("upgrade") then
htmlviewfunctions.displayitem(cfe({type="form", value={package=packagecfe}, label="", option="Upgrade", action="upgrade" }), page_info, -1)
end
@@ -42,12 +47,13 @@
**/});
<% end %>
- $("#list").tablesorter({widgets: ['zebra', 'filter', 'pager'], widgetOptions: {
+ $("#<%= page_info.action %>list").tablesorter({widgets: ['zebra', 'filter', 'pager'], widgetOptions: {
+ pager_selectors: { container: '#<%= page_info.action %>pager' },
// Filtering is handled by the server
filter_serversideFiltering: true,
// We can put the page number and size here, filtering and sorting handled by pager_customAjaxUrl
- pager_ajaxUrl : '<%= html.html_escape(page_info.script .. page_info.orig_action) %>?viewtype=json&page={page+1}&pagesize={size}',
+ pager_ajaxUrl : '<%= html.html_escape(page_info.script..page_info.prefix..page_info.controller.."/"..page_info.action) %>?viewtype=json&page={page+1}&pagesize={size}',
// Modify the url after all processing has been applied to handle filtering and sorting
pager_customAjaxUrl: function(table, url) {
@@ -80,9 +86,13 @@
for ( r=0; r<data.value.result.value.length; r++) {
row=[];
<% if viewlibrary.check_permission("install") or viewlibrary.check_permission("upgrade") or viewlibrary.check_permission("details") then %>
- var tmp = actions.replace(/REPLACEME/g, data.value.result.value[r].name);
+ var tmp = <%= page_info.action %>actions.replace(/REPLACEME/g, data.value.result.value[r].name);
if (data.value.result.value[r].upgrade) {
+<% if page_info.action ~= "dependent" and page_info.action ~= "toplevel" then %>
row[0] = tmp.replace(/action="install"[\s\S]*?<form /, "");
+<% else %>
+ row[0] = tmp;
+<% end %>
} else {
row[0] = tmp.replace(/action="upgrade"[\s\S]*?<form /, "");
}
@@ -101,10 +111,10 @@
});
</script>
-<% htmlviewfunctions.displaycommandresults({"upgrade", "install"}, session) %>
+<% htmlviewfunctions.displaycommandresults({"delete", "install", "upgrade"}, session) %>
<% local header_level = htmlviewfunctions.displaysectionstart(form, page_info) %>
-<table id="list" class="tablesorter"><thead>
+<table id="<%= page_info.action %>list" class="tablesorter"><thead>
<tr>
<% if viewlibrary.check_permission("install") or viewlibrary.check_permission("upgrade") or viewlibrary.check_permission("details") then %>
<th class="filter-false remove">Action</th>
@@ -115,7 +125,7 @@
</thead><tbody>
</tbody></table>
-<div id="pager" class="pager">
+<div id="<%= page_info.action %>pager" class="pager">
<form>
Page: <select class="gotoPage"></select>
<img src="<%= html.html_escape(page_info.wwwprefix..page_info.staticdir) %>/tablesorter/first.png" class="first"/>
diff --git a/apk-controller.lua b/apk-controller.lua
index 674742a..9d30afb 100644
--- a/apk-controller.lua
+++ b/apk-controller.lua
@@ -11,6 +11,14 @@ mymodule.available = function(self)
return self.model.get_available_packages(self, self.clientdata)
end
+mymodule.toplevel = function(self)
+ return self.model.get_toplevel_packages(self, self.clientdata)
+end
+
+mymodule.dependent = function(self)
+ return self.model.get_dependent_packages(self, self.clientdata)
+end
+
mymodule.details = function(self)
return self.model.get_package_details(self.clientdata.package)
end
diff --git a/apk-dependent-html.lsp b/apk-dependent-html.lsp
new file mode 120000
index 0000000..fbcc343
--- /dev/null
+++ b/apk-dependent-html.lsp
@@ -0,0 +1 @@
+apk-available-html.lsp \ No newline at end of file
diff --git a/apk-loaded-html.lsp b/apk-loaded-html.lsp
index 5fc82df..9996835 100644
--- a/apk-loaded-html.lsp
+++ b/apk-loaded-html.lsp
@@ -1,97 +1,13 @@
<% local form, viewlibrary, page_info, session = ... %>
<% htmlviewfunctions = require("htmlviewfunctions") %>
-<% html = require("acf.html") %>
-
-<script type="text/javascript">
- if (typeof jQuery == 'undefined') {
- document.write('<script type="text/javascript" src="<%= html.html_escape(page_info.wwwprefix) %>/js/jquery-latest.js"><\/script>');
- }
-</script>
-
-<script type="text/javascript">
- if (typeof $.tablesorter == 'undefined') {
- document.write('<script type="text/javascript" src="<%= html.html_escape(page_info.wwwprefix) %>/js/jquery.tablesorter.js"><\/script>');
- }
-</script>
-
-<script type="text/javascript">
- $(document).ready(function() {
- $("#toplevellist").tablesorter({headers: {0:{sorter: false}}, widgets: ['zebra']});
- $("#dependentlist").tablesorter({headers: {0:{sorter: false}}, widgets: ['zebra']});
- });
-</script>
<% htmlviewfunctions.displaycommandresults({"delete", "install", "upgrade"}, session) %>
-<% local header_level = htmlviewfunctions.displaysectionstart(form, page_info) %>
-<% local header_level2 = htmlviewfunctions.displaysectionstart(form.value.toplevel, page_info, htmlviewfunctions.incrementheader(header_level)) %>
-<table id="toplevellist" class="tablesorter"><thead>
- <tr>
- <% if viewlibrary.check_permission("delete") or viewlibrary.check_permission("upgrade") then %>
- <th>Action</th>
- <% end %>
- <th>Package Name</th>
- <th>Version</th>
- <th>Description</th>
- </tr>
-</thead><tbody>
-<% local packagecfe = cfe({ type="hidden", value="" }) %>
-<% for i,packagetable in pairs(form.value.toplevel.value) do %>
- <tr>
- <% if viewlibrary.check_permission("delete") or viewlibrary.check_permission("upgrade") or viewlibrary.check_permission("details") then %>
- <% packagecfe.value = packagetable.name %>
- <td>
- <% if viewlibrary.check_permission("delete") then %>
- <% htmlviewfunctions.displayitem(cfe({type="form", value={package=packagecfe}, label="", option="Delete", action="delete" }), page_info, -1) %>
- <% end %>
- <% if viewlibrary.check_permission("upgrade") and packagetable.upgrade then %>
- <% htmlviewfunctions.displayitem(cfe({type="form", value={package=packagecfe}, label="", option="Upgrade", action="upgrade" }), page_info, -1) %>
- <% end %>
- <% if viewlibrary.check_permission("details") then %>
- <% htmlviewfunctions.displayitem(cfe({type="form", value={package=packagecfe}, label="", option="View", action="details" }), page_info, -1) %>
- <% end %>
- </td>
- <% end %>
- <td><%= html.html_escape(packagetable.name) %></td>
- <td><%= html.html_escape(packagetable.version) %></td>
- <td><%= html.html_escape(packagetable.description) %></td>
- </tr>
-<% end %>
-</tbody></table>
-<% htmlviewfunctions.displaysectionend(header_level2) %>
-
-<% htmlviewfunctions.displaysectionstart(form.value.dependent, page_info, header_level2) %>
-<table id="dependentlist" class="tablesorter"><thead>
- <tr>
- <% if viewlibrary.check_permission("install") or viewlibrary.check_permission("upgrade") then %>
- <th>Action</th>
- <% end %>
- <th>Package Name</th>
- <th>Version</th>
- <th>Description</th>
- </tr>
-</thead><tbody>
-<% for i,packagetable in pairs(form.value.dependent.value) do %>
- <tr>
- <% if viewlibrary.check_permission("install") or viewlibrary.check_permission("upgrade") or viewlibrary.check_permission("details") then %>
- <% packagecfe.value = packagetable.name %>
- <td>
- <% if viewlibrary.check_permission("install") then %>
- <% htmlviewfunctions.displayitem(cfe({type="form", value={package=packagecfe}, label="", option="Promote", action="install" }), page_info, -1) %>
- <% end %>
- <% if viewlibrary.check_permission("upgrade") and packagetable.upgrade then %>
- <% htmlviewfunctions.displayitem(cfe({type="form", value={package=packagecfe}, label="", option="Upgrade", action="upgrade" }), page_info, -1) %>
- <% end %>
- <% if viewlibrary.check_permission("details") then %>
- <% htmlviewfunctions.displayitem(cfe({type="form", value={package=packagecfe}, label="", option="View", action="details" }), page_info, -1) %>
- <% end %>
- </td>
- <% end %>
- <td><%= html.html_escape(packagetable.name) %></td>
- <td><%= html.html_escape(packagetable.version) %></td>
- <td><%= html.html_escape(packagetable.description) %></td>
- </tr>
-<% end %>
-</tbody></table>
-<% htmlviewfunctions.displaysectionend(header_level2) %>
-<% htmlviewfunctions.displaysectionend(header_level) %>
+<% if viewlibrary and viewlibrary.dispatch_component then
+ if viewlibrary.check_permission("toplevel") then
+ viewlibrary.dispatch_component("toplevel")
+ end
+ if viewlibrary.check_permission("dependent") then
+ viewlibrary.dispatch_component("dependent")
+ end
+end %>
diff --git a/apk-model.lua b/apk-model.lua
index 682beea..d72ba07 100644
--- a/apk-model.lua
+++ b/apk-model.lua
@@ -172,10 +172,8 @@ mymodule.get_loaded_packages = function()
return cfe({ type="group", value={toplevel=top, dependent=depend}, label="Installed Packages" })
end
-mymodule.get_available_packages = function(self, clientdata)
- repo = repository()
- -- available are all except same version installed
- local retval = cfe({ type="group", value={}, label="Available Packages" })
+local handle_pagination_and_filtering = function(self, clientdata, packages)
+ local retval = cfe({ type="group", value={} })
retval.value.page = cfe({ value=0, label="Page Number", descr="0 indicates ALL", key=true })
retval.value.pagesize = cfe({ value=10, label="Page Size", key=true })
retval.value.rowcount = cfe({ value=0, label="Row Count" })
@@ -184,7 +182,7 @@ mymodule.get_available_packages = function(self, clientdata)
-- filter is a table with a string filter for each column
retval.value.filter = cfe({ type="structure", value={name="", version=""}, label="Filter", key=true })
self.handle_clientdata(retval, clientdata)
- retval.value.result = cfe({ type="structure", value={}, label="Available Packages" })
+ retval.value.result = cfe({ type="structure", value={} })
-- Process the incoming page data
local page = tonumber(retval.value.page.value) or 0
@@ -192,28 +190,27 @@ mymodule.get_available_packages = function(self, clientdata)
local pagesize = tonumber(retval.value.pagesize.value) or 10
retval.value.pagesize.value = pagesize
- local available = {}
- for name,value in pairs(repo) do
- if value.version and (not value.installed or value.upgrade) then
- local temp = {}
- temp.name = name
- temp.version = value.version
- temp.upgrade = value.upgrade
-
- -- Filter
- for c,f in pairs(retval.value.filter.value) do
- if temp[c] and f ~= "" and not string.find(temp[c], format.escapemagiccharacters(f)) then
- temp = nil
- break
- end
+ local result = {}
+ for name,value in pairs(packages) do
+ local temp = {}
+ temp.name = name
+ temp.version = value.installed or value.version
+ temp.upgrade = value.upgrade
+ temp.description = value.comment
+
+ -- Filter
+ for c,f in pairs(retval.value.filter.value) do
+ if temp[c] and f ~= "" and not string.find(temp[c], format.escapemagiccharacters(f)) then
+ temp = nil
+ break
end
-
- available[#available + 1] = temp
end
+
+ result[#result + 1] = temp
end
-- Sort
- if #available > 0 then
+ if #result > 0 then
local function createsort(column, descending, equal)
return function(a,b)
if a[column] == b[column] then
@@ -238,19 +235,64 @@ mymodule.get_available_packages = function(self, clientdata)
end
end
end
- table.sort(available, sortfunction)
+ table.sort(result, sortfunction)
end
-- Paginate
- retval.value.rowcount.value = #available
+ retval.value.rowcount.value = #result
if page > 0 then
for i=((page-1)*pagesize+1), (page*pagesize) do
- retval.value.result.value[#retval.value.result.value+1] = available[i]
+ retval.value.result.value[#retval.value.result.value+1] = result[i]
end
else
- retval.value.result.value = available
+ retval.value.result.value = result
+ end
+
+ return retval
+end
+
+mymodule.get_available_packages = function(self, clientdata)
+ repo = repository()
+ local packages = {}
+ -- available are all except same version installed
+ for name,value in pairs(repo) do
+ if value.version and (not value.installed or value.upgrade) then
+ packages[name] = value
+ end
end
+ local retval = handle_pagination_and_filtering(self, clientdata, packages)
+ retval.label = "Available Packages"
+ if retval.value.result then retval.value.result.label = "Available Packages" end
+ return retval
+end
+mymodule.get_toplevel_packages = function(self, clientdata)
+ repo = repository()
+ toplevel = gettoplevel()
+ local packages = {}
+ for name,value in pairs(repo) do
+ if value.installed and toplevel[name] then
+ packages[name] = value
+ end
+ end
+ local retval = handle_pagination_and_filtering(self, clientdata, packages)
+ retval.label = "Top Level Packages"
+ if retval.value.result then retval.value.result.label = "Top Level Packages" end
+ return retval
+end
+
+mymodule.get_dependent_packages = function(self, clientdata)
+ repo = repository()
+ toplevel = gettoplevel()
+ local packages = {}
+ for name,value in pairs(repo) do
+ if value.installed and not toplevel[name] then
+ packages[name] = value
+ end
+ end
+ local retval = handle_pagination_and_filtering(self, clientdata, packages)
+ retval.label = "Dependent Packages"
+ if retval.value.result then retval.value.result.label = "Dependent Packages" end
return retval
end
diff --git a/apk-toplevel-html.lsp b/apk-toplevel-html.lsp
new file mode 120000
index 0000000..fbcc343
--- /dev/null
+++ b/apk-toplevel-html.lsp
@@ -0,0 +1 @@
+apk-available-html.lsp \ No newline at end of file
diff --git a/apk.roles b/apk.roles
index cb26ff8..bdfc07a 100644
--- a/apk.roles
+++ b/apk.roles
@@ -1,3 +1,3 @@
-USER=apk:loaded,apk:available,apk:details
+USER=apk:loaded,apk:available,apk:details,apk:toplevel,apk:dependent
EXPERT=apk:cache,apk:expert,apk:delete,apk:install,apk:upgrade,apk:updateall,apk:upgradeall
-ADMIN=apk:loaded,apk:available,apk:details,apk:cache,apk:expert,apk:delete,apk:install,apk:upgrade,apk:updateall,apk:upgradeall
+ADMIN=apk:loaded,apk:available,apk:details,apk:toplevel,apk:dependent,apk:cache,apk:expert,apk:delete,apk:install,apk:upgrade,apk:updateall,apk:upgradeall