Changeset 1756 for ZMS


Ignore:
Timestamp:
10.12.2011 23:46:41 (5 months ago)
Author:
zmsdev
Message:

applied minor performance-fixes

Location:
ZMS/trunk
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • ZMS/trunk/ZMSMetaobjManager.py

    r1734 r1756  
    11191119             'insert': REQUEST.get( 'access_insert', []), 
    11201120             'insert_custom': REQUEST.get( 'access_insert_custom', ''), 
    1121              'edit': REQUEST.get( 'access_edit', []), 
    1122              'edit_custom': REQUEST.get( 'access_edit_custom', ''), 
    11231121             'delete': REQUEST.get( 'access_delete', []), 
    11241122             'delete_custom': REQUEST.get( 'access_delete_custom', ''), 
  • ZMS/trunk/_accessmanager.py

    r1735 r1756  
    158158    # -------------------------------------------------------------------------- 
    159159    def hasAccess(self, REQUEST): 
    160       access = True 
    161160      auth_user = REQUEST.get('AUTHENTICATED_USER') 
    162       url = REQUEST.get('URL','/manage') 
    163       url = url[url.rfind('/'):] 
    164       if url.find('/manage') >= 0: 
    165         if access: 
    166           rights = self.getObjProperty( 'attr_dc_accessrights_restrictededitors', REQUEST) 
    167           if type( rights) is list and len( rights) > 0: 
    168             roles = auth_user.getRolesInContext(self) 
    169             access = len( filter( lambda x: x in roles, rights)) > 0 
    170             for right in rights: 
    171               access = access or auth_user.has_role( right) 
    172               access = access or auth_user.has_permission( right, self) 
    173         if access: 
    174           ob_access = self.getObjProperty('manage_access',REQUEST) 
    175           access = access and ((not type(ob_access) is dict) or (ob_access.get( 'edit') is None) or (len( self.intersection_list( self.concat_list( ob_access.get( 'edit'), [ 'Manager']), self.getUserRoles(auth_user))) > 0)) 
    176         access = access and auth_user.has_permission( 'ZMS Author', self) in [ 1, True] 
    177       else: 
    178         access = access and auth_user.has_permission( 'View', self) in [ 1, True] 
    179         if not access: 
    180           access = access or self.hasPublicAccess()  
     161      access = auth_user.has_permission( 'View', self) in [ 1, True] 
     162      if not access: 
     163        access = access or self.hasPublicAccess()  
    181164      return access 
    182165 
     
    209192      # Resolve security_roles. 
    210193      security_roles = self.getConfProperty('ZMS.security.roles',{}) 
    211       for id in roles: 
    212         if id in security_roles.keys(): 
    213           dict = security_roles.get(id,{}) 
    214           for v in dict.values(): 
    215             for perm in v.get('roles',[]): 
    216               role = perm.replace( ' ', '') 
    217               if role not in roles: 
    218                 roles.append( role) 
     194      for id in filter(lambda x: x in security_roles.keys(),roles): 
     195        dict = security_roles.get(id,{}) 
     196        for v in dict.values(): 
     197          for role in map(lambda x: x.replace( ' ', ''),v.get('roles',[])): 
     198            if role not in roles: 
     199              roles.append( role) 
    219200      return roles 
    220201 
  • ZMS/trunk/_confmanager.py

    r1747 r1756  
    506506 
    507507 
    508     # -------------------------------------------------------------------------- 
    509     #  ConfManager.getNotifications: 
    510     # 
    511     #  Collects notifications from services. 
    512     # -------------------------------------------------------------------------- 
    513     def getNotifications(self,format='json'): 
    514       """ 
    515       getNotifications 
    516       """ 
    517       notifications = [] 
    518       if self.getConfProperty('ZMS.ConfManager.getNotifications.disabled',1) == 1: 
    519         notifications.append({'severity':'disabled'}) 
    520       for ob in self.objectValues(): 
    521         if IZMSNotificationService in list(zope.interface.providedBy(ob)): 
    522           notifications.extend(ob.getNotifications()) 
    523       if format == 'json': 
    524         notifications = self.str_json(notifications) 
    525       return notifications 
    526  
    527  
    528508    """ 
    529509    ############################################################################ 
  • ZMS/trunk/_globals.py

    r1747 r1756  
    408408def isPreviewRequest(REQUEST): 
    409409  return REQUEST is not None and \ 
    410          REQUEST.get('preview','') == 'preview' and \ 
    411          REQUEST.get('live','') == '' 
     410         REQUEST.get('preview','') == 'preview' 
    412411 
    413412 
     
    419418  for ob in obs: 
    420419    if ob.isVisible(REQUEST): 
    421       if ob.isPageElement() or ob.getObjProperty('getPageWithElements',REQUEST) in ['1','True',1,True]: 
     420      if ob.isPageElement() or ob.attr('getPageWithElements') in ['1','True',1,True]: 
    422421        return self 
    423422      elif ob.isPage(): 
  • ZMS/trunk/_multilangmanager.py

    r1732 r1756  
    407407    #  Returns list of Ids of languages (primary language 1st). 
    408408    # -------------------------------------------------------------------------- 
    409     def getLangIds(self, sort=1): 
     409    def getLangIds(self, sort=False): 
    410410      obs = [] 
    411411      langs = self.getLangs() 
    412       for key in langs.keys(): 
    413         if key == self.getPrimaryLanguage():  
    414           label = '*' 
    415         else:  
    416           label = langs[key]['label'] 
    417         obs.append((label,key)) 
    418       obs.sort() 
    419       return map(lambda ob: ob[1],obs) 
     412      if sort: 
     413        for key in langs.keys(): 
     414          if key == self.getPrimaryLanguage():  
     415            label = '*' 
     416          else:  
     417            label = langs[key]['label'] 
     418          obs.append((label,key)) 
     419        obs.sort() 
     420        return map(lambda ob: ob[1],obs) 
     421      return langs.keys() 
    420422 
    421423 
  • ZMS/trunk/_objattrs.py

    r1743 r1756  
    111111 
    112112# ------------------------------------------------------------------------------ 
    113 #  _objattrs.hasobjattr: 
    114 # ------------------------------------------------------------------------------ 
    115 def hasobjattr(obj, key): 
    116   try: 
    117     id = obj.id 
    118     keys = obj.__dict__.keys()  
    119     return key in keys 
    120   except: 
    121     return hasattr( obj, key) 
    122  
    123 # ------------------------------------------------------------------------------ 
    124113#  _objattrs.getobjattr: 
    125114# ------------------------------------------------------------------------------ 
     
    127116  key = self.getObjAttrName(obj_attr,lang) 
    128117  v = None 
    129   if hasobjattr(obj,key): 
     118  if key in obj.__dict__.keys(): 
    130119    v = getattr(obj,key) 
    131120  # Default value. 
     
    549538       
    550539      #-- Return true if object has specified property, false else. 
    551       return hasobjattr(ob,attr) and getattr(ob,attr,None) is not None 
     540      return attr in obj.__dict__.keys() and getattr(ob,attr,None) is not None 
    552541 
    553542 
     
    760749      if self.getType()=='ZMSRecordSet': 
    761750        return b 
    762       v = self.getObjProperty('active',REQUEST) 
     751      v = self.attr('active') 
    763752      if type(v) is bool: 
    764753        return v 
    765       v = self.getObjProperty('isActive',REQUEST) 
     754      v = self.attr('isActive') 
    766755      if type(v) is bool: 
    767756        b = b and v 
     
    778767            if lang is not None: 
    779768              empty = value is None 
    780             if not empty: break 
     769            if not empty: 
     770              break 
    781771          # Toggle. 
    782772          if key == 'active': 
  • ZMS/trunk/_versionmanager.py

    r1557 r1756  
    981981    # -------------------------------------------------------------------------- 
    982982    def getObjVersion(self, REQUEST={}): 
    983       try: 
    984         ob = None 
    985983        id = REQUEST.get( 'ZMS_VERSION_%s'%self.id, None) 
    986         if id is not None and id not in self.objectIds(['ZMSAttributeContainer']): 
    987           id = None 
    988         if id is None: 
    989           preview = _globals.isPreviewRequest( REQUEST) 
    990           has_version_work = self.version_work_id is not None and hasattr( self, self.version_work_id) 
    991           has_version_live = self.version_live_id is not None and hasattr( self, self.version_live_id) 
    992           if (preview and has_version_work) or not (has_version_live): 
    993             id = self.version_work_id 
    994           elif (has_version_live) or not (preview and has_version_work): 
    995             id = self.version_live_id 
    996         ob = getattr( self, id) 
    997         s = ob.id # Never delete this line! 
     984        if id is not None: 
     985            return getattr( self, id) 
     986        elif REQUEST.get('preview') == 'preview': 
     987            ob = getattr(self, self.version_work_id, None) 
     988        else: 
     989            ob = getattr(self, self.version_live_id, None) 
     990        if ob is None: 
     991            ob = getattr(self, self.version_work_id, None) 
     992        if ob is None: 
     993            ob = getattr(self, self.version_live_id, None) 
    998994        return ob 
    999       except: 
    1000         preview = _globals.isPreviewRequest( REQUEST) 
    1001         has_version_work = self.version_work_id is not None and hasattr( self, self.version_work_id) 
    1002         has_version_live = self.version_live_id is not None and hasattr( self, self.version_live_id) 
    1003         raise zExceptions.InternalError(_globals.writeError( self, '[getObjVersion]: an unexpected error occured!')) 
    1004995 
    1005996 
  • ZMS/trunk/_zreferableitem.py

    r1715 r1756  
    179179  def getRefByObjs(self, REQUEST={}): 
    180180    ref_by = [] 
    181     if _objattrs.hasobjattr(self,'ref_by'): 
    182       ref_by = getattr(self,'ref_by',[]) 
     181    key = 'ref_by' 
     182    if key in self.__dict__.keys(): 
     183      ref_by = getattr(self,key,[]) 
    183184      ref_by = list(set(ref_by)) 
    184     if _globals.debug( self):  
    185       _globals.writeLog( self, "[getRefByObjs]: ref_by=%s"%str(ref_by)) 
    186185    return ref_by 
    187186 
  • ZMS/trunk/dtml/ZMS/manage_customizelanguagesform.dtml

    r1487 r1756  
    11<dtml-var manage_page_header> 
     2<dtml-let langId="getLangIds(sort=True)"> 
    23 
    34<script language="JavaScript"> 
     
    152153       <select class="form-element" name="<dtml-var langId>_parent"> 
    153154       <option value=""><dtml-var "getZMILangStr('ATTR_PRIMARY')"> (*)</option> 
    154        <dtml-in "getLangIds()"> 
     155       <dtml-in langIds> 
    155156        <dtml-if "_['sequence-item']!=langId"> 
    156157         <option value="<dtml-var sequence-item>" 
     
    181182</dtml-let> 
    182183 
    183   <dtml-in "getLangIds()"> 
    184    <dtml-let langId=sequence-item langObj="getLang(langId)"> 
    185    </dtml-let> 
    186   </dtml-in> 
    187  
    188184  <!-- Insert --> 
    189185  <tr class="neutralColorWhite"> 
     
    195191   <td class="form-element"> 
    196192    <select class="form-element" name="language_parent"> 
    197     <dtml-in "getLangIds()"> 
     193    <dtml-in langIds> 
    198194     <option value="<dtml-var sequence-item>" 
    199195      <dtml-if "_['sequence-item']==getPrimaryLanguage()"> 
     
    242238  <input type="hidden" name="lang" value="<dtml-var lang>"> 
    243239  <table cellspacing="1" cellpadding="0" border="0" class="zmiNeutralColorStrong0"> 
    244   <dtml-let langIds="getLangIds()" colspan="2+len(langIds)"> 
     240  <dtml-let colspan="2+len(langIds)"> 
    245241 
    246242  <!-- Header --> 
     
    331327  <br/> 
    332328 
     329</dtml-let> 
    333330<dtml-var manage_page_footer> 
  • ZMS/trunk/dtml/ZMSMetamodelProvider/manage_main.dtml

    r1726 r1756  
    855855        <dtml-call "operator_setitem(metaObj,'access',{})"> 
    856856       </dtml-if> 
    857        <dtml-in "['insert','edit','delete']"> 
     857       <dtml-in "['insert','delete']"> 
    858858        <dtml-let action=sequence-item> 
    859859         <tr valign="middle" class="zmiTableRowEven"> 
  • ZMS/trunk/dtml/objattrs/manage_propertiesform.dtml

    r1314 r1756  
    1717<dtml-let key=sequence-item obj_attr="getObjAttr(key)"> 
    1818 <dtml-if "obj_attr['multilang']"> 
    19   <dtml-in "getLangIds()"> 
     19  <dtml-in "getLangIds(sort=True)"> 
    2020   <dtml-call "REQUEST.set('lang',_['sequence-item'])"> 
    2121   <tr> 
  • ZMS/trunk/dtml/object/manage_page_request.dtml

    r1555 r1756  
    2525 ></dtml-let 
    2626></dtml-if 
    27 ><dtml-unless "REQUEST.get( 'live','')=='live'" 
    28  ><dtml-call "REQUEST.set( 'preview','preview')" 
    29 ></dtml-unless 
    3027><dtml-unless "REQUEST.has_key( 'lang')" 
    3128 ><dtml-call "REQUEST.set( 'lang',getPrimaryLanguage())" 
     
    5047><dtml-call "REQUEST.set('ZMS_ACTION',action)" 
    5148></dtml-if 
    52 ><dtml-unless "hasAccess(REQUEST)" 
    53 ><dtml-call "RESPONSE.redirect(url_append_params('%s/manage_main'%aq_parent.absolute_url(),{'lang':lang,'manage_tabs_message':getZMILangStr('MSG_ACCESS_FORBIDDEN')%'<i>%s</i>'%display_type(REQUEST),}))" 
    54 ></dtml-unless 
    5549><dtml-var f_headDoctype 
    5650><dtml-else 
  • ZMS/trunk/dtml/object/preview.dtml

    r267 r1756  
     1<dtml-call "REQUEST.set('preview','preview')"> 
    12<dtml-var manage_page_header> 
    23<script language="JavaScript"> 
     
    295296</head> 
    296297<frameset rows="20,*" border="0" frameborder="0" framespacing="0"> 
    297  <frame name="navigate" marginheight="1" scrolling="no" noresize="noresize" src="preview_top_html?lang=<dtml-var lang><dtml-if "REQUEST.has_key('live') and REQUEST['live']=='live'">&live=live</dtml-if>"> 
     298 <frame name="navigate" marginheight="1" scrolling="no" noresize="noresize" src="preview_top_html?lang=<dtml-var lang>"> 
    298299 <frame name="partner" marginheight="1" src="<dtml-var "getHref2IndexHtml(REQUEST)">"> 
    299300</frameset> 
  • ZMS/trunk/dtml/object/preview_top.dtml

    r1486 r1756  
    11<dtml-var manage_page_header> 
     2        <script> 
     3                function open_partner(sender,preview) { 
     4                        $(".zmi-top-active").removeClass("zmi-top-active"); 
     5                        $(sender).addClass("zmi-top-active"); 
     6                        var href = self.parent.partner.location.href; 
     7                        if (href.indexOf("?") > 0) { 
     8                                href = href.substr(0,href.indexOf("?")); 
     9                        } 
     10                        if (preview) { 
     11                                href += "?preview=preview"; 
     12                        } 
     13                        self.parent.partner.location.href = href; 
     14                } 
     15        </script> 
    216        </head> 
    317        <body class="zmi"> 
     
    620                                <div class="zmi_col_left"> 
    721                                        &nbsp;|&nbsp;<a href="manage_main?lang=<dtml-var lang>" target="_parent"><dtml-var "getZMILangStr('BACK')"> <dtml-var "getZMILangStr('TO')"> <dtml-var "display_type(REQUEST)"><dtml-if "display_type(REQUEST)!=getTitlealt(REQUEST)">: <dtml-var "string_maxlen(getTitlealt(REQUEST),25)"></dtml-if></a> 
    8                                         &nbsp;|&nbsp;<a href="preview_html?lang=<dtml-var lang>" target="_parent" <dtml-unless "REQUEST.has_key('live') and REQUEST['live']=='live'">class="zmi-top-active"</dtml-unless>><dtml-var "getZMILangStr('TAB_PREVIEW')"></a> 
     22                                        &nbsp;|&nbsp;<span class="ui-helper-clickable zmi-top-active" onclick="open_partner(this,true);"><dtml-var "getZMILangStr('TAB_PREVIEW')"></span> 
    923                                        <dtml-unless "getAutocommit()"> 
    10                                                 &nbsp;|&nbsp;<a href="preview_html?lang=<dtml-var lang>&live=live" target="_parent" <dtml-if "REQUEST.has_key('live') and REQUEST['live']=='live'">class="zmi-top-active"</dtml-if>><dtml-var "getZMILangStr('TAB_LIVE')"></a> 
     24                                                &nbsp;|&nbsp;<span class="ui-helper-clickable" onclick="open_partner(this,false);"><dtml-var "getZMILangStr('TAB_LIVE')"></span> 
    1125                                        </dtml-unless> 
    1226                                </div> 
  • ZMS/trunk/etc/zms.conf

    r1755 r1756  
    3535#manage_page_style.css=/++resource++zms_etc_/manage_page_style.css 
    3636#manage_page_script.js=/++resource++zms_etc_/manage_page_script.js 
    37  
    38 [ZMS] 
    39 input.file.plugin=input_file 
    40 TempFormProperties=0 
  • ZMS/trunk/plugins/www/jquery/jquery-all.min.js

    r1755 r1756  
    8888else {$content.show('normal')} 
    8989$container.toggleClass('ui-state-active').toggleClass('ui-state-default');$icon.toggleClass('ui-icon-triangle-1-s').toggleClass('ui-icon-triangle-1-e');var zmi_form_section_id=$container.attr('id');if(typeof zmi_form_section_id !='undefined'){toggleCookie(zmi_form_section_id+'_collapsed')} 
    90 })});var zmiAutoSaveTimeout=null;var zmiAutoSaveIntervall=10000;var zmiAutoChangeArr={};function zmiAutoSave(){var els=$("form.ZMIPropertiesForm .form-element-modified");if(els){var values={};for(var i=0;i < els.length;i++){var $el=$(els[i]);var elid=$el.attr("id");if(typeof elid !="undefined"){var coords=$el.offset();var html='<div class="zmiAutoSave form-small zmiNeutralColorLight0" style="position:absolute;left:'+Math.round(coords.left)+'px;top:'+Math.round(coords.top)+'px;">saving...</div>';$("body").append(html);values[elid]=$el.val()}} 
    91 runPluginJSON(function(){$.post("setTempFormProperties",{lang:zmiParams["lang"],key:self.location.href,values:$.toJSON(values)},function(result){$("div.zmiAutoSave").remove()})})}} 
    92 function zmiAutoChange(el){var elid=$(el).attr("id");if(typeof elid !="undefined"&&typeof zmiAutoChangeArr[elid] !="undefined"){if(!($(el).hasClass("form-element-modified"))&&zmiAutoChangeArr[elid]["init"] !=$(el).val()){$(el).addClass("form-element-modified")} 
    93 else if(($(el).hasClass("form-element-modified"))&&zmiAutoChangeArr[elid]["init"]==$(el).val()){$(el).removeClass("form-element-modified")} 
    94 if(zmiAutoChangeArr[elid]["last"] !=$(el).val()){if(zmiAutoSaveTimeout !=null){window.clearTimeout(zmiAutoSaveTimeout)} 
    95 zmiAutoSaveTimeout=window.setTimeout("zmiAutoSave()",zmiAutoSaveIntervall);zmiAutoChangeArr[elid]["last"]=$(el).val()}}} 
    96 function confirmChanges(el){if(el&&self.name=='cameFromForm'){el.target='_parent'} 
     90})});function confirmChanges(el){if(el&&self.name=='cameFromForm'){el.target='_parent'} 
    9791if(navigator.platform.indexOf("Mac")<0){var anyFormModified=false;for(i=0;i<document.forms.length;i++){anyFormModified|=isFormModified(document.forms[i])} 
    9892if(anyFormModified){if(!confirm(getZMILangStr('MSG_CONFIRM_DISCARD_CHANGES'))){return false}}} 
    99 if($(".form-element-modified").length > 0){$.get("getTempFormProperties",{"lang":zmiParams["lang"],key:self.location.href},function(result){})} 
    10093return true} 
    101 $(function(){if(getZMIConfProperty("ZMS.TempFormProperties",1)==1){$("select.form-element,input.form-element,textarea.form-element,select.form-small,input.form-small,textarea.form-small",$("form.ZMIPropertiesForm")).keydown(function(evt){zmiAutoChange(this)}).keyup(function(evt){zmiAutoChange(this)}).click(function(evt){zmiAutoChange(this)}).change(function(evt){zmiAutoChange(this)}).each(function(){var elid=$(this).attr("id");if(typeof elid !="undefined"&&$(this).attr("type")!="file"){zmiAutoChangeArr[elid]={'init':$(this).val(),'last':$(this).val()}} 
    102 });if($("form.ZMIPropertiesForm").length > 0){$.get("getTempFormProperties",{"lang":zmiParams["lang"],key:self.location.href},function(result){var data=eval("("+result+")");var modified=false;if(data){for(var i in data){var v=data[i];modified|=$("#"+i).val()!=v}} 
    103 if(modified){if(confirm("Form was closed before without saving pending changes. Do you want to restore form?")){for(var i in data){var v=data[i];$("#"+i).val(v).addClass("form-element-modified");zmiAutoChangeArr[i]['last']=v}}} 
    104 })}} 
    105 });var zmiActionPrefix='select_actions_';function zmiActionPopulate(el){if(el.options[el.options.length-1].text.indexOf('---')!=0){return} 
     94var zmiActionPrefix='select_actions_';function zmiActionPopulate(el){if(el.options[el.options.length-1].text.indexOf('---')!=0){return} 
    10695$(document.body).css("cursor","wait");var action=self.location.href;action=action.substr(0,action.indexOf('?')>0?action.substr(0,action.indexOf('?')).lastIndexOf('/'):action.lastIndexOf('/'));var extrapath='';var $anchor=$('a:first',$(el).parents('td')[0]);if($anchor){var anchorpath=$anchor.attr('href');if(typeof anchorpath !='undefined'){var extrapath=anchorpath.split('/');if(extrapath.length > 2){for(var i=0;i < extrapath.length-2;i++){action+='/'+extrapath[i]}} 
    10796}} 
     
    124113function zmiBrowseObjsApplyUrlValue(fmName,elName,elValue){$('form[name='+fmName+'] input[name='+elName+']').val(elValue)} 
    125114function zmiDialogClose(id){$('#'+id).dialog('close');$('body').remove('#'+id)} 
    126 function zmiGetNotifications(){$.get('getNotifications',{},function(data){if(data.length==0){return} 
    127 var notifications=eval('('+data+')');var maxseverity=null;var html='';for(var i=0;i < notifications.length;i++){var notification=notifications[i];var severity=notification['severity'];if(severity=='disabled'){return} 
    128 html+='<div class="form-label">Current Messages:</div>';html+='<div class="form-small">';html+='<img src="/misc_/zms/ico_'+severity+'.gif" alt="" border="0" align="absmiddle"/> ';html+='<strong>'+notification['date']+'</strong> ';html+=notification['html'];html+='</div>';if((maxseverity==null)||(severity=='warning'&&(maxseverity=='info'))||(severity=='warning'&&(maxseverity=='info'||maxseverity=='warning'))){maxseverity=severity}} 
    129 if(maxseverity !=null){if($('#ZMIManageTabsButtons > li#ZMIManageTabsNotifications').length==0){$('#ZMIManageTabsButtons').html('<li id="ZMIManageTabsNotifications"></li>'+$('#ZMIManageTabsButtons').html())} 
    130 $('#ZMIManageTabsButtons > li#ZMIManageTabsNotifications').html('<a href="#ZMIManageTabsNotificationsDiv"><img src="/misc_/zms/ico_'+maxseverity+'.gif" title="Click to open notifications..." border="0"></a>'+'<div style="display:none">'+'<div id="ZMIManageTabsNotificationsDiv">'+html+'</div>'+'</div>'+'');$('a[href=#ZMIManageTabsNotificationsDiv]').click(function(){showFancybox({href:$(this).attr('href')})})} 
    131 setTimeout('zmiGetNotifications()',60000)})} 
    132 function zmiClearNotifications(){} 
    133 $(function(){zmiGetNotifications()});function y2k(number){rtn=number;if(rtn>=0&&rtn<50)rtn+=2000;else 
     115function y2k(number){rtn=number;if(rtn>=0&&rtn<50)rtn+=2000;else 
    134116if(rtn>=50&&rtn<100)rtn+=1900;return(rtn < 1000)? rtn+1900:rtn} 
    135117function isDate(day,month,year){var today=new Date();year=((!year)? y2k(today.getYear()):year);month=((!month)? today.getMonth():month-1);if(!day)return false 
  • ZMS/trunk/plugins/www/jquery/plugin/jquery.plugin.zmi.js

    r1755 r1756  
    147147// ### ZMI Auto-Save 
    148148// ############################################################################# 
    149 var zmiAutoSaveTimeout = null; 
    150 var zmiAutoSaveIntervall = 10000; 
    151 var zmiAutoChangeArr = {}; 
    152  
    153 function zmiAutoSave() { 
    154         var els = $("form.ZMIPropertiesForm .form-element-modified"); 
    155         if (els) { 
    156                 var values = {}; 
    157                 for (var i = 0; i < els.length; i++) { 
    158                         var $el = $(els[i]); 
    159                         var elid = $el.attr("id"); 
    160                         if (typeof elid != "undefined") { 
    161                                 var coords = $el.offset(); 
    162                                 var html = '<div class="zmiAutoSave form-small zmiNeutralColorLight0" style="position:absolute;left:'+Math.round(coords.left)+'px;top:'+Math.round(coords.top)+'px;">saving...</div>'; 
    163                                 $("body").append(html); 
    164                                 values[elid] = $el.val(); 
    165                         } 
    166                 } 
    167                 runPluginJSON(function() { 
    168                                 // Store temp-form properties. 
    169                                 $.post("setTempFormProperties",{lang:zmiParams["lang"],key:self.location.href,values:$.toJSON(values)},function(result) { 
    170                                                 $("div.zmiAutoSave").remove(); 
    171                                         }); 
    172                         }); 
    173         } 
    174 } 
    175  
    176 function zmiAutoChange(el) { 
    177         var elid = $(el).attr("id"); 
    178         if (typeof elid != "undefined" && typeof zmiAutoChangeArr[elid] != "undefined") { 
    179                 if (!($(el).hasClass("form-element-modified")) && zmiAutoChangeArr[elid]["init"] != $(el).val()) { 
    180                         $(el).addClass("form-element-modified"); 
    181                 } 
    182                 else if (($(el).hasClass("form-element-modified")) && zmiAutoChangeArr[elid]["init"] == $(el).val()) { 
    183                         $(el).removeClass("form-element-modified"); 
    184                 } 
    185                 if (zmiAutoChangeArr[elid]["last"] != $(el).val()) { 
    186                         if (zmiAutoSaveTimeout != null) { 
    187                                 window.clearTimeout(zmiAutoSaveTimeout); 
    188                         } 
    189                         zmiAutoSaveTimeout = window.setTimeout("zmiAutoSave()",zmiAutoSaveIntervall); 
    190                         zmiAutoChangeArr[elid]["last"] = $(el).val(); 
    191                 } 
    192         } 
    193 } 
    194149 
    195150function confirmChanges(el) { 
     
    208163                } 
    209164        } 
    210         // Clear stored temp-form properties. 
    211         if ($(".form-element-modified").length > 0) { 
    212                 $.get("getTempFormProperties",{"lang":zmiParams["lang"],key:self.location.href},function(result) {}); 
    213         } 
    214165        return true; 
    215166} 
    216  
    217 $(function() { 
    218         if (getZMIConfProperty("ZMS.TempFormProperties",1)==1) { 
    219                 $("select.form-element,input.form-element,textarea.form-element,select.form-small,input.form-small,textarea.form-small",$("form.ZMIPropertiesForm")) 
    220                         .keydown( function (evt) { zmiAutoChange(this); }) 
    221                         .keyup( function (evt) { zmiAutoChange(this); }) 
    222                         .click( function (evt) { zmiAutoChange(this); }) 
    223                         .change( function (evt) { zmiAutoChange(this); }) 
    224                         .each(function() { 
    225                                         var elid = $(this).attr("id"); 
    226                                         if (typeof elid != "undefined" && $(this).attr("type") != "file") { 
    227                                                 zmiAutoChangeArr[elid] = {'init':$(this).val(),'last':$(this).val()}; 
    228                                         } 
    229                                 }) 
    230                 ; 
    231                 // Read stored temp-form properties. 
    232                 if ($("form.ZMIPropertiesForm").length > 0) { 
    233                         $.get("getTempFormProperties",{"lang":zmiParams["lang"],key:self.location.href},function(result) { 
    234                                         var data = eval("("+result+")"); 
    235                                         var modified = false; 
    236                                         if (data) { 
    237                                                 for (var i in data) { 
    238                                                         var v = data[i]; 
    239                                                         modified |= $("#"+i).val() != v; 
    240                                                 } 
    241                                         } 
    242                                         if (modified) { 
    243                                                 if (confirm("Form was closed before without saving pending changes. Do you want to restore form?")) { 
    244                                                         for (var i in data) { 
    245                                                                 var v = data[i]; 
    246                                                                 $("#"+i).val(v).addClass("form-element-modified"); 
    247                                                                 zmiAutoChangeArr[i]['last'] = v; 
    248                                                         } 
    249                                                 } 
    250                                         } 
    251                                 }); 
    252                 } 
    253         } 
    254 }); 
    255167 
    256168 
     
    441353 
    442354// ############################################################################ 
    443 // ### Notification Service 
    444 // ############################################################################ 
    445  
    446 /** 
    447  * 
    448  */ 
    449 function zmiGetNotifications() { 
    450         $.get('getNotifications', 
    451                 {}, 
    452                 function(data) { 
    453                         if (data.length==0) { 
    454                                 return; 
    455                         } 
    456                         var notifications = eval('('+data+')'); 
    457                         var maxseverity = null; 
    458                         var html = ''; 
    459                         for ( var i = 0; i < notifications.length; i++) { 
    460                                 var notification = notifications[i]; 
    461                                 var severity = notification['severity']; 
    462                                 if (severity == 'disabled') { 
    463                                         return; 
    464                                 } 
    465                                 html += '<div class="form-label">Current Messages:</div>'; 
    466                                 html += '<div class="form-small">'; 
    467                                 html += '<img src="/misc_/zms/ico_'+severity+'.gif" alt="" border="0" align="absmiddle"/> '; 
    468                                 html += '<strong>'+notification['date']+'</strong> '; 
    469                                 html += notification['html']; 
    470                                 html += '</div>'; 
    471                                 if ((maxseverity == null) 
    472                                         || (severity == 'warning' && (maxseverity == 'info')) 
    473                                         || (severity == 'warning' && (maxseverity == 'info' || maxseverity == 'warning'))) { 
    474                                         maxseverity = severity; 
    475                                 } 
    476                         } 
    477                         if (maxseverity != null) { 
    478                                 if ( $('#ZMIManageTabsButtons > li#ZMIManageTabsNotifications').length==0) { 
    479                                         $('#ZMIManageTabsButtons').html('<li id="ZMIManageTabsNotifications"></li>'+$('#ZMIManageTabsButtons').html()); 
    480                                 } 
    481                                 $('#ZMIManageTabsButtons > li#ZMIManageTabsNotifications').html( 
    482                                         '<a href="#ZMIManageTabsNotificationsDiv"><img src="/misc_/zms/ico_'+maxseverity+'.gif" title="Click to open notifications..." border="0"></a>'+ 
    483                                         '<div style="display:none">'+ 
    484                                         '<div id="ZMIManageTabsNotificationsDiv">'+ 
    485                                         html+ 
    486                                         '</div>'+ 
    487                                         '</div>'+ 
    488                                         ''); 
    489                                 $('a[href=#ZMIManageTabsNotificationsDiv]').click(function(){ 
    490                                         showFancybox({href:$(this).attr('href')}); 
    491                                 }); 
    492                         } 
    493                         setTimeout('zmiGetNotifications()',60000); 
    494                 }); 
    495 } 
    496  
    497 /** 
    498  * 
    499  */ 
    500 function zmiClearNotifications() { 
    501 } 
    502  
    503 /** 
    504  * 
    505  */ 
    506 $(function() { 
    507         zmiGetNotifications(); 
    508 }); 
    509  
    510 // ############################################################################ 
    511355// ### Date Functions 
    512356// ############################################################################ 
  • ZMS/trunk/zms.py

    r1755 r1756  
    247247  obj.setConfProperty('ZMS.autocommit',1) 
    248248  obj.setConfProperty('ZMS.Version.autopack',2) 
    249   obj.setConfProperty('ZMS.input.file.plugin','ajax_upload') 
    250   obj.setConfProperty('ZMS.TempFormProperties',1) 
    251249   
    252250  ### Init zcatalog. 
  • ZMS/trunk/zmsobject.py

    r1747 r1756  
    537537    def relative_obj_path(self): 
    538538      return self.absolute_url()[len(self.getDocumentElement().absolute_url())+1:] 
    539  
    540  
    541     ############################################################################ 
    542     ### 
    543     ###  Properties 
    544     ### 
    545     ############################################################################ 
    546  
    547     def getTempFormPropertiesContainer(self, createIfNotExists=False): 
    548       container = None 
    549       temp_folder = self.temp_folder 
    550       temp_id = 'ZMSTempFormPropertiesContainer_%s'%self.REQUEST['AUTHENTICATED_USER'].getId() 
    551       if temp_id in temp_folder.objectIds(): 
    552         container = getattr(temp_folder,temp_id) 
    553       elif createIfNotExists: 
    554         temp_folder.manage_addFile(id=temp_id,title=self.getLangFmtDate(time.time()),file='{}') 
    555         container = getattr(temp_folder,temp_id) 
    556       return container 
    557  
    558     security.declareProtected('ZMS Author','setTempFormProperties') 
    559     def setTempFormProperties(self, lang, key, values, REQUEST, RESPONSE=None): 
    560       """ ZMSObject.setTempFormProperties """ 
    561       rtn = 0 
    562       createIfNotExists = self.getConfProperty('ZMS.TempFormProperties',1)==1 
    563       container = self.getTempFormPropertiesContainer(createIfNotExists=createIfNotExists) 
    564       if container is not None: 
    565         values = eval(values) 
    566         key = key[key.find('://')+3:] 
    567         key = key[key.find('/')+1:] 
    568         if key.rfind("?") > 0: 
    569           key = key[:key.rfind("?")] 
    570         temp_key = '%s_%s'%(key,lang) 
    571         temp_properties = eval(container.data) 
    572         temp_properties[temp_key] = values 
    573         container.manage_edit(title=self.getLangFmtDate(time.time()),content_type='text/json',filedata=self.str_json(temp_properties)) 
    574         rtn = 1 
    575       if RESPONSE: 
    576         RESPONSE.setHeader('Content-Type', 'text/plain; charset=utf-8') 
    577       return self.str_json(rtn) 
    578  
    579     security.declareProtected('ZMS Author','getTempFormProperties') 
    580     def getTempFormProperties(self, lang=None, key=None, REQUEST=None, RESPONSE=None): 
    581       """ ZMSObject.getTempFormProperties """ 
    582       if lang is None or key is None or REQUEST is None: return 
    583       rtn = 0 
    584       container = self.getTempFormPropertiesContainer() 
    585       if container is not None: 
    586         key = key[key.find('://')+3:] 
    587         key = key[key.find('/')+1:] 
    588         if key.rfind("?") > 0: 
    589           key = key[:key.rfind("?")] 
    590         temp_key = '%s_%s'%(key,lang) 
    591         temp_properties = eval(container.data) 
    592         if temp_properties.has_key(temp_key): 
    593           rtn = temp_properties[temp_key] 
    594           del temp_properties[temp_key] 
    595           if len(temp_properties.keys()) == 0: 
    596             container.aq_parent.manage_delObjects([container.id()]) 
    597           else: 
    598             container.manage_edit(title=self.getLangFmtDate(time.time()),content_type='text/json',filedata=self.str_json(temp_properties)) 
    599       if RESPONSE: 
    600         RESPONSE.setHeader('Content-Type', 'text/plain; charset=utf-8') 
    601       return self.str_json(rtn) 
    602539 
    603540 
Note: See TracChangeset for help on using the changeset viewer.