Changeset 566:4a31608f8b0e in documentViewer


Ignore:
Timestamp:
Oct 10, 2012, 4:09:49 PM (12 years ago)
Author:
casties
Branch:
default
Message:

more new MpiwgXmlTextServer?.

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • MpiwgXmlTextServer.py

    r565 r566  
    307307        logging.debug("pagediv: %s"%repr(pagediv))
    308308       
    309         # plain text mode
    310         if textmode == "text":
     309        # plain text or text-with-links mode
     310        if textmode == "text" or textmode == "dict":
    311311            if pagediv is not None:
    312                 # handle pb-tag
    313                 self._extractPbTag(pagediv, pageinfo)
     312                self._processPbTag(pagediv, pageinfo)
     313                self._processFigures(pagediv, docinfo)
     314                #self._fixEmptyDivs(pagediv)
    314315                # get full url assuming documentViewer is parent
    315316                selfurl = self.getLink()
    316                 if punditMode:
    317                     self._addPunditAttributes(pagediv, pageinfo, docinfo)
    318                    
    319                 # fix empty div tags
    320                 self._fixEmptyDivs(pagediv)
    321317                # check all a-tags
    322318                links = pagediv.findall('.//a')
    323                 for l in links:
    324                     href = l.get('href')
    325                     # handle notes FIXME!
    326                     if href and href.startswith('#note-'):
    327                         href = href.replace('#note-',"%s#note-"%selfurl)
    328                         l.set('href', href)
    329                        
    330                 return serialize(pagediv)
    331            
    332         # text-with-links mode
    333         elif textmode == "dict":
    334             if pagediv is not None:
    335                 # handle pb-div
    336                 self._extractPbTag(pagediv, pageinfo)
    337                 viewerurl = docinfo['viewerUrl']
    338                 selfurl = self.getLink()
    339                 if punditMode:
    340                     pagediv = self.addPunditAttributes(pagediv, pageinfo, docinfo)
    341                    
    342                 # fix empty div tags
    343                 self._fixEmptyDivs(pagediv)   
    344                 # check all a-tags
    345                 links = pagediv.findall(".//a")
    346319                for l in links:
    347320                    href = l.get('href')
     
    349322                        # is link with href
    350323                        linkurl = urlparse.urlparse(href)
    351                         #logging.debug("getTextPage: linkurl=%s"%repr(linkurl))
    352324                        if linkurl.path.endswith('GetDictionaryEntries'):
    353325                            #TODO: replace wordInfo page
     
    357329                            l.set('target', '_blank')
    358330                                                         
    359                         if href.startswith('#note-'):
    360                             # note link
     331                        elif href.startswith('#note-'):
     332                            # note link FIXME!
    361333                            l.set('href', href.replace('#note-',"%s#note-"%selfurl))
    362                              
     334                       
     335                if punditMode:
     336                    self._addPunditAttributes(pagediv, pageinfo, docinfo)
     337                   
    363338                return serialize(pagediv)
    364339           
     
    373348                return serialize(pagediv)
    374349                 
    375         # gis mode
     350        # gis mode FIXME!
    376351        elif textmode == "gis":
    377352            if pagediv is not None:
     
    394369        return None
    395370
    396     def _extractPbTag(self, pagediv, pageinfo):
     371    def _processPbTag(self, pagediv, pageinfo):
    397372        """extracts information from pb-tag and removes it from pagediv"""
    398373        pbdiv = pagediv.find(".//span[@class='pb']")
     
    421396            id = d.get('id')
    422397            if id:
     398                # TODO: check path (cf RFC2396)
    423399                d.set('about', "http://echo.mpiwg-berlin.mpg.de/%s/pn=%s/#%s"%(textid,pn,id))
    424400                cls = d.get('class','')
     
    428404        return pagediv
    429405
     406    def _processFigures(self, pagediv, docinfo):
     407        """processes figure-tags"""
     408        divs = pagediv.findall(".//span[@class='figure']")
     409        scalerUrl = docinfo['digilibScalerUrl']
     410        viewerUrl = docinfo['digilibViewerUrl']
     411        for d in divs:
     412            try:
     413                a = d.find('a')
     414                img = a.find('img')
     415                imgsrc = img.get('src')
     416                imgurl = urlparse.urlparse(imgsrc)
     417                imgq = imgurl.query
     418                imgparams = urlparse.parse_qs(imgq)
     419                fn = imgparams.get('fn', None)
     420                if fn is not None:
     421                    # parse_qs puts parameters in lists
     422                    fn = fn[0]
     423                    # TODO: check valid path
     424                    # fix img@src
     425                    newsrc = '%s?fn=%s&dw=200&dh=200'%(scalerUrl,fn)
     426                    img.set('src', newsrc)
     427                    # fix a@href
     428                    newlink = '%s?fn=%s'%(viewerUrl,fn)
     429                    a.set('href', newlink)
     430                    a.set('target', '_blank')
     431                   
     432            except:
     433                logging.warn("processFigures: strange figure!")
     434               
     435   
    430436    def _fixEmptyDivs(self, pagediv):
    431437        """fixes empty div-tags by inserting a space"""
  • documentViewer.py

    r565 r566  
    200200        if digilibBaseUrl is not None:
    201201            self.digilibBaseUrl = digilibBaseUrl
     202            self.digilibScalerUrl = digilibBaseUrl + '/servlet/Scaler'
     203            self.digilibViewerUrl = digilibBaseUrl + '/jquery/digilib.html'
    202204           
    203205       
     
    361363           
    362364        if url is None:
    363             url = "%s/servlet/Scaler?"%self.digilibBaseUrl
     365            url = self.digilibScalerUrl
    364366            if fn is None and docinfo is not None:
    365367                fn = docinfo.get('imagePath','')
     
    544546        docinfo['viewerUrl'] = self.getDocumentViewerURL()
    545547        docinfo['digilibBaseUrl'] = self.digilibBaseUrl
     548        docinfo['digilibScalerUrl'] = self.digilibScalerUrl
     549        docinfo['digilibViewerUrl'] = self.digilibViewerUrl
    546550        # get index.meta DOM
    547551        docUrl = None
     
    563567        elif mode=="filepath":
    564568            # url points to image file, index.meta optional
    565             docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + url
     569            docinfo['imageURL'] = "%s?fn=%s"%(self.digilibScalerUrl, url)
    566570            docinfo['numPages'] = 1
    567571            # asssume index.meta is two path segments up
     
    637641            if docinfo.get('imagePath', None):
    638642                imgpath = docinfo['imagePath'].replace('/mpiwg/online/', '', 1)
    639                 docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + imgpath
     643                docinfo['imageURL'] = "%s?fn=%s"%(self.digilibScalerUrl, imgpath)
    640644                docinfo = self.getDocinfoFromDigilib(docinfo, imgpath)
    641645            else:
     
    646650                    # there are pages
    647651                    docinfo['imagePath'] = imgPath
    648                     docinfo['imageURL'] = self.digilibBaseUrl + "/servlet/Scaler?fn=" + docinfo['imagePath']
     652                    docinfo['imageURL'] = "%s?fn=%s"%(self.digilibScalerUrl, docinfo['imagePath'])
    649653
    650654        # check numPages
     
    10451049        self.title=title
    10461050        self.digilibBaseUrl = digilibBaseUrl
     1051        self.digilibScalerUrl = digilibBaseUrl + '/servlet/Scaler'
     1052        self.digilibViewerUrl = digilibBaseUrl + '/jquery/digilib.html'
    10471053        self.thumbrows = thumbrows
    10481054        self.thumbcols = thumbcols
Note: See TracChangeset for help on using the changeset viewer.