Merge branch 'master' into bbmaster
This commit is contained in:
		
						commit
						7b1f04e7ab
					
				
					 18 changed files with 130 additions and 66 deletions
				
			
		|  | @ -230,7 +230,7 @@ | ||||||
|                 <tal:version tal:condition="view/useVersioning"> |                 <tal:version tal:condition="view/useVersioning"> | ||||||
|                   <td class="center" |                   <td class="center" | ||||||
|                       tal:define="versionId related/versionId"> |                       tal:define="versionId related/versionId"> | ||||||
|                     <a href="#" |                     <a tal:condition="not:related/versionable/notVersioned|nothing" | ||||||
|                        tal:content="versionId" |                        tal:content="versionId" | ||||||
|                        tal:omit-tag="python: versionId=='1.1'" |                        tal:omit-tag="python: versionId=='1.1'" | ||||||
|                        tal:define="url python: view.getUrlForTarget(related)" |                        tal:define="url python: view.getUrlForTarget(related)" | ||||||
|  |  | ||||||
|  | @ -642,8 +642,11 @@ class EditObject(FormController, I18NView): | ||||||
| 
 | 
 | ||||||
|     def checkCreateVersion(self, obj): |     def checkCreateVersion(self, obj): | ||||||
|         form = self.request.form |         form = self.request.form | ||||||
|         if form.get('version.create'): |         versionable = IVersionable(obj) | ||||||
|             versionable = IVersionable(obj) |         notVersioned = bool(form.get('version.not_versioned')) | ||||||
|  |         if notVersioned != versionable.notVersioned: | ||||||
|  |             versionable.notVersioned = notVersioned | ||||||
|  |         if not notVersioned and form.get('version.create'): | ||||||
|             level = int(form.get('version.level', 0)) |             level = int(form.get('version.level', 0)) | ||||||
|             version = versionable.createVersion(level) |             version = versionable.createVersion(level) | ||||||
|             notify(ObjectCreatedEvent(version)) |             notify(ObjectCreatedEvent(version)) | ||||||
|  |  | ||||||
|  | @ -1,6 +1,5 @@ | ||||||
| <html i18n:domain="loops"> | <html i18n:domain="loops"> | ||||||
| <!-- macros for rendering edit/create forms | <!-- macros for rendering edit/create forms --> | ||||||
|      $Id$ --> |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| <form metal:define-macro="edit" i18n:domain="loops" | <form metal:define-macro="edit" i18n:domain="loops" | ||||||
|  | @ -81,7 +80,9 @@ | ||||||
|         tal:define="qualifier request/qualifier|view/qualifier|string:resource; |         tal:define="qualifier request/qualifier|view/qualifier|string:resource; | ||||||
|                     innerForm request/inner_form|view/inner_form|string:inner_form.html; |                     innerForm request/inner_form|view/inner_form|string:inner_form.html; | ||||||
|                     typeToken view/typeToken; |                     typeToken view/typeToken; | ||||||
|                     fixedType view/fixedType"> |                     fixedType view/fixedType; | ||||||
|  |                     langInfo view/languageInfo; | ||||||
|  |                     language langInfo/language"> | ||||||
|     <div dojoType="dijit.layout.ContentPane" region="center" |     <div dojoType="dijit.layout.ContentPane" region="center" | ||||||
|          tal:omit-tag="not:view/isInnerHtml"> |          tal:omit-tag="not:view/isInnerHtml"> | ||||||
|       <input type="hidden" name="form.action" value="create" |       <input type="hidden" name="form.action" value="create" | ||||||
|  | @ -229,12 +230,25 @@ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| <metal:versioning define-macro="versioning" | <metal:versioning define-macro="versioning" | ||||||
|                   tal:define="versionInfo view/versionInfo" |                   tal:define="versionInfo view/versionInfo; | ||||||
|  |                               notVersioned view/versionable/notVersioned|nothing" | ||||||
|                   tal:condition="versionInfo"> |                   tal:condition="versionInfo"> | ||||||
|       <tr> |       <tr> | ||||||
|         <td colspan="5" i18n:translate="" class="headline">Versioning</td> |         <td colspan="1" i18n:translate="" class="headline">Versioning</td> | ||||||
|  |         <td colspan="4"> | ||||||
|  |           <span i18n:attributes="title" | ||||||
|  |                 title="Check this field if you want to suppress versioning for this resource."> | ||||||
|  |             <input type="checkbox" | ||||||
|  |                    name="version.not_versioned" id="version.not_versioned" | ||||||
|  |                    value="not_versioned" | ||||||
|  |                    tal:attributes="checked notVersioned" /> | ||||||
|  |             <label style="display: inline" | ||||||
|  |                    for="version.not_versioned"><span i18n:translate=""> | ||||||
|  |               Suppress Versioning</span></label> | ||||||
|  |           </span> | ||||||
|  |         </td> | ||||||
|       </tr> |       </tr> | ||||||
|       <tr> |       <tr tal:condition="not:notVersioned"> | ||||||
|         <td colspan="2"> |         <td colspan="2"> | ||||||
|           <span i18n:translate="">Version</span>: |           <span i18n:translate="">Version</span>: | ||||||
|           <span tal:content="versionInfo">1.1 (current, released)</span> |           <span tal:content="versionInfo">1.1 (current, released)</span> | ||||||
|  |  | ||||||
|  | @ -39,6 +39,14 @@ | ||||||
|         factory="loops.browser.lobo.standard.List1" |         factory="loops.browser.lobo.standard.List1" | ||||||
|         permission="zope.View" /> |         permission="zope.View" /> | ||||||
| 
 | 
 | ||||||
|  |   <zope:adapter | ||||||
|  |         name="lobo_l3" | ||||||
|  |         for="loops.interfaces.IConcept | ||||||
|  |              loops.browser.skin.Lobo" | ||||||
|  |         provides="zope.interface.Interface" | ||||||
|  |         factory="loops.browser.lobo.standard.List3" | ||||||
|  |         permission="zope.View" /> | ||||||
|  | 
 | ||||||
|   <zope:adapter |   <zope:adapter | ||||||
|         name="lobo_l2" |         name="lobo_l2" | ||||||
|         for="loops.interfaces.IConcept |         for="loops.interfaces.IConcept | ||||||
|  |  | ||||||
|  | @ -17,7 +17,7 @@ | ||||||
|                          title cell/description"> |                          title cell/description"> | ||||||
|         <div class="legend"> |         <div class="legend"> | ||||||
|           <b tal:content="cell/title" /><br /> |           <b tal:content="cell/title" /><br /> | ||||||
|           <i tal:content="structure cell/textRepresentation" /> |           <span tal:content="structure cell/textRepresentation" /> | ||||||
|         </div> |         </div> | ||||||
|       </a> |       </a> | ||||||
|     </div> |     </div> | ||||||
|  | @ -43,6 +43,16 @@ | ||||||
| </metal:block> | </metal:block> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | <metal:block define-macro="list3"> | ||||||
|  |   <tal:cell repeat="cell part/getChildren"> | ||||||
|  |     <div tal:condition="cell/img" | ||||||
|  |          tal:attributes="class python:cell.cssClass[0]"> | ||||||
|  |       <metal:image use-macro="item/macros/image" /> | ||||||
|  |     </div> | ||||||
|  |   </tal:cell> | ||||||
|  | </metal:block> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| <metal:block define-macro="header"> | <metal:block define-macro="header"> | ||||||
|   <div tal:define="cell part/getView"> |   <div tal:define="cell part/getView"> | ||||||
|     <metal:headline use-macro="item/macros/headline" /> |     <metal:headline use-macro="item/macros/headline" /> | ||||||
|  | @ -83,7 +93,8 @@ | ||||||
|                          style cell/style"> |                          style cell/style"> | ||||||
|         <metal:image use-macro="item/macros/image" /> |         <metal:image use-macro="item/macros/image" /> | ||||||
|         <div class="legend"> |         <div class="legend"> | ||||||
|           <a tal:attributes="href cell/targetUrl"><b tal:content="cell/title" /></a> |           <a tal:attributes="href cell/targetUrl"> | ||||||
|  |             <b tal:content="python: cell.description or cell.title" /></a> | ||||||
|           <span tal:condition="cell/img/showInfo|nothing"> |           <span tal:condition="cell/img/showInfo|nothing"> | ||||||
|             <a tal:define="url string:${cell/img/url}/meta_info.html" |             <a tal:define="url string:${cell/img/url}/meta_info.html" | ||||||
|                tal:attributes="href url; |                tal:attributes="href url; | ||||||
|  | @ -93,7 +104,7 @@ | ||||||
|                     string:${controller/resourceBase}/cybertools.icons/info.png" /> |                     string:${controller/resourceBase}/cybertools.icons/info.png" /> | ||||||
|             </a></span> |             </a></span> | ||||||
|           <br /> |           <br /> | ||||||
|           <i tal:content="cell/description" /> |           <!--<i tal:content="cell/description" />--> | ||||||
|         </div> |         </div> | ||||||
|     </div> |     </div> | ||||||
|   </tal:cell> |   </tal:cell> | ||||||
|  | @ -104,11 +115,10 @@ | ||||||
| 
 | 
 | ||||||
| <metal:image define-macro="image"> | <metal:image define-macro="image"> | ||||||
|   <tal:img condition="cell/img"> |   <tal:img condition="cell/img"> | ||||||
|     <a title="Information about this object." |     <a dojoType="dojox.image.Lightbox" group="mediasset" | ||||||
|        dojoType="dojox.image.Lightbox" group="mediasset" |  | ||||||
|        i18n:attributes="title" |        i18n:attributes="title" | ||||||
|        tal:attributes="href cell/img/fullImageUrl; |        tal:attributes="href cell/img/fullImageUrl; | ||||||
|                        title cell/img/title"> |                        title python: cell.img['description'] or cell.img['title']"> | ||||||
|       <img tal:condition="showImageLink|python:False" |       <img tal:condition="showImageLink|python:False" | ||||||
|            tal:attributes="src cell/img/src; |            tal:attributes="src cell/img/src; | ||||||
|                            class cell/img/cssClass; |                            class cell/img/cssClass; | ||||||
|  | @ -142,8 +152,9 @@ | ||||||
|       <img tal:attributes="src string:$resourceBase/cybertools.icons/table.png" /> |       <img tal:attributes="src string:$resourceBase/cybertools.icons/table.png" /> | ||||||
|     </a> |     </a> | ||||||
|   </h1> |   </h1> | ||||||
|   <div tal:condition="cell/description"> |   <div class="head-description" | ||||||
|     <i tal:content="structure cell/renderedDescription" /> |        tal:condition="cell/description"> | ||||||
|  |     <span tal:content="structure cell/renderedDescription" /> | ||||||
|      </div> |      </div> | ||||||
| </metal:block> | </metal:block> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -144,6 +144,7 @@ class ConceptView(BaseConceptView): | ||||||
|             adImg = adapted(r) |             adImg = adapted(r) | ||||||
|             showInfo = adImg.showInfo and adImg.metaInfo |             showInfo = adImg.showInfo and adImg.metaInfo | ||||||
|             return dict(src=src, fullImageUrl=fullSrc, title=r.title, |             return dict(src=src, fullImageUrl=fullSrc, title=r.title, | ||||||
|  |                         description=r.description, | ||||||
|                         url=url, cssClass=self.parentView.imageCssClass, |                         url=url, cssClass=self.parentView.imageCssClass, | ||||||
|                         showInfo=showInfo) |                         showInfo=showInfo) | ||||||
| 
 | 
 | ||||||
|  | @ -245,6 +246,13 @@ class List2(BasePart): | ||||||
|     gridPattern = [['span-4 clear', 'span-2 last']] |     gridPattern = [['span-4 clear', 'span-2 last']] | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | class List3(BasePart): | ||||||
|  | 
 | ||||||
|  |     macroName = 'list3' | ||||||
|  |     imageSize = 'large' | ||||||
|  |     gridPattern = [['span-6 clear']] | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| class Header0(BasePart): | class Header0(BasePart): | ||||||
| 
 | 
 | ||||||
|     macroName = 'header' |     macroName = 'header' | ||||||
|  | @ -313,6 +321,7 @@ class ConceptRelationView(BaseConceptRelationView, ConceptView): | ||||||
|             adImg = adapted(r) |             adImg = adapted(r) | ||||||
|             showInfo = adImg.showInfo and adImg.metaInfo |             showInfo = adImg.showInfo and adImg.metaInfo | ||||||
|             return dict(src=src, fullImageUrl=fullSrc, title=r.title, |             return dict(src=src, fullImageUrl=fullSrc, title=r.title, | ||||||
|  |                         description=r.description, | ||||||
|                         url=url, cssClass=self.parentView.imageCssClass, |                         url=url, cssClass=self.parentView.imageCssClass, | ||||||
|                         showInfo=showInfo) |                         showInfo=showInfo) | ||||||
| 
 | 
 | ||||||
|  | @ -347,6 +356,7 @@ class ResourceView(BaseResourceView): | ||||||
|         adImg = adapted(self.context) |         adImg = adapted(self.context) | ||||||
|         showInfo = adImg.showInfo and adImg.metaInfo |         showInfo = adImg.showInfo and adImg.metaInfo | ||||||
|         return dict(src=src, fullImageUrl=fullSrc, title=self.context.title, |         return dict(src=src, fullImageUrl=fullSrc, title=self.context.title, | ||||||
|  |                     description=self.context.description, | ||||||
|                     url=url, cssClass=self.parentView.imageCssClass, |                     url=url, cssClass=self.parentView.imageCssClass, | ||||||
|                     showInfo=showInfo) |                     showInfo=showInfo) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -146,9 +146,9 @@ class ResourceView(BaseView): | ||||||
|                             subMacro=self.template.macros['related'], |                             subMacro=self.template.macros['related'], | ||||||
|                             priority=20, info=self) |                             priority=20, info=self) | ||||||
|             versionable = IVersionable(self.context, None) |             versionable = IVersionable(self.context, None) | ||||||
|             if versionable is not None and len(versionable.versions) > 1: |             if (versionable is not None and | ||||||
|  |                 not versionable.notVersioned and len(versionable.versions) > 1): | ||||||
|                     cont.macros.register('portlet_right', 'versions', |                     cont.macros.register('portlet_right', 'versions', | ||||||
|                             #title=' '. join((_('Version'), versionable.versionId)), |  | ||||||
|                             title=_(u'Version ${versionId}', |                             title=_(u'Version ${versionId}', | ||||||
|                                     mapping=dict(versionId=versionable.versionId)), |                                     mapping=dict(versionId=versionable.versionId)), | ||||||
|                             subMacro=version_macros.macros['portlet_versions'], |                             subMacro=version_macros.macros['portlet_versions'], | ||||||
|  |  | ||||||
|  | @ -66,17 +66,16 @@ | ||||||
|     <p><i tal:content="structure item/renderedDescription">Description</i> </p> |     <p><i tal:content="structure item/renderedDescription">Description</i> </p> | ||||||
|     <p> |     <p> | ||||||
|       <span class="button"> |       <span class="button"> | ||||||
|         <a href="#" |         <a i18n:translate="" | ||||||
|            i18n:translate="" |  | ||||||
|            tal:attributes="href |            tal:attributes="href | ||||||
|                 string:${view/virtualTargetUrl}/download.html?version=this"> |                 string:${view/virtualTargetUrl}/download.html?version=this"> | ||||||
|           Download |           Download | ||||||
|         </a> |         </a> | ||||||
|       </span> |       </span> | ||||||
|       <span class="button" |       <span class="button" | ||||||
|             tal:condition="item/viewable | nothing"> |             tal:define="viewable item/viewable|nothing" | ||||||
|         <a href="#" |             tal:condition="python: viewable and not view.typeOptions('no_view_button')"> | ||||||
|            i18n:translate="" |         <a i18n:translate="" | ||||||
|            tal:attributes="href |            tal:attributes="href | ||||||
|                 string:${view/virtualTargetUrl}/view?version=this"> |                 string:${view/virtualTargetUrl}/view?version=this"> | ||||||
|           View |           View | ||||||
|  | @ -84,7 +83,7 @@ | ||||||
|       </span> |       </span> | ||||||
|       <span class="button" |       <span class="button" | ||||||
|             tal:condition="item/xeditable"> |             tal:condition="item/xeditable"> | ||||||
|         <a href="#" title="Edit with External Editor" |         <a title="Edit with External Editor" | ||||||
|            i18n:translate="" |            i18n:translate="" | ||||||
|            tal:define="url view/virtualTargetUrl" |            tal:define="url view/virtualTargetUrl" | ||||||
|            tal:attributes="href string:$url/external_edit?version=this"> |            tal:attributes="href string:$url/external_edit?version=this"> | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ | ||||||
|                tal:attributes="src string:${resourceBase}logo.png" /></a> |                tal:attributes="src string:${resourceBase}logo.png" /></a> | ||||||
|         <hr /> |         <hr /> | ||||||
|       </div> |       </div> | ||||||
|       <div id="top-actions" class="prepend-4 span-4 last" |       <div id="top-actions" class="prepend-6 span-2 last" | ||||||
|            metal:define-slot="top-actions"> |            metal:define-slot="top-actions"> | ||||||
|           <tal:action repeat="macro controller/macros/top_actions"> |           <tal:action repeat="macro controller/macros/top_actions"> | ||||||
|             <metal:action use-macro="macro" /> |             <metal:action use-macro="macro" /> | ||||||
|  |  | ||||||
|  | @ -6,10 +6,26 @@ | ||||||
| 
 | 
 | ||||||
| /* page sections */ | /* page sections */ | ||||||
| 
 | 
 | ||||||
|  | body { | ||||||
|  |     background-color: #f8f8f8; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .container { | ||||||
|  |     padding: 15px 20px 20px 20px; | ||||||
|  |     background-color: #ffffff; | ||||||
|  |     margin-top: 20px; | ||||||
|  |     margin-bottom: 20px; | ||||||
|  |     border: 1px solid #d0d0d0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| #portlets { | #portlets { | ||||||
|     margin-top: 1em; |     margin-top: 1em; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | .head-description, .legend { | ||||||
|  |     font-style: italic; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| ul.view-modes { | ul.view-modes { | ||||||
|     padding: 0 0 0 2em; |     padding: 0 0 0 2em; | ||||||
|     margin: 0.7em 0 0 0; |     margin: 0.7em 0 0 0; | ||||||
|  | @ -244,12 +260,7 @@ fieldset.box td { | ||||||
| 
 | 
 | ||||||
| .top-actions { | .top-actions { | ||||||
|     position: absolute; |     position: absolute; | ||||||
|     top: 1em; |     top: 30px; | ||||||
| } |  | ||||||
| 
 |  | ||||||
| .quicksearch { |  | ||||||
|     position: absolute; |  | ||||||
|     top: 0.5em; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .quicksearch input { | .quicksearch input { | ||||||
|  | @ -258,13 +269,13 @@ fieldset.box td { | ||||||
| 
 | 
 | ||||||
| .language-switch { | .language-switch { | ||||||
|     position: absolute; |     position: absolute; | ||||||
|     top: 2.5em; |     top: 55px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .page-actions { | .page-actions { | ||||||
|     position: absolute; |     position: absolute; | ||||||
|     top: 0.8em; |     top: 55px; | ||||||
|     margin-left: 18.5em; |     margin-left: 210px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .top image { | .top image { | ||||||
|  |  | ||||||
|  | @ -13,6 +13,6 @@ body { | ||||||
| 
 | 
 | ||||||
| #content { | #content { | ||||||
| /*  width: 100%; */ | /*  width: 100%; */ | ||||||
|     width: 70%; |     width: 80%; | ||||||
|     color: Black; |     color: Black; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -129,7 +129,7 @@ | ||||||
|                   <tal:version condition="view/useVersioning"> |                   <tal:version condition="view/useVersioning"> | ||||||
|                     <td class="center" |                     <td class="center" | ||||||
|                         tal:define="versionId row/versionId|string:"> |                         tal:define="versionId row/versionId|string:"> | ||||||
|                       <a href="#" |                       <a tal:condition="not:row/versionable/notVersioned|nothing" | ||||||
|                          tal:content="versionId" |                          tal:content="versionId" | ||||||
|                          tal:omit-tag="python: versionId and versionId=='1.1'" |                          tal:omit-tag="python: versionId and versionId=='1.1'" | ||||||
|                          tal:attributes="href |                          tal:attributes="href | ||||||
|  |  | ||||||
|  | @ -52,7 +52,7 @@ the default language using a LanguageInfo object that is similar to a view. | ||||||
|   >>> from loops.i18n.browser import LanguageInfo |   >>> from loops.i18n.browser import LanguageInfo | ||||||
|   >>> langInfo = LanguageInfo(topic01, TestRequest()) |   >>> langInfo = LanguageInfo(topic01, TestRequest()) | ||||||
|   >>> langInfo.availableLanguages |   >>> langInfo.availableLanguages | ||||||
|   [] |   <AutoElement 'languages'> | ||||||
|   >>> langInfo.language is None |   >>> langInfo.language is None | ||||||
|   True |   True | ||||||
|   >>> langInfo.defaultLanguage is None |   >>> langInfo.defaultLanguage is None | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| # | # | ||||||
| #  Copyright (c) 2008 Helmut Merz helmutm@cy55.de | #  Copyright (c) 2012 Helmut Merz helmutm@cy55.de | ||||||
| # | # | ||||||
| #  This program is free software; you can redistribute it and/or modify | #  This program is free software; you can redistribute it and/or modify | ||||||
| #  it under the terms of the GNU General Public License as published by | #  it under the terms of the GNU General Public License as published by | ||||||
|  | @ -18,8 +18,6 @@ | ||||||
| 
 | 
 | ||||||
| """ | """ | ||||||
| View extension for support of i18n content. | View extension for support of i18n content. | ||||||
| 
 |  | ||||||
| $Id$ |  | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from zope import interface, component | from zope import interface, component | ||||||
|  | @ -29,6 +27,7 @@ from zope.cachedescriptors.property import Lazy | ||||||
| from zope.i18n.interfaces import IUserPreferredLanguages | from zope.i18n.interfaces import IUserPreferredLanguages | ||||||
| from zope.i18n.negotiator import negotiator | from zope.i18n.negotiator import negotiator | ||||||
| 
 | 
 | ||||||
|  | from cybertools.meta.interfaces import IOptions | ||||||
| from loops.common import adapted | from loops.common import adapted | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -50,12 +49,7 @@ class LanguageInfo(object): | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def availableLanguages(self): |     def availableLanguages(self): | ||||||
|         for opt in self.loopsRoot.options: |         return IOptions(self.loopsRoot).languages | ||||||
|             if opt.startswith('languages:'): |  | ||||||
|                 return opt[len('languages:'):].split(',') |  | ||||||
|         return [] |  | ||||||
|         # new implementation: |  | ||||||
|         # return IOptions(self.context).i18n.languages |  | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def defaultLanguage(self): |     def defaultLanguage(self): | ||||||
|  | @ -64,10 +58,12 @@ class LanguageInfo(object): | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def language(self): |     def language(self): | ||||||
|  |         available = self.availableLanguages or ('en', 'de') | ||||||
|  |         if len(available) == 1: | ||||||
|  |             return available[0] | ||||||
|         lang = self.request.get('loops.language') |         lang = self.request.get('loops.language') | ||||||
|         if lang is not None and lang in self.availableLanguages: |         if lang is not None and lang in available: | ||||||
|             return lang |             return lang | ||||||
|         available = self.availableLanguages or ('en', 'de',) |  | ||||||
|         return (negotiator.getLanguage(available, self.request) |         return (negotiator.getLanguage(available, self.request) | ||||||
|                 or self.defaultLanguage) |                 or self.defaultLanguage) | ||||||
| 
 | 
 | ||||||
|  | @ -95,7 +91,7 @@ class I18NView(object): | ||||||
| 
 | 
 | ||||||
|     def checkLanguage(self): |     def checkLanguage(self): | ||||||
|         session = ISession(self.request)[packageId] |         session = ISession(self.request)[packageId] | ||||||
|         lang = session.get('language') |         lang = session.get('language') or self.languageInfo.language | ||||||
|         if lang: |         if lang: | ||||||
|             self.setLanguage(lang) |             self.setLanguage(lang) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
										
											Binary file not shown.
										
									
								
							|  | @ -3,7 +3,7 @@ msgstr "" | ||||||
| 
 | 
 | ||||||
| "Project-Id-Version: $Id$\n" | "Project-Id-Version: $Id$\n" | ||||||
| "POT-Creation-Date: 2007-05-22 12:00 CET\n" | "POT-Creation-Date: 2007-05-22 12:00 CET\n" | ||||||
| "PO-Revision-Date: 2012-02-16 12:00 CET\n" | "PO-Revision-Date: 2012-03-28 12:00 CET\n" | ||||||
| "Last-Translator: Helmut Merz <helmutm@cy55.de>\n" | "Last-Translator: Helmut Merz <helmutm@cy55.de>\n" | ||||||
| "Language-Team: loops developers <helmutm@cy55.de>\n" | "Language-Team: loops developers <helmutm@cy55.de>\n" | ||||||
| "MIME-Version: 1.0\n" | "MIME-Version: 1.0\n" | ||||||
|  | @ -437,6 +437,12 @@ msgstr "Suchbegriff" | ||||||
| msgid "Select if you want to create a new version" | msgid "Select if you want to create a new version" | ||||||
| msgstr "Bitte markieren, wenn Sie eine neue Version anlegen möchten" | msgstr "Bitte markieren, wenn Sie eine neue Version anlegen möchten" | ||||||
| 
 | 
 | ||||||
|  | msgid "Suppress Versioning" | ||||||
|  | msgstr "Keine Versionierung" | ||||||
|  | 
 | ||||||
|  | msgid "Check this field if you want to suppress versioning for this resource." | ||||||
|  | msgstr "Bitte markieren, wenn diese Ressource nicht versioniert werden soll." | ||||||
|  | 
 | ||||||
| msgid "Search text" | msgid "Search text" | ||||||
| msgstr "Suchtext" | msgstr "Suchtext" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| # | # | ||||||
| #  Copyright (c) 2006 Helmut Merz helmutm@cy55.de | #  Copyright (c) 2012 Helmut Merz helmutm@cy55.de | ||||||
| # | # | ||||||
| #  This program is free software; you can redistribute it and/or modify | #  This program is free software; you can redistribute it and/or modify | ||||||
| #  it under the terms of the GNU General Public License as published by | #  it under the terms of the GNU General Public License as published by | ||||||
|  | @ -18,8 +18,6 @@ | ||||||
| 
 | 
 | ||||||
| """ | """ | ||||||
| Versioning interfaces. | Versioning interfaces. | ||||||
| 
 |  | ||||||
| $Id$ |  | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from zope.interface import Interface, Attribute | from zope.interface import Interface, Attribute | ||||||
|  | @ -30,31 +28,34 @@ class IVersionable(Interface): | ||||||
|     """ An object that may exist in different versions. |     """ An object that may exist in different versions. | ||||||
|     """ |     """ | ||||||
| 
 | 
 | ||||||
|     versionNumbers = Attribute(u'A tuple of version numbers for the context ' |     versionNumbers = Attribute('A tuple of version numbers for the context ' | ||||||
|                         'object, with a number for each level') |                         'object, with a number for each level') | ||||||
| 
 | 
 | ||||||
|     variantIds = Attribute(u'A tuple of variant IDs (e.g. for language ' |     variantIds = Attribute('A tuple of variant IDs (e.g. for language ' | ||||||
|                         'varuants) for the context object') |                         'varuants) for the context object') | ||||||
| 
 | 
 | ||||||
|     versionId = Attribute(u'A string identifying this version, e.g. 1.1_de, ' |     versionId = Attribute('A string identifying this version, e.g. 1.1_de, ' | ||||||
|                         'derived from versionNumbers and variantIds') |                         'derived from versionNumbers and variantIds') | ||||||
| 
 | 
 | ||||||
|     master = Attribute(u'The object (master version) that should be used for access to ' |     master = Attribute('The object (master version) that should be used for access to ' | ||||||
|                         'version-independent attributes and central ' |                         'version-independent attributes and central ' | ||||||
|                         'versioning metadata') |                         'versioning metadata') | ||||||
| 
 | 
 | ||||||
|     parent = Attribute(u'The version this one was created from') |     parent = Attribute('The version this one was created from') | ||||||
| 
 | 
 | ||||||
|     comment = Attribute(u'Somme informative text provided when creating ' |     comment = Attribute('Somme informative text provided when creating ' | ||||||
|                         'this version') |                         'this version') | ||||||
| 
 | 
 | ||||||
|     # attributes taken from the master version: |     # attributes taken from the master version: | ||||||
| 
 | 
 | ||||||
|     versions = Attribute(u'A dictionary of all versions of this object') |     versions = Attribute('A dictionary of all versions of this object') | ||||||
| 
 | 
 | ||||||
|     currentVersion = Attribute(u'The default version to be used for editing') |     currentVersion = Attribute('The default version to be used for editing') | ||||||
| 
 | 
 | ||||||
|     releasedVersion = Attribute(u'The default version to be used for viewing') |     releasedVersion = Attribute('The default version to be used for viewing') | ||||||
|  | 
 | ||||||
|  |     notVersioned = Attribute('A boolean that is True if this object should ' | ||||||
|  |                     'not be versioned') | ||||||
| 
 | 
 | ||||||
|     def createVersion(level=1): |     def createVersion(level=1): | ||||||
|         """ Create a copy of the context object as a new version and return it. |         """ Create a copy of the context object as a new version and return it. | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| # | # | ||||||
| #  Copyright (c) 2007 Helmut Merz helmutm@cy55.de | #  Copyright (c) 2012 Helmut Merz helmutm@cy55.de | ||||||
| # | # | ||||||
| #  This program is free software; you can redistribute it and/or modify | #  This program is free software; you can redistribute it and/or modify | ||||||
| #  it under the terms of the GNU General Public License as published by | #  it under the terms of the GNU General Public License as published by | ||||||
|  | @ -18,8 +18,6 @@ | ||||||
| 
 | 
 | ||||||
| """ | """ | ||||||
| Utilities for managing version informations. | Utilities for managing version informations. | ||||||
| 
 |  | ||||||
| $Id$ |  | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from BTrees.OOBTree import OOBTree | from BTrees.OOBTree import OOBTree | ||||||
|  | @ -129,6 +127,13 @@ class VersionableResource(object): | ||||||
|         m = self.versionableMaster |         m = self.versionableMaster | ||||||
|         return self.versionableMaster.getVersioningAttribute('releasedVersion', None) |         return self.versionableMaster.getVersioningAttribute('releasedVersion', None) | ||||||
| 
 | 
 | ||||||
|  |     def getNotVersioned(self): | ||||||
|  |         m = self.versionableMaster | ||||||
|  |         return self.versionableMaster.getVersioningAttribute('notVersioned', False) | ||||||
|  |     def setNotVersioned(self, value): | ||||||
|  |         self.versionableMaster.setVersioningAttribute('notVersioned', bool(value)) | ||||||
|  |     notVersioned = property(getNotVersioned, setNotVersioned) | ||||||
|  | 
 | ||||||
|     def createVersionObject(self, versionNumbers, variantIds, comment=u''): |     def createVersionObject(self, versionNumbers, variantIds, comment=u''): | ||||||
|         versionableMaster = self.versionableMaster |         versionableMaster = self.versionableMaster | ||||||
|         versionableMaster.initVersions() |         versionableMaster.initVersions() | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue