Changeset 240


Ignore:
Timestamp:
15.10.2008 14:28:13 (4 years ago)
Author:
chris
Message:

zms-2.11.1-70

Location:
ZMS/trunk
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • ZMS/trunk/Extensions/urls_xml.py

    r209 r240  
    1313 
    1414import Products.zms._blobfields 
    15 import Products.zms._fileutil 
    1615import Products.zms._globals 
    1716import urllib 
     17 
     18def guess_content_type( filename, default='application/octet-stream'): 
     19    content_type = default 
     20    if filename.endswith('.gif'): 
     21      content_type = 'image/gif' 
     22    elif filename.endswith('.jpg'): 
     23      content_type = 'image/jpeg' 
     24    elif filename.endswith('.png'): 
     25      content_type = 'image/png' 
     26    elif filename.endswith('.css'): 
     27      content_type = 'text/css' 
     28    elif filename.endswith('.js'): 
     29      content_type = 'text/javascript' 
     30    elif filename.endswith('.html'): 
     31      content_type = 'text/html' 
     32    return content_type 
    1833 
    1934# see _blobfields.py::recurse_downloadRessources 
    2035def recurseRessources(self, base_path, REQUEST, incl_embedded, RESPONSE): 
    2136    try: 
     37      if REQUEST.get('DEBUG'): 
    2238        RESPONSE.write('<!-- DEBUG recurseRessources(self, %s, REQUEST, incl_embedded, RESPONSE) -->\n'%(base_path)) 
    2339    except: 
     
    3551        return 
    3652     
    37     # Attributes. 
    38     keys = ob.getObjAttrs().keys() 
    39     for key in keys: 
    40         #RESPONSE.write('<!-- DEBUG %s -->\n'%(key)) 
     53    if ob.isVisible( REQUEST): 
     54       
     55      # Attributes. 
     56      keys = ob.getObjAttrs().keys() 
     57      for key in keys: 
    4158        obj_attr = ob.getObjAttr(key) 
    4259        datatype = obj_attr['datatype_key'] 
    4360        if datatype in Products.zms._globals.DT_BLOBS: 
    4461            for lang in ob.getLangIds(): 
    45                 #RESPONSE.write('<!-- DEBUG Products.zms._globals.DT_BLOBS %s -->\n'%(lang)) 
    4662                try: 
    4763                    if obj_attr['multilang']==1 or lang==ob.getPrimaryLanguage() or (obj_attr['multilang']==0 and lang!=ob.getPrimaryLanguage()): 
     
    5369                            filename = Products.zms._blobfields.getLangFilename(ob,filename,lang) 
    5470                            filename = '%s%s'%(base_path,filename) 
    55                             filename = Products.zms._fileutil.getOSPath(filename) 
     71                            filename = filename.replace('\\','/') 
    5672                            RESPONSE.write('<url content_type="%s">%s</url>\n'%(blob.getContentType(), filename)) 
    5773                except: 
    58                     s = Products.zms._globals.writeException(ob,"[recurse_downloadRessources]: Can't export %s"%key) 
    59                     RESPONSE.write('<!-- ERROR %s -->\n'%(s)) 
     74                  s = Products.zms._globals.writeException(ob,"[recurse_downloadRessources]: Can't export %s"%key) 
     75                  RESPONSE.write('<!-- ERROR %s -->\n'%(s)) 
    6076        elif datatype == Products.zms._globals.DT_LIST and obj_attr.get('type') in ['image','file']: 
    6177            for lang in ob.getLangIds(): 
    62                 #RESPONSE.write('<!-- DEBUG Products.zms._globals.DT_LIST %s -->\n'%(lang)) 
    6378                try: 
    6479                    if obj_attr['multilang']==1 or lang==ob.getPrimaryLanguage() or (obj_attr['multilang']==0 and lang!=ob.getPrimaryLanguage()): 
     
    7186                            filename = Products.zms._blobfields.getLangFilename(ob,filename,lang) 
    7287                            filename = '%s@%i/%s'%(base_path,i,filename) 
    73                             filename = Products.zms._fileutil.getOSPath(filename) 
     88                            filename = filename.replace('\\','/') 
    7489                            RESPONSE.write('<url content_type="%s">%s</url>\n'%(blob.getContentType(), filename)) 
    7590                            i += 1 
    7691                except: 
    77                     s = Products.zms._globals.writeException(ob,"[recurse_downloadRessources]: Can't export %s"%key) 
    78                     RESPONSE.write('<!-- ERROR %s -->\n'%(s)) 
    79     if ob.meta_type == 'ZMSCustom': 
    80         metaObjId = ob.meta_id 
    81         for metaObjAttrId in ob.getMetaobjAttrIds( metaObjId): 
    82             metaObjAttr = ob.getMetaobjAttr( metaObjId, metaObjAttrId) 
    83             if metaObjAttr['type'] == 'resource': 
    84                 try: 
    85                     blob = metaObjAttr['custom'] 
    86                     filename = blob.getFilename() 
    87                     filename = '%s%s'%(base_path,filename) 
    88                     filename = Products.zms._fileutil.getOSPath(filename) 
    89                     RESPONSE.write('<url content_type="%s">%s</url>\n'%(blob.getContentType(), filename)) 
    90                 except: 
    91                     Products.zms._globals.writeException( ob, "[recurse_downloadRessources]: Can't export %s.%s"%(metaObjId,metaObjAttrId)) 
     92                  s = Products.zms._globals.writeException(ob,"[recurse_downloadRessources]: Can't export %s"%key) 
     93                  RESPONSE.write('<!-- ERROR %s -->\n'%(s)) 
     94     
    9295    # Process children. 
    9396    for child in ob.getChildNodes(): 
     
    101104def recurseHtmlPages(self, obj, path, lang, REQUEST, RESPONSE): 
    102105    try: 
     106      if REQUEST.get('DEBUG'): 
    103107        RESPONSE.write('<!-- DEBUG recurseHtmlPages(self, obj, %s, %s, REQUEST, RESPONSE) -->\n'%(path, lang)) 
    104108    except: 
    105109        RESPONSE.write('<!-- ERROR exception -->\n') 
    106110     
    107     level = obj.getLevel() 
    108      
    109     dctOp = {'index':'','sitemap':'sitemap','index_print':'print'} 
    110     for key in dctOp.keys(): 
    111         if key == 'index' and \ 
    112                 level > 0 and \ 
    113                 self.getConfProperty('ZMS.pathhandler',0) != 0 and \ 
    114                 self.getConfProperty('ZMS.export.pathhandler',0) == 1: 
    115             filename = '%s/../%s%s'%( path, obj.getDeclId(REQUEST), obj.getPageExt(REQUEST)) 
    116         else: 
    117             if key == 'sitemap': 
    118                 pageext = '.html' 
    119             else: 
    120                 pageext = obj.getPageExt( REQUEST) 
    121             filename = '%s/%s_%s%s'%( path, key, lang, pageext) 
    122          
    123         RESPONSE.write('<url>%s</url>\n'%(filename)) 
    124          
    125         # Process DTML-methods of meta-objects. 
    126         if self.zms_build >= '131': # >= ZMS-2.11 
     111    if obj.isVisible( REQUEST): 
     112       
     113      level = obj.getLevel() 
     114       
     115      dctOp = {'index':'','sitemap':'sitemap','index_print':'print'} 
     116      for key in dctOp.keys(): 
     117          if key == 'index' and \ 
     118                  level > 0 and \ 
     119                  self.getConfProperty('ZMS.pathhandler',0) != 0 and \ 
     120                  self.getConfProperty('ZMS.export.pathhandler',0) == 1: 
     121              filename = '%s/../%s%s'%( path, obj.getDeclId(REQUEST), obj.getPageExt(REQUEST)) 
     122          else: 
     123              if key == 'sitemap': 
     124                  pageext = '.html' 
     125              else: 
     126                  pageext = obj.getPageExt( REQUEST) 
     127              filename = '%s/%s_%s%s'%( path, key, lang, pageext) 
     128           
     129          content_type = 'text/html' 
     130          RESPONSE.write('<url lang="%s" content_type="%s">%s</url>\n'%(lang,content_type,filename)) 
     131           
     132          # Process DTML-methods of meta-objects. 
    127133          for metadictAttrId in self.getMetaobjAttrIds( obj.meta_id): 
    128134            try: 
     
    137143                        RESPONSE.write('<url>%s</url>\n'%(filename)) 
    138144            except: 
    139                     s = Products.zms._globals.writeException( self, "[recurse_downloadHtmlPages]: Can't process DTML-method '%s' of meta-object"%metadictAttr) 
    140                     RESPONSE.write('<!-- ERROR %s -->\n'%(s)) 
    141         else: # < ZMS-2.11 
    142           for metadictAttrId in self.getMetadictAttrs( obj.meta_type): 
    143               try: 
    144                   metadictAttr = self.getMetadictAttr( metadictAttrId) 
    145                   if metadictAttr['type'] in self.getMetaobjIds(): 
    146                       metaObj = self.getMetaobj( metadictAttr['type']) 
    147                       if metaObj['type'] == 'ZMSResource': 
    148                           for metadictObj in obj.getObjChildren( metadictAttr['id'], REQUEST): 
    149                               for metaObjAttr in metaObj['attrs']: 
    150                                   if metaObjAttr['type'] in [ 'DTML Document', 'DTML Method']: 
    151                                       filename = '%s/%s'%( path, metaObjAttr['id']) 
    152                                       RESPONSE.write('<url>%s</url>\n'%(filename)) 
    153               except: 
    154                   s = Products.zms._globals.writeException( self, "[recurse_downloadHtmlPages]: Can't process DTML-method '%s' of meta-object"%metadictAttr) 
    155                   RESPONSE.write('<!-- ERROR %s -->\n'%(s)) 
     145              s = Products.zms._globals.writeException( self, "[recurse_downloadHtmlPages]: Can't process DTML-method '%s' of meta-object"%metadictAttr) 
     146              RESPONSE.write('<!-- ERROR %s -->\n'%(s)) 
    156147     
    157148    # Process children. 
     
    163154def recurseFolder(self, root, path, id, REQUEST, RESPONSE): 
    164155    try: 
     156      if REQUEST.get('DEBUG'): 
    165157        RESPONSE.write('<!-- DEBUG recurseFolder(%s, %s, %s, %s, REQUEST, RESPONSE) -->\n'%(self, "root", path, id)) 
    166158    except: 
     
    176168                else: 
    177169                    try: 
    178                         ob_id = ob.id() 
     170                      ob_id = ob.id() 
    179171                    except: 
    180                         ob_id = str(ob.id) 
     172                      ob_id = str(ob.id) 
    181173                    #if ob.meta_type in [ 'DTML Document', 'DTML Method']: 
    182174                    #    ob = Products.zms._globals.dt_html(self,ob.raw,REQUEST) 
    183                     RESPONSE.write('<url>%s/%s/%s</url>\n'%(path,id,ob_id)) 
    184  
    185  
    186 # see _exportable::exportContentRessources 
    187 def recurseContentRessources(self, REQUEST, RESPONSE): 
    188     try: 
    189         RESPONSE.write('<!-- DEBUG recurseContentRessources(self, REQUEST, RESPONSE) -->\n') 
    190     except: 
    191         RESPONSE.write('<!-- ERROR exception -->\n') 
    192      
    193     #-- JavaScript 
    194     # diese mÃŒssen als comlib_ger.js usw. exportiert werden(!) 
    195     for js in [ 'comlib', 'formlib', 'datelib', 'formlib', 'zmilib', 'styleswitcher']: 
    196       attr = getattr(self,'%s_js'%(js),None) 
    197       if attr: 
    198         data = attr(self,REQUEST) 
    199         filename = '%s.js'%js 
    200         RESPONSE.write('<url>/%s</url>\n'%(filename)) 
    201  
     175                    content_type = getattr(ob,'content_type','application/octet-stream') 
     176                    if content_type == 'application/octet-stream': 
     177                      content_type = guess_content_type( ob_id) 
     178                    RESPONSE.write('<url content_type="%s">%s/%s/%s</url>\n'%(content_type,path,id,ob_id)) 
     179 
     180 
     181# see _exportable::exportMetaobjManager 
     182def recurseMetaobjManager(self, root, path, REQUEST, RESPONSE): 
     183  try: 
     184    if REQUEST.get('DEBUG'): 
     185      RESPONSE.write('<!-- DEBUG recurseMetaobjManager(%s, %s, %s) -->\n'%(self, "root", path)) 
     186  except: 
     187      RESPONSE.write('<!-- ERROR exception -->\n') 
     188  
     189  id = 'metaobj_manager' 
     190  if hasattr(root,id): 
     191    folder = getattr(root,id) 
     192    for ob in folder.objectValues(['File']): 
     193      try: 
     194        ob_id = ob.id() 
     195      except: 
     196        ob_id = str(ob.id) 
     197      content_type = getattr(ob,'content_type','application/octet-stream') 
     198      if content_type == 'application/octet-stream': 
     199        content_type = guess_content_type( ob_id) 
     200      RESPONSE.write('<url content_type="%s">%s/%s/%s</url>\n'%(content_type,path,id,ob_id)) 
    202201 
    203202def manage_getMirrorURLs(self, REQUEST, RESPONSE): 
     
    209208    # see _exportable.py::exportRessources, etc. 
    210209    folder = '/misc_/zms' 
    211     for obj_id in self.misc_.zms._d.keys(): 
    212         RESPONSE.write('<url>%s/%s</url>\n'%(folder, obj_id)) 
     210    for ob_id in self.misc_.zms._d.keys(): 
     211      content_type = guess_content_type( ob_id) 
     212      RESPONSE.write('<url content_type="%s">%s/%s</url>\n'%(content_type,folder,ob_id)) 
    213213     
    214214    for id in [ 'common', 'instance']: 
    215215        recurseFolder( self, self.getHome(), "", id, REQUEST, RESPONSE) 
    216      
    217     recurseContentRessources( self, REQUEST, RESPONSE) 
    218      
     216 
     217    recurseMetaobjManager( self, self, "/content", REQUEST, RESPONSE) 
    219218    recurseRessources(self, "/content/", REQUEST, True, RESPONSE) 
    220     recurseHtmlPages(self, self, "/content", lang, REQUEST, RESPONSE) 
     219    for lang in self.getLangIds(): 
     220      REQUEST.set('lang',lang) 
     221      REQUEST.set('preview',None) 
     222      recurseHtmlPages(self, self, "/content", lang, REQUEST, RESPONSE) 
    221223     
    222224    RESPONSE.write('</urls>\n'); 
  • ZMS/trunk/ZMSMetaobjManager.py

    r227 r240  
    184184    # -------------------------------------------------------------------------- 
    185185    #  ZMSMetaobjManager.__get_metaobjs__: 
    186     #  
     186    # 
    187187    #  Returns all meta-objects (including acquisitions). 
    188188    # -------------------------------------------------------------------------- 
     
    232232    # -------------------------------------------------------------------------- 
    233233    #  ZMSMetaobjManager.__get_metaobj__: 
    234     #  
     234    # 
    235235    #  Returns meta-object identified by id. 
    236236    # -------------------------------------------------------------------------- 
     
    254254        rtnVal = False 
    255255        ob = self.__get_metaobj__( id) 
    256         if ob['type'] == 'ZMSDocument' or ob['id'] == 'ZMSTeaserContainer': 
     256        if type( ob) is dict and (ob.get('type') == 'ZMSDocument' or ob.get('id') == 'ZMSTeaserContainer'): 
    257257          ids = map( lambda x: x['id'], filter( lambda x: x['type']=='*', ob['attrs'])) 
    258258          rtnVal = ids == ['e'] 
     
    264264    # -------------------------------------------------------------------------- 
    265265    #  ZMSMetaobjManager.getMetaobjIds: 
    266     #  
     266    # 
    267267    #  Returns list of all meta-ids in model. 
    268268    # -------------------------------------------------------------------------- 
     
    380380    # -------------------------------------------------------------------------- 
    381381    #  ZMSMetaobjManager.getMetaobjAttrIdentifierId: 
    382     #  
     382    # 
    383383    #  Returns attribute-id of datatable-identifier for meta-object specified by id. 
    384384    # -------------------------------------------------------------------------- 
     
    391391    # -------------------------------------------------------------------------- 
    392392    #  ZMSMetaobjManager.getMetaobjAttrIds: 
    393     #  
     393    # 
    394394    #  Returns list of attribute-ids for meta-object specified by meta-id. 
    395395    # -------------------------------------------------------------------------- 
     
    412412    #  Get attribute for meta-object specified by attribute-id. 
    413413    # -------------------------------------------------------------------------- 
    414     def getMetaobjAttr(self, meta_id, key): 
     414    def getMetaobjAttr(self, meta_id, key, sync=True): 
    415415      meta_objs = self.__get_metaobjs__() 
    416416      if meta_objs.get(meta_id,{}).get('acquired',0) == 1: 
     
    439439          valid_types = self.valid_datatypes+self.valid_zopetypes+meta_types+['*'] 
    440440          # type is valid: sync type (copy can be edited directly in ZODB via FTP!) 
    441           if attr['type'] in valid_types: 
     441          if sync and attr['type'] in valid_types: 
    442442            attr['meta_type'] = '' 
    443443            syncType( self, meta_id, attr) 
     
    451451    # -------------------------------------------------------------------------- 
    452452    #  ZMSMetaobjManager.setMetaobjAttr: 
    453     #  
     453    # 
    454454    #  Set/add meta-object attribute with specified values. 
    455455    # -------------------------------------------------------------------------- 
     
    829829              newKeys = self.string_list(REQUEST.get('attr_keys_%s'%old_id,''),'\n') 
    830830              newCustom = REQUEST.get('attr_custom_%s'%old_id,'') 
     831              if REQUEST.get('attr_custom_%s_modified'%old_id,'1') == '0': 
     832                savedAttr = filter(lambda x: x['id']==old_id, savedAttrs)[0] 
     833                syncType( self, id, savedAttr) 
     834                newCustom = savedAttr['custom'] 
    831835              newDefault = REQUEST.get('attr_default_%s'%old_id,'') 
    832836              if len( newMetaType) > 0: 
  • ZMS/trunk/_zcatalogmanager.py

    r121 r240  
    206206      except ( UnicodeDecodeError, UnicodeEncodeError): 
    207207        _globals.writeException(self,"[search_encode]") 
    208         v = str(sys.exc_value) 
    209         STR_POSITION = ' position ' 
    210         i = v.find(STR_POSITION) 
    211         if i > 0: 
    212           v = v[i+len(STR_POSITION):] 
    213           if v.find('-') > 0: 
    214             l = int( v[:v.find('-')]) 
    215             h = int( v[v.find('-')+1:v.find(':')]) 
    216           else: 
    217             l = int( v[:v.find(':')]) 
    218             h = l 
    219           ln = max( l - 20, 0) 
    220           hn = min( h + 20, len(s)) 
    221           print ">>>>>",s[ln:hn] 
    222           print ">>>>>"," "*(l-ln)+"^"*(h-l+1) 
     208        try: 
     209          v = str(sys.exc_value) 
     210          STR_POSITION = ' position ' 
     211          i = v.find(STR_POSITION) 
     212          if i > 0: 
     213            v = v[i+len(STR_POSITION):] 
     214            if v.find('-') > 0: 
     215              l = int( v[:v.find('-')]) 
     216              h = int( v[v.find('-')+1:v.find(':')]) 
     217            else: 
     218              l = int( v[:v.find(':')]) 
     219              h = l 
     220            ln = max( l - 20, 0) 
     221            hn = min( h + 20, len(s)) 
     222            print ">>>>>",s[ln:hn] 
     223            print ">>>>>"," "*(l-ln)+"^"*(h-l+1) 
     224        except: 
     225          _globals.writeException(self,"[search_encode]: ignore exception") 
    223226      return s 
    224227 
  • ZMS/trunk/changes.txt

    r227 r240  
    9409402008-08-21::zms-2.11.0-30 
    941941-- MINOR CHANGES 
    942 [01083] Applied fix for display of properties-tab after cutting objects (reported by J. Klein). 
     942[01083] Applied fix for display of properties-tab after copying objects (reported by J. Klein). 
    943943-------------------------------------------------- 
    9449442008-09-02::zms-2.11.0-31 
     
    972972[01095] Revised keys in language-dictionary: WEEKDAY%i is deprecated, use DAYOFWEEK%i instead! 
    973973-------------------------------------------------- 
     9742008-09-23:zms-2.11.1-01 
     975-- MINOR CHANGES 
     976[01096] Added support for Zope-2.11.1. 
     977[01097] Applied fix for Google-Sitemap/Mirror-Manager (requested by xm). 
     978-------------------------------------------------- 
     9792008-10-06:zms-2.11.1-02 
     980-- MINOR CHANGES 
     981[01098] Revised special-object 'Wiki' (contributed by fh). 
     982-------------------------------------------------- 
     9832008-10-08:zms-2.11.1-03 
     984-- MINOR CHANGES 
     985[01099] Applied fix for display of properties-tab after cutting objects (reported by desy). 
     986[01100] Applied fixes for ZMSTable (reported by desy). 
     987-------------------------------------------------- 
     9882008-10-09:zms-2.11.1-04 
     989-- MINOR CHANGES 
     990[01101] Applied fix for Google-Sitemap/Mirror-Manager (requested by xm). 
     991[01102] Added support for simultaneous remote- (via ftp) and web-editing (via zmi) of content-object-methods. 
     992-------------------------------------------------- 
     9932008-10-09:zms-2.11.1-05 
     994-- MINOR CHANGES 
     995[01103] Revised semantics of zmsobject.isModifiedInParentLanguage(): equal timestamps mean unmodified (important for xml-import). 
     996-------------------------------------------------- 
     9972008-10-10:zms-2.11.1-06 
     998-- MINOR CHANGES 
     999[01104] Added support for multilingual labels to SQL-Datasource (contributed by tf). 
     1000[01105] Added support for smtp-authentication to send_mail extension (contributed by S. Tänzer). 
     1001-------------------------------------------------- 
     10022008-10-13:zms-2.11.1-07 
     1003-- MINOR CHANGES 
     1004[01106] Applied fix for Google-Sitemap/Mirror-Manager (requested by xm). 
     1005-------------------------------------------------- 
  • ZMS/trunk/dtml/ZMS/index.dtml

    r121 r240  
    7676><script type="text/javascript"><dtml-in "REQUEST.get(ZMS_HIGHLIGHT,'').split(' ')"><dtml-if sequence-item>do_highlight('<dtml-var sequence-item>');</dtml-if></dtml-in></script></dtml-if 
    7777><dtml-else 
     78><dtml-call "RESPONSE.setStatus(503)" 
    7879><p class="standard"><dtml-var "getLangStr('MSG_INACTIVE',lang)"></p 
    7980></dtml-if 
  • ZMS/trunk/dtml/ZMSMetamodelProvider/manage_main.dtml

    r227 r240  
    3737      fm.elements['attr_name'].value = arr[v]; 
    3838    } 
     39  } 
     40 
     41  /** 
     42   * 
     43   * @param el 
     44   */ 
     45  function changeCustom(el)  
     46  { 
     47    $(el).css( 'backgroundColor', '#FFFFE8'); 
     48    $('input[@name='+el.name+'_modified]').val( '1'); 
    3949  } 
    4050 
     
    569579             <dtml-elif "oAttr['type'] in ['hint']"> 
    570580              class="form-small" style="width:80px; border-width=1;" 
    571              <dtml-elif "oAttr['type'] in ['method','interface'] or oAttr['type'] in valid_zopetypes"> 
     581             <dtml-elif "oAttr['type'] in ['method','interface']+valid_zopetypes"> 
    572582              class="form-fixed" style="width:80px; " 
    573583             <dtml-else> 
     
    582592             <dtml-elif "oAttr['type'] in ['hint']"> 
    583593              class="form-small" style="width:120px; border-width=1;" 
    584              <dtml-elif "oAttr['type'] in ['method','interface'] or oAttr['type'] in valid_zopetypes"> 
     594             <dtml-elif "oAttr['type'] in ['method','interface']+valid_zopetypes"> 
    585595              class="form-fixed" style="width:120px; " 
    586596             <dtml-else> 
     
    591601          ##### METHOD ##### 
    592602          </dtml-comment> 
    593           <dtml-if "oAttr['type'] == 'method' or oAttr['type'] in valid_zopetypes"> 
     603          <dtml-if "oAttr['type'] in ['method']+valid_zopetypes"> 
    594604          <td nowrap="nowrap" colspan="<dtml-if "metaObj['type']=='ZMSRecordSet'">4<dtml-else>5</dtml-if>"> 
    595605           <input type="hidden" name="attr_type_<dtml-var "oAttr['id']">" value="<dtml-var "oAttr['type']">"> 
    596            <textarea class="form-fixed" title="<dtml-var "oAttr['type']">" name="attr_custom_<dtml-var "oAttr['id']">" cols="80" rows="1" wrap="virtual" style="width:390px; height:20px;"><dtml-var "oAttr.get('custom','')" html_quote></textarea 
     606           <input type="hidden" name="attr_custom_<dtml-var "oAttr['id']">_modified" value="0"/> 
     607           <textarea class="form-fixed" title="<dtml-var "oAttr['type']">" name="attr_custom_<dtml-var "oAttr['id']">" cols="80" rows="1" wrap="virtual" style="width:390px; height:20px;" onchange="changeCustom(this);"><dtml-var "oAttr.get('custom','')" html_quote></textarea 
    597608           ><a href="manage_editorForm?came_from=<dtml-var "URL+'?'+QUERY_STRING" url_quote>&lang=<dtml-var lang>&fmName=form0&elName=attr_custom_<dtml-var "oAttr['id']">&headline=<dtml-var "getZMILangStr(meta_type)+': '+id+'.'+oAttr['id']" url_quote>" onclick="javascript:return confirmChanges(this);"><img src="<dtml-var MISC_ZMS>table_cell_edit.gif" border="0" align="bottom"></a> 
    598609          </td> 
  • ZMS/trunk/dtml/ZMSObject/input_fields.dtml

    r226 r240  
    8383##### Cacheable ##### 
    8484</dtml-comment> 
    85 <dtml-elif "objAttr['id']=='attr_cacheable'"> 
    86 <dtml-if "REQUEST['AUTHENTICATED_USER'].has_permission('ZMS Administrator',this()) and getConfProperty('ZMS.cache.active')==1"> 
     85<dtml-elif "objAttr['id']=='attr_cacheable' and getConfProperty('ZMS.cache.active')==1"> 
     86<dtml-if "REQUEST['AUTHENTICATED_USER'].has_permission('ZMS Administrator',this())"> 
    8787<tr id="tr_<dtml-var key>" valign="top"> 
    8888 <td><div class="form-label<dtml-if disabled>-disabled</dtml-if>"><dtml-var elLabel><dtml-if required><sup style="color:red">*</sup></dtml-if></div></td> 
  • ZMS/trunk/dtml/ZMSObject/manage_main.dtml

    r121 r240  
    11<dtml-let lurl="URL.replace('?','/').split('/')"> 
    2 <dtml-if "isPageContainer() and ('manage' in lurl or 'manage_main' in lurl or 'manage_copyObjects' in lurl)"> 
     2<dtml-if "isPageContainer() and ('manage' in lurl or 'manage_main' in lurl or 'manage_copyObjects' in lurl or 'manage_cutObjects' in lurl)"> 
    33<dtml-var manage_container> 
    44<dtml-else> 
  • ZMS/trunk/dtml/ZMSSqlDb/input_form.dtml

    r121 r240  
    2020          self.btnClicked=="<dtml-var "getZMILangStr('BTN_CHANGE')" html_quote>") { 
    2121        if (fm.elements['<dtml-var elName>'] && fm.elements['<dtml-var "'new_%s_confirm'%id">']) { 
    22           b = b && !disallowBlank(fm.elements['<dtml-var elName>'],"<dtml-var "getZMILangStr('MSG_REQUIRED')%label">",false); 
    23           b = b && !disallowBlank(fm.elements['<dtml-var "'new_%s_confirm'%id">'],"<dtml-var "getZMILangStr('MSG_REQUIRED')%'%s (%s)'%(label,getZMILangStr('ATTR_CONFIRM'))">",false); 
     22          b = b && !disallowBlank(fm.elements['<dtml-var elName>'],"<dtml-var "getZMILangStr('MSG_REQUIRED')%getLangStr(label,lang)">",false); 
     23          b = b && !disallowBlank(fm.elements['<dtml-var "'new_%s_confirm'%id">'],"<dtml-var "getZMILangStr('MSG_REQUIRED')%'%s (%s)'%(getLangStr(label,lang),getZMILangStr('ATTR_CONFIRM'))">",false); 
    2424          if (fm.elements['<dtml-var elName>'].value!=fm.elements['<dtml-var "'new_%s_confirm'%id">'].value) { 
    2525            b = false; 
    26             alert('<dtml-var label><><dtml-var "'%s (%s)'%(label,getZMILangStr('ATTR_CONFIRM'))">!'); 
     26            alert('<dtml-var "getLangStr(label,lang)"><><dtml-var "'%s (%s)'%(getLangStr(label,lang),getZMILangStr('ATTR_CONFIRM'))">!'); 
    2727          } 
    2828        } 
     
    183183      <img src="<dtml-var MISC_ZMS>btn_key.gif" title="" border="0" align="middle"/> 
    184184     </dtml-if> 
    185      <dtml-var label><dtml-if mandatory><sup style="color:red">*</sup></dtml-if> 
     185     <dtml-var "getLangStr(label,lang)"><dtml-if mandatory><sup style="color:red">*</sup></dtml-if> 
    186186    </td> 
    187187    <dtml-if "grid_col.get('details')"> 
     
    226226      <tr> 
    227227       <td colspan="<dtml-var "_.len(multimultiselect.get('tables',[]))">"> 
    228         <div class="form-small"><dtml-in "multimultiselect.get('tables',[])" mapping><dtml-var label><dtml-unless sequence-end>/</dtml-unless></dtml-in></div> 
     228        <div class="form-small"><dtml-in "multimultiselect.get('tables',[])" mapping><dtml-var "getLangStr(label,lang)"><dtml-unless sequence-end>/</dtml-unless></dtml-in></div> 
    229229        <dtml-let values="[]" leftjoins="[]" outerjoins="[]"> 
    230230        <dtml-unless ZMS_INSERT> 
     
    323323       ><dtml-let i=sequence-index item=sequence-item 
    324324       ><td style="vertical-align:bottom" 
    325         ><div class="form-small"><dtml-var label><dtml-unless "item.get('nullable') in [1,_.True]"><sup style="color:red">*</sup></dtml-unless></div 
     325        ><div class="form-small"><dtml-var "getLangStr(label,lang)"><dtml-unless "item.get('nullable') in [1,_.True]"><sup style="color:red">*</sup></dtml-unless></div 
    326326        ><dtml-if "item.has_key('lazy')" 
    327327         ><dtml-let fk=item 
     
    337337        ><dtml-else 
    338338         ><select class="<dtml-var css>" id="<dtml-var mmsid><dtml-var sequence-index>" 
    339           ><dtml-if "item.get('nullable') in [1,_.True]"><option value="">----- <dtml-var "getZMILangStr('ACTION_SELECT')%label"> -----</option></dtml-if 
     339          ><dtml-if "item.get('nullable') in [1,_.True]"><option value="">----- <dtml-var "getZMILangStr('ACTION_SELECT')%getLangStr(label,lang)"> -----</option></dtml-if 
    340340          ><dtml-in "query( 'SELECT ' + fieldname + ' AS qkey, ' + displayfield + ' AS qvalue FROM ' + tablename + ' ORDER BY ' + displayfield)['records']" 
    341341           ><dtml-let row=sequence-item 
     
    407407          class="form-submit" style="vertical-align:middle;padding:1px 2px;background:#fff" 
    408408          src="<dtml-var MISC_ZMS>pencil_add.png" 
    409           title="<dtml-var "getZMILangStr('ACTION_SELECT')%label">"  
     409          title="<dtml-var "getZMILangStr('ACTION_SELECT')%getLangStr(label,lang)">"  
    410410          onclick="return browseDbBtnClick('form0','<dtml-var id>','<dtml-var "js_quote(fk.get('fieldname'))">','<dtml-var "js_quote(fk.get('displayfield'))">','<dtml-var "js_quote(fk.get('tablename'))">')"/> 
    411411       <img class="form-submit" style="vertical-align:middle;padding:1px 2px;background:#fff" 
     
    420420       <select class="<dtml-var css>" id="<dtml-var elName>" name="<dtml-var elName>"> 
    421421        <dtml-if nullable> 
    422          <option value="">----- <dtml-var "getZMILangStr('ACTION_SELECT')%label"> -----</option> 
     422         <option value="">----- <dtml-var "getZMILangStr('ACTION_SELECT')%getLangStr(label,lang)"> -----</option> 
    423423        </dtml-if> 
    424424        <dtml-in options> 
     
    469469         ></dtml-in 
    470470        ></dtml-if 
    471         ><dtml-var "getSelect(fmName='form0', elName='%s:list'%elName, value=value, inputtype='multiselect', lang_str=label, required=0, optpl=optpl, enabled=1, REQUEST=REQUEST)" 
     471        ><dtml-var "getSelect(fmName='form0', elName='%s:list'%elName, value=value, inputtype='multiselect', lang_str=getLangStr(label,lang), required=0, optpl=optpl, enabled=1, REQUEST=REQUEST)" 
    472472       ></dtml-let 
    473473      ><dtml-else 
     
    534534        </dtml-in> 
    535535        </select> 
    536         <input class="form-submit" type="submit" value="..." title="<dtml-var "getZMILangStr('ACTION_SELECT')%label">" onclick="return browseDbBtnClick('form0','<dtml-var id>','<dtml-var "js_quote(fk.get('fieldname'))">','<dtml-var "js_quote(fk.get('displayfield'))">','<dtml-var "js_quote(fk.get('tablename'))">')"/> 
     536        <input class="form-submit" type="submit" value="..." title="<dtml-var "getZMILangStr('ACTION_SELECT')%getLangStr(label,lang)">" onclick="return browseDbBtnClick('form0','<dtml-var id>','<dtml-var "js_quote(fk.get('fieldname'))">','<dtml-var "js_quote(fk.get('displayfield'))">','<dtml-var "js_quote(fk.get('tablename'))">')"/> 
    537537        <input class="form-submit" type="submit" value="-" title="<dtml-var "getZMILangStr('BTN_DELETE')">" onclick="return multiMultiSelectRemoveElements('<dtml-var elName>')"/> 
    538538        <dtml-if nullable><input class="form-submit" type="submit" value="X" title="<dtml-var "getZMILangStr('BTN_DELETE')">" onclick="document.getElementById('<dtml-var elName>').value='null'; document.getElementById('<dtml-var "'displayfield_%s'%id">').value='[null]'; return false;"/></dtml-if> 
    539539       <dtml-else> 
    540         <dtml-var "getSelect(fmName='form0', elName='%s:list'%elName, value=value, inputtype='multiselect', lang_str=label, required=0, optpl=optpl, enabled=1, REQUEST=REQUEST)"> 
     540        <dtml-var "getSelect(fmName='form0', elName='%s:list'%elName, value=value, inputtype='multiselect', lang_str=getLangStr(label,lang), required=0, optpl=optpl, enabled=1, REQUEST=REQUEST)"> 
    541541       </dtml-if> 
    542542       </dtml-let> 
     
    646646     </dtml-comment> 
    647647     <dtml-elif "type in ['richtext']"> 
    648       <dtml-var "f_selectRichtext(_,_,fmName='form0', elName=elName, cols=50, rows=15, value=row.get(id,''), key=id, metaObj=_.None, enabled=1, lang=lang, lang_str=label, REQUEST=REQUEST, css=css, wrap='virtual')"> 
     648      <dtml-var "f_selectRichtext(_,_,fmName='form0', elName=elName, cols=50, rows=15, value=row.get(id,''), key=id, metaObj=_.None, enabled=1, lang=lang, lang_str=getLangStr(label,lang), REQUEST=REQUEST, css=css, wrap='virtual')"> 
    649649     <dtml-comment> 
    650650     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
     
    670670   <dtml-if password> 
    671671   <tr id="tr_<dtml-var id>_confirm"> 
    672     <td class="form-label"><dtml-var label> (<dtml-var "getZMILangStr('ATTR_CONFIRM')">)<dtml-unless nullable><sup style="color:red">*</sup></dtml-unless></td> 
     672    <td class="form-label"><dtml-var "getLangStr(label,lang)"> (<dtml-var "getZMILangStr('ATTR_CONFIRM')">)<dtml-unless nullable><sup style="color:red">*</sup></dtml-unless></td> 
    673673    <td class="form-element"><dtml-var "getTextInput(fmName='form0', elName='new_%s_confirm'%id, value=row.get(id,''), type='password', css=css)"></td> 
    674674   </tr> 
  • ZMS/trunk/dtml/ZMSSqlDb/manage_configuration.dtml

    r227 r240  
    4040<colgroup> 
    4141 <col /> 
    42  <col /> 
    43  <col /> 
    44  <col /> 
    45  <col /> 
    46  <col width="20" /> 
    4742</colgroup> 
    4843 
    4944  <!-- Header --> 
    5045  <tr> 
    51    <td colspan="6"><dtml-var "f_headline(_,_,headline=getZMILangStr('TAB_EDIT'),extra='<a href='+QUOT+'sqlmodel.xml'+QUOT+' target='+QUOT+'_blank'+QUOT+'><img src='+QUOT+MISC_ZMS+'mime_type.text_xml.gif'+QUOT+' title='+QUOT+getZMILangStr('BTN_EXPORT')+' (XML)'+QUOT+' border='+QUOT+'1'+QUOT+' align='+QUOT+'absmiddle'+QUOT+'/></a>')"></td> 
     46   <td><dtml-var "f_headline(_,_,headline=getZMILangStr('TAB_EDIT'),extra='<a href='+QUOT+'sqlmodel.xml'+QUOT+' target='+QUOT+'_blank'+QUOT+'><img src='+QUOT+MISC_ZMS+'mime_type.text_xml.gif'+QUOT+' title='+QUOT+getZMILangStr('BTN_EXPORT')+' (XML)'+QUOT+' border='+QUOT+'1'+QUOT+' align='+QUOT+'absmiddle'+QUOT+'/></a>')"></td> 
    5247  </tr> 
    5348   
    5449  <dtml-in "getEntities()" mapping sort=label> 
    5550   <dtml-if "REQUEST.get('id','')==id"> 
     51     <!-- Headline --> 
     52     <tr valign="top" class="zmiNeutralColorStrong0"> 
     53      <td><div class="form-label">Model</div></td> 
     54     </tr> 
     55     <tr valign="top" class="zmiNeutralColorMedium0"> 
     56      <td> 
     57       <textarea class="form-fixed" name="model" style="width:100%" rows="10"><dtml-in "getModel()"><dtml-let x=sequence-item><dtml-if "x.get('id')==REQUEST.get('id')"><dtml-var "toXmlString(x)"></dtml-if></dtml-let></dtml-in></textarea> 
     58      </td> 
     59     </tr> 
    5660   <dtml-elif "REQUEST.get('id','')==''"> 
    5761    <tr valign="top" class="neutralColorWhite"> 
    58      <td colspan="6"> 
     62     <td> 
    5963      <div class="form-small"> 
    6064       <a href="javascript:toggleElement('img_<dtml-var id>','columns_<dtml-var id>')"><img id="img_<dtml-var id>" src="<dtml-var MISC_ZMS>pl.gif" alt="+" title="+" border="0" align="absmiddle"/></a> 
    61        <a id="a_<dtml-var id>" href="?lang=<dtml-var lang>&id=<dtml-var id>" class="zmi"><strong><dtml-var label></strong></a> 
    62        <div id="columns_<dtml-var id>" style="display:none;"> 
    63         <table cellspacing="0" cellpadding="0" border="0"> 
     65       <a id="a_<dtml-var id>" href="?lang=<dtml-var lang>&id=<dtml-var id>" class="zmi"><strong><dtml-var id></strong> (<em><dtml-var label></em>)</a> 
     66       <div id="columns_<dtml-var id>" style="display:none;padding-left:20px;"> 
    6467        <dtml-in columns mapping> 
    65          <tr> 
    66           <td><dtml-var sequence-item></td> 
    67          </tr> 
     68         <div class="form-small"> 
     69          <img src="<dtml-var MISC_ZMS>ico_attr.gif" title="Attribute" border="0" style="vertical-align:middle" /> 
     70          <dtml-if pk><img src="<dtml-var MISC_ZMS>btn_key.gif" alt="" border="0" align="middle" /><span style="color:blue;"></dtml-if> 
     71          <dtml-var id><dtml-if mandatory><sup style="color:red">*</sup></dtml-if>: <dtml-var type><dtml-if name> (<em><dtml-var name></em>)</dtml-if> 
     72          <dtml-if pk></span></dtml-if> 
     73         </div> 
    6874        </dtml-in> 
    69         </table> 
    7075       </div> 
    7176      </div> 
     
    8287 <dtml-if "REQUEST.get('id','')==''"> 
    8388  <tr> 
    84    <td colspan="8"><dtml-var "f_headline(_,_,headline='<img src=%smime_type.text_xml.gif alt=XML border=0 align=absmiddle>&nbsp;%s'%(MISC_ZMS,getZMILangStr('BTN_IMPORT')))"></td> 
     89   <td><dtml-var "f_headline(_,_,headline='<img src=%smime_type.text_xml.gif alt=XML border=0 align=absmiddle>&nbsp;%s'%(MISC_ZMS,getZMILangStr('BTN_IMPORT')))"></td> 
    8590  </tr> 
    8691  <tr class="zmiNeutralColorLight0"> 
    87    <td colspan="6"> 
     92   <td> 
    8893    <table cellspacing="0" cellpadding="2" border="0"> 
    8994    <tr valign="middle"> 
  • ZMS/trunk/dtml/javascript/comlib.dtml

    r123 r240  
    417417 */ 
    418418 
    419 function getInnerDimensions() 
     419function getInnerDimensions( offset) 
    420420{ 
    421421  if (window.innerWidth) { 
    422     return {width: window.innerWidth, height: window.innerHeight}; 
     422    var dims = {width: window.innerWidth, height: window.innerHeight}; 
     423    if ( offset) 
     424      dims = {width: dims.width+window.pageXOffset, height: dims.height+window.pageYOffset}; 
     425    return dims 
    423426  } else if (document.body && document.body.offsetWidth) { 
    424427   // important: for IE set body width = 100% 
    425428    document.getElementsByTagName("body")[0].style.setAttribute("width", "100%", "false"); 
    426429    document.getElementsByTagName("body")[0].style.setAttribute("height", "100%", "false"); 
    427     return {width: document.body.offsetWidth, height: document.body.offsetHeight}; 
     430    var dims = {width: document.body.offsetWidth, height: document.body.offsetHeight}; 
     431    if ( offset) 
     432      dims = {width: dims.width+document.body.scrollLeft, height: dims.height+document.body.scrollTop}; 
     433    return dims 
    428434  } else { 
    429435    return {width: 0, height: 0}; 
  • ZMS/trunk/dtml/object/f_recordset_grid.dtml

    r121 r240  
    5656  <dtml-unless "grid_col.get('hide')"> 
    5757  <th class="form-small" align="left"> 
    58    <dtml-if pk> 
    59     <img src="<dtml-var MISC_ZMS>btn_key.gif" alt="" border="0" align="middle" /> 
    60    </dtml-if> 
     58   <dtml-if pk><img src="<dtml-var MISC_ZMS>btn_key.gif" alt="" border="0" align="middle" /></dtml-if> 
    6159   <dtml-if sort> 
    6260    <dtml-if "key==qorder"> 
  • ZMS/trunk/import/com.zms.sendmail.metaobj.xml

    r121 r240  
    1 <?xml version="1.0" encoding="utf-8"?> 
     1<?xml version="1.0" encoding="UTF-8"?> 
    22<dictionary> 
    3 <item key="dtml"><![CDATA[<!-- BO bodyContentZMSCustom_com.zms.sendmail --> 
    4  
    5  
    6 <!-- EO bodyContentZMSCustom_com.zms.sendmail --> 
    7 ]]></item> 
    8 <item key="enabled" type="int">1</item> 
    93<item key="key"><![CDATA[com.zms.sendmail]]></item> 
    104<item key="value" type="dictionary"><dictionary> 
    115<item key="__obj_attrs__" type="list"><list> 
    126<item type="dictionary"><dictionary> 
    13 <item key="custom"><![CDATA[import smtplib 
     7<item key="custom"><![CDATA[# ------------------------------------------------------------------------------ 
     8# Changes: 
     9# 2008-10-10 [st]: Added support for smtp-authentication. 
     10# ------------------------------------------------------------------------------ 
     11 
     12import smtplib 
    1413import os 
    1514from email.MIMEMultipart import MIMEMultipart 
     
    1918from email import Encoders 
    2019 
    21 def send_mail(send_from, send_to, subject, text, files=[], server="localhost", send_cc=[], send_bcc=[]): 
     20def send_mail(send_from, send_to, subject, text, files=[], server="localhost", send_cc=[], send_bcc=[], smtp_user=None, smtp_passwd=None): 
    2221  assert type(send_to)==list 
    2322  assert type(send_cc)==list 
     
    4645 
    4746  smtp = smtplib.SMTP(server) 
     47  if smtp_user is not None: 
     48    smtp.login(smtp_user,smtp_passwd) 
    4849  smtp.sendmail(send_from, send_to, msg.as_string()) 
    49   smtp.close() 
    50 ]]></item> 
    51 <item key="default"></item> 
     50   
     51  smtp.close()]]></item> 
    5252<item key="id"><![CDATA[send_mail]]></item> 
    53 <item key="keys" type="list"><list> 
    54 </list> 
    55 </item> 
    5653<item key="mandatory" type="int">0</item> 
    5754<item key="multilang" type="int">0</item> 
     
    6360</list> 
    6461</item> 
     62<item key="access" type="dictionary"><dictionary> 
     63<item key="delete" type="list"><list> 
     64</list> 
     65</item> 
     66<item key="delete_custom"/> 
     67<item key="edit" type="list"><list> 
     68</list> 
     69</item> 
     70<item key="edit_custom"/> 
     71<item key="insert" type="list"><list> 
     72</list> 
     73</item> 
     74<item key="insert_custom"/> 
     75</dictionary> 
     76</item> 
    6577<item key="acquired" type="int">0</item> 
     78<item key="enabled" type="int">0</item> 
     79<item key="id"><![CDATA[com.zms.sendmail]]></item> 
    6680<item key="name"><![CDATA[com.zms.sendmail]]></item> 
    67 <item key="package"></item> 
     81<item key="package"/> 
    6882<item key="type"><![CDATA[ZMSLibrary]]></item> 
    6983</dictionary> 
    7084</item> 
    7185</dictionary> 
    72  
  • ZMS/trunk/import/localfsExplorer.metaobj.xml

    r121 r240  
    11<?xml version="1.0" encoding="UTF-8"?> 
    22<dictionary> 
    3 <item key="dtml"><![CDATA[<!-- BO bodyContentZMSCustom_localfsExplorer --> 
    4  
    5 <dtml-let path="getObjProperty('path',REQUEST)" tunnel="getObjProperty('tunnel',REQUEST)" ico_folderup="getObjProperty('ico_folderup',REQUEST)"> 
    6  
    7 <script language="JavaScript"> 
    8 <!--// 
    9  
    10 function clickElement(id,currentPath,currentLevel)  
    11 { 
    12     var img = document.getElementById( id+"_img"); 
    13     var el = document.getElementById( id+"_children"); 
    14     if ( img.title == "-") { 
    15       img.src = "<dtml-var MISC_ZMS>pl.gif"; 
    16       img.title = "+"; 
    17       el.style.visibility = "hidden"; 
    18       el.style.display = "none"; 
    19     } 
    20     else  
    21     if ( img.title == "+") { 
    22       img.src = "<dtml-var MISC_ZMS>mi.gif"; 
    23       img.title = "-"; 
    24       el.style.visibility = "visible"; 
    25       el.style.display = "inline"; 
    26       if ( ( el.childNodes.length < 1) || ( el.childNodes.length == 1 && el.firstChild.nodeType != 1)) { 
    27         setxml(id,currentPath,currentLevel); 
    28       } 
    29     } 
    30 } 
    31  
    32 function setxml(id,currentPath,currentLevel)  
    33 { 
    34   document.getElementsByTagName('body')[0].style.cursor = "wait"; 
    35   if (window.XMLHttpRequest) { 
    36     req = new XMLHttpRequest(); 
    37   } else if (window.ActiveXObject) { 
    38     req = new ActiveXObject("Microsoft.XMLHTTP"); 
    39   } 
    40   var url = "<dtml-var absolute_url>/localfsExplorer_readPath.xml?currentPath="+escape(currentPath)+"&currentLevel:int="+currentLevel; 
    41   req.open("GET",url,true); 
    42   req.onreadystatechange = processResponse; 
    43   req.send(null); 
    44 } 
    45  
    46 function processResponse()  
    47 { 
    48   if ( req.readyState == 4) { 
    49     document.getElementsByTagName('body')[0].style.cursor = "auto"; 
    50     if ( req.status == 200) { 
    51       var id = req.responseXML.getElementsByTagName('path')[0].getAttribute('id'); 
    52       var level = req.responseXML.getElementsByTagName('path')[0].getAttribute('level'); 
    53       var el = document.getElementById( id+"_children"); 
    54       var dir = req.responseXML.getElementsByTagName('dir'); 
    55       for (var i = 0; i < dir.length; i++) { 
    56         var ciId = dir[i].getElementsByTagName("id")[0].firstChild.data; 
    57         var ciLocalFilename = dir[i].getElementsByTagName("local_filename")[0].firstChild.data; 
    58         var ciFilename = dir[i].getElementsByTagName("filename")[0].firstChild.data; 
    59         var ciTimestamp = dir[i].getElementsByTagName("timestamp")[0].firstChild.data; 
    60         var div = document.createElement( "div"); 
    61         div.setAttribute( "id", ciId); 
    62         var img = document.createElement( "img"); 
    63         img.setAttribute( "src", "<dtml-var spacer_gif>"); 
    64         img.setAttribute( "width", level*8); 
    65         img.setAttribute( "height", 16); 
    66         img.setAttribute( "border", 0); 
    67         img.setAttribute( "align", "absmiddle"); 
    68         img.setAttribute( "title", ""); 
    69         div.appendChild( img); 
    70         var a = document.createElement( "a"); 
    71         a.setAttribute( "href", "javascript:clickElement('" + ciId + "','" + ciLocalFilename + "'," + level + ");"); 
    72         var img = document.createElement( "img"); 
    73         img.setAttribute( "id", ciId + "_img"); 
    74         img.setAttribute( "src", "<dtml-var MISC_ZMS>pl.gif"); 
    75         img.setAttribute( "width", 16); 
    76         img.setAttribute( "height", 16); 
    77         img.setAttribute( "border", 0); 
    78         img.setAttribute( "align", "absmiddle"); 
    79         img.setAttribute( "title", "+"); 
    80         a.appendChild( img); 
    81         div.appendChild( a) 
    82         var img = document.createElement( "img"); 
    83         img.setAttribute( "src", "<dtml-var MISC_ZMS>zmsfolder.gif"); 
    84         img.setAttribute( "border", 0); 
    85         img.setAttribute( "align", "absmiddle"); 
    86         img.setAttribute( "title", "Folder, <dtml-var "getLangStr('ATTR_LAST_MODIFIED',lang)">: " + ciTimestamp); 
    87         div.appendChild( img); 
    88         div.appendChild( document.createTextNode( " " + ciFilename)); 
    89         // Children 
    90         var div_children = document.createElement( "div"); 
    91         div_children.setAttribute( "id", ciId + "_children"); 
    92         div.appendChild( div_children); 
    93         el.appendChild( div); 
    94       } 
    95       var file = req.responseXML.getElementsByTagName('file'); 
    96       for (var i = 0; i < file.length; i++) { 
    97         var ciLocalFilename = file[i].getElementsByTagName("local_filename")[0].firstChild.data; 
    98         var ciFilename = file[i].getElementsByTagName("filename")[0].firstChild.data; 
    99         var ciTimestamp = file[i].getElementsByTagName("timestamp")[0].firstChild.data; 
    100         var ciSize = file[i].getElementsByTagName("size")[0].firstChild.data; 
    101         var ciIcon = file[i].getElementsByTagName("icon")[0].firstChild.data; 
    102         var ciContentType = file[i].getElementsByTagName("content_type")[0].firstChild.data; 
    103         var div = document.createElement( "div"); 
    104         var img = document.createElement( "img"); 
    105         img.setAttribute( "src", "<dtml-var spacer_gif>"); 
    106         img.setAttribute( "width", level*8+16); 
    107         img.setAttribute( "height", 16); 
    108         img.setAttribute( "border", 0); 
    109         img.setAttribute( "align", "absmiddle"); 
    110         img.setAttribute( "title", ""); 
    111         div.appendChild( img); 
    112         var a = document.createElement( "a"); 
    113         a.setAttribute( "href", "<dtml-if tunnel>localfsExplorer_read?currentPath=<dtml-else>file://</dtml-if>" + ciLocalFilename); 
    114         a.setAttribute( "target", "_blank"); 
    115         var img = document.createElement( "img"); 
    116         img.setAttribute( "src", ciIcon); 
    117         img.setAttribute( "border", 0); 
    118         img.setAttribute( "align", "absmiddle"); 
    119         img.setAttribute( "title", "<dtml-var "getLangStr('ATTR_LAST_MODIFIED',lang)">: " + ciTimestamp); 
    120         a.appendChild( img); 
    121         a.appendChild( document.createTextNode( ciFilename)); 
    122         div.appendChild( a) 
    123         // Size 
    124         div.appendChild( document.createTextNode( " (" + ciSize + ")")); 
    125         el.appendChild( div); 
    126       } 
    127     } else { 
    128       error = "error: \n"; 
    129       for(var r in req) { error += "variable: " + r + ", value: " + req[r] + "\n"; } 
    130       alert(error); 
    131     } 
    132   } 
    133 } 
    134  
    135 //--> 
    136 </script> 
    137  
    138  
    139 <p> 
    140  <div> 
    141   <img src="<dtml-var "ico_folderup.getHref(REQUEST)">" border="0" title="Location" align="absmiddle"/> <strong>Location:</strong> <span style="color:blue;text-decoration:underline;"><dtml-var path></span> 
    142  </div> 
    143  <dtml-let readPath="localfs_readPath(path)"> 
    144   <dtml-in readPath mapping> 
    145    <dtml-let id="id_quote(local_filename.replace('\\','/'))"> 
    146     <dtml-if isdir> 
    147      <div id="<dtml-var id>"> 
    148       <a href="javascript:clickElement('<dtml-var id>','<dtml-var "local_filename.replace('\\','/')">',0);"><img id="<dtml-var id>_img" src="<dtml-var MISC_ZMS>pl.gif" width="16" height="16" title="+" border="0" align="absmiddle"/></a><img src="<dtml-var MISC_ZMS>zmsfolder.gif" border="0" title="Folder, <dtml-var "getLangStr('ATTR_LAST_MODIFIED',lang)">: <dtml-var "getLangFmtDate(mtime,lang,'SHORTDATETIME_FMT')">" align="absmiddle"/> <dtml-var filename> 
    149      </div> 
    150      <div id="<dtml-var id>_children"></div> 
    151     </dtml-if> 
    152    </dtml-let> 
    153   <dtml-else> 
    154    <div><em>Empty</em></div> 
    155   </dtml-in> 
    156   <dtml-in readPath mapping> 
    157    <dtml-unless isdir> 
    158     <dtml-let icon="getMimeTypeIconSrc(content_type)"> 
    159      <div> 
    160       <img src="<dtml-var spacer_gif>" alt="" border="0" width="16" height="16" align="absmiddle"/><a href="<dtml-if tunnel>localfsExplorer_read?currentPath=<dtml-else>file://</dtml-if><dtml-var local_filename>" target="_blank" title="<dtml-var "getLangStr('ATTR_LAST_MODIFIED',lang)">: <dtml-var "getLangFmtDate(mtime,lang,'SHORTDATETIME_FMT')">"><img src="<dtml-if "icon.find('unknown')>=0"><dtml-var MISC_ZMS>mime_type.application_octet_stream.gif<dtml-else><dtml-var icon></dtml-if>" alt="<dtml-var content_type>" border="0" align="absmiddle"/><dtml-var filename></a> (<dtml-var "getDataSizeStr(size)">) 
    161      </div> 
    162     </dtml-let> 
    163    </dtml-unless> 
    164   </dtml-in> 
    165  </dtml-let> 
    166 </p> 
    167  
    168 </dtml-let> 
    169  
    170 <!-- EO bodyContentZMSCustom_localfsExplorer -->]]></item> 
    171 <item key="enabled" type="int">1</item> 
    1723<item key="key"><![CDATA[localfsExplorer]]></item> 
    1734<item key="value" type="dictionary"><dictionary> 
    1745<item key="__obj_attrs__" type="list"><list> 
    1756<item type="dictionary"><dictionary> 
    176 <item key="custom"/> 
    177 <item key="default"/> 
    1787<item key="id"><![CDATA[path]]></item> 
    179 <item key="keys" type="list"><list> 
    180 </list> 
    181 </item> 
    1828<item key="mandatory" type="int">1</item> 
    1839<item key="multilang" type="int">0</item> 
     
    18814</item> 
    18915<item type="dictionary"><dictionary> 
    190 <item key="custom"/> 
    19116<item key="default"><![CDATA[1]]></item> 
    19217<item key="id"><![CDATA[tunnel]]></item> 
    193 <item key="keys" type="list"><list> 
    194 </list> 
    195 </item> 
    19618<item key="mandatory" type="int">0</item> 
    19719<item key="multilang" type="int">0</item> 
     
    20224</item> 
    20325<item type="dictionary"><dictionary> 
    204 <item key="custom" type="file"> 
     26<item key="custom"> 
    20527<data content_type="image/gif" filename="ico_explorer.gif" type="file">47494638396114001400b30000795a1cc28e2ca8969ccec9a8f8d06dc1d0dfe2f9faac8779fc02fc5c5d5ddfb049b2b3b4fbf99ba87815fae882ccb68c21f90401000008002c000000001400140003047d10c949abbd386b1d5408c636294669048508322c73364d105f41bb14b869348915388443a960281c3eb146e5a720ea9c40406f1220a09e05164121a574aeba014bd1e852ab03dd62e0707c120bef6a50182c1e0705a13c9d344804818202797c150f32308a000d0747701602099394948e7d22120b0798999e9fa00811003b</data></item> 
    206 <item key="default"/> 
    20728<item key="id"><![CDATA[icon]]></item> 
    208 <item key="keys" type="list"><list> 
    209 </list> 
    210 </item> 
    21129<item key="mandatory" type="int">0</item> 
    21230<item key="multilang" type="int">0</item> 
     
    21735</item> 
    21836<item type="dictionary"><dictionary> 
    219 <item key="custom" type="file"> 
     37<item key="custom"> 
    22038<data content_type="image/gif" filename="ico_folderup.gif" type="file">47494638396114001400b30000187810318c2094ba8c69d13d679b59fbfbd2f8f39bd8ac2deaca64fc02fcd8b759d1e66fe7c24437ad1cc7c8b3e5ce9121f90401000009002c000000001400140003047d30c949abbd384f129cb602d000c4373962d304806012e2d0c824c61c07a0cf830e5c8747a1803b04068312e65030188685632f73705a1900240107342c100cc623b018080a0ae083f11c1e034e972588b02e8e040363a9282c9c1c000b0f0f4b0c4d8300010c08071e6a0f088d4507726a450a0f8f1a389a269fa0a111003b</data></item> 
    221 <item key="default"/> 
    22239<item key="id"><![CDATA[ico_folderup]]></item> 
    223 <item key="keys" type="list"><list> 
    224 </list> 
    225 </item> 
    22640<item key="mandatory" type="int">0</item> 
    22741<item key="multilang" type="int">0</item> 
     
    23246</item> 
    23347<item type="dictionary"><dictionary> 
     48<item key="custom"> 
     49<data content_type="image/gif" filename="icon_folder.gif" type="file">47494638396112001000f700004c4c4c6d6d6d6e6e6e9967019a68029c6a049e6c06a06e08a3710ba5730da87610ab7913ae7c16b07e18ff00ffb3811bb4811cb5821db7841fb88520ba8722bc8924bd8a25bf8c27c08d28c28f2ac5922dc7942fc99631cb9833cc9934d3a03bdca944e6b34eefbc57f8c560ffcc67ffd46fffe07b8383838c8c8cffe681ffeb85fff48efff791ffff99ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f9040100000e002c00000000120010000008ae001d081c48b0a0410f1d386c30c8d0838b872e323024e8b085c5162e2c509010e14183821d58ac183912e2430628087250914283cb97182a4c80f0e0c1c00d263498dc99c20582940e3494f070b1a8c5112d0e081098814487162ca24a8d2aa2858100023190d0d04285d7af5e43b42880d5810512175a9858cb762d881604ca522031a14589bb78ef7e683160a9c08e0d182c509000c1010305080c007082e0890090234b0ed078a2e5cb970302003b</data></item> 
     50<item key="id"><![CDATA[ico_folder]]></item> 
     51<item key="mandatory" type="int">0</item> 
     52<item key="multilang" type="int">0</item> 
     53<item key="name"><![CDATA[Icon: Folder]]></item> 
     54<item key="repetitive" type="int">0</item> 
     55<item key="type"><![CDATA[resource]]></item> 
     56</dictionary> 
     57</item> 
     58<item type="dictionary"><dictionary> 
    23459<item key="custom"><![CDATA[<dtml-return "localfs_read(currentPath,mode='b',REQUEST=REQUEST)">]]></item> 
    235 <item key="default"/> 
    23660<item key="id"><![CDATA[localfsExplorer_read]]></item> 
    237 <item key="keys" type="list"><list> 
    238 </list> 
    239 </item> 
    24061<item key="mandatory" type="int">0</item> 
    24162<item key="multilang" type="int">0</item> 
     
    279100</path> 
    280101</dtml-let>]]></item> 
    281 <item key="default"/> 
    282102<item key="id"><![CDATA[localfsExplorer_readPath.xml]]></item> 
    283 <item key="keys" type="list"><list> 
     103<item key="mandatory" type="int">0</item> 
     104<item key="multilang" type="int">0</item> 
     105<item key="name"><![CDATA[LocalFS: Read path (xml)]]></item> 
     106<item key="repetitive" type="int">0</item> 
     107<item key="type"><![CDATA[DTML Method]]></item> 
     108</dictionary> 
     109</item> 
     110<item type="dictionary"><dictionary> 
     111<item key="custom"><![CDATA[<!-- BO bodyContentZMSCustom_localfsExplorer --> 
     112 
     113<dtml-let path="getObjProperty('path',REQUEST)" tunnel="getObjProperty('tunnel',REQUEST)" ico_folderup="getObjProperty('ico_folderup',REQUEST)" ico_folder="getObjProperty('ico_folder',REQUEST)"> 
     114 
     115<script language="JavaScript"> 
     116<!--// 
     117 
     118function clickElement(id,currentPath,currentLevel)  
     119{ 
     120    var img = document.getElementById( id+"_img"); 
     121    var el = document.getElementById( id+"_children"); 
     122    if ( img.title == "-") { 
     123      img.src = "<dtml-var MISC_ZMS>pl.gif"; 
     124      img.title = "+"; 
     125      el.style.visibility = "hidden"; 
     126      el.style.display = "none"; 
     127    } 
     128    else  
     129    if ( img.title == "+") { 
     130      img.src = "<dtml-var MISC_ZMS>mi.gif"; 
     131      img.title = "-"; 
     132      el.style.visibility = "visible"; 
     133      el.style.display = "inline"; 
     134      if ( ( el.childNodes.length < 1) || ( el.childNodes.length == 1 && el.firstChild.nodeType != 1)) { 
     135        setxml(id,currentPath,currentLevel); 
     136      } 
     137    } 
     138} 
     139 
     140function setxml(id,currentPath,currentLevel)  
     141{ 
     142  document.getElementsByTagName('body')[0].style.cursor = "wait"; 
     143  if (window.XMLHttpRequest) { 
     144    req = new XMLHttpRequest(); 
     145  } else if (window.ActiveXObject) { 
     146    req = new ActiveXObject("Microsoft.XMLHTTP"); 
     147  } 
     148  var url = "<dtml-var absolute_url>/localfsExplorer_readPath.xml?currentPath="+escape(currentPath)+"&currentLevel:int="+currentLevel; 
     149  req.open("GET",url,true); 
     150  req.onreadystatechange = processResponse; 
     151  req.send(null); 
     152} 
     153 
     154function processResponse()  
     155{ 
     156  if ( req.readyState == 4) { 
     157    document.getElementsByTagName('body')[0].style.cursor = "auto"; 
     158    if ( req.status == 200) { 
     159      var id = req.responseXML.getElementsByTagName('path')[0].getAttribute('id'); 
     160      var level = req.responseXML.getElementsByTagName('path')[0].getAttribute('level'); 
     161      var el = document.getElementById( id+"_children"); 
     162      var dir = req.responseXML.getElementsByTagName('dir'); 
     163      for (var i = 0; i < dir.length; i++) { 
     164        var ciId = dir[i].getElementsByTagName("id")[0].firstChild.data; 
     165        var ciLocalFilename = dir[i].getElementsByTagName("local_filename")[0].firstChild.data; 
     166        var ciFilename = dir[i].getElementsByTagName("filename")[0].firstChild.data; 
     167        var ciTimestamp = dir[i].getElementsByTagName("timestamp")[0].firstChild.data; 
     168        var div = document.createElement( "div"); 
     169        div.setAttribute( "id", ciId); 
     170        var img = document.createElement( "img"); 
     171        img.setAttribute( "src", "<dtml-var spacer_gif>"); 
     172        img.setAttribute( "width", level*8); 
     173        img.setAttribute( "height", 16); 
     174        img.setAttribute( "border", 0); 
     175        img.setAttribute( "align", "absmiddle"); 
     176        img.setAttribute( "title", ""); 
     177        div.appendChild( img); 
     178        var a = document.createElement( "a"); 
     179        a.setAttribute( "href", "javascript:clickElement('" + ciId + "','" + ciLocalFilename + "'," + level + ");"); 
     180        var img = document.createElement( "img"); 
     181        img.setAttribute( "id", ciId + "_img"); 
     182        img.setAttribute( "src", "<dtml-var MISC_ZMS>pl.gif"); 
     183        img.setAttribute( "width", 16); 
     184        img.setAttribute( "height", 16); 
     185        img.setAttribute( "border", 0); 
     186        img.setAttribute( "align", "absmiddle"); 
     187        img.setAttribute( "title", "+"); 
     188        a.appendChild( img); 
     189        div.appendChild( a) 
     190        var img = document.createElement( "img"); 
     191        img.setAttribute( "src", "<dtml-var "ico_folder.getHref(REQUEST)">"); 
     192        img.setAttribute( "border", 0); 
     193        img.setAttribute( "align", "absmiddle"); 
     194        img.setAttribute( "title", "Folder, <dtml-var "getLangStr('ATTR_LAST_MODIFIED',lang)">: " + ciTimestamp); 
     195        div.appendChild( img); 
     196        div.appendChild( document.createTextNode( " " + ciFilename)); 
     197        // Children 
     198        var div_children = document.createElement( "div"); 
     199        div_children.setAttribute( "id", ciId + "_children"); 
     200        div.appendChild( div_children); 
     201        el.appendChild( div); 
     202      } 
     203      var file = req.responseXML.getElementsByTagName('file'); 
     204      for (var i = 0; i < file.length; i++) { 
     205        var ciLocalFilename = file[i].getElementsByTagName("local_filename")[0].firstChild.data; 
     206        var ciFilename = file[i].getElementsByTagName("filename")[0].firstChild.data; 
     207        var ciTimestamp = file[i].getElementsByTagName("timestamp")[0].firstChild.data; 
     208        var ciSize = file[i].getElementsByTagName("size")[0].firstChild.data; 
     209        var ciIcon = file[i].getElementsByTagName("icon")[0].firstChild.data; 
     210        var ciContentType = file[i].getElementsByTagName("content_type")[0].firstChild.data; 
     211        var div = document.createElement( "div"); 
     212        var img = document.createElement( "img"); 
     213        img.setAttribute( "src", "<dtml-var spacer_gif>"); 
     214        img.setAttribute( "width", level*8+16); 
     215        img.setAttribute( "height", 16); 
     216        img.setAttribute( "border", 0); 
     217        img.setAttribute( "align", "absmiddle"); 
     218        img.setAttribute( "title", ""); 
     219        div.appendChild( img); 
     220        var a = document.createElement( "a"); 
     221        a.setAttribute( "href", "<dtml-if tunnel>localfsExplorer_read?currentPath=<dtml-else>file://</dtml-if>" + ciLocalFilename); 
     222        a.setAttribute( "target", "_blank"); 
     223        var img = document.createElement( "img"); 
     224        img.setAttribute( "src", ciIcon); 
     225        img.setAttribute( "border", 0); 
     226        img.setAttribute( "align", "absmiddle"); 
     227        img.setAttribute( "title", "<dtml-var "getLangStr('ATTR_LAST_MODIFIED',lang)">: " + ciTimestamp); 
     228        a.appendChild( img); 
     229        a.appendChild( document.createTextNode( ciFilename)); 
     230        div.appendChild( a) 
     231        // Size 
     232        div.appendChild( document.createTextNode( " (" + ciSize + ")")); 
     233        el.appendChild( div); 
     234      } 
     235    } else { 
     236      error = "error: \n"; 
     237      for(var r in req) { error += "variable: " + r + ", value: " + req[r] + "\n"; } 
     238      alert(error); 
     239    } 
     240  } 
     241} 
     242 
     243//--> 
     244</script> 
     245 
     246 
     247<p> 
     248 <div> 
     249  <img src="<dtml-var "ico_folderup.getHref(REQUEST)">" border="0" title="Location" align="absmiddle"/> <strong>Location:</strong> <span style="color:blue;text-decoration:underline;"><dtml-var path></span> 
     250 </div> 
     251 <dtml-let readPath="localfs_readPath(path)"> 
     252  <dtml-in readPath mapping> 
     253   <dtml-let id="id_quote(local_filename.replace('\\','/'))"> 
     254    <dtml-if isdir> 
     255     <div id="<dtml-var id>"> 
     256      <a href="javascript:clickElement('<dtml-var id>','<dtml-var "local_filename.replace('\\','/')">',0);"><img id="<dtml-var id>_img" src="<dtml-var MISC_ZMS>pl.gif" width="16" height="16" title="+" border="0" align="absmiddle"/></a><img src="<dtml-var "ico_folder.getHref(REQUEST)">" border="0" title="Folder, <dtml-var "getLangStr('ATTR_LAST_MODIFIED',lang)">: <dtml-var "getLangFmtDate(mtime,lang,'SHORTDATETIME_FMT')">" align="absmiddle"/> <dtml-var filename> 
     257     </div> 
     258     <div id="<dtml-var id>_children"></div> 
     259    </dtml-if> 
     260   </dtml-let> 
     261  <dtml-else> 
     262   <div><em>Empty</em></div> 
     263  </dtml-in> 
     264  <dtml-in readPath mapping> 
     265   <dtml-unless isdir> 
     266    <dtml-let icon="getMimeTypeIconSrc(content_type)"> 
     267     <div> 
     268      <img src="<dtml-var spacer_gif>" alt="" border="0" width="16" height="16" align="absmiddle"/><a href="<dtml-if tunnel>localfsExplorer_read?currentPath=<dtml-else>file://</dtml-if><dtml-var local_filename>" target="_blank" title="<dtml-var "getLangStr('ATTR_LAST_MODIFIED',lang)">: <dtml-var "getLangFmtDate(mtime,lang,'SHORTDATETIME_FMT')">"><img src="<dtml-if "icon.find('unknown')>=0"><dtml-var MISC_ZMS>mime_type.application_octet_stream.gif<dtml-else><dtml-var icon></dtml-if>" alt="<dtml-var content_type>" border="0" align="absmiddle"/><dtml-var filename></a> (<dtml-var "getDataSizeStr(size)">) 
     269     </div> 
     270    </dtml-let> 
     271   </dtml-unless> 
     272  </dtml-in> 
     273 </dtml-let> 
     274</p> 
     275 
     276</dtml-let> 
     277 
     278<!-- EO bodyContentZMSCustom_localfsExplorer --> 
     279]]></item> 
     280<item key="id"><![CDATA[bodyContentZMSCustom_localfsExplorer]]></item> 
     281<item key="mandatory" type="int">0</item> 
     282<item key="multilang" type="int">0</item> 
     283<item key="name"><![CDATA[Template: LocalFS-Explorer]]></item> 
     284<item key="repetitive" type="int">0</item> 
     285<item key="type"><![CDATA[DTML Method]]></item> 
     286</dictionary> 
     287</item> 
    284288</list> 
    285289</item> 
    286 <item key="mandatory" type="int">0</item> 
    287 <item key="multilang" type="int">0</item> 
    288 <item key="name"><![CDATA[LocalFS: Read path (xml)]]></item> 
    289 <item key="repetitive" type="int">0</item> 
    290 <item key="type"><![CDATA[DTML Method]]></item> 
    291 </dictionary> 
    292 </item> 
     290<item key="access" type="dictionary"><dictionary> 
     291<item key="delete" type="list"><list> 
     292<item><![CDATA[ZMSAdministrator]]></item> 
     293<item><![CDATA[ZMSAuthor]]></item> 
     294<item><![CDATA[ZMSEditor]]></item> 
    293295</list> 
    294296</item> 
     297<item key="delete_custom"/> 
     298<item key="edit" type="list"><list> 
     299<item><![CDATA[ZMSAdministrator]]></item> 
     300<item><![CDATA[ZMSAuthor]]></item> 
     301<item><![CDATA[ZMSEditor]]></item> 
     302</list> 
     303</item> 
     304<item key="edit_custom"/> 
     305<item key="insert" type="list"><list> 
     306<item><![CDATA[ZMSAdministrator]]></item> 
     307<item><![CDATA[ZMSAuthor]]></item> 
     308<item><![CDATA[ZMSEditor]]></item> 
     309</list> 
     310</item> 
     311<item key="insert_custom"><![CDATA[{$}]]></item> 
     312</dictionary> 
     313</item> 
    295314<item key="acquired" type="int">0</item> 
     315<item key="enabled" type="int">1</item> 
     316<item key="id"><![CDATA[localfsExplorer]]></item> 
    296317<item key="name"><![CDATA[LocalFS-Explorer]]></item> 
    297318<item key="package"/> 
  • ZMS/trunk/import/zms.metaobj.xml

    r207 r240  
    10301030<item key="package"><![CDATA[com.zms.foundation]]></item> 
    10311031<item key="type"><![CDATA[ZMSObject]]></item> 
    1032 </dictionary> 
    1033 </item> 
    1034 </dictionary> 
    1035 </item> 
    1036 <item type="dictionary"><dictionary> 
    1037 <item key="key"><![CDATA[ZMSLib]]></item> 
    1038 <item key="value" type="dictionary"><dictionary> 
    1039 <item key="__obj_attrs__" type="list"><list> 
    1040 <item type="dictionary"><dictionary> 
    1041 <item key="custom"><![CDATA[# --// BO getLinkList //-- 
    1042  
    1043 links = [] 
    1044 return links 
    1045  
    1046 # --// EO getLinkList //-- 
    1047 ]]></item> 
    1048 <item key="id"><![CDATA[getLinkList]]></item> 
    1049 <item key="mandatory" type="int">0</item> 
    1050 <item key="multilang" type="int">0</item> 
    1051 <item key="name"><![CDATA[Function: Links (align=none)]]></item> 
    1052 <item key="repetitive" type="int">0</item> 
    1053 <item key="type"><![CDATA[Script (Python)]]></item> 
    1054 </dictionary> 
    1055 </item> 
    1056 <item type="dictionary"><dictionary> 
    1057 <item key="custom"><![CDATA[<dtml-comment>--// BO bodyContentZMSLib_page //--</dtml-comment 
    1058  
    1059 ><dtml-let childNodes="getObjChildren('e',REQUEST,PAGEELEMENTS)" forced="isPreviewRequest(REQUEST) and not isActive(REQUEST)" 
    1060  ><dtml-if childNodes 
    1061   ><dtml-var bodyContent_PagePre 
    1062   ><dtml-in childNodes 
    1063    ><dtml-var "getBodyContent(REQUEST,forced)" 
    1064   ></dtml-in 
    1065   ><dtml-var bodyContent_PagePost 
    1066  ></dtml-if 
    1067 ></dtml-let 
    1068  
    1069 ><dtml-comment>--// EO bodyContentZMSLib_page //--</dtml-comment>]]></item> 
    1070 <item key="id"><![CDATA[bodyContentZMSLib_page]]></item> 
    1071 <item key="mandatory" type="int">0</item> 
    1072 <item key="multilang" type="int">0</item> 
    1073 <item key="name"><![CDATA[Template: Page]]></item> 
    1074 <item key="repetitive" type="int">0</item> 
    1075 <item key="type"><![CDATA[DTML Method]]></item> 
    1076 </dictionary> 
    1077 </item> 
    1078 </list> 
    1079 </item> 
    1080 <item key="acquired" type="int">0</item> 
    1081 <item key="enabled" type="int">1</item> 
    1082 <item key="id"><![CDATA[ZMSLib]]></item> 
    1083 <item key="name"><![CDATA[ZMSLib]]></item> 
    1084 <item key="package"><![CDATA[com.zms.foundation]]></item> 
    1085 <item key="type"><![CDATA[ZMSLibrary]]></item> 
    10861032</dictionary> 
    10871033</item> 
     
    23312277><div id="zmiImgZoomImgDiv" style="visibility:hidden;display:none;" 
    23322278><div class="zmiNeutralColorMedium0"> 
    2333  <dtml-var "f_selectRichtext(_,_,ob=this(),fmName=fmName,elName='content',cols=25,rows=10,value='',key='cell',enabled=_.True,lang=lang,lang_str=getZMILangStr('ACTION_EDIT_CELL'),custom_str=''.join(custom),REQUEST=REQUEST,css='form-small',wrap='virtual')"> 
     2279 <dtml-var "f_selectRichtext(_,_,ob=this(),fmName=fmName,elName='content_editor',cols=25,rows=10,value='',key='cell',enabled=_.True,lang=lang,lang_str=getZMILangStr('ACTION_EDIT_CELL'),custom_str=''.join(custom),REQUEST=REQUEST,css='form-small',wrap='virtual')"> 
    23342280 <hr size="1"/> 
    23352281 <input class="form-submit" type="submit" value="<dtml-var "getZMILangStr('BTN_CHANGE')">" onclick="return table_cell_change();"/> 
     
    23942340function table_cell_edit(el) 
    23952341{ 
     2342  var dims = getInnerDimensions(true); 
     2343  var coords = getCoords(el); 
    23962344  table_cell_id = el.name.substr(el.name.indexOf('_')+1); 
    23972345  var el_td = $('#content_'+ table_cell_id).parent(); 
     
    24042352  zmiImgZoomDiv.style.top = 0; 
    24052353  zmiImgZoomDiv.style.left = 0; 
    2406   zmiImgZoomDiv.style.width = '100%'; 
    2407   zmiImgZoomDiv.style.height = '100%'; 
     2354  zmiImgZoomDiv.style.width = dims.width; 
     2355  zmiImgZoomDiv.style.height = dims.height; 
    24082356  var zmiImgZoomImgDiv = document.getElementById('zmiImgZoomImgDiv'); 
    24092357  zmiImgZoomImgDiv.style.visibility = 'visible'; 
    24102358  zmiImgZoomImgDiv.style.display = 'block'; 
    24112359  zmiImgZoomImgDiv.style.position = 'absolute'; 
    2412   var dims = getInnerDimensions(); 
    2413   zmiImgZoomImgDiv.style.top = (dims.height - zmiImgZoomImgDiv.offsetHeight) / 2; 
    2414   zmiImgZoomImgDiv.style.left = (dims.width - zmiImgZoomImgDiv.offsetWidth) / 2; 
     2360  zmiImgZoomImgDiv.style.width = '90%'; 
     2361  zmiImgZoomImgDiv.style.top = Math.min( coords.y + el.offsetHeight, dims.height - zmiImgZoomImgDiv.offsetHeight); //(dims.height - zmiImgZoomImgDiv.offsetHeight) / 2; 
     2362  zmiImgZoomImgDiv.style.left = ($('div.zmi').attr('offsetWidth') - zmiImgZoomImgDiv.offsetWidth) / 2; //(dims.width - zmiImgZoomImgDiv.offsetWidth) / 2; 
    24152363  // Apply values. 
    24162364  $('#zmiRichtextEditor<dtml-var elName>').css( { display: "none", visibility: "hidden"}); 
    24172365  $('#zmiStandardEditor<dtml-var elName>').css( { display: "block", visibility: "visible"}); 
    2418   $('#content').val($('#content_'+ table_cell_id).val()); 
     2366  $('#content_editor').val($('#content_'+ table_cell_id).val()); 
    24192367  selectValue(document.getElementById('tag'),$('#tag_'+ table_cell_id).val()); 
    24202368  selectValue(document.getElementById('format'),$('#format_'+ table_cell_id).val()); 
    2421   <dtml-let elName="'content'"> 
     2369  <dtml-let elName="'content_editor'"> 
    24222370  <dtml-if "REQUEST.get('richedit_fmt')"> 
    24232371  if ( $('#format').val()=='<dtml-var "REQUEST.get('richedit_fmt').getId()">') { 
     
    24352383  $('#format_'+ table_cell_id).val($('#format').val()); 
    24362384  $('#tag_'+ table_cell_id).val($('#tag').val()); 
    2437   $('#content_'+ table_cell_id).val($('#content').val()); 
     2385  $('#content_'+ table_cell_id).val($('#content_editor').val()); 
    24382386  return table_cell_cancel(); 
    24392387} 
     
    25192467            $(el_inputs[k]).val( ""); 
    25202468          } 
     2469          table_cell_uid++; 
    25212470        } 
    25222471        new_td.insertBefore( el_td); 
    2523         table_cell_uid++; 
    25242472      } 
    25252473    } 
     
    25412489        $(el_inputs[k]).val( ""); 
    25422490      } 
     2491      table_cell_uid++; 
    25432492    } 
    25442493    new_tr.insertBefore( el_tr); 
    2545     table_cell_uid++; 
    25462494    $('#rows').val( parseInt($('#rows').val())-1); 
    25472495  } 
     
    27052653 
    27062654<input type="hidden" id="table" name="table_<dtml-var lang>" value="<list></list>"/> 
    2707 <dtml-call "REQUEST.set('ZMS_HIDE_ELEMENTS',REQUEST.get('ZMS_HIDE_ELEMENTS',[])+['type','table','colgroup'])">]]></item> 
     2655<dtml-call "REQUEST.set('ZMS_HIDE_ELEMENTS',REQUEST.get('ZMS_HIDE_ELEMENTS',[])+['type','table','colgroup'])"> 
     2656]]></item> 
    27082657<item key="repetitive" type="int">0</item> 
    27092658<item key="type"><![CDATA[interface]]></item> 
     
    36143563</item> 
    36153564</list> 
    3616  
  • ZMS/trunk/version.txt

    r227 r240  
    1 ZMS 2.11.0-36 
     1ZMS 2.11.1-07 
  • ZMS/trunk/zms.py

    r239 r240  
    374374    recurse_updateVersionBuild(docElmnt, ob, REQUEST) 
    375375   
     376  ##### Build 130a: ZMS Standard-Objects #### 
     377  if getattr( docElmnt, 'build', '000') < '130': 
     378    if self.meta_type == 'ZMS': 
     379      users = self.getConfProperty('ZMS.security.users',{}) 
     380      for user in users.keys(): 
     381        nodes = users[user].get('nodes',{}) 
     382        try: 
     383          for node_ref in nodes.keys(): 
     384            node_ob = self.getLinkObj(node_ref) 
     385            node_dict = nodes[node_ref] 
     386            if node_ob: 
     387              self.setLocalUser( user, node_ref, node_dict['roles'], node_dict['langs']) 
     388        except: 
     389          pass 
     390 
    376391  # Return with message. 
    377392  return message 
     
    589604    # ------------- 
    590605    zms_build = '131'           # Internal use only, designates object model! 
    591     zms_patch = 'e'             # Internal use only! 
     606    zms_patch = 'f'             # Internal use only! 
    592607 
    593608    # Properties. 
  • ZMS/trunk/zmsobject.py

    r121 r240  
    365365        change_dt_parent = self.getObjProperty('change_dt',req) 
    366366        try: 
    367           rtnVal = _globals.compareDate(change_dt_lang, change_dt_parent) >= 0 
     367          rtnVal = _globals.compareDate(change_dt_lang, change_dt_parent) > 0 
    368368        except: 
    369369          _globals.writeException(self,"[isModifiedInParentLanguage]: Unexpected exception: change_dt_lang=%s, change_dt_parent=%s!"%(str(change_dt_lang),str(change_dt_parent))) 
Note: See TracChangeset for help on using the changeset viewer.