[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser - I18nImageData.py:1.1 I18nImageData.pyc:1.1 I18nImageEdit.py:1.1 I18nImageEdit.pyc:1.1 i18n_edit.pt:1.1 configure.zcml:1.6

Marius Gedminas mgedmin@delfi.lt
Tue, 25 Jun 2002 06:54:25 -0400


Update of /cvs-repository/Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser
In directory cvs.zope.org:/tmp/cvs-serv25797/lib/python/Zope/App/OFS/Content/Image/Views/Browser

Modified Files:
	configure.zcml 
Added Files:
	I18nImageData.py I18nImageData.pyc I18nImageEdit.py 
	I18nImageEdit.pyc i18n_edit.pt 
Log Message:
Added I18nImage object.


=== Added File Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser/I18nImageData.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.
#
##############################################################################
""" Define view component for internationalized images.

$Id: I18nImageData.py,v 1.1 2002/06/25 10:54:24 mgedmin Exp $
"""

from ImageData import ImageData
from Zope.I18n.Negotiator import negotiator

class I18nImageData(ImageData):

    def __call__(self):
        image = self.context
        language = None
        if self.request is not None:
            langs = self.context.getAvailableLanguages()
            language = negotiator.getLanguage(langs, self.request)

            self.request.response.setHeader('content-type',
                                                 image.getContentType())
            # XXX: no content-length?  See ImageData.__call__
        return image.getData(language)


    def tag(self, height=None, width=None, **args):
        """See ImageData.tag."""

        language = None
        if self.request is not None and \
           (width is None or height is None):
            langs = self.context.getAvailableLanguages()
            language = negotiator.getLanguage(langs, self.request)

        if width is None:
            width = self.context.getImageSize(language)[0]
        if height is None:
            height = self.context.getImageSize(language)[1]
        return ImageData.tag(self, width=width, height=height, **args)


=== Added File Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser/I18nImageData.pyc ===
-í
íF=c       sI     d  Z    d k l Z  d k l Z  d e f d „  ƒ  YZ d S(   sl    Define view component for internationalized images.

$Id: ImageData.py,v 1.3 2002/06/18 14:47:03 jim Exp $
(   s	   ImageData(   s
   negotiators
   I18nImageDatac      s)    t  Z  d „  Z % e e d „ Z RS(   Nc    s     |  i }  t }  |  i t j	 oP  |  i i ƒ  }  t i	 | |  i ƒ }  |  i i
 i d   | i ƒ  ƒ n " | i
 | ƒ Sd  S(   Ns   content-type(   s   selfs   contexts   images   Nones   languages   requests   getAvailableLanguagess   langss
   negotiators   getLanguages   responses	   setHeaders   getContentTypes   getData(   s   selfs   languages   images   langs(    (    sS   /home/mg/Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser/I18nImageData.pys   __call__ s   	c    sç   % & ( t  } ) |  i t  j	 o | t  j p
 | t  j o. + |  i i ƒ  } , t	 i
 | |  i ƒ } n . | t  j o / |  i i | ƒ d } n 0 | t  j o 1 |  i i | ƒ d } n 2 t i
 |  d | d | | Sd S(   s   See ImageData.tag.i    i   s   widths   heightN(   s   Nones   languages   selfs   requests   widths   heights   contexts   getAvailableLanguagess   langss
   negotiators   getLanguages   getImageSizes	   ImageDatas   tags   args(   s   selfs   heights   widths   argss   languages   langs(    (    sS   /home/mg/Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser/I18nImageData.pys   tag% s   	-(   s   __name__s
   __module__s   __call__s   Nones   tag(    (    (    sS   /home/mg/Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser/I18nImageData.pys
   I18nImageData s   	
N(   s   __doc__s	   ImageDatas   Zope.I18n.Negotiators
   negotiators
   I18nImageData(   s
   negotiators
   I18nImageDatas	   ImageData(    (    sS   /home/mg/Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser/I18nImageData.pys   ? s   

=== Added File Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser/I18nImageEdit.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.
# 
##############################################################################
"""
Define view component for image editing.

Revision Information:
$Id: I18nImageEdit.py,v 1.1 2002/06/25 10:54:24 mgedmin Exp $
"""

from Zope.Publisher.Browser.BrowserView import BrowserView
from Zope.App.PageTemplate import ViewPageTemplateFile


class I18nImageEdit(BrowserView):

    __implements__ = BrowserView.__implements__

    name = 'editForm'
    title = 'Edit Form'
    description = ('This edit form allows you to make changes to the ' +
                   'properties of this image.')

    def getImageSize(self, language=None):
        size = self.context.getImageSize(language)
        return "%d x %d" % (size[0], size[1])

    def action(self, contentType, data, language, defaultLanguage,
               selectLanguage=None, removeLanguage=None,
               addLanguage=None, newLanguage=None):
        if selectLanguage:
            pass
        elif removeLanguage:
            self.context.removeLanguage(language)
            language = self.context.getDefaultLanguage()
        else:
            if addLanguage:
                language = newLanguage
            self.context.setDefaultLanguage(defaultLanguage)
            self.context.edit(data, contentType, language)
        return self.request.response.redirect(self.request.URL[-1] +
                      "/editForm.html?language=%s" % language)  # XXX url_quote



=== Added File Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser/I18nImageEdit.pyc ===
-í
ùC=c       sI     d  Z    d k l Z  d k l Z  d e f d „  ƒ  YZ d S(   sw   
Define view component for image editing.

Revision Information:
$Id: ImageEdit.py,v 1.2 2002/06/10 23:28:04 jim Exp $
(   s   BrowserView(   s   ViewPageTemplateFiles
   I18nImageEditc      s]    t  Z  e i Z  d Z  d Z  d d Z " e d „ Z & e e e e d „ Z	 RS(   Ns   editForms	   Edit Forms1   This edit form allows you to make changes to the s   properties of this image.c    s5   " # |  i i | ƒ } $ d | d | d f Sd  S(   Ns   %d x %di    i   (   s   selfs   contexts   getImageSizes   languages   size(   s   selfs   languages   size(    (    sS   /home/mg/Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser/I18nImageEdit.pys   getImageSize" s   c	 	   s¶   & ) | o * nw + | o) , |  i i | ƒ - |  i i ƒ  } nD / | o
 0 | } n 1 |  i i | ƒ 2 |  i i
 | | | ƒ 3 |  i
 i i |  i
 i d d | ƒ Sd  S(   Niÿÿÿÿs   /editForm.html?language=%s(   s   selectLanguages   removeLanguages   selfs   contexts   languages   getDefaultLanguages   addLanguages   newLanguages   setDefaultLanguages   defaultLanguages   edits   datas   contentTypes   requests   responses   redirects   URL(	   s   selfs   contentTypes   datas   languages   defaultLanguages   selectLanguages   removeLanguages   addLanguages   newLanguage(    (    sS   /home/mg/Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser/I18nImageEdit.pys   action& s   



(
   s   __name__s
   __module__s   BrowserViews   __implements__s   names   titles   descriptions   Nones   getImageSizes   action(    (    (    sS   /home/mg/Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser/I18nImageEdit.pys
   I18nImageEdit s   			
N(   s   __doc__s"   Zope.Publisher.Browser.BrowserViews   BrowserViews   Zope.App.PageTemplates   ViewPageTemplateFiles
   I18nImageEdit(   s   BrowserViews   ViewPageTemplateFiles
   I18nImageEdit(    (    sS   /home/mg/Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser/I18nImageEdit.pys   ? s   

=== Added File Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser/i18n_edit.pt ===
<html metal:use-macro="views/standard_macros/page">
  <head>
    <style metal:fill-slot="headers" type="text/css">
      <!--
      .ContentIcon {
	  width: 20px;
      }

      .ContentTitle {
	  text-align: left;
      }
      -->
    </style>
  </head>

  <body>
    <div metal:fill-slot="body">


      <p tal:content="options/msg | nothing">
        Message will go here.
      </p>

      <p tal:content="view/description">
        Description of the Form.
      </p>


      <form action="edit.html" method="post" enctype="multipart/form-data">

        <table class="EditTable">
	  <tbody>

            <tr>
              <th class="EditAttributeName">Content Type</th>
              <td class="EditAttributeValue">
                <input name="contentType" type="text" size=20
                       tal:attributes="value context/getContentType" />
              </td>
            </tr>
            <tr>
              <th class="EditAttributeName">Default Language</th>
              <td class="EditAttributeValue">
                <select name="defaultLanguage">
                  <span tal:repeat="lang context/getAvailableLanguages"
                        tal:omit-tag="">
                  <option selected
                          tal:attributes="value lang"
                          tal:condition="python:context.getDefaultLanguage() == lang"
                          tal:content="lang" />
                  <option
                          tal:attributes="value lang"
                          tal:condition="python:context.getDefaultLanguage() != lang"
                          tal:content="lang" />
                 </span>
                </select>
              </td>
            </tr>
            <tr>
              <td colspan=2>
                <hr>
              </td>
            </tr>
            <tr>
              <th class="EditAttributeName">Language</th>
              <td class="EditAttributeValue">
                <select name="language">
                  <span tal:repeat="lang context/getAvailableLanguages"
                        tal:omit-tag="">
                  <option selected
                          tal:attributes="value lang"
                          tal:condition="python:request.get('language',
                                context.getDefaultLanguage()) == lang"
                          tal:content="lang" />
                  <option
                          tal:attributes="value lang"
                          tal:condition="python:request.get('language',
                                context.getDefaultLanguage()) != lang"
                          tal:content="lang" />
                 </span>
                </select>
                <input type="submit" name="selectLanguage"
                       value="Show" />
                <input type="submit" name="removeLanguage"
                       value="Remove" />
                &nbsp;&nbsp;
                <input type="submit" name="addLanguage"
                       value="Add new language" />
                <input type="text" name="newLanguage" size=10 />
              </td>
            </tr>
            <tr>
              <th class="EditAttributeName">Data</th>
              <td class="EditAttributeValue">
                <input type="file" name="data" size=20 />
              </td>
            </tr>

	    <tr>
	      <th class="EditAttributeName">Dimensions</th>
	      <td class="EditAttributeValue"
                  tal:content="python:view.getImageSize(
                                        request.get('language'))">
              </td>
	    </tr>
	    <tr>
	      <th class="EditAttributeName">Size</th>
	      <td class="EditAttributeValue"
                  tal:content="python:context.getSize(
                                        request.get('language'))">
              </td>
	    </tr>

	  </tbody>
      </table>

      <input type="submit" name="edit" value="Save Changes">

      </form>

    </div>
  </body>
</html>




=== Zope3/lib/python/Zope/App/OFS/Content/Image/Views/Browser/configure.zcml 1.5 => 1.6 ===
   <!-- Image View Directives -->
 
-  <browser:defaultView 
+  <browser:view
       name="data"
       for=".Image.IImage."
       permission="Zope.View"
       allowed_attributes="__call__ tag"
       factory=".Views.Browser.ImageData." />
 
+  <browser:defaultView
+      for=".Image.IImage."
+      name="data" />
+
   <browser:view
       for=".Image.IImage."
       permission="Zope.ManageContent"
@@ -26,22 +30,45 @@
         attribute="action" />
   </browser:view>
 
-
   <!-- Formulator directives -->
 
   <browser:view
       name="DataFieldView"
       for=".Image.IImage."
-      factory=".ImageFields.DataField. 
+      factory=".ImageFields.DataField.
                Zope.App.Formulator.Widgets.Browser.FileWidget." />
 
   <browser:view
       name="ContentTypeFieldView"
       for=".Image.IImage."
-      factory=".ImageFields.ContentTypeField. 
+      factory=".ImageFields.ContentTypeField.
                Zope.App.Formulator.Widgets.Browser.TextWidget." />
 
+  <!-- I18n Image View Directives -->
+
+  <browser:view
+      name="data"
+      for="Zope.App.OFS.Content.Image.I18nImage.II18nImage"
+      permission="Zope.View"
+      allowed_attributes="__call__ tag"
+      factory=".Views.Browser.I18nImageData." />
+
+  <browser:defaultView
+      for="Zope.App.OFS.Content.Image.I18nImage.II18nImage"
+      name="data" />
+
+  <browser:view
+      for="Zope.App.OFS.Content.Image.I18nImage.II18nImage"
+      permission="Zope.ManageContent"
+      factory=".Views.Browser.I18nImageEdit.">
 
+    <browser:page
+        name="editForm.html"
+        template="Views/Browser/i18n_edit.pt" />
+    <browser:page
+        name="edit.html"
+        attribute="action" />
+  </browser:view>
 
   <!-- tabs for image -->
 
@@ -57,5 +84,9 @@
   <browser:menuItem menu="add_content"
                     for="Zope.App.OFS.Container.IAdding."
                     title="Image" action="Image"/>
+
+  <browser:menuItem menu="add_content"
+                    for="Zope.App.OFS.Container.IAdding."
+                    title="I18n Image" action="I18nImage"/>
 
 </zopeConfigure>