Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

started reimplementing wals fuinctionality in new framework

  • Loading branch information...
commit 065bfa89264cde57fae3f06851517474cd5dc9a9 1 parent fc7222b
Robert Forkel xrotwang authored
Showing with 1,936 additions and 0 deletions.
  1. +4 −0 CHANGES.txt
  2. +2 −0  MANIFEST.in
  3. +14 −0 README.txt
  4. +72 −0 development.ini
  5. +27 −0 setup.cfg
  6. +45 −0 setup.py
  7. +77 −0 wals3/__init__.py
  8. +15 −0 wals3/adapters.py
  9. +23 −0 wals3/locale/en/LC_MESSAGES/wotw.po
  10. +23 −0 wals3/locale/wals3.pot
  11. +14 −0 wals3/maps.py
  12. +91 −0 wals3/models.py
  13. +1 −0  wals3/scripts/__init__.py
  14. +120 −0 wals3/scripts/initializedb.py
  15. BIN  wals3/static/header.gif
  16. BIN  wals3/static/icons/a000.png
  17. BIN  wals3/static/icons/c000.png
  18. BIN  wals3/static/icons/c00d.png
  19. BIN  wals3/static/icons/c090.png
  20. BIN  wals3/static/icons/c6f3.png
  21. BIN  wals3/static/icons/c909.png
  22. BIN  wals3/static/icons/c99f.png
  23. BIN  wals3/static/icons/c9ff.png
  24. BIN  wals3/static/icons/ca00.png
  25. BIN  wals3/static/icons/cccc.png
  26. BIN  wals3/static/icons/cd00.png
  27. BIN  wals3/static/icons/cf40.png
  28. BIN  wals3/static/icons/cf60.png
  29. BIN  wals3/static/icons/cf6f.png
  30. BIN  wals3/static/icons/cfc0.png
  31. BIN  wals3/static/icons/cff0.png
  32. BIN  wals3/static/icons/cffc.png
  33. BIN  wals3/static/icons/cfff.png
  34. BIN  wals3/static/icons/d000.png
  35. BIN  wals3/static/icons/d00d.png
  36. BIN  wals3/static/icons/d090.png
  37. BIN  wals3/static/icons/d6f3.png
  38. BIN  wals3/static/icons/d909.png
  39. BIN  wals3/static/icons/d99f.png
  40. BIN  wals3/static/icons/d9ff.png
  41. BIN  wals3/static/icons/da00.png
  42. BIN  wals3/static/icons/dccc.png
  43. BIN  wals3/static/icons/dd00.png
  44. BIN  wals3/static/icons/df40.png
  45. BIN  wals3/static/icons/df60.png
  46. BIN  wals3/static/icons/df6f.png
  47. BIN  wals3/static/icons/dfc0.png
  48. BIN  wals3/static/icons/dff0.png
  49. BIN  wals3/static/icons/dffc.png
  50. BIN  wals3/static/icons/dfff.png
  51. BIN  wals3/static/icons/f000.png
  52. BIN  wals3/static/icons/f00d.png
  53. BIN  wals3/static/icons/f090.png
  54. BIN  wals3/static/icons/f6f3.png
  55. BIN  wals3/static/icons/f909.png
  56. BIN  wals3/static/icons/f99f.png
  57. BIN  wals3/static/icons/f9ff.png
  58. BIN  wals3/static/icons/fa00.png
  59. BIN  wals3/static/icons/fccc.png
  60. BIN  wals3/static/icons/fd00.png
  61. BIN  wals3/static/icons/ff40.png
  62. BIN  wals3/static/icons/ff60.png
  63. BIN  wals3/static/icons/ff6f.png
  64. BIN  wals3/static/icons/ffc0.png
  65. BIN  wals3/static/icons/fff0.png
  66. BIN  wals3/static/icons/fffc.png
  67. BIN  wals3/static/icons/ffff.png
  68. BIN  wals3/static/icons/s000.png
  69. BIN  wals3/static/icons/s00d.png
  70. BIN  wals3/static/icons/s090.png
  71. BIN  wals3/static/icons/s6f3.png
  72. BIN  wals3/static/icons/s909.png
  73. BIN  wals3/static/icons/s99f.png
  74. BIN  wals3/static/icons/s9ff.png
  75. BIN  wals3/static/icons/sa00.png
  76. BIN  wals3/static/icons/sccc.png
  77. BIN  wals3/static/icons/sd00.png
  78. BIN  wals3/static/icons/sf40.png
  79. BIN  wals3/static/icons/sf60.png
  80. BIN  wals3/static/icons/sf6f.png
  81. BIN  wals3/static/icons/sfc0.png
  82. BIN  wals3/static/icons/sff0.png
  83. BIN  wals3/static/icons/sffc.png
  84. BIN  wals3/static/icons/sfff.png
  85. BIN  wals3/static/icons/t000.png
  86. BIN  wals3/static/icons/t00d.png
  87. BIN  wals3/static/icons/t090.png
  88. BIN  wals3/static/icons/t6f3.png
  89. BIN  wals3/static/icons/t909.png
  90. BIN  wals3/static/icons/t99f.png
  91. BIN  wals3/static/icons/t9ff.png
  92. BIN  wals3/static/icons/ta00.png
  93. BIN  wals3/static/icons/tccc.png
  94. BIN  wals3/static/icons/td00.png
  95. BIN  wals3/static/icons/tf40.png
  96. BIN  wals3/static/icons/tf60.png
  97. BIN  wals3/static/icons/tf6f.png
  98. BIN  wals3/static/icons/tfc0.png
  99. BIN  wals3/static/icons/tff0.png
  100. BIN  wals3/static/icons/tffc.png
  101. BIN  wals3/static/icons/tfff.png
  102. BIN  wals3/static/transparent.gif
  103. +929 −0 wals3/static/wals.css
  104. +13 −0 wals3/static/wals3.css
  105. +44 −0 wals3/static/wals3.js
  106. +336 −0 wals3/templates/home.mako
  107. +13 −0 wals3/templates/language/rdf.pt
  108. +1 −0  wals3/templates/language/snippet_html.mako
  109. +31 −0 wals3/templates/wals3.mako
  110. +32 −0 wals3/tests.py
  111. +9 −0 wals3/views.py
4 CHANGES.txt
View
@@ -0,0 +1,4 @@
+0.0
+---
+
+- Initial version
2  MANIFEST.in
View
@@ -0,0 +1,2 @@
+include *.txt *.ini *.cfg *.rst
+recursive-include wals3 *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml
14 README.txt
View
@@ -0,0 +1,14 @@
+wals3 README
+==================
+
+Getting Started
+---------------
+
+- cd <directory containing this file>
+
+- $venv/bin/python setup.py develop
+
+- $venv/bin/initialize_wals3_db development.ini
+
+- $venv/bin/pserve development.ini
+
72 development.ini
View
@@ -0,0 +1,72 @@
+###
+# app configuration
+# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html
+###
+
+[app:main]
+use = egg:wals3
+
+pyramid.reload_templates = true
+pyramid.debug_authorization = false
+pyramid.debug_notfound = false
+pyramid.debug_routematch = false
+pyramid.default_locale_name = en
+pyramid.includes =
+# pyramid_debugtoolbar
+ pyramid_tm
+
+#sqlalchemy.url = sqlite:///%(here)s/wals3.sqlite
+sqlalchemy.url = postgresql://robert@/wals3
+
+# By default, the toolbar only appears for clients from IP addresses
+# '127.0.0.1' and '::1'.
+# debugtoolbar.hosts = 127.0.0.1 ::1
+
+###
+# wsgi server configuration
+###
+
+[server:main]
+use = egg:waitress#main
+host = 0.0.0.0
+port = 6543
+
+###
+# logging configuration
+# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html
+###
+
+[loggers]
+keys = root, wals3, sqlalchemy
+
+[handlers]
+keys = console
+
+[formatters]
+keys = generic
+
+[logger_root]
+level = INFO
+handlers = console
+
+[logger_wals3]
+level = DEBUG
+handlers =
+qualname = wals3
+
+[logger_sqlalchemy]
+level = WARN
+handlers =
+qualname = sqlalchemy.engine
+# "level = INFO" logs SQL queries.
+# "level = DEBUG" logs SQL queries and results.
+# "level = WARN" logs neither. (Recommended for production systems.)
+
+[handler_console]
+class = StreamHandler
+args = (sys.stderr,)
+level = NOTSET
+formatter = generic
+
+[formatter_generic]
+format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s
27 setup.cfg
View
@@ -0,0 +1,27 @@
+[nosetests]
+match=^test
+nocapture=1
+cover-package=wals3
+with-coverage=1
+cover-erase=1
+
+[compile_catalog]
+directory = wals3/locale
+domain = clld
+statistics = true
+
+[extract_messages]
+add_comments = TRANSLATORS:
+output_file = wals3/locale/wals3.pot
+width = 80
+
+[init_catalog]
+domain = clld
+input_file = wals3/locale/wals3.pot
+output_dir = wals3/locale
+
+[update_catalog]
+domain = clld
+input_file = wals3/locale/wals3.pot
+output_dir = wals3/locale
+previous = true
45 setup.py
View
@@ -0,0 +1,45 @@
+import os
+
+from setuptools import setup, find_packages
+
+here = os.path.abspath(os.path.dirname(__file__))
+README = open(os.path.join(here, 'README.txt')).read()
+CHANGES = open(os.path.join(here, 'CHANGES.txt')).read()
+
+requires = [
+ 'pyramid',
+ 'SQLAlchemy',
+ 'transaction',
+ 'pyramid_tm',
+ 'pyramid_debugtoolbar',
+ 'zope.sqlalchemy',
+ 'waitress',
+ ]
+
+setup(name='wals3',
+ version='0.0',
+ description='wals3',
+ long_description=README + '\n\n' + CHANGES,
+ classifiers=[
+ "Programming Language :: Python",
+ "Framework :: Pyramid",
+ "Topic :: Internet :: WWW/HTTP",
+ "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
+ ],
+ author='',
+ author_email='',
+ url='',
+ keywords='web wsgi bfg pylons pyramid',
+ packages=find_packages(),
+ include_package_data=True,
+ zip_safe=False,
+ test_suite='wals3',
+ install_requires=requires,
+ entry_points="""\
+ [paste.app_factory]
+ main = wals3:main
+ [console_scripts]
+ initialize_wals3_db = wals3.scripts.initializedb:main
+ """,
+ )
+
77 wals3/__init__.py
View
@@ -0,0 +1,77 @@
+from pyramid.config import Configurator
+from sqlalchemy import engine_from_config, desc
+from sqlalchemy.orm import joinedload
+from mako.template import Template
+from markupsafe import Markup
+
+from clld import interfaces
+from clld.web import datatables
+from clld.web.datatables.base import Col
+from clld.web.adapters import GeoJson
+
+from wals3.models import WalsLanguage, Genus, Family
+from wals3.adapters import GeoJsonFeature
+from wals3.maps import FeatureMap
+
+
+def _(s, *args, **kw):
+ return s
+
+_('Languages')
+
+
+class GenusCol(Col):
+ def order(self, direction):
+ return desc(Genus.name) if direction == 'desc' else Genus.name
+
+ def search(self, qs):
+ return Genus.name.contains(qs)
+
+ def format(self, item):
+ return item.genus.name
+
+
+class Languages(datatables.Languages):
+ def base_query(self, query):
+ return query.join(Genus).join(Family).options(joinedload(WalsLanguage.genus))
+
+ def col_defs(self):
+ cols = datatables.Languages.col_defs(self)
+ return cols[:2] + [GenusCol(self, 'genus')] + cols[2:]
+
+
+def main(global_config, **settings):
+ """ This function returns a Pyramid WSGI application.
+ """
+ settings['mako.directories'] = ['wals3:templates', 'clld:web/templates']
+ settings['clld.app_template'] = "wals3.mako"
+
+ config = Configurator(settings=settings)
+
+ #
+ # must add project specific translation dir first
+ #
+ config.add_translation_dirs('wals3:locale')
+
+ #
+ # then include clld, thereby adding the default translations
+ #
+ config.include('clld.web.app')
+
+ config.register_datatable('languages', Languages)
+ config.register_map('parameter', FeatureMap)
+
+ config.override_asset(
+ to_override='clld:web/templates/language/rdf.pt',
+ override_with='wals3:templates/language/rdf.pt')
+
+ config.register_adapter(
+ GeoJsonFeature,
+ interfaces.IParameter,
+ interfaces.IRepresentation,
+ GeoJson.mimetype)
+
+ config.add_static_view('static', 'static', cache_max_age=3600)
+ config.add_route('home', '/')
+ config.scan()
+ return config.make_wsgi_app()
15 wals3/adapters.py
View
@@ -0,0 +1,15 @@
+from clld.web.adapters import GeoJsonParameter
+
+
+class GeoJsonFeature(GeoJsonParameter):
+
+ def feature_properties(self, ctx, req, feature):
+ language, values = feature
+ val = list(values)[0]
+ if val.domainelement.id == req.params.get('domainelement'):
+ res = GeoJsonParameter.feature_properties(self, ctx, req, feature)
+ res['icon_type'] = val.domainelement.icon_id[:1]
+ res['icon_color'] = '#%s' % ''.join(2*c for c in val.domainelement.icon_id[1:])
+ res['value_numeric'] = val.domainelement.numeric
+ res['value_name'] = val.domainelement.name
+ return res
23 wals3/locale/en/LC_MESSAGES/wotw.po
View
@@ -0,0 +1,23 @@
+# English translations for PROJECT.
+# Copyright (C) 2012 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2012-11-11 17:31+0100\n"
+"PO-Revision-Date: 2012-11-11 17:30+0100\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: en <LL@li.org>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.0dev\n"
+
+#: wals3/__init__.py:13
+msgid "Languages"
+msgstr "WALS Languages"
+
23 wals3/locale/wals3.pot
View
@@ -0,0 +1,23 @@
+# Translations template for wals3.
+# Copyright (C) 2012 ORGANIZATION
+# This file is distributed under the same license as the wals3 project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: wals3 0.0\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2012-11-11 17:31+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 1.0dev\n"
+
+#: wals3/__init__.py:13
+msgid "Languages"
+msgstr ""
+
14 wals3/maps.py
View
@@ -0,0 +1,14 @@
+from clld.web.maps import ParameterMap, Map
+from clld.web.util.htmllib import HTML
+
+
+class FeatureMap(ParameterMap):
+ def get_layers(self):
+ res = []
+ for layer, de in zip(ParameterMap.get_layers(self), self.ctx.domain):
+ layer['marker'] = HTML.img(src=self.req.static_url('wals3:static/icons/' + de.icon_id + '.png'))
+ res.append(layer)
+ return res
+
+ def options(self):
+ return {'style_map': 'wals_feature'}
91 wals3/models.py
View
@@ -0,0 +1,91 @@
+from zope.interface import implementer
+from sqlalchemy import (
+ Column,
+ String,
+ Unicode,
+ Integer,
+ Boolean,
+ ForeignKey,
+ UniqueConstraint,
+)
+from sqlalchemy.orm import relationship, backref
+from sqlalchemy.ext.declarative import declared_attr
+from sqlalchemy.ext.hybrid import hybrid_property
+
+from clld import interfaces
+from clld.db.meta import Base, CustomModelMixin
+from clld.db.models.common import (
+ Language,
+ Parameter,
+ DomainElement,
+ Contribution,
+ IdNameDescriptionMixin,
+)
+
+
+class Family(Base, IdNameDescriptionMixin):
+ pass
+
+
+class Genus(Base, IdNameDescriptionMixin):
+ family_pk = Column(Integer, ForeignKey('family.pk'))
+ subfamily = Column(Unicode)
+ family = relationship(Family)
+
+
+class Area(Base, IdNameDescriptionMixin):
+ dbpedia_url = Column(String)
+
+
+#-----------------------------------------------------------------------------
+# specialized common mapper classes
+#-----------------------------------------------------------------------------
+@implementer(interfaces.ILanguage)
+class WalsLanguage(Language, CustomModelMixin):
+ pk = Column(Integer, ForeignKey('language.pk'), primary_key=True)
+
+ ascii_name = Column(String)
+ genus_pk = Column(Integer, ForeignKey('genus.pk'))
+ samples_100 = Column(Boolean, default=False)
+ samples_200 = Column(Boolean, default=False)
+
+ genus = relationship(Genus)
+
+
+@implementer(interfaces.IContribution)
+class Chapter(Contribution, CustomModelMixin):
+ """Contributions in WALS are chapters chapters. These comprise a set of features with
+ corresponding values and a descriptive text.
+ """
+ pk = Column(Integer, ForeignKey('contribution.pk'), primary_key=True)
+ #id = Column(Integer, unique=True)
+ blog_title = Column(Unicode)
+ area_pk = Column(Integer, ForeignKey('area.pk'))
+ area = relationship(Area)
+
+
+@implementer(interfaces.IParameter)
+class Feature(Parameter, CustomModelMixin):
+ """Parameters in WALS are called feature. They are always related to one chapter.
+ """
+ __table_args__ = (UniqueConstraint('contribution_pk', 'ordinal_qualifier'),)
+
+ pk = Column(Integer, ForeignKey('parameter.pk'), primary_key=True)
+ contribution_pk = Column(Integer, ForeignKey('contribution.pk'))
+ id = Column(String(5), unique=True)
+ blog_title = Column(String(50), unique=True)
+ chapter = relationship(Chapter)
+ ordinal_qualifier = Column(String)
+
+ @property
+ def sortkey(self):
+ return self.contribution_pk, self.ordinal_qualifier
+
+
+@implementer(interfaces.IDomainElement)
+class WalsValue(DomainElement, CustomModelMixin):
+ """All features in WALS have fixed lists of admissible values.
+ """
+ pk = Column(Integer, ForeignKey('domainelement.pk'), primary_key=True)
+ icon_id = Column(String(4))
+ numeric = Column(Integer)
1  wals3/scripts/__init__.py
View
@@ -0,0 +1 @@
+# package
120 wals3/scripts/initializedb.py
View
@@ -0,0 +1,120 @@
+from __future__ import unicode_literals
+import os
+import sys
+import transaction
+from collections import defaultdict
+
+from sqlalchemy import engine_from_config, create_engine
+
+from pyramid.paster import (
+ get_appsettings,
+ setup_logging,
+ )
+
+from clld.db.meta import (
+ DBSession,
+ VersionedDBSession,
+ Base,
+)
+from clld.db.models import common
+
+from wals3 import models
+
+
+DB = 'sqlite:////home/robert/old_projects/legacy/wals_pylons/trunk/wals2/db.sqlite'
+
+
+def usage(argv):
+ cmd = os.path.basename(argv[0])
+ print('usage: %s <config_uri>\n'
+ '(example: "%s development.ini")' % (cmd, cmd))
+ sys.exit(1)
+
+
+def main(argv=sys.argv):
+ if len(argv) != 2:
+ usage(argv)
+
+ old_db = create_engine(DB)
+
+ config_uri = argv[1]
+ setup_logging(config_uri)
+ settings = get_appsettings(config_uri)
+ engine = engine_from_config(settings, 'sqlalchemy.')
+ DBSession.configure(bind=engine)
+ Base.metadata.create_all(engine)
+ VersionedDBSession.configure(bind=engine)
+
+ data = defaultdict(dict)
+
+ def add(model, type, key, **kw):
+ new = model(**kw)
+ data[type][key] = new
+ VersionedDBSession.add(new)
+ return new
+
+ with transaction.manager:
+ for row in old_db.execute("select * from family"):
+ add(models.Family, 'family', row['id'], id=row['id'], name=row['name'], description=row['comment'])
+
+ for row in old_db.execute("select * from genus"):
+ genus = add(models.Genus, 'genus', row['id'], name=row['name'])
+ genus.family = data['family'][row['family_id']]
+
+ for row in old_db.execute("select * from language"):
+ kw = dict((key, row[key]) for key in ['id', 'name', 'latitude', 'longitude'])
+ lang = add(models.WalsLanguage, 'language', row['id'],
+ samples_100=row['samples_100'] != 0, samples_200=row['samples_200'] != 0, **kw)
+ lang.genus = data['genus'][row['genus_id']]
+
+ for row in old_db.execute("select * from author"):
+ add(common.Contributor, 'contributor', row['id'], name=row['name'], url=row['www'], id=row['id'], description=row['note'])
+ VersionedDBSession.flush()
+
+ for row in old_db.execute("select * from chapter"):
+ add(models.Chapter, 'contribution', row['id'], id=row['id'], name=row['name'])
+ VersionedDBSession.flush()
+
+ for row in old_db.execute("select * from feature"):
+ param = add(models.Feature, 'parameter', row['id'], id=row['id'], name=row['name'], ordinal_qualifier=row['id'][-1])
+ param.chapter = data['contribution'][row['chapter_id']]
+ VersionedDBSession.flush()
+
+ for row in old_db.execute("select * from value"):
+ desc = row['description']
+ if desc == 'SOV & NegV/VNeg':
+ if row['icon_id'] != 's9ff':
+ desc += ' (a)'
+ else:
+ desc += ' (b)'
+
+ domainelement = add(
+ models.WalsValue, 'domainelement', (row['feature_id'], row['numeric']),
+ id='%s-%s' % (row['feature_id'], row['numeric']),
+ name=desc, description=row['long_description'], icon_id=row['icon_id'], numeric=row['numeric'])
+ domainelement.parameter = data['parameter'][row['feature_id']]
+ VersionedDBSession.flush()
+
+ for row in old_db.execute("select * from datapoint"):
+ value = add(common.Value, 'value', row['id'], id=row['id'])
+ value.language = data['language'][row['language_id']]
+ value.domainelement = data['domainelement'][(row['feature_id'], row['value_numeric'])]
+ value.parameter = data['parameter'][row['feature_id']]
+ value.contribution = data['parameter'][row['feature_id']].chapter
+
+ VersionedDBSession.flush()
+
+ for row in old_db.execute("select * from author_chapter"):
+
+ new = common.ContributionContributor(
+ ord=row['order'],
+ primary=row['primary'] != 0,
+ contributor_pk=data['contributor'][row['author_id']].pk,
+ contribution_pk=data['contribution'][row['chapter_id']].pk)
+ VersionedDBSession.add(new)
+
+ lang.name = 'SPECIAL--' + lang.name
+
+
+if __name__ == '__main__':
+ main()
BIN  wals3/static/header.gif
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/a000.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/c000.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/c00d.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/c090.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/c6f3.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/c909.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/c99f.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/c9ff.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/ca00.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/cccc.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/cd00.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/cf40.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/cf60.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/cf6f.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/cfc0.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/cff0.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/cffc.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/cfff.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/d000.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/d00d.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/d090.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/d6f3.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/d909.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/d99f.png
View
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  wals3/static/icons/d9ff.png
View
Diff not rendered
BIN  wals3/static/icons/da00.png
View
Diff not rendered
BIN  wals3/static/icons/dccc.png
View
Diff not rendered
BIN  wals3/static/icons/dd00.png
View
Diff not rendered
BIN  wals3/static/icons/df40.png
View
Diff not rendered
BIN  wals3/static/icons/df60.png
View
Diff not rendered
BIN  wals3/static/icons/df6f.png
View
Diff not rendered
BIN  wals3/static/icons/dfc0.png
View
Diff not rendered
BIN  wals3/static/icons/dff0.png
View
Diff not rendered
BIN  wals3/static/icons/dffc.png
View
Diff not rendered
BIN  wals3/static/icons/dfff.png
View
Diff not rendered
BIN  wals3/static/icons/f000.png
View
Diff not rendered
BIN  wals3/static/icons/f00d.png
View
Diff not rendered
BIN  wals3/static/icons/f090.png
View
Diff not rendered
BIN  wals3/static/icons/f6f3.png
View
Diff not rendered
BIN  wals3/static/icons/f909.png
View
Diff not rendered
BIN  wals3/static/icons/f99f.png
View
Diff not rendered
BIN  wals3/static/icons/f9ff.png
View
Diff not rendered
BIN  wals3/static/icons/fa00.png
View
Diff not rendered
BIN  wals3/static/icons/fccc.png
View
Diff not rendered
BIN  wals3/static/icons/fd00.png
View
Diff not rendered
BIN  wals3/static/icons/ff40.png
View
Diff not rendered
BIN  wals3/static/icons/ff60.png
View
Diff not rendered
BIN  wals3/static/icons/ff6f.png
View
Diff not rendered
BIN  wals3/static/icons/ffc0.png
View
Diff not rendered
BIN  wals3/static/icons/fff0.png
View
Diff not rendered
BIN  wals3/static/icons/fffc.png
View
Diff not rendered
BIN  wals3/static/icons/ffff.png
View
Diff not rendered
BIN  wals3/static/icons/s000.png
View
Diff not rendered
BIN  wals3/static/icons/s00d.png
View
Diff not rendered
BIN  wals3/static/icons/s090.png
View
Diff not rendered
BIN  wals3/static/icons/s6f3.png
View
Diff not rendered
BIN  wals3/static/icons/s909.png
View
Diff not rendered
BIN  wals3/static/icons/s99f.png
View
Diff not rendered
BIN  wals3/static/icons/s9ff.png
View
Diff not rendered
BIN  wals3/static/icons/sa00.png
View
Diff not rendered
BIN  wals3/static/icons/sccc.png
View
Diff not rendered
BIN  wals3/static/icons/sd00.png
View
Diff not rendered
BIN  wals3/static/icons/sf40.png
View
Diff not rendered
BIN  wals3/static/icons/sf60.png
View
Diff not rendered
BIN  wals3/static/icons/sf6f.png
View
Diff not rendered
BIN  wals3/static/icons/sfc0.png
View
Diff not rendered
BIN  wals3/static/icons/sff0.png
View
Diff not rendered
BIN  wals3/static/icons/sffc.png
View
Diff not rendered
BIN  wals3/static/icons/sfff.png
View
Diff not rendered
BIN  wals3/static/icons/t000.png
View
Diff not rendered
BIN  wals3/static/icons/t00d.png
View
Diff not rendered
BIN  wals3/static/icons/t090.png
View
Diff not rendered
BIN  wals3/static/icons/t6f3.png
View
Diff not rendered
BIN  wals3/static/icons/t909.png
View
Diff not rendered
BIN  wals3/static/icons/t99f.png
View
Diff not rendered
BIN  wals3/static/icons/t9ff.png
View
Diff not rendered
BIN  wals3/static/icons/ta00.png
View
Diff not rendered
BIN  wals3/static/icons/tccc.png
View
Diff not rendered
BIN  wals3/static/icons/td00.png
View
Diff not rendered
BIN  wals3/static/icons/tf40.png
View
Diff not rendered
BIN  wals3/static/icons/tf60.png
View
Diff not rendered
BIN  wals3/static/icons/tf6f.png
View
Diff not rendered
BIN  wals3/static/icons/tfc0.png
View
Diff not rendered
BIN  wals3/static/icons/tff0.png
View
Diff not rendered
BIN  wals3/static/icons/tffc.png
View
Diff not rendered
BIN  wals3/static/icons/tfff.png
View
Diff not rendered
BIN  wals3/static/transparent.gif
View
Diff not rendered
929 wals3/static/wals.css
View
@@ -0,0 +1,929 @@
+/*
+ * general style for html elements:
+ */
+html, body
+{ color: #222222;
+ background-color: #dfe8cc;
+ font-family: "Trebuchet MS", "Lucida Sans Unicode", geneva, verdana, sans-serif;
+ font-size: 0.9em;
+ margin: 0;
+ padding: 0;
+ padding-top: 3px;
+ line-height: 1.5em;
+ }
+
+#home p { font-size: 110%}
+
+h1,h2,h3,h4,h5,h6 {
+ font-weight: bold;
+ font-family: "Trebuchet MS", "Lucida Sans Unicode", geneva, verdana, sans-serif;
+}
+h1 {
+ font-size: 150%;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+h2 { font-size: 130%; }
+h3 { font-size: 110%; }
+
+*:link { text-decoration: none; color: #782a07; }
+a:hover { text-decoration: none; color: #ab3a05; }
+*:visited { text-decoration: none; color: #4a1c08; }
+
+/*
+ * style applied based on class attributes:
+ */
+/* for pages with long text paragraphs */
+div.narrow { margin-left: 5%; margin-right: 5%; }
+
+/* navigation */
+.nav ul
+{ font-size: 90%;
+ list-style: none;
+ margin: 0;
+ text-align: right;
+ }
+.nav li, .nav li span input
+{ border-right: 1px solid #ab3a05;
+ display: inline;
+ padding: 0 .75em;
+ white-space: nowrap;
+ }
+.nav li.last {
+ border-right: none;
+ }
+
+/* color coded typed links */
+a.Feature { text-decoration: none; color: #a81eaf; }
+a.Feature:hover { text-decoration: none; color: #d38ed7; }
+a.Feature:visited { text-decoration: none; color: #400044; }
+
+a.Chapter { text-decoration: none; color: #a81eaf; }
+a.Chapter:hover { text-decoration: none; color: #400044; }
+a.Chapter:visited { text-decoration: none; color: #d38ed7; }
+
+a.Supplement { text-decoration: none; color: #a81eaf; }
+a.Supplement:hover { text-decoration: none; color: #400044; }
+a.Supplement:visited { text-decoration: none; color: #d38ed7; }
+
+a.Reference { text-decoration: none; color: #782a07; }
+a.Reference:hover { text-decoration: none; color: #ab3a05; }
+a.Reference:visited { text-decoration: none; color: #4a1c08; }
+
+a.Country { text-decoration: none; color: #782a07; }
+a.Country:hover { text-decoration: none; color: #ab3a05; }
+a.Country:visited { text-decoration: none; color: #4a1c08; }
+
+a.Language { text-decoration: none; color: #80a532; }
+a.Language:hover { text-decoration: underline; }
+a.Language:visited { text-decoration: none; color: #2d4007; }
+
+.Genus { font-style: italic; }
+a.Genus { text-decoration: none; color: #80a532; }
+a.Genus:hover { text-decoration: underline; }
+a.Genus:visited { text-decoration: none; color: #2d4007; }
+
+a.Family { text-decoration: none; color: #80a532; }
+a.Family:hover { text-decoration: underline; }
+a.Family:visited { text-decoration: none; color: #2d4007; }
+
+.ext-link
+{ background: url(../../images/extlink.gif) no-repeat 0 58%;
+ padding-left: 18px;
+ }
+* html .ext-link { background-position: 0 .35em } /* IE hack, see #937 */
+
+/*
+ * sidebars and boxed content
+ */
+.sidebar {
+ float: right;
+ clear: right;
+ width: 38%;
+ margin-left: 1em;
+ margin-right: 0;
+ margin-top: 0.3em;
+ margin-bottom: 0.3em;
+}
+.narrow-main { width: 58%; }
+
+.narrow-sidebar {
+ float: right;
+ clear: right;
+ width: 30%;
+ margin-left: 1em;
+ margin-right: 0;
+ margin-top: 0.3em;
+ margin-bottom: 0.3em;
+}
+
+.box, .box-white {
+ margin-top: 0.2em;
+ margin-bottom: 0.2em;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ border: 1px solid #eacec0;
+}
+.box { background: #fbf5f2; }
+.box-white { background: white; }
+
+.border { border: 1px solid #eacec0; }
+
+/*
+ * definition lists
+ */
+dl.table {
+ width: 100%;
+ list-style: none;
+ padding: none;
+}
+dl.table dt {
+ width: 13em;
+ float: left;
+ margin: 0 0 0 0;
+ padding: .5em;
+ font-weight: bold;
+}
+dl.table dd {
+ float: left;
+ margin: 0 0 0 0;
+ padding: .5em;
+}
+
+/*
+ * selection by id: we list the elements identified by id according
+ * to the template (or script) which may create them.
+ */
+
+/*----------------------------------------------------------------------------
+ * standard components of each page (created by the master template)
+ */
+#header
+{ width: 98%;
+ width: 96%;
+ padding-top: 0.5em;
+ padding-left: 1%;
+ padding-right: 1%;
+ height: 85px;
+ margin-top: 20px;
+ margin-bottom: 0;
+ margin-left: 1%;
+ margin-right: 1%;
+ background-color: white;
+}
+#header a img { border: none; float: left; }
+
+#footer a img { border: none; }
+#footer
+{ border-top: 0px none;
+ color: #222222;
+ background-color: white;
+ padding-left: 1%;
+ padding-right: 1%;
+ padding-bottom: 5px;
+ padding-top: 5px;
+ font-size: 16px;
+ font-weight: bold;
+ text-align: center;
+ width: 96%;
+ margin: 0 auto 1em auto;
+ }
+#footerContent
+{ padding-top: 1em;
+ clear: both;
+ width: 100%;
+ margin-bottom: 20px;
+}
+#footerContent .left
+{ text-align: left;
+ float: left;
+ width: 250px;
+ padding-left: 2em;
+}
+#footerContent .right
+{ text-align: right;
+ float: right;
+ width: 15em;
+ padding-right: 2em;
+}
+#license {
+ padding-top: 10px;
+}
+
+.message {
+ border: 1px solid #a81eaf;
+ background: #e9c7ab;
+ color: #400044;
+ text-align: center;
+ margin: 0 auto 0 auto;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ font-weight: bold;
+ }
+
+#content
+{ color: #222222;
+ background-color: white;
+ width: 96%;
+ margin: 0 auto 0 auto;
+ padding-left: 1%;
+ padding-right: 1%;
+ padding-top: 5px;
+ padding-bottom: 5px;
+}
+
+#mainnav
+{ background-color: #80a532;
+ font-family: "Trebuchet MS", "Lucida Sans Unicode", geneva, verdana, sans-serif;
+ color: white;
+ font-size: 110%;
+ margin-bottom: .33em;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ padding-right: 10px;
+ }
+#mainnav li a
+{ text-decoration: none;
+ color: white;
+ }
+#mainnav li
+{ border-right: none;
+ padding: .2em 0;
+}
+#mainnav :link, #mainnav :visited
+{ color: white;
+ padding: .2em 20px;
+ }
+#mainnav :link:hover, #mainnav :visited:hover
+{ background-color: white;
+ color: #2d4007;
+ }
+
+/*
+ * created by templates from util.xhtml
+ */
+#contextnav
+{ background-color:#bfd298;
+ font-family: "Trebuchet MS", "Lucida Sans Unicode", geneva, verdana, sans-serif;
+ font-weight: bold;
+ height: 1.5em;
+ padding-top: 0.2em;
+ font-size:105%;
+ margin-bottom: 0.5em;
+ }
+
+/*----------------------------------------------------------------------------
+ * created by templates from map.xhtml
+ */
+#Map { border: 1px solid #EACEC0; }
+
+.resizeable { margin-bottom: 15px; overflow: hidden; height: 99%; width: 99%; }
+.small-map-container { height: 300px; width: 100%; }
+.medium-map-container { height: 400px; width: 750px; }
+.big-map-container { height: 600px; width: 100%; }
+
+#mapUrl { margin-top: 0.5em; }
+#mapUrl input { width: 100%; }
+
+/* the language display on map pages */
+div.ld-map { clear: right; width: 100%; }
+.ld-map ul { list-style: none; }
+.ld-map ul li {
+ display: inline;
+ border-right: 1px dotted #666;
+ margin-left: 0.5em;
+}
+
+.info-window { width: auto; }
+.info-window-references { font-size: 80%; }
+.info-window-dplink { }
+
+/*----------------------------------------------------------------------------
+ * created by templates from util.xhtml
+ */
+#SelectMap { border: 1px solid #EACEC0; height: 300px; width: 50%; }
+
+
+/*----------------------------------------------------------------------------
+ * created by templates from util.xhtml
+ */
+#valueDisplay td.feature-name {
+ border: 1px solid #EACEC0;
+ vertical-align: middle;
+ text-align: center; }
+#valueDisplay td.value-description { border: 1px solid #EACEC0; }
+#valueDisplay td { margin: 0.1em 0.3em 0.1em 0.3em; padding: 0.2em 0.5em 0.2em 0.5em; }
+#valueDisplay td td { margin: 3px 3px 3px 3px; padding: 2px 2px 2px 2px; }
+
+/*--------------------------------------------------------------------------*/
+
+#toc td.line { border-bottom: 1px dotted #999; }
+
+
+
+
+/*#actions { border: 1px solid #EACEC0; }*/
+
+
+.authors .author { font-size: 100%; font-style: normal; font-weight: normal; }
+span.authors { font-size: 100%; }
+
+.referencedIn ul
+{ list-style: none;
+ margin: 0;
+ text-align: left;
+ }
+.referencedIn li
+{ display: inline;
+ padding: 0 .75em;
+ }
+
+span.reference { margin-left: 0.5em; }
+span.note { margin-left: 0.5em; }
+
+
+
+#value-selection { float: right; width: 48%; }
+
+
+
+/* commented backslash hack for mac-ie5 \*/
+dl.table dt { clear: both; }
+/* end hack */
+
+/* home */
+/* feed control */
+div.gfc-resultsHeader div.gfc-title {
+ font-weight: bold;
+ color: #2d4007;
+}
+div.gfc-resultsRoot {
+ border-bottom: 1px solid #eacec0;
+ margin-bottom: 0.5em;
+}
+div.gfc-result div.gf-title {
+ margin-top: 0.5em;
+ height: auto;
+ overflow-x: auto;
+ overflow-y: auto;
+}
+
+div.gfc-resultsRoot .gf-author, div.gfc-resultsRoot .gf-spacer { display: none; }
+div.gfc-resultsRoot .gf-relativePublishedDate { color: #666; }
+
+/* search box */
+.gsc-ad-box {color: #AAAAAA; margin-top: 5em; border-top: solid 1px;}
+.gs-result .gs-title, div.gs-result div.gs-title a.gs-title { text-decoration: none; color: #782a07; }
+.gs-result .gs-title *, div.gs-result div.gs-title a.gs-title b { text-decoration: none; color: #782a07; }
+div.gs-visibleUrl { color: #80a532; }
+
+/*
+ * autocomplete
+ */
+.yui-skin-sam .yui-ac-content li.yui-ac-highlight {
+ background-color: #a81eaf;
+ color: white;
+}
+
+.yui-skin-sam .yui-ac-content .prehighlight {
+ background-color: #e9c7eb;
+}
+
+/* examples */
+div.Example table td {margin-right: 2px; background-color: #eee;}
+table.example td {margin-right: 2px; background-color: #eee;}
+
+/* IGTs in examples */
+table.IGT {margin-top: 0.6em; margin-bottom: 0.4em; }
+table.IGT td {margin-right: 2px; background-color: #eee;}
+table.IGT caption {
+ caption-side: bottom;
+ font-size: 0.9em;
+ font-style: italic;
+}
+
+/*
+ * data table
+ */
+.yui-skin-sam .yui-dt caption { display: none; }
+
+.yui-skin-sam .yui-dt th,
+.yui-skin-sam .yui-dt th a {
+ font-weight:normal;text-decoration:none;color:#222222; /* header text */
+ vertical-align:bottom;
+}
+.yui-skin-sam .yui-dt th {
+ margin:0;padding:0;
+ border:none;
+ border-right:1px solid #CBCBCB;/* inner column border */
+}
+
+.yui-skin-sam .yui-dt tr.yui-dt-first td {
+ border-top:1px solid #7F7F7F; /* tbody top border */
+}
+
+.yui-skin-sam .yui-dt th .yui-dt-liner {
+ white-space:nowrap;
+}
+.yui-skin-sam .yui-dt-liner {
+ margin:0;padding:0;
+ padding:4px 10px 4px 10px; /* cell padding */
+}
+.yui-skin-sam .yui-dt-coltarget {
+ width: 5px;
+ background-color: red;
+}
+.yui-skin-sam .yui-dt td {
+ margin:0;padding:0;
+ border:none;
+ border-right:1px solid #CBCBCB; /* inner column border */
+ text-align:left;
+}
+.yui-skin-sam .yui-dt-list td {
+ border-right:none; /* disable inner column border in list mode */
+}
+.yui-skin-sam .yui-dt-resizer {
+ width:6px;
+}
+
+/* mask */
+.yui-skin-sam .yui-dt-mask {
+ background-color: #000;
+ opacity: .25;
+ *filter: alpha(opacity=25); /* Set opacity in IE */
+}
+
+/* messaging */
+.yui-skin-sam .yui-dt-message {
+ background-color:#FFF;
+}
+
+/* scrolling */
+.yui-skin-sam .yui-dt-scrollable table {border:none;}
+.yui-skin-sam .yui-dt-scrollable .yui-dt-hd {border-left:1px solid #7F7F7F;border-top:1px solid #7F7F7F;border-right:1px solid #7F7F7F;}
+.yui-skin-sam .yui-dt-scrollable .yui-dt-bd {border-left:1px solid #7F7F7F;border-bottom:1px solid #7F7F7F;border-right:1px solid #7F7F7F;background-color:#FFF;}
+.yui-skin-sam .yui-dt-scrollable .yui-dt-data tr.yui-dt-last td {border-bottom:1px solid #7F7F7F;}
+
+/* sortable columns */
+.yui-skin-sam thead .yui-dt-sortable {
+ cursor:pointer;
+}
+.yui-skin-sam th.yui-dt-asc,
+/*
+.yui-skin-sam th.yui-dt-desc {
+ background:url(../../../../assets/skins/sam/sprite.png) repeat-x 0 -100px;
+}
+*/
+.yui-skin-sam thead tr th { border-bottom: 1px solid #bfd298; }
+
+.yui-skin-sam th.yui-dt-desc { background-color: white; }
+
+.yui-skin-sam th.yui-dt-sortable .yui-dt-label {
+ margin-right:10px;
+}
+.yui-skin-sam th.yui-dt-asc .yui-dt-liner {
+ background:url(../images/bullet_arrow_up.png) no-repeat right; /* sorted header gradient */
+}
+.yui-skin-sam th.yui-dt-desc .yui-dt-liner {
+ background:url(../images/bullet_arrow_down.png) no-repeat right; /* sorted header gradient */
+}
+
+/* striping */
+.yui-skin-sam tr.yui-dt-even { background-color:#FFF; } /* white */
+.yui-skin-sam tr.yui-dt-odd { background-color:#eee; }
+.yui-skin-sam tr.yui-dt-even td.yui-dt-asc,
+.yui-skin-sam tr.yui-dt-even td.yui-dt-desc { background-color:#eee; } /* light blue sorted */
+.yui-skin-sam tr.yui-dt-odd td.yui-dt-asc,
+.yui-skin-sam tr.yui-dt-odd td.yui-dt-desc { background-color:#ddd; } /* dark blue sorted */
+
+
+/* highlighting */
+.yui-skin-sam th.yui-dt-highlighted,
+.yui-skin-sam th.yui-dt-highlighted a {
+ background-color:#B2D2FF; /* med blue hover */
+}
+.yui-skin-sam tr.yui-dt-highlighted,
+.yui-skin-sam tr.yui-dt-highlighted td.yui-dt-asc,
+.yui-skin-sam tr.yui-dt-highlighted td.yui-dt-desc,
+.yui-skin-sam tr.yui-dt-even td.yui-dt-highlighted,
+.yui-skin-sam tr.yui-dt-odd td.yui-dt-highlighted {
+ cursor:pointer;
+ background-color:#B2D2FF; /* med blue hover */
+}
+
+/* enable highlighting in list mode */
+.yui-skin-sam .yui-dt-list th.yui-dt-highlighted,
+.yui-skin-sam .yui-dt-list th.yui-dt-highlighted a {
+ background-color:#B2D2FF; /* med blue hover */
+}
+.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted,
+.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-asc,
+.yui-skin-sam .yui-dt-list tr.yui-dt-highlighted td.yui-dt-desc,
+.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-highlighted,
+.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-highlighted {
+ cursor:pointer;
+ background-color:#B2D2FF; /* med blue hover */
+}
+
+/* selection */
+.yui-skin-sam th.yui-dt-selected,
+.yui-skin-sam th.yui-dt-selected a {
+ background-color:#446CD7; /* bright blue selected cell */
+}
+.yui-skin-sam tr.yui-dt-selected td,
+.yui-skin-sam tr.yui-dt-selected td.yui-dt-asc,
+.yui-skin-sam tr.yui-dt-selected td.yui-dt-desc {
+ background-color:#426FD9; /* bright blue selected row */
+ color:#FFF;
+}
+.yui-skin-sam tr.yui-dt-even td.yui-dt-selected,
+.yui-skin-sam tr.yui-dt-odd td.yui-dt-selected {
+ background-color:#446CD7; /* bright blue selected cell */
+ color:#FFF;
+}
+
+/* enable selection in list mode */
+.yui-skin-sam .yui-dt-list th.yui-dt-selected,
+.yui-skin-sam .yui-dt-list th.yui-dt-selected a {
+ background-color:#446CD7; /* bright blue selected cell */
+}
+.yui-skin-sam .yui-dt-list tr.yui-dt-selected td,
+.yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-asc,
+.yui-skin-sam .yui-dt-list tr.yui-dt-selected td.yui-dt-desc {
+ background-color:#426FD9; /* bright blue selected row */
+ color:#FFF;
+}
+.yui-skin-sam .yui-dt-list tr.yui-dt-even td.yui-dt-selected,
+.yui-skin-sam .yui-dt-list tr.yui-dt-odd td.yui-dt-selected {
+ background-color:#446CD7; /* bright blue selected cell */
+ color:#FFF;
+}
+
+/* pagination */
+.yui-skin-sam .yui-dt-paginator {
+ display:block;margin:6px 0;white-space:nowrap;
+}
+.yui-skin-sam .yui-dt-paginator .yui-dt-first,
+.yui-skin-sam .yui-dt-paginator .yui-dt-last,
+.yui-skin-sam .yui-dt-paginator .yui-dt-selected {
+ padding:2px 6px;
+}
+.yui-skin-sam .yui-dt-paginator a.yui-dt-first,
+.yui-skin-sam .yui-dt-paginator a.yui-dt-last {
+ text-decoration:none;
+}
+.yui-skin-sam .yui-dt-paginator .yui-dt-previous,
+.yui-skin-sam .yui-dt-paginator .yui-dt-next {
+ display:none;
+}
+.yui-skin-sam a.yui-dt-page {
+ border:1px solid #CBCBCB;
+ padding:2px 6px;
+ text-decoration:none;
+ background-color:#fff
+}
+.yui-skin-sam .yui-dt-selected {
+ border:1px solid #fff;
+ background-color:#fff;
+}
+
+
+/*
+ * styling yui panels
+ * see http://developer.yahoo.com/yui/examples/container/panelskin1.html
+ * for details
+ */
+#MetadataPanel.yui-panel .hd { font-size: 140%; }
+#MetadataPanel.yui-panel .bd { font-size: 130%; }
+#MetadataDisplay.yui-panel .hd { font-size: 140%; }
+#MetadataDisplay.yui-panel .bd { font-size: 130%; }
+
+
+/* refdb */
+div.pagination
+{ text-align: center;
+ padding-bottom: 1em;
+ padding-top: 0.5em;
+ }
+div.pagination ul { display: inline; }
+div.pagination ul li
+{ display: inline;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ list-style: none;
+ }
+div.pagination p { display: none; }
+div.pagination a { text-decoration: underline; }
+
+div.pagination a.prev
+{ background: url(../../wals/images/arrow_prev.gif) no-repeat 100% 58%;
+ padding-right: 18px;
+ }
+* html div.pagination a.prev { background-position: 100% .35em } /* IE hack, see #937 */
+
+div.pagination a.next
+{ background: url(../../wals/images/arrow_next.gif) no-repeat 0 58%;
+ padding-left: 18px;
+ }
+* html div.pagination a.next { background-position: 0 .35em } /* IE hack, see #937 */
+
+
+
+
+label.fieldlabel { font-weight: bold; }
+
+.hide { display: none; }
+.show { display: block; }
+
+td.number { text-align: right; }
+
+
+
+table.three-cols td.first-char {
+ width: 1.5em;
+ font-weight: bold;
+ vertical-align: top;
+ padding-left: 1em;
+ padding-right: 0.5em;
+}
+table.three-cols td.entry { }
+td.numeric { text-align: right; }
+
+td.icon
+{ width: 24px;
+ height: 26px;
+ text-align: center;
+ vertical-align: middle;
+ }
+td.languages
+{ text-align: left;
+ vertical-align: middle;
+ padding-left: 0.3em;
+}
+th.icon { background-color: #fbf5f2; }
+
+td.value-description { background-color: #fbf5f2; }
+td.feature-name
+{ background-color: #fbf5f2;
+ font-size: 110%;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+}
+td.value-description, td.feature-name
+{ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-left: 0.2em;
+ padding-right: 0.2em;
+ }
+
+div.icon-select
+{ position: absolute;
+/* background-color: #FFFFFF; */
+ text-align: left;
+/* border: 1px solid #222222;*/
+ overflow: auto;
+ z-index: 100;
+/* width: 422px;*/
+ display: none;
+ }
+/*div.icon-select table { width: 420px; }*/
+div.icon-select table td { margin: 3px 3px 3px 3px; padding: 2px 2px 2px 2px; }
+div.icon-select td.close { text-align: right; }
+
+tr.genus-head th { border: 1px solid #eacec0; }
+tr.genus-head th.icon {
+ text-align: center;
+ vertical-align: middle;
+}
+tr.genus-head th.label {
+ text-align: left;
+ vertical-align: middle;
+}
+tr.genus-head th.icon div {
+ width: 100%;
+ text-align: center;
+ vertical-align: middle;
+}
+
+
+.close { color: #bb0000; cursor: pointer; }
+div.close { text-align: right; }
+
+table.suggest { background-color: white; }
+table.suggest td { cursor: pointer; background-color: white; }
+
+ol.breadcrumbs { list-style-type: none; margin-left: 0px; padding-left: 0px; text-align: left;}
+ol.breadcrumbs li { display: inline; }
+ol.breadcrumbs li:before { content: " > "; }
+
+/* chapter index */
+#toc th {
+ text-align: left;
+ font-size: 120%;
+ font-variant: small-caps;
+}
+
+/* chapter descriptions */
+#chapter-meta {
+ font-family: "Charis SIL","Lucida Sans Unicode","Lucida Grande","Arial Unicode MS";
+ margin-top: 1em;
+ margin-bottom: 0.5em;
+}
+.meta dt, #chapter-meta dt {
+ font-size: 110%;
+ font-weight: bold;
+}
+.meta dd, #chapter-meta dd {
+ margin-left: 2em;
+ margin-top: 0.2em;
+ margin-bottom: 0.2em;
+}
+
+#description { font-family: "Charis SIL","Lucida Sans Unicode","Lucida Grande","Arial Unicode MS"; }
+#description p { font-size: 110%; line-height: 1.5; }
+#description h2 { font-size: 140%; }
+#description h3 { font-size: 120%; font-style: normal;}
+p.example-start + div { margin-left: 2em; margin-top: 1em; }
+/*#description div.caption-figure { text-align: center; } do we still need this? */
+p.example-start + * { background-color: #dfe8cc; }
+
+table.alt-names th { text-align: left; margin-right: 1em; }
+table.alt-names td { margin-bottom: 0.5em; }
+
+ul.alt-names, #ci { list-style: none; margin: 0; padding: 0; }
+ul.alt-names li, #ci li
+{ display: inline;
+ margin-right: 1em;
+ white-space: nowrap;
+ }
+#ci, #ld li { margin-bottom: 0.5em; }
+
+/*table.features { width: 55%; }*/
+table.features td { vertical-align: top; padding-left: 0.5em; padding-right: 0.5em; }
+/*table.features td.value { width: 33%; vertical-align: top; }
+table.features td.references { width: 33%; vertical-align: top; }
+table.features td { padding-left: 0.5em; padding-right: 0.5em; }*/
+table.features th.feature { text-align: left; }
+table.features th.value { text-align: left; }
+table.features th.references { text-align: left; }
+table.features th.area, th.continent
+{ background-color: #dfe8cc;
+ margin-top: 0.2em;
+ }
+tr.odd { background-color: #eee; }
+
+table#features caption { display: none; }
+
+/* layout of the box with suggestions */
+.suggest_link
+{ background-color: #FFFFFF;
+ padding: 2px 6px 2px 6px;
+ }
+.suggest_link_over
+{ background-color: #3366CC;
+ padding: 2px 6px 2px 6px;
+ }
+
+#actions p { margin: 2px; }
+#actions label { width: 20em; margin-right: 2px; }
+#actions fieldset legend { display: none; }
+#actions .field { margin: 1px; }
+#actions .buttons { text-align: right; }
+/* #queryData { display: none; } */
+#actions dl, #actions dt { margin: 0; }
+#actions dt { font-style: italic; }
+#actions dd { margin-top: 0; margin-bottom: 0; }
+#actions select { font-size: 85%; }
+
+#results { width: 68%; }
+#results table.record-header, #results h3
+{ color: #222;
+ border: 1px solid #eacec0;
+ }
+#results table.record-header
+{ padding-right: 0.5em;
+ }
+#results table.record-header h2
+{ margin: 0;
+ }
+#results table.record-header td
+{ padding-top: 0.1em;
+ padding-bottom: 0.2em;
+ }
+#results h3 {
+ margin-bottom: 0.1em;
+ margin-right: 0.6em;
+ }
+#results h2
+{ padding-left: 4px;
+ font-size: 100%;
+ }
+#results h3
+{ padding-top: 3px;
+ margin-top: 0.1em;
+ padding-bottom: 3px;
+ padding-left: 4px;
+ font-weight: bold;
+ font-style: italic;
+ text-align: left;
+ }
+#results caption { display: none; }
+#results td.field
+{ width: 10em;
+ border: 1px solid #eacec0;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-left: 4px;
+ vertical-align: top;
+ text-align: left;
+ }
+#results dl { margin: 0; }
+#results dt
+{ margin: 0;
+ font-style: italic;
+ }
+#noresults
+{ text-align: center;
+ margin-top: 2em;
+ margin-bottom: 2em;
+ }
+
+span.booktitle {font-style: italic;}
+
+/*div.formatList { font-size: 90%; }*/
+div.formatList a { padding-right: 0.3em; }
+table.form { width: 100%; }
+table.form td {
+ margin-left: 0.5em;
+ margin-right: 0.5em;
+}
+th.form, td.form {
+ text-align: left;
+ vertical-align: middle;
+}
+.formButton { margin-top: 1em; margin-right: 1em }
+
+/* styling for the dragdrop sorting of icon layers */
+ul.draglist {
+ width: 100%;
+ background: #f7f7f7;
+ border: 1px solid gray;
+ list-style: none;
+ margin:0;
+ padding:0;
+}
+
+ul.draglist li {
+ margin: 1px;
+ padding-left: 0.5em;
+ cursor: move;
+}
+
+ul.draglist_alt {
+ position: relative;
+ list-style: none;
+ margin:0;
+ padding:0;
+ /*
+ The bottom padding provides the cushion that makes the empty
+ list targetable. Alternatively, we could leave the padding
+ off by default, adding it when we detect that the list is empty.
+ */
+ padding-bottom:20px;
+}
+
+ul.draglist_alt li {
+ margin: 1px;
+ cursor: move;
+}
+
+li.dd_list {
+ background-color: #bfd298;
+ border:1px solid #2d4007;
+}
+
+/* styling for the iconsize slider */
+#iconsize { margin-top: -10; }
+#iconsize td { height: 50px; text-align: center; vertical-align: middle; }
+#iconsize td.icon { width: 50px; }
+
+/*
+.yui-resize-handle {z-index: 1000;}
+div.yui-resize-handle-b { height: 15px; background: white url(../exhibit/api/images/down-arrow.png) center bottom no-repeat;}
+div.yui-resize-handle-r { height: 100%; width: 15px; background: white url(../exhibit/api/images/right-arrow.png) right center no-repeat;}
+*/
+
+#genealogy ol {list-style: none; margin-left: 3em;}
+#genealogy ul {list-style: none;}
+#genealogy ul li:before { content: "["; }
+#genealogy ul li:after { content: "]"; }
+#genealogy ul li {display: inline;}
+
+#legend td.number { border-left: 1px solid #bfd298; }
+#legend th.number { border-left: 1px solid #bfd298; }
13 wals3/static/wals3.css
View
@@ -0,0 +1,13 @@
+.navbar-inner {
+ background-color: #80a532;
+ background-image: none;
+ background-image: none;
+ background-image: none;
+ background-image: none;
+ background-image: none;
+ background-image: none;
+ background-repeat: no-repeat;
+ filter: none;
+ border: none !important;
+ margin-top: 5px;
+}
44 wals3/static/wals3.js
View
@@ -0,0 +1,44 @@
+WALS = {}
+
+WALS.make_style_map = function (name) {
+ var styles = new OpenLayers.StyleMap({
+ "default": {
+ pointRadius: 8,
+ strokeColor: "black",
+ strokeWidth: 1,
+ fillColor: "${icon_color}",
+ fillOpacity: 0.9,
+ graphicXOffset: 50,
+ graphicYOffset: 50,
+ graphicZIndex: 20
+ },
+ "temporary": {
+ pointRadius: 12,
+ fillOpacity: 1,
+ label : "${name}",
+ fontColor: "black",
+ fontSize: "12px",
+ fontFamily: "Courier New, monospace",
+ fontWeight: "bold",
+ labelAlign: "cm",
+ labelOutlineColor: "white",
+ labelOutlineWidth: 3
+ },
+ "select": {
+ label: "",
+ pointRadius: 10
+ }
+ }),
+ wals_icons = {
+ "s": {graphicName: "square"}, // square
+ "d": {graphicName: "square", rotation: 45}, // diamond
+ "t": {graphicName: "triangle"},
+ "f": {graphicName: "triangle", rotation: 180},
+ "c": {graphicName: "circle"}
+ };
+ styles.addUniqueValueRules("default", "icon_type", wals_icons);
+ styles.addUniqueValueRules("select", "icon_type", wals_icons);
+ return styles;
+}
+
+CLLD.Map.style_maps["wals_feature"] = WALS.make_style_map("wals_feature");
336 wals3/templates/home.mako
View
@@ -0,0 +1,336 @@
+<%inherit file="wals.mako"/>
+
+ <a class="ajax" href="http://localhost:6543">
+ Open as dialog
+ </a>
+
+<div>
+<table cellpadding="0" cellspacing="0" border="0" class="display" id="example" width="100%">
+ <thead>
+ <tr>
+ <th>Rendering engine</th>
+ <th>Browser</th>
+ <th>Platform(s)</th>
+ <th>Engine version</th>
+ <th>CSS grade</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="odd gradeX">
+ <td>Trident</td>
+ <td>Internet
+ Explorer 4.0</td>
+ <td>Win 95+</td>
+ <td class="center"> 4</td>
+ <td class="center">X</td>
+ </tr>
+ <tr class="even gradeC">
+ <td>Trident</td>
+ <td>Internet
+ Explorer 5.0</td>
+ <td>Win 95+</td>
+ <td class="center">5</td>
+ <td class="center">C</td>
+ </tr>
+ <tr class="odd gradeA">
+ <td>Trident</td>
+ <td>Internet
+ Explorer 5.5</td>
+ <td>Win 95+</td>
+ <td class="center">5.5</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Webkit</td>
+ <td>Safari 3.0</td>
+ <td>OSX.4+</td>
+ <td class="center">522.1</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Webkit</td>
+ <td>OmniWeb 5.5</td>
+ <td>OSX.4+</td>
+ <td class="center">420</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Webkit</td>
+ <td>iPod Touch / iPhone</td>
+ <td>iPod</td>
+ <td class="center">420.1</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Webkit</td>
+ <td>S60</td>
+ <td>S60</td>
+ <td class="center">413</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera 7.0</td>
+ <td>Win 95+ / OSX.1+</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera 7.5</td>
+ <td>Win 95+ / OSX.2+</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera 8.0</td>
+ <td>Win 95+ / OSX.2+</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera 8.5</td>
+ <td>Win 95+ / OSX.2+</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera 9.0</td>
+ <td>Win 95+ / OSX.3+</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera 9.2</td>
+ <td>Win 88+ / OSX.3+</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera 9.5</td>
+ <td>Win 88+ / OSX.3+</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Opera for Wii</td>
+ <td>Wii</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Nokia N800</td>
+ <td>N800</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Presto</td>
+ <td>Nintendo DS browser</td>
+ <td>Nintendo DS</td>
+ <td class="center">8.5</td>
+ <td class="center">C/A<sup>1</sup></td>
+ </tr>
+ <tr class="gradeC">
+ <td>KHTML</td>
+ <td>Konqureror 3.1</td>
+ <td>KDE 3.1</td>
+ <td class="center">3.1</td>
+ <td class="center">C</td>
+ </tr>
+ <tr class="gradeA">
+ <td>KHTML</td>
+ <td>Konqureror 3.3</td>
+ <td>KDE 3.3</td>
+ <td class="center">3.3</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeA">
+ <td>KHTML</td>
+ <td>Konqureror 3.5</td>
+ <td>KDE 3.5</td>
+ <td class="center">3.5</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeX">
+ <td>Tasman</td>
+ <td>Internet Explorer 4.5</td>
+ <td>Mac OS 8-9</td>
+ <td class="center">-</td>
+ <td class="center">X</td>
+ </tr>
+ <tr class="gradeC">
+ <td>Tasman</td>
+ <td>Internet Explorer 5.1</td>
+ <td>Mac OS 7.6-9</td>
+ <td class="center">1</td>
+ <td class="center">C</td>
+ </tr>
+ <tr class="gradeC">
+ <td>Tasman</td>
+ <td>Internet Explorer 5.2</td>
+ <td>Mac OS 8-X</td>
+ <td class="center">1</td>
+ <td class="center">C</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Misc</td>
+ <td>NetFront 3.1</td>
+ <td>Embedded devices</td>
+ <td class="center">-</td>
+ <td class="center">C</td>
+ </tr>
+ <tr class="gradeA">
+ <td>Misc</td>
+ <td>NetFront 3.4</td>
+ <td>Embedded devices</td>
+ <td class="center">-</td>
+ <td class="center">A</td>
+ </tr>
+ <tr class="gradeX">
+ <td>Misc</td>
+ <td>Dillo 0.8</td>
+ <td>Embedded devices</td>
+ <td class="center">-</td>
+ <td class="center">X</td>
+ </tr>
+ <tr class="gradeX">
+ <td>Misc</td>
+ <td>Links</td>
+ <td>Text only</td>
+ <td class="center">-</td>
+ <td class="center">X</td>
+ </tr>
+ <tr class="gradeX">
+ <td>Misc</td>
+ <td>Lynx</td>
+ <td>Text only</td>
+ <td class="center">-</td>
+ <td class="center">X</td>
+ </tr>
+ <tr class="gradeC">
+ <td>Misc</td>
+ <td>IE Mobile</td>
+ <td>Windows Mobile 6</td>
+ <td class="center">-</td>
+ <td class="center">C</td>
+ </tr>
+ <tr class="gradeC">
+ <td>Misc</td>
+ <td>PSP browser</td>
+ <td>PSP</td>
+ <td class="center">-</td>
+ <td class="center">C</td>
+ </tr>
+ <tr class="gradeU">
+ <td>Other browsers</td>
+ <td>All others</td>
+ <td>-</td>
+ <td class="center">-</td>
+ <td class="center">U</td>
+ </tr>
+ </tbody>
+ <tfoot>
+ <tr>
+ <th>Rendering engine</th>
+ <th>Browser</th>
+ <th>Platform(s)</th>
+ <th>Engine version</th>
+ <th>CSS grade</th>
+ </tr>
+ </tfoot>
+</table>
+ </div>
+
+<div id="accordion">
+ <h3>Section 1</h3>
+ <div>
+ <p>
+ Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer
+ ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit
+ amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut
+ odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate.
+ </p>
+ </div>
+ <h3>Section 2</h3>
+ <div>
+ <p>
+ Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet
+ purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor
+ velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In
+ suscipit faucibus urna.
+ </p>
+ </div>
+ <h3>Section 3</h3>
+ <div>
+ <p>
+ Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis.
+ Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero
+ ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis
+ lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui.
+ </p>
+ <ul>
+ <li>List item one</li>
+ <li>List item two</li>
+ <li>List item three</li>
+ </ul>
+ </div>
+ <h3>Section 4</h3>
+ <div>
+ <p>
+ Cras dictum. Pellentesque habitant morbi tristique senectus et netus
+ et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in
+ faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia
+ mauris vel est.
+ </p>
+ <p>
+ Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus.
+ Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
+ inceptos himenaeos.
+ </p>
+ </div>
+</div>
+
+<%block name="javascript">
+ $(function (){
+ $('a.ajax').click(function() {
+ var url = this.href;
+ // show a spinner or something via css
+ var dialog = $('<div style="display:none" class="loading"></div>').appendTo('body');
+ // open the dialog
+ dialog.dialog({
+ // add a close listener to prevent adding multiple divs to the document
+ close: function(event, ui) {
+ // remove div with all data and events
+ dialog.remove();
+ },
+ modal: true
+ });
+ // load remote content
+ dialog.load(
+ url,
+ {}, // omit this param object to issue a GET request instead a POST request, otherwise you may provide post parameters within the object
+ function (responseText, textStatus, XMLHttpRequest) {
+ // remove the loading class
+ dialog.removeClass('loading');
+ }
+ );
+ //prevent the browser to follow the link
+ return false;
+ });
+
+ $( "#accordion" ).accordion();
+
+ $('#example').dataTable({
+ "bJQueryUI": true,
+ "sPaginationType": "full_numbers"
+ });
+ });
+</%block>
13 wals3/templates/language/rdf.pt
View
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+ xmlns:owl="http://www.w3.org/2002/07/owl#"
+ xmlns:gold="http://purl.org/linguistics/gold/"
+ xmlns:dcterms="http://purl.org/dc/terms/"
+ xmlns:georss="http://www.georss.org/georss/11"
+ xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
+ xmlns:skos="http://www.w3.org/2004/02/skos/core#"
+ xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
+ <gold:Language rdf:about="http://wals.info/languoid/lect/wals_code_bma">
+ </gold:Language>
+</rdf:RDF>
1  wals3/templates/language/snippet_html.mako
View
@@ -0,0 +1 @@
+<h2>${ctx.name}</h2>
31 wals3/templates/wals3.mako
View
@@ -0,0 +1,31 @@
+<%inherit file="app.mako"/>
+
+##
+## define app-level blocks:
+##
+
+<%block name="head">
+ <link href="${request.static_url('wals3:static/wals3.css')}" rel="stylesheet"/>
+ <script src="${request.static_url('wals3:static/wals3.js')}"></script>
+</%block>
+
+##<%block name="header">WALS</%block>
+
+<%block name="header">
+ <a href="${request.route_url('home')}">
+ <img src="${request.static_url('wals3:static/header.gif')}"/>
+ </a>
+</%block>
+
+
+<%block name="footer">
+ <table style="width: 100%; border-top: 1px solid black;">
+ <tr>
+ <td style="width: 33%;">published</td>
+ <td style="width: 33%; text-align: center;">license</td>
+ <td style="width: 33%; text-align: right;">disclaimer</td>
+ </tr>
+ </table>
+</%block>
+
+${next.body()}
32 wals3/tests.py
View
@@ -0,0 +1,32 @@
+import unittest
+import transaction
+
+from pyramid import testing
+