[Zope3-checkins] CVS: Zope3/src/zope/app/zopetop - __init__.py:1.1 add_more.gif:1.1 arrowup.gif:1.1 bg_bar.jpg:1.1 bg_content.jpg:1.1 bg_root_folder.jpg:1.1 bg_top.jpg:1.1 closed_folder.gif:1.1 configure.zcml:1.1 control_panels.gif:1.1 control_panels_folder.gif:1.1 dialog_macros.pt:1.1 document_icon.gif:1.1 folder_icon.gif:1.1 help.gif:1.1 minus.gif:1.1 new_file.gif:1.1 new_folder.gif:1.1 new_template.gif:1.1 pdlib.js:1.1 plus.gif:1.1 service_manager.gif:1.1 spacer1.gif:1.1 spacer2.gif:1.1 spacer3.gif:1.1 standardmacros.py:1.1 system_security.gif:1.1 test_style.html:1.1 user_accounts.gif:1.1 users_folder.gif:1.1 view_macros.pt:1.1 website_settings.gif:1.1 widget_macros.pt:1.1 x.gif:1.1 zope3logo.jpg:1.1 zopetop.css:1.1

Philipp von Weitershausen philikon at philikon.de
Tue Mar 2 12:11:34 EST 2004


Update of /cvs-repository/Zope3/src/zope/app/zopetop
In directory cvs.zope.org:/tmp/cvs-serv20275/zopetop

Added Files:
	__init__.py add_more.gif arrowup.gif bg_bar.jpg bg_content.jpg 
	bg_root_folder.jpg bg_top.jpg closed_folder.gif configure.zcml 
	control_panels.gif control_panels_folder.gif dialog_macros.pt 
	document_icon.gif folder_icon.gif help.gif minus.gif 
	new_file.gif new_folder.gif new_template.gif pdlib.js plus.gif 
	service_manager.gif spacer1.gif spacer2.gif spacer3.gif 
	standardmacros.py system_security.gif test_style.html 
	user_accounts.gif users_folder.gif view_macros.pt 
	website_settings.gif widget_macros.pt x.gif zope3logo.jpg 
	zopetop.css 
Log Message:
Moved browser skins to their individual packages below zope.app.


=== Added File Zope3/src/zope/app/zopetop/__init__.py ===
#
# This file is necessary to make this directory a package.


=== Added File Zope3/src/zope/app/zopetop/add_more.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/arrowup.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/bg_bar.jpg ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/bg_content.jpg ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/bg_root_folder.jpg ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/bg_top.jpg ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/closed_folder.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/configure.zcml ===
<zope:configure 
  xmlns:zope="http://namespaces.zope.org/zope"
  xmlns="http://namespaces.zope.org/browser">

  <layer name="templates" />
  <layer name="images" />
  <layer name="css" />
  <skin name="ZopeTop" layers="templates images css rotterdam default" />

  <page
      for="*"
      name="standard_macros"
      permission="zope.View"
      class=".standardmacros.StandardMacros"
      allowed_interface="zope.interface.common.mapping.IItemMapping"
      layer="templates" />

  <page 
      for="*"
      name="view_macros"
      permission="zope.View"
      template="view_macros.pt"
      layer="templates" />

  <page 
      for="*"
      name="widget_macros"
      permission="zope.View"
      template="widget_macros.pt" 
      layer="templates" />

  <page 
      for="*"
      name="dialog_macros"
      permission="zope.View"
      template="dialog_macros.pt"
      layer="templates" />

  <resource name="pdlib.js" file="pdlib.js"
            layer="templates" />

  <resource name="zopetop.css" file="zopetop.css" 
            layer="css" />

  <resource name="service_manager.gif" file="service_manager.gif"
            layer="images" />

  <resource name="arrowup.gif" file="arrowup.gif"
            layer="images" />

  <resource name="zope3logo.jpg" file="zope3logo.jpg"
            layer="images" />

  <resource name="bg_top.jpg" file="bg_top.jpg"
            layer="images" />

  <resource name="bg_bar.jpg" file="bg_bar.jpg"
            layer="images" />

  <resource name="closed_folder.gif" file="closed_folder.gif"
            layer="images" />

  <resource name="spacer1.gif" file="spacer1.gif"
            layer="images" />

  <resource name="spacer2.gif" file="spacer2.gif"
            layer="images" />

  <resource name="spacer3.gif" file="spacer3.gif" 
            layer="images" />

  <resource name="x.gif" file="x.gif"
            layer="images" />

  <resource name="new_file.gif" file="new_file.gif"
            layer="images" />

  <resource name="new_folder.gif" file="new_folder.gif"
            layer="images" />

  <resource name="new_template.gif" file="new_template.gif"
            layer="images" />

  <resource name="control_panels.gif" file="control_panels.gif"
            layer="images" />

  <resource name="system_security.gif" file="system_security.gif"
            layer="images" />

  <resource name="user_accounts.gif" file="user_accounts.gif"
            layer="images" />

  <resource name="control_panels_folder.gif" file="control_panels_folder.gif"
            layer="images" />

  <resource name="add_more.gif" file="add_more.gif"
            layer="images" />

  <resource name="bg_root_folder.jpg" file="bg_root_folder.jpg"
            layer="images" />

  <resource name="plus.gif" file="plus.gif"
            layer="images" />

  <resource name="minus.gif" file="minus.gif"
            layer="images" />

  <resource name="users_folder.gif" file="users_folder.gif"
            layer="images" />

  <resource name="website_settings.gif" file="website_settings.gif"
            layer="images"/>

  <resource name="bg_content.jpg" file="bg_content.jpg" 
            layer="images"/>

  <resource name="help.gif" file="help.gif" 
            layer="images"/>

</zope:configure>


=== Added File Zope3/src/zope/app/zopetop/control_panels.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/control_panels_folder.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/dialog_macros.pt ===
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html metal:define-macro="dialog" i18n:domain="zope">
<head metal:use-macro="views/standard_macros/head" />

<body>
  <span metal:use-macro="views/standard_macros/breadcrumbs" />

  <div metal:define-slot="body">
     <p>Body here</p>
  </div>

  <div metal:use-macro="views/standard_macros/footer" />
</body>
</html>



=== Added File Zope3/src/zope/app/zopetop/document_icon.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/folder_icon.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/help.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/minus.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/new_file.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/new_folder.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/new_template.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/pdlib.js ===
// Copyright (c) 2002 Zope Corporation and Contributors.
// All Rights Reserved.
//
// This software is subject to the provisions of the Zope Public License,
// Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
// THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
// WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
// FOR A PARTICULAR PURPOSE.

// Page design Javascript library

// A library for manipulating objects on a page with object selection,
// context menus, and drag and drop.  Mostly DOM 2 oriented, with bits
// for IE compatibility.
// $Id: pdlib.js,v 1.1 2004/03/02 17:11:32 philikon Exp $

// The following variables and functions are documented for use by
// scripts that use this library:
//
//   pd_node_setup
//   pd_selected_item
//   pd_selected_items
//   pd_library_version
//
//   pd_stopEvent()
//   pd_findEventTarget()
//   pd_hideContextMenu()
//   pd_isSelected()
//   pd_select()
//   pd_deselect()
//   pd_clearSelection()
//   pd_setupContextMenu()     -- adds a context menu to an element
//   pd_setupDragUI()          -- adds drag/drop functionality to an element
//   pd_setupDropTarget()      -- turns an element into a drop target
//   pd_setupContextMenuDefinition() -- turns an element into a context menu
//   pd_setupPage()            -- Page initialization (call at bottom of page)
//
// See the documentation for descriptions.
// All other names are subject to change in future revisions.

var pd_library_version = '0.1';  // The pdlib version.  Avoid using this!
var pd_open_context_menu = null; // The context menu node being displayed
var pd_drag_event = null;        // A pd_DragEvent object while dragging
var pd_selected_items = null;    // List of selected items
var pd_selected_item = null;     // Non-null when exactly one item is selected
var pd_drag_select_mode = null;  // -1 or 1 in drag-select mode, otherwise null
var pd_node_setup = {};          // Object containing node setup functions
var pd_max_contextmenu_width = 250; // Threshold for faulty browsers
var pd_invisible_targets = [];   // A list of normally invisible drop targets

var pd_target_normal_border = "2px solid transparent";
var pd_target_highlighted_border = "2px dotted red";
var pd_target_loading_border = "2px solid green";


function pd_hasAncestor(node, ancestor) {
  var p = node;
  while (p) {
    if (p == ancestor)
      return true;
    p = p.parentNode;
  }
  return false;
}

function pd_stopEvent(e) {
  if (!e)
    e = event;
  if (e.stopPropagation)
    e.stopPropagation();
  else
    e.cancelBubble = true;
  return false;
}

function pd_findEventTarget(e, className, stop_className) {
  // Search for a node of the given class among the ancestors of the
  // target of an event, stopping if stop_className is encountered.
  var node = e.target || e.srcElement;
  while (node) {
    if (node.className == className)
      return node;
    if (stop_className && node.className == stop_className)
      return null;
    node = node.parentNode;
  }
  // Not found.
  return null;
}

function pd_highlight(node, enabled) {
  node.style.color = enabled ? "HighlightText" : "";
  node.style.backgroundColor = enabled ? "Highlight" : "";
}

//
// Context menu functions
//

function pd_showContextMenu(menunode, e) {
  if (!e)
    e = event;
  // Close any open menu
  pd_hideContextMenu();
  var page_w = window.innerWidth || document.body.clientWidth;
  var page_h = window.innerHeight || document.body.clientHeight;
  var page_x = window.pageXOffset || document.body.scrollLeft;
  var page_y = window.pageYOffset || document.body.scrollTop;

  if (menunode.offsetWidth >= pd_max_contextmenu_width) {
    // It's likely that the browser ignored "display: table"
    // and used the full width of the page.  Use a workaround.
    menunode.style.width = pd_max_contextmenu_width;
  }

  // Choose a location for the menu based on where the user clicked
  if (page_w - e.clientX < menunode.offsetWidth) {
    // Close to the right edge
    menunode.style.left = page_x + e.clientX - menunode.offsetWidth - 1;
  }
  else {
    menunode.style.left = page_x + e.clientX + 1;
  }
  if (page_h - e.clientY < menunode.offsetHeight) {
    // Close to the bottom
    menunode.style.top = page_y + e.clientY - menunode.offsetHeight - 1;
  }
  else {
    menunode.style.top = page_y + e.clientY + 1;
  }

  pd_open_context_menu = menunode;
  menunode.style.visibility = "visible";
  return false;
}

function pd_hideContextMenu() {
  if (pd_open_context_menu) {
    pd_open_context_menu.style.visibility = "hidden";
    pd_open_context_menu = null;
  }
}

function pd_getContextMenuItem(e) {
  return pd_findEventTarget(e, "context-menu-item", "context-menu");
}

function pd_highlightContextMenuItem(e) {
  if (!e)
    e = event;
  var node = pd_getContextMenuItem(e);
  if (node)
    pd_highlight(node, true);
}

function pd_unhighlightContextMenuItem(e) {
  if (!e)
    e = event;
  var node = pd_getContextMenuItem(e);
  if (node)
    pd_highlight(node, false);
}

function pd_filterContextMenuItems(node) {
  // Execute filter scripts and set the "display" style property
  var i, f, enabled;
  if (node.getAttribute) {
    f = node.getAttribute("filter");
    if (f) {
      enabled = eval(f);
      if (enabled)
        node.style.display = "";
      else
        node.style.display = "none";
    }
  }
  for (i = 0; i < node.childNodes.length; i++)
    pd_filterContextMenuItems(node.childNodes[i]);
}

//
// Drag functions
//

function pd_DragEvent(e, move_func, checkmove_func) {
  this.target = null;
  this.move_func = move_func;
  this.checkmove_func = checkmove_func;
  this.start_x = e.pageX ? e.pageX : e.clientX + document.body.scrollLeft;
  this.start_y = e.pageY ? e.pageY : e.clientY + document.body.scrollTop;
  this.feedback_node = document.getElementById("drag-feedback-box");
  this.began_moving = false;
  this.revealed = [];
}

function pd_unhighlightDropTarget() {
  if (pd_drag_event && pd_drag_event.target) {
    pd_drag_event.target.style.border = pd_target_normal_border;
    pd_drag_event.target = null;
  }
}

function pd_allowDrop(target) {
  if (!pd_drag_event)
    return false;
  var i;
  for (i = 0; i < pd_selected_items.length; i++) {
    if (pd_hasAncestor(target, pd_selected_items[i])) {
      // Don't let the user drag an element inside itself.
      return false;
    }
  }
  if (pd_drag_event.checkmove_func) {
    if (!pd_drag_event.checkmove_func(pd_selected_items, target))
      return false;
  }
  return true;
}

function pd_highlightDropTarget(target) {
  if (pd_allowDrop(target)) {
    pd_unhighlightDropTarget();
    target.style.border = pd_target_highlighted_border;
    pd_drag_event.target = target;
  }
}

function pd_firstDrag(x, y) {
  if (!pd_drag_event)
    return;
  var i, target;
  var feedback_node_style = pd_drag_event.feedback_node.style;
  var item = pd_selected_items[0];  // TODO: expand box to include all items

  pd_drag_event.began_moving = true;
  feedback_node_style.left = x + 5;
  feedback_node_style.top = y + 5;
  feedback_node_style.width = item.offsetWidth - 2;
  feedback_node_style.height = item.offsetHeight - 2;
  feedback_node_style.display = "block";

  // Show some of the normally invisible targets.
  for (i = 0; i < pd_invisible_targets.length; i++) {
    target = pd_invisible_targets[i];
    if (pd_allowDrop(target)) {
      if (pd_drag_event.revealed.push)
        pd_drag_event.revealed.push(target);
      else
        pd_drag_event.revealed = pd_drag_event.revealed.concat([target]);
      target.style.visibility = "visible";
    }
  }
}

function pd_dragging(e) {
  if (!pd_drag_event)
    return;
  if (!e)
    e = event;
  var x = e.pageX ? e.pageX : e.clientX + document.body.scrollLeft;
  var y = e.pageY ? e.pageY : e.clientY + document.body.scrollTop;

  if (!pd_drag_event.began_moving) {
    if (Math.abs(x - pd_drag_event.start_x) <= 3 &&
        Math.abs(y - pd_drag_event.start_y) <= 3) {
      // Didn't move far enough yet.
      return;
    }
    pd_firstDrag(x, y);
  }
  pd_drag_event.feedback_node.style.left = x + 5;
  pd_drag_event.feedback_node.style.top = y + 5;
}

function pd_finishDrag() {
  var i;
  for (i = 0; i < pd_drag_event.revealed.length; i++)
    pd_drag_event.revealed[i].style.visibility = '';

  document.onmousemove = null;
  document.onmouseup = null;
  document.onselectstart = null;
  pd_drag_event.feedback_node.style.display = "none";
  var ev = pd_drag_event;
  pd_drag_event = null;

  if (ev.target) {
    ev.target.style.border = pd_target_loading_border;
    if (ev.move_func)
      ev.move_func(pd_selected_items, ev.target);
  }
}

function pd_startDrag(e, move_func, checkmove_func) {
  if (pd_drag_event) {
    // Already dragging
    return;
  }
  if (!e)
    e = event;
  pd_drag_event = new pd_DragEvent(e, move_func, checkmove_func);
  document.onmousemove = pd_dragging;
  document.onmouseup = pd_finishDrag;
  document.onselectstart = pd_stopEvent;  // IE: Don't start a selection.
  if (e.preventDefault)
    e.preventDefault();  // NS 6: Don't start a selection.
}

//
// Selection management functions
//

function pd_isSelected(node) {
  if (pd_selected_items) {
    for (var i = 0; i < pd_selected_items.length; i++) {
      if (node == pd_selected_items[i]) {
        return true;
      }
    }
  }
  return false;
}

function pd_changedSelection() {
  if (pd_selected_items && pd_selected_items.length == 1)
    pd_selected_item = pd_selected_items[0];
  else
    pd_selected_item = null;
}

function pd_deselect(node) {
  var i, n;
  if (pd_selected_items) {
    var newsel = [];
    // There must be a better way.  This could be slow.
    for (i = 0; i < pd_selected_items.length; i++) {
      n = pd_selected_items[i];
      if (n != node) {
        if (newsel.push)
          newsel.push(n)
        else
          newsel = newsel.concat([n]);
      }
    }
    pd_selected_items = newsel;
    pd_changedSelection();
  }
  pd_highlight(node, false);
}

function pd_select(node) {
  if (!pd_isSelected(node)) {
    if (!pd_selected_items)
      pd_selected_items = [node];
    else if (pd_selected_items.push)
      pd_selected_items.push(node);
    else
      pd_selected_items = pd_selected_items.concat([node]);
    pd_changedSelection();
  }
  pd_highlight(node, true);
}

function pd_clearSelection() {
  var i, node, n;
  if (pd_selected_items) {
    for (i = 0; i < pd_selected_items.length; i++)
      pd_highlight(pd_selected_items[i], false);
  }
  pd_selected_items = [];
  pd_changedSelection();
}

function pd_dragSelecting(node) {
  if (pd_drag_select_mode == 1)
    pd_select(node);
  else if (pd_drag_select_mode == -1)
    pd_deselect(node);
}

function pd_endDragSelect() {
  pd_drag_select_mode = null;
  document.onmouseup = null;
}

function pd_startDragSelect(v) {
  document.onmouseup = pd_endDragSelect;
  pd_drag_select_mode = v;
}


//
// On-page object management functions
//

function pd_itemOnMousedown(mo, e, move_func, checkmove_func, box) {
  if (!e)
    e = event;
  if (e.button == 0 || e.button == 1) {
    pd_hideContextMenu();
    if (!box)
      box = mo;
    if (e.shiftKey) {
      // Toggle the selected state of this item and start drag select.
      if (pd_isSelected(box)) {
        pd_deselect(box);
        pd_startDragSelect(-1);
      }
      else {
        pd_select(box);
        pd_startDragSelect(1);
      }
    }
    else if (e.ctrlKey) {
      if (pd_isSelected(box))
        pd_deselect(box);
      else
        pd_select(box);
    }
    else {
      if (!pd_isSelected(box)) {
        pd_clearSelection();
        pd_select(box);
      }
      pd_startDrag(e, move_func, checkmove_func);
    }
  }
  return pd_stopEvent(e);
}

function pd_itemOnMouseover(mo, e, box) {
  if (pd_drag_select_mode) {
    pd_dragSelecting(box || mo);
    return pd_stopEvent(e);
  }
}

function pd_itemOnContextMenu(mo, e, contextMenuId, box) {
  if (!e)
    e = event;
  if (!box)
    box = mo;
  if (!pd_isSelected(box)) {
    pd_clearSelection();
    pd_select(box);
  }
  var menu = document.getElementById(contextMenuId);
  if (menu) {
    pd_filterContextMenuItems(menu);
    pd_showContextMenu(menu, e);
    return pd_stopEvent(e);
  }
}

function pd_setupDragUI(mo, move_func, checkmove_func, box) {
  // Adds selection and drag and drop functionality to an element
  function call_onmousedown(e) {
    return pd_itemOnMousedown(mo, e, move_func, checkmove_func, box);
  }
  function call_onmouseover(e) {
    return pd_itemOnMouseover(mo, e, box);
  }
  mo.onmousedown = call_onmousedown;
  mo.onmouseover = call_onmouseover;
  mo.onselectstart = pd_stopEvent;  // IE: Don't start a selection.
}

function pd_setupContextMenu(mo, contextMenuId, box) {
  // Adds context menu functionality to an element
  function oncontextmenu(e) {
    return pd_itemOnContextMenu(mo, e, contextMenuId, box);
  }
  mo.oncontextmenu = oncontextmenu;
}

function pd_documentOnMouseDown() {
  pd_hideContextMenu();
  pd_clearSelection();
}

function pd_setupNodeAndDescendants(node) {
  var i, f;
  if (node.className) {
    f = pd_node_setup[node.className];
    if (f)
      f(node);
  }
  for (i = 0; i < node.childNodes.length; i++) {
    pd_setupNodeAndDescendants(node.childNodes[i]);
  }
}

function pd_setupPage(node) {
  if (!node)
    node = document;
  if (!document.onmousedown)
    document.onmousedown = pd_documentOnMouseDown;
  pd_setupNodeAndDescendants(node);
}

function pd_setupDropTarget(node, selectable) {
  function call_highlight() {
    return pd_highlightDropTarget(node);
  }
  node.onmouseover = call_highlight;
  node.onmouseout = pd_unhighlightDropTarget;
  if (!selectable)
    node.onmousedown = pd_stopEvent; // Prevent accidental selection
}

function pd_setupContextMenuDefinition(node) {
  node.onmouseover = pd_highlightContextMenuItem;
  node.onmouseout = pd_unhighlightContextMenuItem;
  node.onmousedown = pd_stopEvent;
  node.onmouseup = pd_hideContextMenu;
}

pd_node_setup['drop-target'] = pd_setupDropTarget;
pd_node_setup['context-menu'] = pd_setupContextMenuDefinition;


=== Added File Zope3/src/zope/app/zopetop/plus.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/service_manager.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/spacer1.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/spacer2.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/spacer3.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/standardmacros.py ===
##############################################################################
#
# Copyright (c) 2002 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Standard macros for page templates in the ZMI

The macros are drawn from various different page templates.

$Id: standardmacros.py,v 1.1 2004/03/02 17:11:32 philikon Exp $
"""
from zope.app.basicskin.standardmacros import StandardMacros as BaseMacros

class StandardMacros(BaseMacros):
    macro_pages = ('view_macros', 'widget_macros', 'dialog_macros',
                   'navigation_macros')


=== Added File Zope3/src/zope/app/zopetop/system_security.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/test_style.html ===
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="zopetopBasic.css" rel="stylesheet" type="text/css" />
<link href="zopetopStructure.css" rel="stylesheet" type="text/css" />
<link href="zopetopWidgets.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>Stylesheet Test Page</h1>
<h1>H1</h1>
<h2>H2</h2>
<h3>H3</h3>
<h4>H4</h4>
<h5>H5</h5>
<h6>H6</h6>
Default Text<br />
<b>Bold Text</b><br />
<em>Em Text</em><br />
<i>Italic</i><br />
<div>Standard Div</div>
<div class="background">Background Color</div>
<div class="hilite">Highlight Color</div>
<div class="darker">Highlight Color</div>
<pre>Preformatted Text
Preformatted Text
Preformatted Text
</pre>
<blockquote>Block Quote
Block Quote
Block Quote</blockquote>
<p>Paragraph 
Paragraph
Paragraph
Paragraph
Paragraph
<a href="#" >A URL</a>
</p>
<form action="." method="post">
<fieldset>
<legend>Legend</legend><br />
<div class="row"><label>First Name: <input name="firstname" type="text" accesskey="n" tabindex="1" title="First Name" dir="ltr" lang="en" size="35" maxlength="30" /></label></div>
<div class="row"><label>Last Name:<input name="lastname" type="text" accesskey="n" tabindex="1" title="Last Name" dir="ltr" lang="en" size="35" maxlength="30" /></label></div>
<div class="row"><label>Free Form Text: <textarea name="text" cols="20" rows="20" accesskey="t" tabindex="3" title="Free Form Text" dir="ltr" lang="en" label="Free Form Text"></textarea></label><br /></div>
<div class="row"><label>CheckBox:<input name="checkbox" type="checkbox" accesskey="c" tabindex="4" title="A Checkbox" dir="ltr" lang="en" value="1" checked="checked" />    </label></div>
<div class="row">Radio Group: 
    <label>
    <input type="radio" name="RadioGroiup" value="radio1" />
    Radio1</label>
    <label>
    <input type="radio" name="RadioGroiup" value="radio2" />
    Radio2</label>
</div>
<div class="row">
  Select: 
    <select name="select" accesskey="s" tabindex="7" title="Select Box" dir="ltr" lang="en">
      <option value="1" selected="selected">Value1</option>
      <option value="2">Value2</option>
      <option value="3">Value3</option>
    </select>
</div>
<div class="row">
    Multiple Select: 
    <select name="select_multiple" size="5" multiple="multiple" accesskey="m" tabindex="8" title="Select Multiple">
      <option value="1" selected="selected">Value1</option>
      <option value="2">Value2</option>
      <option value="3" selected="selected">Value3</option>
    </select>
</div>
<div class="row">
  <input name="Image Field" type="image" accesskey="i" tabindex="9" title="Image Field" value="1" src="arrowUp.gif" alt="Arrow Up" /></div>
  <div class="row">
  <input name="file" type="file" accesskey="f" tabindex="10" title="File Upload" dir="ltr" lang="en" size="25" /></div>
  
<div class="row"> <input name="button" type="button" accesskey="b" tabindex="11" title="Button" value="button" />
    <input name="submit" type="submit" accesskey="s" tabindex="12" title="Submit Button" dir="ltr" lang="en" value="submit" />
<input name="reset" type="reset" accesskey="r" tabindex="13" title="Reset" dir="ltr" lang="en" value="reset" />
</div>

  </fieldset>

</form>

<table>
  <caption>
  Normal Table 
  </caption>
  <thead>
    <tr> 
      <th> TH </th>
      <th> TH </th>
      <th> TH </th>
    </tr>
    <tr class="even"> 
      <td> TR</td>
      <td> Class</td>
      <td> Even</td>
    </tr>
    <tr class="odd"> 
      <td> TR</td>
      <td> Class</td>
      <td> Odd</td>
    </tr>
  </thead>
  <tbody>
  </tbody>
</table>
<table class="listing">
  <caption>
  Table Class: Listing 
  </caption>
  <thead>
    <tr> 
      <th> TH </th>
      <th> TH </th>
      <th> TH </th>
      <th> TH </th>
      <th> TH </th>
      <th> TH </th>
    </tr>
  </thead>
  <tbody>
    <tr> 
      <td> TD </td>
      <td> TD </td>
      <td> TD </td>
      <td> TD </td>
      <td> TD </td>
      <td> TD </td>
    </tr>
  </tbody>
</table>
<table class="box">
  <caption>
  Table Class: Box 
  </caption>
  <tr> 
    <th> TH </th>
      <th> TH </th>
      <th> TH </th>
      <th> TH </th>
      <th> TH </th>
      <th> TH </th>
    </tr>


    <tr> 
      <td> TD </td>
      <td> TD </td>
      <td> TD </td>
      <td> TD </td>
      <td> TD </td>
      <td> TD </td>
    </tr>

</table>
<div class="document">Document Style Div</div>
<div class="message">Message Style Div</div>
<div class="error">Error Style Div</div>
<div class="clock">Clock Style Div</div>
<div class="editableDocument">Editable Document Style Div</div>
<div class="personalBar">Personal Bar Style Div</div>
<div class="comment">Comment Style Div</div>
<div class="expired">Expired Style Div</div>
<div class="private">Private Style Div</div>
<div class="published">Published Style Div</div>
<div class="pending">Pending Style Div</div>
<div class="syndicated">Syndicated Style Div</div>
<div class="breadcrumbs">Breadcrumbs Style Div</div>

</body>
</html>


=== Added File Zope3/src/zope/app/zopetop/user_accounts.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/users_folder.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/view_macros.pt ===
<metal:block define-macro="page"><metal:block define-slot="doctype"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></metal:block>
<html xmlns="http://www.w3.org/1999/xhtml"
  xml:lang="en"
  lang="en"
  i18n:domain="zope">
<head metal:define-macro="head">
  <title metal:define-slot="title"
         tal:content="options/getTitle|view/getTitle|context/getTitle|default">
    Zope
  </title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <link href="zopetop.css" rel="stylesheet" type="text/css"
        tal:attributes="href context/++resource++zopetop.css" />
  <script type="text/javascript" src="pdlib.js"
          tal:attributes="src context/++resource++pdlib.js"></script>

  <metal:tree use-macro="context/@@standard_macros/navigation_tree_js" />

  <div metal:define-slot="headers">
  </div>

</head>
<body tal:attributes="onload body_onload | nothing">

<div class="top">
  <a href="#" tal:attributes="href string:${request/URL/1}/@@manage">
  <img src="zope3logo.jpg" width="366" height="37" 
                   alt="Zope 3 Logo"
                   tal:attributes="src context/++resource++zope3logo.jpg" />
  </a>
  <span metal:use-macro="views/standard_macros/logged_user">
      Logged in as user
  </span>
</div>
<table class="columns">
   <tr>
     <td class="left">
            <span metal:use-macro="views/standard_macros/navigation_box" />
            <span metal:use-macro="views/standard_macros/commontasks_box" />
	    <!--
            <span metal:use-macro="views/standard_macros/metadata_box" />
            <span metal:use-macro="views/standard_macros/views_box" />
            <span metal:use-macro="views/standard_macros/actions_box" />
            -->
     </td>
     <td class="main">
         <span metal:use-macro="views/standard_macros/zmi_views" />
         <span metal:use-macro="views/standard_macros/zmi_actions" />
         <span metal:use-macro="views/standard_macros/content_header_bar" />
         <span metal:define-slot="body"></span>
     </td>
   </tr>
</table>
<span metal:use-macro="views/standard_macros/footer" />
</body>
</html>
</metal:block>

=== Added File Zope3/src/zope/app/zopetop/website_settings.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/widget_macros.pt ===
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html i18n:domain="zope">
<head>
  <link href="zopetopBasic.css" rel="stylesheet" type="text/css" />
  <link href="zopetopStructure.css" rel="stylesheet" type="text/css" />
  <link href="zopetopWidgets.css" rel="stylesheet" type="text/css" />
</head>
<body>


<div class="user" metal:define-macro="logged_user" i18n:translate="">
   Logged in as
   <span tal:replace="request/user/getTitle" i18n:name="user_title">
     dtremea</span>
</div>

<div class="box" id="navigationTree" metal:define-macro="navigation_box">
  <metal:tree use-macro="context/@@standard_macros/navigation_tree_box" />
</div>

<div class="box" id="commonTasks"
       tal:define="view context/@@commonTasks|nothing"
       tal:condition="view/strip|nothing"
       metal:define-macro="commontasks_box">

  <h5 i18n:translate="">Common Tasks</h5>

  <div class="body" tal:content="structure view">
      CommonTasks
  </div>
</div>

<div class="box" metal:define-macro="services_box">
  <h5 i18n:translate="">Services</h5>
  <div class="body">
    <div class="content even">
      <img src="user_accounts.gif" width="22" height="28"
          tal:attributes="src context/++resource++user_accounts.gif"
          alt="user accounts" i18n:attributes="alt"/>
      <span i18n:translate="">User Accounts</span>
    </div>
    <div class="content odd">
      <img src="control_panels.gif" width="24" height="28"
           tal:attributes="src context/++resource++control_panels.gif"
           alt="control panels" i18n:attributes="alt"/>
      <span i18n:translate="">Control Panels</span>
    </div>
    <div class="content even">
      <img src="system_security.gif" width="23" height="28"
           tal:attributes="src context/++resource++system_security.gif"
           alt="system security" i18n:attributes="alt" />
      <span i18n:translate="">System Security</span>
    </div>
    <div class="content odd">
      <img src="add_more.gif" width="26" height="28"
           tal:attributes="src context/++resource++add_more.gif"
           alt="add more" i18n:attributes="alt" />
      <span i18n:translate="">Add More</span>
    </div>
  </div>
</div>

<table metal:define-macro="explorer_box" align="center" class="box" width="150">
  <thead>
    <tr>
      <th align="center" class="boxtop" i18n:translate="">Root Folder</th>
      <th class="empty">&nbsp;</th>
    </tr>
    </thead>
    <tbody>
    <tr>
      <td colspan="2" class="odd"><a href="#">
        <img src="plus.gif" width="19" height="25"
             tal:attributes="src context/++resource++plus.gif"
             alt="+" />
        <img src="closed_folder.gif" width="26" height="25"
             tal:attributes="src context/++resource++closed_folder.gif"
             alt="folder" />
        Folder Name</a>
      </td>
    </tr>
    <tr>
      <td colspan="2" class="odd"><a href="#">
        <img src="plus.gif" width="19" height="25"
             tal:attributes="src context/++resource++plus.gif"
             alt="+" />
        <img src="closed_folder.gif" width="26" height="25"
             tal:attributes="src context/++resource++closed_folder.gif"
             alt="folder" />
        Folder Name</a>
      </td>
    </tr>
    <tr>
      <td colspan="2" class="even"><a href="#">
        <img src="minus.gif" width="19" height="25"
             tal:attributes="src context/++resource++minus.gif"
             alt="-" />
        <img src="closed_folder.gif" width="26" height="25"
             tal:attributes="src context/++resource++closed_folder.gif"
             alt="folder" />
        Folder Name</a>
      </td>
    </tr>
    </tbody>
  </table>

  <table metal:define-macro="search_box" align="center" class="box"
         width="150">
    <thead>
      <tr>
        <th align="center" class="boxtop">Search</th>
        <th class="empty">&nbsp;</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td colspan="2" nowrap="nowrap">
          <form name="search">
          <input type="text" size="15" style="width: 85%;" />
          <input type="submit" value="Go" style="width: 15%;" />
          </form>
        </td>
      </tr>
    </tbody>
  </table>

  <div class="box"
       tal:define="views context/@@view_get_menu/zmi_views|nothing"
       tal:condition="views"
       metal:define-macro="views_box">

  <h5 i18n:translate="">Views</h5>

  <div class="body">
     <div class="content" tal:repeat="view views">
       <a href="" tal:attributes="href view/action"
                  tal:content="view/title">
          View
       </a>
     </div>
  </div>
  </div>

  <div class="box"
       tal:define="actions context/@@view_get_menu/zmi_actions|nothing"
       tal:condition="actions"
       metal:define-macro="actions_box">

  <h5 i18n:translate="">Actions</h5>

  <div class="body">
     <div class="content" tal:repeat="action actions">
       <a href="" tal:attributes="href action/action"
                  tal:content="action/title">
          Action
       </a>
     </div>
  </div>
  </div>

  <div class="box"
       tal:define="view context/@@MetaDataBox|nothing"
       tal:condition="view/strip|nothing"
       metal:define-macro="metadata_box">

  <h5 i18n:translate="">Metadata</h5>

  <div class="body">
     <div class="content" tal:content="structure view">
      Some metadata
     </div>
  </div>
  </div>

<div class="breadcrumbs" metal:define-macro="content_header_bar">
  <span i18n:translate="">Location:</span>
  <span
      metal:define-macro="breadcrumbs"
          tal:omit-tag=""
      tal:repeat="breadcrumb context/@@absolute_url/breadcrumbs"> <a href=""
      tal:attributes="href string:${breadcrumb/url}/@@manage"
      tal:content="string:${breadcrumb/name}/"
      >name</a></span>

</div>

<div class="itemViews"
     metal:define-macro="zmi_views">
        <tal:block repeat="view context/@@view_get_menu/zmi_views">
          <a href=""
            tal:attributes="href view/action;
                            class view/selected;"
            tal:content="view/title"
            i18n:translate="">
            label
          </a>
        </tal:block>
</div>

<div class="actions"
     metal:define-macro="zmi_actions"
     tal:define="actions context/@@view_get_menu/zmi_actions">
        <span tal:condition="actions"
              tal:omit-tag="">
          <a href="#"
               tal:repeat="info actions"
               tal:attributes="href info/action"
               tal:content="info/title"
               i18n:translate="">
              Action name
          </a>
        </span>
        <span class="help">
          <a href="#">
          <span i18n:translate="">Help</span>
          <img src="help.gif" width="25" height="25"
               tal:attributes="src context/++resource++help.gif"
               alt="help" />
        </a>
  </span>

</div>

<div metal:define-macro="footer"
       tal:define="view context/@@MetaDataBox|nothing"
       class="footer">
  <div tal:condition="view/strip|nothing"
       class="metadata" tal:content="structure view" />
  <div i18n:translate="">Powered by Zope</div>
</div>

</body>
</html>


=== Added File Zope3/src/zope/app/zopetop/x.gif ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/zope3logo.jpg ===
  <Binary-ish file>

=== Added File Zope3/src/zope/app/zopetop/zopetop.css ===
/*****************************************************************************
 *
 * Copyright (c) 2001, 2002 Zope Corporation and Contributors.
 * All Rights Reserved.
 *
 * This software is subject to the provisions of the Zope Public License,
 * Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
 * WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
 * FOR A PARTICULAR PURPOSE.
 *
 *****************************************************************************

 These are the basic CSS declarations.

 $Id: zopetop.css,v 1.1 2004/03/02 17:11:32 philikon Exp $
*/

/* Start CSS for fluid multi-column form layout */

div.row {
  float: left;
  clear: none;
  padding: 0.5em;
}

div.separator {
  clear: both;
}

div.controls {
  float:left;
  clear: both;
}

/* End CSS for fluid multi-column form layout */

div.label {
  font-weight: bold;
}

div.field {
  margin: 4px 0;
}

div.required:after{
   content: " *";
}

body {
    font: 0.8em Tahoma, Helvetica, Arial, sans-serif;
    background-color: #ccccff;
    color: #000066;
    margin: 0;
    padding: 0;
}

#drag-feedback-box {
  border: 1px dotted black;
  position: absolute;
  display: none;
  z-index: 1000;
}

div.top {
  background-image: url('bg_top.jpg');
  height: 37px;
}

div.top div.user {
  position: absolute;
  top: 1em;
  right: 1em;
  color: white;
}


a {
    text-decoration: none;
    color: #000066;
    background-color: transparent;
}

table {
    font: 1em Tahoma, Helvetica, Arial, sans-serif;
}


img {
/* turn off image borders. */
    border: none;
}

p {
/* Default paragraph style*/
    font: 1em Tahoma, Helvetica, Arial, sans-serif;
    margin: 1em 0em;
    text-align: left;
}

p a {
    text-decoration: underline;
}

p a:visited {
    color: Purple;
    background-color: transparent;
}

p a:active {
    color: Red;
    background-color: transparent;
}

p img {
    border: 1px solid Black;
    margin: 1em;
}


hr {
    clear: both;
    height: 1px;
    color: #8CACBB;
    background-color: transparent;
}


h1, h2, h3, h4, h5, h6 {
	color: Black;
	padding: 0 0;
        margin: .5em 0;
	font-family: Tahoma, Helvetica, Arial, sans-serif;
}

h1 {
    font-size: 1.8em;
}

h2 {
    font-size: 1.6em;
}

h3 {
    font-size: 1.4em;
}

h4 {
    font-size: 1.2em;
}

h5 {
    font-size: 1.1em;
}

h6 {
    font-size: 1.0em;
}

ul {
/*    list-style-image: url("bullet.gif"); */
    margin-top: 1em;
    margin-bottom: 1em;
    margin-left: 2em;
    padding:0;
}

/* we advise you to use the div.group and span.legend elements instead of
these, as the only browser showing legends correctly is IE. They are just
included here for completeness */

fieldset {
    border: 1px solid #8cacbb;
    margin: 2em 0em 1em 0em;
    padding: 1em 0em;
}

legend {
    background: White;
    padding: 0.5em;
}


form {
    border: none;
}

textarea {
/* Small cosmetic hack which makes textarea gadgets look nicer.*/
    font: bold 1em Tahoma, Helvetica, Arial, sans-serif;
    border: 1px solid #8cacbb;
    width: 100%;
    color: Black;
    background-color: white;
}

input {
/* Small cosmetic fix which makes input gadgets look nicer.  */
    font: 1em Tahoma, Helvetica, Arial, sans-serif;
    color: Black;
    margin: 1px 1px 1px 1px;
}

select {
    font: 1em Tahoma, Helvetica, Arial, sans-serif;
    margin: 1px 1px 1px 1px;
}

abbr, acronym, .explain {
/* Help classes */
    border-bottom: 1px dotted Black;
    background-color: transparent;
    cursor: help;
}

code {
    font-size: 1.2em;
    color: Black;
    background-color: #dee7ec;
}

pre {
    font-size: 1.2em;
    padding: 1em;
    border: 1px solid #8cacbb;
    color: Black;
    background-color: #dee7ec;
}

.netscape4 {
/* This hides elements necessary for getting Netscape 4.x to look better.
   Mostly strategically placed hr tags and &middot;'s */
    display: none;
}

table.listing {
    /* The default table for document listings. Contains name, document types, modification times etc in a file-browser-like fashion */
    border-collapse: collapse;
    border-left: 1px solid #7B7AC6;
    border-bottom: 1px solid #7B7AC6;
    margin: 1em 0em 1em 0em;
}

table.listing th {
    background: #A1A1F1;
    border-top: 1px solid #7B7AC6;
    border-bottom: 1px solid #7B7AC6;
    border-right: 1px solid #7B7AC6;
    color: #000000;
    font-weight: normal;
    padding: 0em 1em 0em 1em;
}

table.listing tr.odd {
    /*every second line should be shaded */
    background: transparent;
}

table.listing tr.even {
    background: #ECFAFF;
}

table.listing td {
    border-right: 1px solid #7B7AC6;
    padding: 0.1em 0.4em 0.1em 0.4em;
}

table.listing a:hover {
    text-decoration: underline;
}

table.listing img{
    vertical-align: middle;
}

table.columns {
   width: 100%;
   padding: 0;
   margin: 0;
   border-collapse: collapse;
}

table.columns td{
  vertical-align: top;
}

table.columns td.main {
    background-color: white;
    padding: 0 0.5em;
    border-bottom: 1px solid #7B7AC6;
}

table.columns td.left {
    background-color: #ccccff;
    border-right: 1px solid #7B7AC6;
    border-bottom: 1px solid #7B7AC6;
    padding: 0.5em 0;
    width: 20%;
}

table.columns td.right {
    background-color: #ccccff;
    border-left: 1px solid #7B7AC6;
    border-bottom: 1px solid #7B7AC6;
    width: 20%;
}

div.breadcrumbs{
    background-color: #ccccff;
    margin-top: 0em;
    padding: 0 0.5em 0.5em 0.5em;
}

span.help img{
  vertical-align: middle;
  padding: 0;
  margin: 0;
}

div.box {
    border: none;
    margin: 0.5em 0.5em 0em 0.5em;
    padding: 0;
}

div.box h4 {
    font-size: 1em;
}

div.box h5 {
    background: #E5E5E5;
    border: 1px solid #A3A3A3;
    border-style: solid solid none solid;
    color: #808080;
    padding: 0em 1em 0em 1em;
    text-transform: lowercase;
    display: inline;
    font-size: 1em;
    height: 1em;
 }

div.box h6 {
    background: #E5E5E5;
    border: 1px solid #A3A3A3;
    border-style: solid solid none solid;
    color: #808080;
    padding: 0em 1em 0em 1em;
    text-transform: lowercase;
    display: block;
    font-size: 1em;
    height: 1.2em;
}

div.box div.body {
    background: transparent;
    border-collapse: collapse;
    border: 1px solid #A3A3A3;
}

div.box .content {
    padding-left: 0.6em;
    padding-right: 0.6em;
    padding-top: 0.4em;
    padding-bottom: 0.4em;
}

div.box .even {
    background-color: #CCCCFF;
}

div.box .odd {
    background-color: White;
}

.darker {
    background-color: #7B7AC6;
}

.hilite {
    background: #FFFFFF;
}

.background {
    border-bottom: 1px solid #7B7AC6;
}

.description {
/* The summary text describing the document */
    font: bold 1em Tahoma, Helvetica, Arial, sans-serif;
    display: block;
    margin-bottom: 1em;
}

.footer {
  background-color: #CCCCFF;
  padding: 0.5em;
  text-align: center;
}

div.metadata {
  font-size: 0.9em;
  text-align: right;
}

.context-menu {
  position: absolute;
  border: 1px outset;
  background-color: Menu;
  color: MenuText;
  cursor: default;
  z-index: 1000;
  visibility: hidden;
  display: table;
}

.context-menu-item {
  padding-left: 10px;
  padding-right: 10px;
  padding-top: 2px;
  padding-bottom: 2px;
}

.drop-target {
  border: 2px solid transparent;
  visibility: hidden;
}

#navtreecontents a {
       cursor: pointer;
}

#navtreecontents loading {
       display: block;
       padding-left: 31px;
       height: 20px;
}

#navtreecontents expand {
       background-repeat: no-repeat;
       padding-left: 14px;
       display: inline;
       cursor: pointer;
       padding-bottom: 0.2em;
       padding-top: 0.2em;
}

#navtreecontents icon {
       background-repeat: no-repeat;
       padding-left: 20px;
       display: inline;
       cursor: auto;
       padding-bottom: 0.2em;
       padding-top: 0.2em;
}

#navtreecontents collection {
       display: block;
       margin-left: 10px;
/*     border: red solid 1pt;  */
       height: auto;
       padding-bottom: 0em;
       padding-top: 0.4em;
}

.preclass {
    font-family : monospace;
    white-space : pre;
}

th.introspector {
    vertical-align: top;
    text-align: right;
}

.itemViews {
    border-collapse: collapse;
    padding-bottom: 2px;
    padding-top: 6px;
    margin-top: 0.5em;
    white-space: nowrap;
    background: transparent;
    text-align: right;
}

.itemViews a {
    background: transparent;
    border: 1px solid #ccccff;
    color: #000066;
    font-weight: normal;
    margin-right: 0.3em;
    padding: 0.1em 0.5em 0.1em 0.5em;
}

.itemViews a.selected {
    background-color: #CCCCFF;
    border-bottom: #CCCCFF 1px solid;
    color: #000066;
    font-weight: normal;
}

.itemViews a:hover {
    background-color: #CCCCFF;
    color: #000066;
}

.actions {
  background-color: #CCCCFF;
  text-align: right;
  padding-top: 0.3em;
  color: Black;
  border-collapse: collapse;
}

.actions a{
   color: #000066;
   border-left: 1px dashed #000066;
   padding: 0 0.5em;
}

.actions a:hover {
	background-color: White;
}



More information about the Zope3-Checkins mailing list