all list and listitem views now use generic templates
diff --git a/planetstack/core/xoslib/templates/xosAdmin.html b/planetstack/core/xoslib/templates/xosAdmin.html
index 3848fc0..8047580 100644
--- a/planetstack/core/xoslib/templates/xosAdmin.html
+++ b/planetstack/core/xoslib/templates/xosAdmin.html
@@ -108,7 +108,7 @@
   <table>

   <% _.each(addFields, function(fieldName) { %>

      <tr><td><%= fieldNameToHumanReadable(fieldName) %>:</td>

-        <% readOnly = $.inArray(fieldName, model.readOnlyFields)>=0 ? " readonly" : "";  console.log(fieldName + " " + readOnly); console.log(model.readOnlyFields); %>

+        <% readOnly = $.inArray(fieldName, model.readOnlyFields)>=0 ? " readonly" : "";  %>

         <% if (fieldName in foreignFields) { %>

             <td><%= idToSelect(fieldName, model.attributes[fieldName], foreignFields[fieldName], "humanReadableName", readOnly) %></td>

         <% } else if (inputType[fieldName] == "checkbox") { %>

@@ -129,12 +129,13 @@
   <table>

   <% console.log(model); _.each(detailFields, function(fieldName) { %>

      <tr><td><%= fieldNameToHumanReadable(fieldName) %>:</td>

+        <% readOnly = $.inArray(fieldName, model.readOnlyFields)>=0 ? " readonly" : "";  console.log(fieldName + " " + readOnly); console.log(model.readOnlyFields); %>

         <% if (fieldName in foreignFields) { %>

-            <td><%= idToSelect(fieldName, model.attributes[fieldName], foreignFields[fieldName], "humanReadableName") %></td>

+            <td><%= idToSelect(fieldName, model.attributes[fieldName], foreignFields[fieldName], "humanReadableName", readOnly) %></td>

         <% } else if (inputType[fieldName] == "checkbox") { %>

-            <td><input type="checkbox" name="<%= fieldName %>" <% if (model.attributes[fieldName]) print("checked"); %>></td>

+            <td><input type="checkbox" name="<%= fieldName %>" <% if (model.attributes[fieldName]) print("checked"); %><%= readOnly %>></td>

         <% } else { %>

-            <td><input type="text" name="<%= fieldName %>" value="<%= model.attributes[fieldName] %>"></td>

+            <td><input type="text" name="<%= fieldName %>" value="<%= model.attributes[fieldName] %>"<%= readOnly %>></td>

         <% } %>

      </tr>

   <% }); %>

@@ -143,478 +144,32 @@
   </form>

 </script>
 
-<!-- Deployment -->
-
-<script type="text/template" id="xosAdmin-deployment-list-template">
+<script type="text/template" id="xos-list-template">
   <h3 class="xos-list-title"><%= title %></h3>
   <%= xosListHeaderTemplate() %>
   <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>name</th>
-     <th>backend</th>
-     <th>admin_tenant</th>
-     <th># sites</th>
-     <th>delete</th>
+  <thead>
+  <tr>
+  <% _.each(listFields, function(fieldName) { %>
+      <th><%= fieldNameToHumanReadable(fieldName) %></th>
+  <% }); %>
+  <th>delete</th>
   </tr></thead>
   <tbody></tbody>
   </table>
   <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
 </script>
 
-
-<script type="text/template" id="xosAdmin-deployment-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
-  <td><%= backend_type %></td>
-  <td><%= admin_tenant %></td>
-  <td><%= typeof sites != 'undefined' && sites.length || 0 %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-<!-- Image -->
-
-<script type="text/template" id="xosAdmin-image-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>name</th>
-     <th>disk_format</th>
-     <th>container_format</th>
-     <th>path</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-<script type="text/template" id="xosAdmin-image-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
-  <td><%= disk_format %></td>
-  <td><%= container_format %></td>
-  <td><%= path %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-<!-- NetworkTemplate -->
-
-<script type="text/template" id="xosAdmin-networkTemplate-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>name</th>
-     <th>description</th>
-     <th>visibility</th>
-     <th>translation</th>
-     <th>sharedNetworkName</th>
-     <th>sharedNetworkId</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-
-<script type="text/template" id="xosAdmin-networkTemplate-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
-  <td><%= description %></td>
-  <td><%= visibility %></td>
-  <td><%= translation %></td>
-  <td><%= sharedNetworkName %></td>
-  <td><%= sharedNetworkId %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-<!-- Network -->
-
-<script type="text/template" id="xosAdmin-network-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>name</th>
-     <th>template</th>
-     <th>ports</th>
-     <th>labels</th>
-     <th>owner</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-<script type="text/template" id="xosAdmin-network-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
-  <td><%= idToName(template,"networkTemplates","name") %></td>
-  <td><%= ports %></td>
-  <td><%= labels %></td>
-  <td><%= idToName(owner,"slices","name") %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-<!-- NetworkSliver -->
-
-<script type="text/template" id="xosAdmin-networkSliver-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>network</th>
-     <th>sliver</th>
-     <th>ip</th>
-     <th>port_id</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-<script type="text/template" id="xosAdmin-networkSliver-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td><%= idToName(network,"networks","name") %></td>
-  <td><%= idToName(sliver,"slivers","name") %></td>
-  <td><%= ip %></td>
-  <td><%= port_id %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-<!-- NetworkDeployment -->
-
-<script type="text/template" id="xosAdmin-networkDeployment-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>network</th>
-     <th>deployment</th>
-     <th>net_id</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-<script type="text/template" id="xosAdmin-networkDeployment-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td><%= idToName(network,"networks","name") %></td>
-  <td><%= idToName(deployment,"deployments","name") %></td>
-  <td><%= net_id %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-<!-- Node -->
-
-<script type="text/template" id="xosAdmin-node-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>name</th>
-     <th>site</th>
-     <th>deployment</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-
-<script type="text/template" id="xosAdmin-node-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
-  <td><%= idToName(site,"sites","name") %></td>
-  <td><%= idToName(deployment,"deployments","name") %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-<!-- SliceRole -->
-
-<script type="text/template" id="xosAdmin-sliceRole-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>role</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-<script type="text/template" id="xosAdmin-sliceRole-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td><%= role %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-<!-- Service -->
-
-<script type="text/template" id="xosAdmin-service-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>name</th>
-     <th>description</th>
-     <th>enabled</th>
-     <th>versionNumber</th>
-     <th>published</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-
-<script type="text/template" id="xosAdmin-service-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
-  <td><%= description %></td>
-  <td><%= enabled %></td>
-  <td><%= versionNumber %></td>
-  <td><%= published %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-<!-- Site -->
-
-<script type="text/template" id="xosAdmin-site-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>name</th>
-     <th>url</th>
-     <th>enabled</th>
-     <th>login_base</th>
-     <th>is_public</th>
-     <th>abbreviated_name</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-<script type="text/template" id="xosAdmin-site-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
-  <td><%= site_url %></td>
-  <td><%= enabled %></td>
-  <td><%= login_base %></td>
-  <td><%= is_public %></td>
-  <td><%= abbreviated_name %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-<!-- Slice -->
-
-<script type="text/template" id="xosAdmin-slice-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>name</th>
-     <th>enabled</th>
-     <th>omf_friendly</th>
-     <th>description</th>
-     <th>slice_url</th>
-     <th>site</th>
-     <th>max_slivers</th>
-     <th>service</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-<script type="text/template" id="xosAdmin-slice-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
-  <td><%= enabled %></td>
-  <td><%= omf_friendly %></td>
-  <td><%= description %></td>
-  <td><%= slice_url %></td>
-  <td><%= idToName(site,"sites","name") %></td>
-  <td><%= max_slivers %></td>
-  <td><%= idToName(service,"services","name") %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-<!-- SliceDeployment -->
-
-<script type="text/template" id="xosAdmin-sliceDeployment-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>slice</th>
-     <th>deployment</th>
-     <th>tenant_id</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-<script type="text/template" id="xosAdmin-sliceDeployment-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td><%= idToName(slice,"slices","name") %></td>
-  <td><%= idToName(deployment,"deployments","name") %></td>
-  <td><%= tenant_id %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-<!-- SlicePrivilege -->
-
-<script type="text/template" id="xosAdmin-slicePrivilege-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>user</th>
-     <th>slice</th>
-     <th>role</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-<script type="text/template" id="xosAdmin-slicePrivilege-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td><%= idToName(user,"users","username") %></td>
-  <td><%= idToName(slice,"slices","name") %></td>
-  <td><%= idToName(role,"sliceRoles","role") %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-
-<!-- Sliver -->
-
-<script type="text/template" id="xosAdmin-sliver-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>name</th>
-     <th>instance_id</th>
-     <th>instance_name</th>
-     <th>image</th>
-     <th>creator</th>
-     <th>slice</th>
-     <th>node</th>
-     <th>deploymentNetwork</th>
-     <th>flavor</th>
-     <th>userData</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-
-<script type="text/template" id="xosAdmin-sliver-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: name}) %></td>
-  <td><%= instance_id %></td>
-  <td><%= instance_name %></td>
-  <td><%= idToName(image,"images","name") %></td>
-  <td><%= idToName(creator,"users","name") %></td>
-  <td><%= idToName(slice,"slices","name") %></td>
-  <td><%= idToName(node,"nodes","name") %></td>
-  <td><%= idToName(deploymentNetwork,"deployments","name") %></td>
-  <td><%= flavor %></td>
-  <td><%= userData %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-<!-- User -->
-
-<script type="text/template" id="xosAdmin-user-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>username</th>
-     <th>firstname</th>
-     <th>lastname</th>
-     <th>phone</th>
-     <th>user_url</th>
-     <th>site</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-
-<script type="text/template" id="xosAdmin-user-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: username}) %></td>
-  <td><%= firstname %></td>
-  <td><%= lastname %></td>
-  <td><%= phone %></td>
-  <td><%= user_url %></td>
-  <td><%= idToName(site,"sites","name") %></td>
-  <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
-</script>
-
-<!-- UserDeployments -->
-
-<script type="text/template" id="xosAdmin-userDeployment-list-template">
-  <h3 class="xos-list-title"><%= title %></h3>
-  <%= xosListHeaderTemplate() %>
-  <table class="test-table">
-  <thead><tr>
-     <th>id</th>
-     <th>user</th>
-     <th>deployment</th>
-     <th>kuser_id</th>
-     <th>delete</th>
-  </tr></thead>
-  <tbody></tbody>
-  </table>
-  <%= xosListFooterTemplate({addChildHash: addChildHash}) %>
-</script>
-
-<script type="text/template" id="xosAdmin-userDeployment-listitem-template">
-  <td> <%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: id}) %></td>
-  <td><%= idToName(user,"users","username") %></td>
-  <td><%= idToName(deployment,"deployments","name") %></td>
-  <td><%= kuser_id %></td>
+<script type="text/template" id="xos-listitem-template">
+  <% _.each(listFields, function(fieldName) { %>
+      <% if ($.inArray(fieldName, model.detailLinkFields)>=0) { %>
+          <td><%= xosDetailLinkTemplate({collectionName: collectionName, id: id, text: model.attributes[fieldName]}) %></td>
+      <% } else if (fieldName in foreignFields) { %>
+          <td><%= idToName(model.attributes[fieldName], foreignFields[fieldName], "humanReadableName") %></td>
+      <% } else { %>
+      <td><%= model.attributes[fieldName] %></td>
+      <% } %>
+  <% }); %>
   <td><%= xosDeleteButtonTemplate({modelName: modelName, id: id}) %></td>
 </script>