[Zope3-checkins] CVS: Zope3/src/zope/app/browser/skins/rotterdam - editingwidgets.py:1.1 simpleeditingrow.pt:1.1 simpleeditingrowfragment.pt:1.1 configure.zcml:1.11 template.pt:1.20 zope3.css:1.16

Paul Everitt paul@zope.com
Thu, 10 Apr 2003 05:35:00 -0400


Update of /cvs-repository/Zope3/src/zope/app/browser/skins/rotterdam
In directory cvs.zope.org:/tmp/cvs-serv20235/app/browser/skins/rotterdam

Modified Files:
	configure.zcml template.pt zope3.css 
Added Files:
	editingwidgets.py simpleeditingrow.pt 
	simpleeditingrowfragment.pt 
Log Message:

Created new widget in the Rotterdam skin for editing the source of an
item, such as the ZPT source.  Created a schema field called
SourceText (instead of Text).  This is only used for Templated Page at
the moment.

Minor UI cleanups:

  o Removed [Personalized Elements]

  o Moved User label up to save space

  o Fixed float on context inspectors (e.g. Metadata, Help, etc.)



=== Added File Zope3/src/zope/app/browser/skins/rotterdam/editingwidgets.py ===
##############################################################################
#
# 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.
#
##############################################################################
"""
$Id: editingwidgets.py,v 1.1 2003/04/10 09:34:29 paul Exp $
"""

__metaclass__ = type

import sys
from types import ListType, TupleType
ListTypes = (ListType, TupleType)
from datetime import datetime
from zope.proxy.introspection import removeAllProxies
from zope.publisher.browser import BrowserView
from zope.app.interfaces.browser.form import IBrowserWidget
from zope.app.form.widget import Widget
from zope.app.interfaces.form import ConversionError, WidgetInputError
from zope.app.interfaces.form import MissingInputError
from zope.app.datetimeutils import parseDatetimetz
from zope.app.datetimeutils import DateTimeError
from zope.schema.interfaces import ValidationError
from zope.component import getService
from zope.app.browser.form.widget import PossiblyEmptyMeansMissing, BrowserWidget, renderElement
from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile

class SimpleEditingWidget(PossiblyEmptyMeansMissing, BrowserWidget):
    """Improved textarea editing, with async saving using JavaScript."""
    propertyNames = BrowserWidget.propertyNames + ['width', 'height', 'extra']

    default = ""
    width = 60
    height = 15
    extra=""
    style="width:100%"
    style = ''
    rowTemplate = ViewPageTemplateFile("simpleeditingrow.pt")
    rowFragment = ViewPageTemplateFile("simpleeditingrowfragment.pt")
    
    def _convert(self, value):
        if self.context.min_length and not value:
            return None
        return value

    def __call__(self):
        return renderElement("textarea",
                             name = self.name,
                             id = self.name,
                             cssClass = self.getValue('cssClass'),
#                             rows = self.getValue('height'),
#                             cols = self.getValue('width'),
#                             style = self.style,
                             contents = self._showData(),
                             extra = self.getValue('extra'))

    def contents(self):
        """Make the contents available to the template"""
        return self._showData()

    def row(self):
        # XXX This was originally set to make a colspan=2 table cell, and
        #     have the label above the text area. Perhaps we should use
        #     different div classes for this case?
        return self.rowTemplate()
        return '<h1>here</h1><div class="label">%s</div><div class="field">%s</div>' % (
                self.label(), self())


=== Added File Zope3/src/zope/app/browser/skins/rotterdam/simpleeditingrow.pt ===
<html>
<head>
  <title>Extended Editor</title>
</head>
<body>
<metal:define define-macro="widget">
<script>

function getKeyPress(e) {

        if(e.target) {
            // Mozilla uses this
	    key=e.keyCode;
                }
        else {
            // IE uses this
            key=window.event.keyCode
        }
	prettydump("key is " + key, LG_INFO);
	return false;

}
</script>
<label for="source-text" tal:attributes="for view/name" 
       tal:content="view/title">Some Source</label>
<div class="field">


  <textarea style="width: 95%" rows="15" 
            tal:attributes="id view/name; name view/name"
	    tal:content="view/contents">Some editing text here.</textarea>
</div>
</metal:define>
</body>
</html>


=== Added File Zope3/src/zope/app/browser/skins/rotterdam/simpleeditingrowfragment.pt ===
<metal:use use-macro="view/rowTemplate/macros/widget"/>


=== Zope3/src/zope/app/browser/skins/rotterdam/configure.zcml 1.10 => 1.11 ===
--- Zope3/src/zope/app/browser/skins/rotterdam/configure.zcml:1.10	Fri Apr  4 08:54:31 2003
+++ Zope3/src/zope/app/browser/skins/rotterdam/configure.zcml	Thu Apr 10 05:34:29 2003
@@ -84,4 +84,14 @@
     template="folder_contents.pt" 
     />
 
+<browser:page
+    permission="zope.Public"
+    allowed_interface="zope.app.interfaces.browser.form.IBrowserWidget"
+    for="zope.schema.interfaces.ISourceText"
+    name="edit"
+    layer="rotterdam"
+    class="zope.app.browser.skins.rotterdam.editingwidgets.SimpleEditingWidget" 
+    />
+
+
 </zopeConfigure>


=== Zope3/src/zope/app/browser/skins/rotterdam/template.pt 1.19 => 1.20 ===
--- Zope3/src/zope/app/browser/skins/rotterdam/template.pt:1.19	Tue Apr  8 10:53:39 2003
+++ Zope3/src/zope/app/browser/skins/rotterdam/template.pt	Thu Apr 10 05:34:29 2003
@@ -42,19 +42,15 @@
           onload string:loadtree('${rooturl}/', '${thisbaseurl}/');">
 
     <div id="global">
-      <img tal:attributes="src context/++resource++zope3logo.gif" />
-    </div>
-
-    <div id="personal">
       <div id="userDetails">
         <metal:block define-macro="logged_user">
           User:
-          <tal:block replace="request/user/getTitle">
+	  <tal:block replace="request/user/getTitle">
             User
           </tal:block>
         </metal:block>  
       </div>
-      [Personalized Elements]
+      <img tal:attributes="src context/++resource++zope3logo.gif" />
     </div>
 
     <div id="navigators">
@@ -151,6 +147,7 @@
             </table>
           </metal:block>
         </div>
+
 
         <div id="context_information">
      


=== Zope3/src/zope/app/browser/skins/rotterdam/zope3.css 1.15 => 1.16 ===
--- Zope3/src/zope/app/browser/skins/rotterdam/zope3.css:1.15	Mon Feb 17 11:38:29 2003
+++ Zope3/src/zope/app/browser/skins/rotterdam/zope3.css	Thu Apr 10 05:34:29 2003
@@ -259,18 +259,13 @@
 
 
 #global {
-    font-size: 1.2em;
-    border-bottom: 1px solid black;
-}
-
-#personal {
-    border-bottom: 1px solid black;
-    text-align: left;
-	 padding: 0.1em 1em;
+    border-bottom: 0.1em solid black;
 }
 
-#userDetails {
-	float: right;
+#global #userDetails {
+    float:right;
+    margin-top: 1.2em;
+    padding-right: 0.5em;
 }
 
 #actions {
@@ -312,15 +307,16 @@
     float: left;
 }
 
-#content {
-    float: left;
+#content { 
+    float: left; 
+    width: 75%;
 }
 
 #context_information {
-    float: right;
-    width: 15%;
     padding-top: 1em;
-	 padding-left: 0.5em;
+    width: 15%;
+    float: left;
+    padding-left: 0.5em;
 }
 
 #helpers {
@@ -354,7 +350,7 @@
 
 div.box {
     margin: 0em 0em 2em 0em;
-    padding: 0;
+    padding: 0em;
 }
 
 div.box h4 { 
@@ -362,7 +358,7 @@
     border: 1px solid #CCCCCC;
     border-style: solid solid none solid;
     color: #808080;
-    padding: 0em 1em 0em 1em;
+    padding: 0em 1em;
     display: block;
     font-size: 1em;
     height: 1em;
@@ -415,7 +411,7 @@
     color: Black;
     font-weight: normal;
     margin-right: 0.5em;
-    padding: 0em 0.5em;
+    padding: 0.1em 0.5em 0.1em 0.5em;
 }
 
 .itemViews a.selected {
@@ -444,7 +440,7 @@
     border-left: 1px solid #CCCCCC;
     border-bottom: 1px solid #CCCCCC;
     margin: 1em 0em 1em 0em;
-    clear: both;
+/*    clear: both; */
 }
 
 table.listing th {