Changeset 526:3f375a048402 in documentViewer for documentViewer.py


Ignore:
Timestamp:
Apr 10, 2012, 5:41:44 PM (12 years ago)
Author:
casties
Branch:
default
Message:

moved search and dict into separate layers.
removed search_template.
added tocMode=concordance.
fixed bug with paging tocs.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • documentViewer.py

    r525 r526  
    1717import re
    1818import string
     19import json
    1920
    2021from SrvTxtUtils import getInt, utf8ify, getText, getHttpData, refreshingImageFileIndexHtml
     
    124125    viewer_index = PageTemplateFile('zpt/viewer_index', globals())
    125126    # available layer types
    126     availableLayers = {'text': ['dict','search','gis','annotator'],
    127                        'xml': None, 'images': None, 'index': None}
     127    builtinLayers = {'text': ['dict','search','gis','annotator'],
     128                     'xml': None, 'images': None, 'index': None}
     129    availableLayers = builtinLayers;
    128130    # layer templates
     131    layer_text_dict = PageTemplateFile('zpt/layer_text_dict', globals())
     132    layer_text_search = PageTemplateFile('zpt/layer_text_search', globals())
    129133    layer_text_annotator = PageTemplateFile('zpt/layer_text_annotator', globals())
    130134    layer_text_gis = PageTemplateFile('zpt/layer_text_gis', globals())
     
    133137    toc_text = PageTemplateFile('zpt/toc_text', globals())
    134138    toc_figures = PageTemplateFile('zpt/toc_figures', globals())
     139    toc_concordance = PageTemplateFile('zpt/toc_concordance', globals())
    135140    toc_none = PageTemplateFile('zpt/toc_none', globals())
    136141    # other templates
    137142    common_template = PageTemplateFile('zpt/common_template', globals())
    138     search_template = PageTemplateFile('zpt/search_template', globals())
    139143    info_xml = PageTemplateFile('zpt/info_xml', globals())
    140144    docuviewer_css = ImageFile('css/docuviewer.css',globals())
     
    409413        return self.getLink(param=param, val=val, params=params, baseUrl=baseUrl, paramSep='&', duplicates=duplicates)
    410414   
     415
     416    def setAvailableLayers(self, newLayerString=None):
     417        """sets availableLayers to newLayerString or tries to autodetect available layers.
     418        assumes layer templates have the form layer_{m}_{l} for layer l in mode m.
     419        newLayerString is parsed as JSON."""
     420        if newLayerString is not None:
     421            try:
     422                layers = json.loads(newLayerString)
     423                if 'text' in layers and 'images' in layers:
     424                    self.availableLayers = layers
     425                    return
     426            except:
     427                pass
     428
     429            logging.error("invalid layers=%s! autodetecting..."%repr(newLayerString))
     430           
     431        # start with builtin layers
     432        self.availableLayers = self.builtinLayers.copy()
     433        # add layers from templates
     434        for t in self.template:
     435            if t.startswith('layer_'):
     436                try:
     437                    (x, m, l) = t.split('_', 3)
     438                    if m not in self.availableLayers:
     439                        # mode m doesn't exist -> new list
     440                        self.availableLayers[m] = [l]
     441                       
     442                    else:
     443                        # m exists -> append
     444                        if l not in self.availableLayers[m]:
     445                            self.availableLayers[m].append()
     446                           
     447                except:
     448                    pass
     449
     450    def getAvailableLayersJson(self):
     451        """returns available layers as JSON string."""
     452        return json.dumps(self.availableLayers)
     453   
    411454   
    412455    def getInfo_xml(self,url,mode):
     
    838881            batch['prevStart'] = None
    839882           
    840         if start + grpsize < maxIdx:
     883        if start + grpsize <= maxIdx:
    841884            batch['nextStart'] = start + grpsize
    842885        else:
     
    864907        this = []
    865908        j = 0
    866         for i in range(start, min(start+size, end)):
     909        for i in range(start, min(start+size, end+1)):
    867910            if data:
    868911                if fullData:
    869                     d = data[i]
     912                    d = data.get(i, None)
    870913                else:
    871                     d = data[j]
     914                    d = data.get(j, None)
    872915                    j += 1
    873916           
     
    888931            batch['nextStart'] = None
    889932       
     933        logging.debug("getBatch start=%s size=%s end=%s batch=%s"%(start,size,end,repr(batch)))
    890934        return batch
    891935       
     
    894938    changeDocumentViewerForm = PageTemplateFile('zpt/changeDocumentViewer', globals())
    895939   
    896     def changeDocumentViewer(self,title="",digilibBaseUrl=None,thumbrows=2,thumbcols=5,authgroups='mpiwg',RESPONSE=None):
     940    def changeDocumentViewer(self,title="",digilibBaseUrl=None,thumbrows=2,thumbcols=5,authgroups='mpiwg',availableLayers=None,RESPONSE=None):
    897941        """init document viewer"""
    898942        self.title=title
     
    906950        except Exception, e:
    907951            logging.error("Unable to find MetaDataFolder 'metadata': "+str(e))
     952           
     953        self.setAvailableLayers(availableLayers)
    908954
    909955        if RESPONSE is not None:
Note: See TracChangeset for help on using the changeset viewer.