Mercurial > hg > documentViewer
changeset 525:70c3ae5eac7c
layers can have their own templates.
first version of annotations layer.
author | casties |
---|---|
date | Thu, 05 Apr 2012 19:29:50 +0200 |
parents | 1a20621f2555 |
children | 3f375a048402 |
files | documentViewer.py zpt/layer_text_annotator.zpt zpt/layer_text_gis.zpt zpt/viewer_text.zpt |
diffstat | 4 files changed, 235 insertions(+), 63 deletions(-) [+] |
line wrap: on
line diff
--- a/documentViewer.py Thu Apr 05 14:56:01 2012 +0200 +++ b/documentViewer.py Thu Apr 05 19:29:50 2012 +0200 @@ -112,16 +112,28 @@ metadataService = None """MetaDataFolder instance""" + + # # templates and forms + # + # viewMode templates viewer_text = PageTemplateFile('zpt/viewer_text', globals()) viewer_xml = PageTemplateFile('zpt/viewer_xml', globals()) viewer_images = PageTemplateFile('zpt/viewer_images', globals()) viewer_index = PageTemplateFile('zpt/viewer_index', globals()) + # available layer types + availableLayers = {'text': ['dict','search','gis','annotator'], + 'xml': None, 'images': None, 'index': None} + # layer templates + layer_text_annotator = PageTemplateFile('zpt/layer_text_annotator', globals()) + layer_text_gis = PageTemplateFile('zpt/layer_text_gis', globals()) + # toc templates toc_thumbs = PageTemplateFile('zpt/toc_thumbs', globals()) toc_text = PageTemplateFile('zpt/toc_text', globals()) toc_figures = PageTemplateFile('zpt/toc_figures', globals()) toc_none = PageTemplateFile('zpt/toc_none', globals()) + # other templates common_template = PageTemplateFile('zpt/common_template', globals()) search_template = PageTemplateFile('zpt/search_template', globals()) info_xml = PageTemplateFile('zpt/info_xml', globals()) @@ -296,6 +308,10 @@ return ret + def getAvailableLayers(self): + """returns dict with list of available layers per viewMode""" + return self.availableLayers + def getBrowser(self): """getBrowser the version of browser """ bt = browserCheck(self)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/zpt/layer_text_annotator.zpt Thu Apr 05 19:29:50 2012 +0200 @@ -0,0 +1,101 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<metal:block metal:define-macro="html_head"> + <!-- annotator --> + <link rel="stylesheet" type="text/css" + tal:attributes="href string:$rootUrl/template/annotator_files/css/annotator.css" /> + + <script + tal:attributes="src string:$rootUrl/template/annotator_files/lib/vendor/json2.js"></script> + <script tal:attributes="src string:$rootUrl/template/annotator_files/lib/extensions.js"></script> + <script tal:attributes="src string:$rootUrl/template/annotator_files/lib/console.js"></script> + <script tal:attributes="src string:$rootUrl/template/annotator_files/lib/class.js"></script> + <script tal:attributes="src string:$rootUrl/template/annotator_files/lib/range.js"></script> + <script tal:attributes="src string:$rootUrl/template/annotator_files/lib/annotator.js"></script> + <script tal:attributes="src string:$rootUrl/template/annotator_files/lib/widget.js"></script> + <script tal:attributes="src string:$rootUrl/template/annotator_files/lib/editor.js"></script> + <script tal:attributes="src string:$rootUrl/template/annotator_files/lib/viewer.js"></script> + <script + tal:attributes="src string:$rootUrl/template/annotator_files/lib/notification.js"></script> + <script + tal:attributes="src string:$rootUrl/template/annotator_files/lib/plugin/store.js"></script> + <script + tal:attributes="src string:$rootUrl/template/annotator_files/lib/plugin/permissions.js"></script> + <script + tal:attributes="src string:$rootUrl/template/annotator_files/lib/plugin/annotateitpermissions.js"></script> + <script tal:attributes="src string:$rootUrl/template/annotator_files/lib/plugin/auth.js"></script> + <script tal:attributes="src string:$rootUrl/template/annotator_files/lib/plugin/tags.js"></script> + <script + tal:attributes="src string:$rootUrl/template/annotator_files/lib/plugin/unsupported.js"></script> + <script + tal:attributes="src string:$rootUrl/template/annotator_files/lib/plugin/filter.js"></script> + + <script type="text/javascript"> + // <!-- + $(document).ready(function() { + // annotator + var elem = $('div.pageContent').get(0); + var uri = window.location.href.split(/#|\?/).shift(); + var devAnnotator = new Annotator(elem).addPlugin('Auth', { + //tokenUrl: 'http://annotateit.org/api/token' + tokenUrl : 'http://localhost:8080/test/annotator/token?user=casties' + //autoFetch: false + }).addPlugin('Permissions', { + user : 'casties', + userString : function(user) { + if (user && user.name) { + return user.name; + } + return user; + }, + userId : function(user) { + if (user && user.id) { + return user.id; + } + return user; + } + }).addPlugin('Store', { + prefix : 'http://localhost:18080/AnnotationManager/annotator', + //prefix: 'http://virtuoso.mpiwg-berlin.mpg.de:8080/AnnotationManager/annotator', + //prefix: 'http://annotateit.org/api', + annotationData : { + 'uri' : uri + }, + loadFromSearch : { + 'limit' : 20, + 'uri' : uri + //'uri': 'http://127.0.0.1:18080/ECHOdocuViewfullTest?pn=21&url=/mpiwg/online/permanent/library/163127KK' + } + }); + }); + // --> + </script> + +</metal:block> +</head> +<body> + <!-- right-side options --> + <div class="col buttons"> + <!-- LAYER DISPLAY OPTION --> + <ul> + <li metal:define-macro="layer_select_li"> + <input type="checkbox" class="autosubmit" name="viewLayer" value="annotator" + tal:attributes="checked python:'annotator' in viewLayers" /> Annotations + </li> + </ul> + </div> + + <metal:block metal:define-macro="options_box"> + <!-- BEGIN ANNOTATIONS --> + <div class="options"> + <h4>Annotations</h4> + <div>nothing to be seen here...</div> + </div> + <!-- END ANNOTATIONS --> + </metal:block> + +</body> + +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/zpt/layer_text_gis.zpt Thu Apr 05 19:29:50 2012 +0200 @@ -0,0 +1,52 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<!-- not used here +<metal:block metal:define-macro="html_head"> +</metal:block> +--> +</head> +<body> + <!-- right-side options --> + <div class="col buttons"> + <!-- LAYER DISPLAY OPTION --> + <ul> + <metal:block metal:define-macro="layer_select_li"> + <li tal:condition="python:docinfo.get('numPlaces',0)"> + <input type="checkbox" class="autosubmit" name="viewLayer" value="gis" + tal:attributes="checked python:'gis' in viewLayers" /> Places<br /> + </li> + </metal:block> + </ul> + </div> + + <metal:block metal:define-macro="options_box"> + <!--"BEGIN PLACES"--> + <div class="options" tal:condition="python:'gis' in viewLayers"> + <tal:block + tal:define=" + name docinfo/documentName; + places python:here.getPlacesOnPage(docinfo=docinfo, pn=pn); + pidlist python:','.join([p['id'] for p in places]);"> + <h4>Places</h4> + <ul> + <li> + <a + tal:attributes="href python:'http://mappit.mpiwg-berlin.mpg.de/db/RESTdb/db/mpdl/%s?id=%s&format=gis'%(name,pidlist)" + target="_blank">on this page</a> + </li> + <li> + <a + tal:attributes="href python:'http://mappit.mpiwg-berlin.mpg.de/db/RESTdb/db/mpdl/%s?format=gis'%(name)" + target="_blank">in whole document</a> + </li> + </ul> + </tal:block> + </div> + <!--"END PLACES"--> + </metal:block> + +</body> + +</html>
--- a/zpt/viewer_text.zpt Thu Apr 05 14:56:01 2012 +0200 +++ b/zpt/viewer_text.zpt Thu Apr 05 19:29:50 2012 +0200 @@ -3,26 +3,34 @@ <html xmlns="http://www.w3.org/1999/xhtml" tal:define="docinfo options/docinfo; pageinfo options/pageinfo; viewMode pageinfo/viewMode; tocMode pageinfo/tocMode; viewLayer pageinfo/viewLayer; viewLayers pageinfo/viewLayers; + availableLayers python:here.getAvailableLayers().get('text', None); viewerUrl docinfo/viewerUrl; rootUrl here/getDocumentViewerURL; numPages docinfo/numPages | nothing;"> <head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> - <title - tal:content="python:docinfo.get('creator',' ') + ' - ' + docinfo.get('title',' ')" /> - <link rel="stylesheet" href="template/docuviewer_css" type="text/css" /> - <script type="text/javascript" tal:attributes="src string:$rootUrl/template/jquery_js"></script> - <script type="text/javascript"> - // <!-- - $(document).ready(function() { - // autosubmit forms - $('form.autosubmit').find('.autosubmit').change(function() { - this.form.submit(); - }); - $('form.autosubmit input[type="submit"]').hide(); - }); - // --> - </script> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<title tal:content="python:docinfo.get('creator',' ') + ' - ' + docinfo.get('title',' ')" /> +<link rel="stylesheet" href="template/docuviewer_css" type="text/css" /> +<script type="text/javascript" tal:attributes="src string:$rootUrl/template/jquery_js"></script> +<script type="text/javascript"> + // <!-- + $(document).ready(function() { + // autosubmit forms + $('form.autosubmit').find('.autosubmit').change(function() { + this.form.submit(); + }); + $('form.autosubmit input[type="submit"]').hide(); + }); +// --> +</script> +<!-- layer headers --> +<tal:block tal:repeat="layer viewLayers"> + <tal:block tal:define="mpath string:here/template/layer_text_${layer}/macros/html_head" + tal:condition="python:exists(mpath)"> + <metal:block metal:use-macro="python:path(mpath)" /> + </tal:block> +</tal:block> + </head> <body tal:condition="numPages"> <tal:block @@ -67,7 +75,7 @@ <!--"BEGIN SEARCH RESULTS" --> <div class="options"> <h4>Search results</h4> - <div metal:use-macro="here/template/search_template/macros/results_div"/> + <div metal:use-macro="here/template/search_template/macros/results_div" /> </div> </div> @@ -86,6 +94,7 @@ <input class="autosubmit" type="radio" name="viewMode" value="text" tal:attributes="checked python:viewMode=='text'" /> Text <ul> + <!-- text layers --> <li> <input type="checkbox" class="autosubmit" name="viewLayer" value="dict" tal:attributes="checked python:'dict' in viewLayers" /> @@ -94,12 +103,17 @@ <li tal:condition="python:query"> <input type="checkbox" class="autosubmit" name="viewLayer" value="search" - tal:attributes="checked python:'search' in viewLayers" /> Search hits + tal:attributes="checked python:'search' in viewLayers" /> Search + hits </li> - <li tal:condition="python:docinfo.get('numPlaces',0)"> - <input type="checkbox" class="autosubmit" name="viewLayer" value="gis" - tal:attributes="checked python:'gis' in viewLayers" /> Places<br /> - </li> + <!-- auto-layer select buttons --> + <tal:block tal:repeat="layer availableLayers"> + <tal:block + tal:define="mpath string:here/template/layer_text_${layer}/macros/layer_select_li" + tal:condition="python:exists(mpath)"> + <li metal:use-macro="python:path(mpath)" /> + </tal:block> + </tal:block> </ul> </li> <li> @@ -122,30 +136,32 @@ tal:attributes="name param; value python:params[param]" /> <!-- make sure we have one viewLayer=search --> <tal:block tal:repeat="vl viewLayers"> - <input type="hidden" name="viewLayer" tal:attributes="value vl" tal:condition="python:vl != 'search'"/> + <input type="hidden" name="viewLayer" tal:attributes="value vl" + tal:condition="python:vl != 'search'" /> </tal:block> - <input type="hidden" name="viewLayer" value="search"/> + <input type="hidden" name="viewLayer" value="search" /> <!-- query text --> - <input type="text" name="query" tal:attributes="value query"/> - <input type="submit" value="Search"/> - <a tal:attributes="href python:here.getLink('query',None)">Clear</a> + <input type="text" name="query" tal:attributes="value query" /> <input + type="submit" value="Search" /> <a + tal:attributes="href python:here.getLink('query',None)">Clear</a> <ul> - <li> - <input type="radio" name="queryType" value="fulltext" - tal:attributes="checked python:queryType=='fulltext'"/> Exact - </li> - <li> - <input type="radio" name="queryType" value="fulltextMorph" - tal:attributes="checked python:queryType=='fulltextMorph'"/> All forms - </li> - <li> - <input type="radio" name="queryType" value="ftIndex" - tal:attributes="checked python:queryType=='ftIndex'"/> Fulltext index - </li> - <li> - <input type="radio" name="queryType" value="ftIndexMorph" - tal:attributes="checked python:queryType=='ftIndexMorph'"/> Morphological index - </li> + <li> + <input type="radio" name="queryType" value="fulltext" + tal:attributes="checked python:queryType=='fulltext'" /> Exact + </li> + <li> + <input type="radio" name="queryType" value="fulltextMorph" + tal:attributes="checked python:queryType=='fulltextMorph'" /> All forms + </li> + <li> + <input type="radio" name="queryType" value="ftIndex" + tal:attributes="checked python:queryType=='ftIndex'" /> Fulltext index + </li> + <li> + <input type="radio" name="queryType" value="ftIndexMorph" + tal:attributes="checked python:queryType=='ftIndexMorph'" /> + Morphological index + </li> </ul> </form> </div> @@ -213,27 +229,14 @@ </div> <!--"END TEXT NORMALIZATION"--> - <!--"BEGIN PLACES"--> - <div class="options" tal:condition="python:'gis' in viewLayers"> - <tal:block tal:define=" - name docinfo/documentName; - places python:here.getPlacesOnPage(docinfo=docinfo, pn=pn); - pidlist python:','.join([p['id'] for p in places]);"> - <h4>Places</h4> - <ul> - <li><a - tal:attributes="href python:'http://mappit.mpiwg-berlin.mpg.de/db/RESTdb/db/mpdl/%s?id=%s&format=gis'%(name,pidlist)" - target="_blank">on this page</a> - </li> - <li> - <a - tal:attributes="href python:'http://mappit.mpiwg-berlin.mpg.de/db/RESTdb/db/mpdl/%s?format=gis'%(name)" - target="_blank">in whole document</a> - </li> - </ul> + <!-- auto-layer option boxes --> + <tal:block tal:repeat="layer viewLayers"> + <tal:block + tal:define="mpath string:here/template/layer_text_${layer}/macros/options_box" + tal:condition="python:exists(mpath)"> + <metal:block metal:use-macro="python:path(mpath)" /> </tal:block> - </div> - <!--"END PLACES"--> + </tal:block> </div> <!-- /col-right -->