Changeset 413:ea9aaecd73f1 in documentViewer for documentViewer.py


Ignore:
Timestamp:
Dec 22, 2010, 11:54:46 AM (13 years ago)
Author:
casties
Branch:
default
Message:

better getLink method

File:
1 edited

Legend:

Unmodified
Added
Removed
  • documentViewer.py

    r412 r413  
    352352    def getBrowser(self):
    353353        """getBrowser the version of browser """
    354         names=""
    355         names = browserCheck(self)
    356         return names
     354        bt = browserCheck(self)
     355        return bt
    357356       
    358357    def findDigilibUrl(self):
     
    373372            return style
    374373   
    375     def getLink(self,param=None,val=None):
    376         """link to documentviewer with parameter param set to val"""
    377         params=self.REQUEST.form.copy()
     374    def getLink(self, param=None, val=None, params=None, baseUrl=None, paramSep='&'):
     375        """returns URL to documentviewer with parameter param set to val or from dict params"""
     376        # copy existing request params
     377        urlParams=self.REQUEST.form.copy()
     378        # change single param
    378379        if param is not None:
    379380            if val is None:
    380                 if params.has_key(param):
    381                     del params[param]
     381                if urlParams.has_key(param):
     382                    del urlParams[param]
    382383            else:
    383                 params[param] = str(val)
     384                urlParams[param] = str(val)
    384385               
    385         if params.get("mode", None) == "filepath": #wenn beim erst Aufruf filepath gesetzt wurde aendere das nun zu imagepath
    386                 params["mode"] = "imagepath"
    387                 params["url"] = getParentDir(params["url"])
     386        # change more params
     387        if params is not None:
     388            for k in params.keys():
     389                v = params[k]
     390                if v is None:
     391                    # val=None removes param
     392                    if urlParams.has_key(k):
     393                        del urlParams[k]
     394                       
     395                else:
     396                    urlParams[k] = v
     397
     398        # FIXME: does this belong here?
     399        if urlParams.get("mode", None) == "filepath": #wenn beim erst Aufruf filepath gesetzt wurde aendere das nun zu imagepath
     400                urlParams["mode"] = "imagepath"
     401                urlParams["url"] = getParentDir(urlParams["url"])
    388402               
    389         # quote values and assemble into query string
    390         #ps = "&".join(["%s=%s"%(k,urllib.quote(v)) for (k, v) in params.items()])
    391         ps = urllib.urlencode(params)
    392         url=self.REQUEST['URL1']+"?"+ps
     403        # quote values and assemble into query string (not escaping '/')
     404        ps = paramSep.join(["%s=%s"%(k,urllib.quote_plus(v,'/')) for (k, v) in urlParams.items()])
     405        #ps = urllib.urlencode(urlParams)
     406        if baseUrl is None:
     407            baseUrl = self.REQUEST['URL1']
     408           
     409        url = "%s?%s"%(baseUrl, ps)
    393410        return url
    394411
    395     def getLinkAmp(self,param=None,val=None):
     412
     413    def getLinkAmp(self, param=None, val=None, params=None, baseUrl=None):
    396414        """link to documentviewer with parameter param set to val"""
    397         params=self.REQUEST.form.copy()
    398         if param is not None:
    399             if val is None:
    400                 if params.has_key(param):
    401                     del params[param]
    402             else:
    403                 params[param] = str(val)
    404                
    405         # quote values and assemble into query string
    406         logging.debug("XYXXXXX: %s"%repr(params.items()))
    407         ps = "&".join(["%s=%s"%(k,urllib.quote(v)) for (k, v) in params.items()])
    408         url=self.REQUEST['URL1']+"?"+ps
    409         return url
     415        return self.getLink(param, val, params, baseUrl, '&')
    410416   
    411417    def getInfo_xml(self,url,mode):
Note: See TracChangeset for help on using the changeset viewer.