diff mod_seclabels/mod_seclabels.lua @ 452:48b615229509

mod_seclabels: Support orderd items
author Kim Alvefur <zash@zash.se>
date Mon, 10 Oct 2011 20:14:30 +0200
parents f43d2d26c1c4
children 5276e1fc26b6
line wrap: on
line diff
--- a/mod_seclabels/mod_seclabels.lua	Wed Oct 05 23:54:33 2011 +0200
+++ b/mod_seclabels/mod_seclabels.lua	Mon Oct 10 20:14:30 2011 +0200
@@ -15,6 +15,11 @@
 end);
 
 local default_labels = {
+	{
+		name = "Unclassified",
+		label = true,
+		default = true,
+	},
 	Classified = {
 		SECRET = { color = "black", bgcolor = "aqua", label = "THISISSECRET" };
 		PUBLIC = { label = "THISISPUBLIC" };
@@ -40,37 +45,46 @@
 		});
 	
 	local function add_labels(catalog, labels, selector)
-		for name, value in pairs(labels) do
-			if value.label then
+		local function add_item(item, name)
+			local name = name or item.name;
+			if item.label then
 				if catalog_request.attr.xmlns == xmlns_label_catalog then
 					catalog:tag("item", {
 						selector = selector..name,
-						default = value.default and "true" or nil,
+						default = item.default and "true" or nil,
 					}):tag("securitylabel", { xmlns = xmlns_label })
 				else -- COMPAT
 					catalog:tag("securitylabel", {
 						xmlns = xmlns_label,
 						selector = selector..name,
-						default = value.default and "true" or nil,
+						default = item.default and "true" or nil,
 					})
 				end
-				if value.name or value.color or value.bgcolor then
+				if item.display or item.color or item.bgcolor then
 					catalog:tag("displaymarking", {
-						fgcolor = value.color,
-						bgcolor = value.bgcolor,
-					}):text(value.name or name):up();
+						fgcolor = item.color,
+						bgcolor = item.bgcolor,
+					}):text(item.display or name):up();
 				end
-				if type(value.label) == "string" then
-					catalog:tag("label"):text(value.label):up();
-				elseif type(value.label) == "table" then
-					catalog:tag("label"):add_child(value.label):up();
+				if type(item.label) == "string" then
+					catalog:tag("label"):text(item.label):up();
+				elseif type(item.label) == "table" then
+					catalog:tag("label"):add_child(item.label):up();
 				end
 				catalog:up();
 				if catalog_request.attr.xmlns == xmlns_label_catalog then
 					catalog:up();
 				end
 			else
-				add_labels(catalog, value, (selector or "")..name.."|");
+				add_labels(catalog, item, (selector or "")..name.."|");
+			end
+		end
+		for i = 1,#labels do
+			add_item(labels[i])
+		end
+		for name, child in pairs(labels) do
+			if type(name) == "string" then
+				add_item(child, name)
 			end
 		end
 	end