Marshall 2020-03-11 14:13:18 -04:00
commit 27c62bb4e8
12 changed files with 243 additions and 196 deletions

View File

@ -64,7 +64,7 @@ tools.gzip.on: True
tools.gzip.mime_types: ['text/html', 'application/xhtml+xml', 'application/atom+xml'] tools.gzip.mime_types: ['text/html', 'application/xhtml+xml', 'application/atom+xml']
tools.I18nTool.on: True tools.I18nTool.on: True
tools.I18nTool.default: 'en_US' tools.I18nTool.default: 'en'
tools.I18nTool.mo_dir: CherryPyApp.install_dir + '/i18n' tools.I18nTool.mo_dir: CherryPyApp.install_dir + '/i18n'
tools.I18nTool.domain: 'messages' tools.I18nTool.domain: 'messages'

View File

@ -39,7 +39,7 @@ class CoverPages (object):
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" xml:base="http://www.gutenberg.org"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" xml:base="http://www.gutenberg.org">
<head> <head>
<title>Cover Flow</title> <title>Cover Flow</title>
<style> <!--<style>
.cover-thumb { .cover-thumb {
display: inline-block; display: inline-block;
background-position: center; background-position: center;
@ -53,7 +53,7 @@ class CoverPages (object):
width: 210px; width: 210px;
height: 310px; height: 310px;
} }
</style> </style>-->
</head> </head>
<body><div>""" <body><div>"""
@ -69,6 +69,7 @@ class CoverPages (object):
style="background-image: url({url})"> </a>\n""".format ( style="background-image: url({url})"> </a>\n""".format (
url = url, href = href, title = title, size = size) url = url, href = href, title = title, size = size)
return (s + '</div></body></html>\n').encode ('utf-8') return (s + '</div></body></html>\n').encode ('utf-8')
def index (self, count, size, order, **kwargs): def index (self, count, size, order, **kwargs):

View File

@ -129,9 +129,7 @@ class HTMLFormatter (XMLishFormatter):
""" Produce HTML output. """ """ Produce HTML output. """
CONTENT_TYPE = 'text/html; charset=UTF-8' CONTENT_TYPE = 'text/html; charset=UTF-8'
DOCTYPE = ('html', DOCTYPE = 'html5'
'-//W3C//DTD XHTML+RDFa 1.0//EN',
'http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd')
def __init__ (self): def __init__ (self):
super (HTMLFormatter, self).__init__ () super (HTMLFormatter, self).__init__ ()
@ -139,7 +137,7 @@ class HTMLFormatter (XMLishFormatter):
def get_serializer (self): def get_serializer (self):
# return BaseFormatter.XHTMLSerializer (doctype = self.DOCTYPE, strip_whitespace = False) # return BaseFormatter.XHTMLSerializer (doctype = self.DOCTYPE, strip_whitespace = False)
return genshi.output.XHTMLSerializer (doctype = self.DOCTYPE, strip_whitespace = False) return genshi.output.HTMLSerializer (doctype = self.DOCTYPE, strip_whitespace = False)
def fix_dc (self, dc, os): def fix_dc (self, dc, os):
@ -195,16 +193,14 @@ class MobileFormatter (XMLishFormatter):
""" Produce HTML output suitable for mobile devices. """ """ Produce HTML output suitable for mobile devices. """
CONTENT_TYPE = mt.xhtml + '; charset=UTF-8' CONTENT_TYPE = mt.xhtml + '; charset=UTF-8'
DOCTYPE = ('html', DOCTYPE = 'html5'
'-//WAPFORUM//DTD XHTML Mobile 1.2//EN',
'http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd')
def __init__ (self): def __init__ (self):
super (MobileFormatter, self).__init__ () super (MobileFormatter, self).__init__ ()
def get_serializer (self): def get_serializer (self):
return genshi.output.XMLSerializer (doctype = self.DOCTYPE, strip_whitespace = False) return genshi.output.HTMLSerializer (doctype = self.DOCTYPE, strip_whitespace = False)
def fix_dc (self, dc, os): def fix_dc (self, dc, os):

View File

@ -16,7 +16,7 @@ Genshi = "*"
html5lib = "*" html5lib = "*"
isodate = "*" isodate = "*"
#language-selector = "*" #language-selector = "*"
libgutenberg = "*" libgutenberg = ">=0.6.0"
netaddr = "*" netaddr = "*"
oauth = "*" oauth = "*"
oauthlib = "*" oauthlib = "*"

307
Pipfile.lock generated
View File

@ -1,7 +1,7 @@
{ {
"_meta": { "_meta": {
"hash": { "hash": {
"sha256": "e572637bcd906d1c709a30dc233b8b835861fb78f13dbd1733908631bd2f811a" "sha256": "1c8d4c9db2126e962c51f6fba4570f7a576f86aef814be09a8f21765fcc1bbc3"
}, },
"pipfile-spec": 6, "pipfile-spec": 6,
"requires": { "requires": {
@ -18,25 +18,18 @@
"default": { "default": {
"babel": { "babel": {
"hashes": [ "hashes": [
"sha256:af92e6106cb7c55286b25b38ad7695f8b4efb36a90ba483d7f7a6628c46158ab", "sha256:1aac2ae2d0d8ea368fa90906567f5c08463d98ade155c0c4bfedd6a0f7160e38",
"sha256:e86135ae101e31e2c8ec20a4e0c5220f4eed12487d5cf3f78be7e98d3a57fc28" "sha256:d670ea0b10f8b723672d3a6abeb87b565b244da220d76b4dba1b66269ec152d4"
], ],
"index": "pypi", "index": "pypi",
"version": "==2.7.0" "version": "==2.8.0"
},
"backports.functools-lru-cache": {
"hashes": [
"sha256:9d98697f088eb1b0fa451391f91afb5e3ebde16bbdb272819fd091151fda4f1a",
"sha256:f0b0e4eba956de51238e17573b7087e852dfe9854afd2e9c873f73fc0ca0a6dd"
],
"version": "==1.5"
}, },
"certifi": { "certifi": {
"hashes": [ "hashes": [
"sha256:046832c04d4e752f37383b628bc601a7ea7211496b4638f6514d0e5b9acc4939", "sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3",
"sha256:945e3ba63a0b9f577b1395204e13c3a231f9bc0223888be653286534e5873695" "sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f"
], ],
"version": "==2019.6.16" "version": "==2019.11.28"
}, },
"chardet": { "chardet": {
"hashes": [ "hashes": [
@ -48,26 +41,26 @@
}, },
"cheroot": { "cheroot": {
"hashes": [ "hashes": [
"sha256:1593fa2a42b18744ac485aadf5fec4a29ebfee00ba3937a2269b8ffc94447879", "sha256:5b525b3e4a755adf78070ab54c1821fb860d4255a9317dba2b88eb2df2441cff",
"sha256:f6a85e005adb5bc5f3a92b998ff0e48795d4d98a0fbb7edde47a7513d4100601" "sha256:5d73fff8f99e6a35325a22f61e6a942cb7d378ac9ce3621f08b560720dfe4a7f"
], ],
"version": "==6.5.5" "version": "==8.2.1"
}, },
"cherrypy": { "cherrypy": {
"hashes": [ "hashes": [
"sha256:3c7b27fd1af4964434d821cd139b8d05c8f7fe4f37ae146fddb3f861d80a1da7", "sha256:26efbd146d6863c50db26abf549e776fbe552d5518cd98b74f854921fea87fd0",
"sha256:6585c19b5e4faffa3613b5bf02c6a27dcc4c69a30d302aba819639a2af6fa48b" "sha256:63b2f61c38c469112145bd4e4e2385cd18f3233799e7a33bd447df468916d22b"
], ],
"index": "pypi", "index": "pypi",
"version": "==18.1.1" "version": "==18.5.0"
}, },
"colorama": { "colorama": {
"hashes": [ "hashes": [
"sha256:05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d", "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff",
"sha256:f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48" "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"
], ],
"index": "pypi", "index": "pypi",
"version": "==0.4.1" "version": "==0.4.3"
}, },
"genshi": { "genshi": {
"hashes": [ "hashes": [
@ -92,6 +85,14 @@
], ],
"version": "==2.8" "version": "==2.8"
}, },
"importlib-resources": {
"hashes": [
"sha256:6e2783b2538bd5a14678284a3962b0660c715e5a0f10243fd5e00a4b5974f50b",
"sha256:d3279fd0f6f847cced9f7acc19bd3e5df54d34f93a2e7bb5f238f81545787078"
],
"markers": "python_version < '3.7'",
"version": "==1.0.2"
},
"isodate": { "isodate": {
"hashes": [ "hashes": [
"sha256:2e364a3d5759479cdb2d37cce6b9376ea504db2ff90252a2e5b7cc89cc9ff2d8", "sha256:2e364a3d5759479cdb2d37cce6b9376ea504db2ff90252a2e5b7cc89cc9ff2d8",
@ -100,55 +101,78 @@
"index": "pypi", "index": "pypi",
"version": "==0.6.0" "version": "==0.6.0"
}, },
"jaraco.classes": {
"hashes": [
"sha256:116429c2047953f525afdcae165475c4589c7b14870e78b2d068ecb01018827e",
"sha256:c38698ff8ef932eb33d91c0e8fc192ad7c44ecee03f7f585afd4f35aeaef7aab"
],
"version": "==3.1.0"
},
"jaraco.collections": {
"hashes": [
"sha256:a7889f28c80c4875bd6256d9924e8526dacfef22cd7b80ff8469b4d312f9f144",
"sha256:be570ef4f2e7290b757449395238fa63d70a9255574624e73c5ff9f1ee554721"
],
"version": "==3.0.0"
},
"jaraco.functools": { "jaraco.functools": {
"hashes": [ "hashes": [
"sha256:35ba944f52b1a7beee8843a5aa6752d1d5b79893eeb7770ea98be6b637bf9345", "sha256:1db5ed25d8bb6cafc48b1c575743e1b4847a5ca7fca72497e89723832aa52529",
"sha256:e9e377644cee5f6f9128b4dab1631fca74981236e95a255f80e4292bcd2b5284" "sha256:5cb0eea0f254584241c519641328a4d4ec2001a86c3cd6d17a8fd228493f6d97"
], ],
"version": "==2.0" "version": "==3.0.0"
},
"jaraco.text": {
"hashes": [
"sha256:c87569c9afae14f71b2e1c57f316770ab6981ab675d9c602be1c7981161bacdd",
"sha256:e5078b1126cc0f166c7859aa75103a56c0d0f39ebcafc21695615472e0f810ec"
],
"version": "==3.2.0"
}, },
"libgutenberg": { "libgutenberg": {
"hashes": [ "hashes": [
"sha256:498cdcb2d4e1c4749bba9bd86fc08819637741c8093dc98a39d9f14b645a379c" "sha256:5caca5f52676c67506b18082eae35b672098c6f9686856c58ce3686ba8ec8490"
], ],
"index": "pypi", "index": "pypi",
"version": "==0.3.2" "version": "==0.6.0"
}, },
"lxml": { "lxml": {
"hashes": [ "hashes": [
"sha256:06c7616601430aa140a69f97e3116308fffe0848f543b639a5ec2e8920ae72fd", "sha256:00ac0d64949fef6b3693813fe636a2d56d97a5a49b5bbb86e4cc4cc50ebc9ea2",
"sha256:177202792f9842374a8077735c69c41a4282183f7851443d2beb8ee310720819", "sha256:0571e607558665ed42e450d7bf0e2941d542c18e117b1ebbf0ba72f287ad841c",
"sha256:19317ad721ceb9e39847d11131903931e2794e447d4751ebb0d9236f1b349ff2", "sha256:0e3f04a7615fdac0be5e18b2406529521d6dbdb0167d2a690ee328bef7807487",
"sha256:36d206e62f3e5dbaafd4ec692b67157e271f5da7fd925fda8515da675eace50d", "sha256:13cf89be53348d1c17b453867da68704802966c433b2bb4fa1f970daadd2ef70",
"sha256:387115b066c797c85f9861a9613abf50046a15aac16759bc92d04f94acfad082", "sha256:217262fcf6a4c2e1c7cb1efa08bd9ebc432502abc6c255c4abab611e8be0d14d",
"sha256:3ce1c49d4b4a7bc75fb12acb3a6247bb7a91fe420542e6d671ba9187d12a12c2", "sha256:223e544828f1955daaf4cefbb4853bc416b2ec3fd56d4f4204a8b17007c21250",
"sha256:4d2a5a7d6b0dbb8c37dab66a8ce09a8761409c044017721c21718659fa3365a1", "sha256:277cb61fede2f95b9c61912fefb3d43fbd5f18bf18a14fae4911b67984486f5d",
"sha256:58d0a1b33364d1253a88d18df6c0b2676a1746d27c969dc9e32d143a3701dda5", "sha256:3213f753e8ae86c396e0e066866e64c6b04618e85c723b32ecb0909885211f74",
"sha256:62a651c618b846b88fdcae0533ec23f185bb322d6c1845733f3123e8980c1d1b", "sha256:4690984a4dee1033da0af6df0b7a6bde83f74e1c0c870623797cec77964de34d",
"sha256:69ff21064e7debc9b1b1e2eee8c2d686d042d4257186d70b338206a80c5bc5ea", "sha256:4fcc472ef87f45c429d3b923b925704aa581f875d65bac80f8ab0c3296a63f78",
"sha256:7060453eba9ba59d821625c6af6a266bd68277dce6577f754d1eb9116c094266", "sha256:61409bd745a265a742f2693e4600e4dbd45cc1daebe1d5fad6fcb22912d44145",
"sha256:7d26b36a9c4bce53b9cfe42e67849ae3c5c23558bc08363e53ffd6d94f4ff4d2", "sha256:678f1963f755c5d9f5f6968dded7b245dd1ece8cf53c1aa9d80e6734a8c7f41d",
"sha256:83b427ad2bfa0b9705e02a83d8d607d2c2f01889eb138168e462a3a052c42368", "sha256:6c6d03549d4e2734133badb9ab1c05d9f0ef4bcd31d83e5d2b4747c85cfa21da",
"sha256:923d03c84534078386cf50193057aae98fa94cace8ea7580b74754493fda73ad", "sha256:6e74d5f4d6ecd6942375c52ffcd35f4318a61a02328f6f1bd79fcb4ffedf969e",
"sha256:b773715609649a1a180025213f67ffdeb5a4878c784293ada300ee95a1f3257b", "sha256:7b4fc7b1ecc987ca7aaf3f4f0e71bbfbd81aaabf87002558f5bc95da3a865bcd",
"sha256:baff149c174e9108d4a2fee192c496711be85534eab63adb122f93e70aa35431", "sha256:7ed386a40e172ddf44c061ad74881d8622f791d9af0b6f5be20023029129bc85",
"sha256:bca9d118b1014b4c2d19319b10a3ebed508ff649396ce1855e1c96528d9b2fa9", "sha256:8f54f0924d12c47a382c600c880770b5ebfc96c9fd94cf6f6bdc21caf6163ea7",
"sha256:ce580c28845581535dc6000fc7c35fdadf8bea7ccb57d6321b044508e9ba0685", "sha256:ad9b81351fdc236bda538efa6879315448411a81186c836d4b80d6ca8217cdb9",
"sha256:d34923a569e70224d88e6682490e24c842907ba2c948c5fd26185413cbe0cd96", "sha256:bbd00e21ea17f7bcc58dccd13869d68441b32899e89cf6cfa90d624a9198ce85",
"sha256:dd9f0e531a049d8b35ec5e6c68a37f1ba6ec3a591415e6804cbdf652793d15d7", "sha256:c3c289762cc09735e2a8f8a49571d0e8b4f57ea831ea11558247b5bdea0ac4db",
"sha256:ecb805cbfe9102f3fd3d2ef16dfe5ae9e2d7a7dfbba92f4ff1e16ac9784dbfb0", "sha256:cf4650942de5e5685ad308e22bcafbccfe37c54aa7c0e30cd620c2ee5c93d336",
"sha256:ede9aad2197a0202caff35d417b671f5f91a3631477441076082a17c94edd846", "sha256:cfcbc33c9c59c93776aa41ab02e55c288a042211708b72fdb518221cc803abc8",
"sha256:ef2d1fc370400e0aa755aab0b20cf4f1d0e934e7fd5244f3dd4869078e4942b9", "sha256:e301055deadfedbd80cf94f2f65ff23126b232b0d1fea28f332ce58137bcdb18",
"sha256:f2fec194a49bfaef42a548ee657362af5c7a640da757f6f452a35da7dd9f923c" "sha256:ebbfe24df7f7b5c6c7620702496b6419f6a9aa2fd7f005eb731cc80d7b4692b9",
"sha256:eff69ddbf3ad86375c344339371168640951c302450c5d3e9936e98d6459db06",
"sha256:f6ed60a62c5f1c44e789d2cf14009423cb1646b44a43e40a9cf6a21f077678a1"
], ],
"version": "==4.3.4" "version": "==4.4.2"
}, },
"more-itertools": { "more-itertools": {
"hashes": [ "hashes": [
"sha256:2112d2ca570bb7c3e53ea1a35cd5df42bb0fd10c45f0fb97178679c3c03d64c7", "sha256:b84b238cce0d9adad5ed87e745778d20a3f8487d0f0cb8b8a586816c7496458d",
"sha256:c3e4748ba1aad8dba30a4886b0b1a2004f9a863837b8654e7059eebf727afa5a" "sha256:c833ef592a0324bcc6a60e48440da07645063c453880c9477ceb22490aec1564"
], ],
"version": "==7.0.0" "version": "==8.0.2"
}, },
"netaddr": { "netaddr": {
"hashes": [ "hashes": [
@ -167,50 +191,46 @@
}, },
"oauthlib": { "oauthlib": {
"hashes": [ "hashes": [
"sha256:0ce32c5d989a1827e3f1148f98b9085ed2370fc939bf524c9c851d8714797298", "sha256:bee41cc35fcca6e988463cacc3bcb8a96224f470ca547e697b604cc697b2f889",
"sha256:3e1e14f6cde7e5475128d30e97edc3bfb4dc857cb884d8714ec161fdbb3b358e" "sha256:df884cd6cbe20e32633f1db1072e9356f53638e4361bef4e8b03c9127c9328ea"
], ],
"index": "pypi", "index": "pypi",
"version": "==3.0.1" "version": "==3.1.0"
}, },
"pillow": { "pillow": {
"hashes": [ "hashes": [
"sha256:15c056bfa284c30a7f265a41ac4cbbc93bdbfc0dfe0613b9cb8a8581b51a9e55", "sha256:0a628977ac2e01ca96aaae247ec2bd38e729631ddf2221b4b715446fd45505be",
"sha256:1a4e06ba4f74494ea0c58c24de2bb752818e9d504474ec95b0aa94f6b0a7e479", "sha256:4d9ed9a64095e031435af120d3c910148067087541131e82b3e8db302f4c8946",
"sha256:1c3c707c76be43c9e99cb7e3d5f1bee1c8e5be8b8a2a5eeee665efbf8ddde91a", "sha256:54ebae163e8412aff0b9df1e88adab65788f5f5b58e625dc5c7f51eaf14a6837",
"sha256:1fd0b290203e3b0882d9605d807b03c0f47e3440f97824586c173eca0aadd99d", "sha256:5bfef0b1cdde9f33881c913af14e43db69815c7e8df429ceda4c70a5e529210f",
"sha256:24114e4a6e1870c5a24b1da8f60d0ba77a0b4027907860188ea82bd3508c80eb", "sha256:5f3546ceb08089cedb9e8ff7e3f6a7042bb5b37c2a95d392fb027c3e53a2da00",
"sha256:258d886a49b6b058cd7abb0ab4b2b85ce78669a857398e83e8b8e28b317b5abb", "sha256:5f7ae9126d16194f114435ebb79cc536b5682002a4fa57fa7bb2cbcde65f2f4d",
"sha256:33c79b6dd6bc7f65079ab9ca5bebffb5f5d1141c689c9c6a7855776d1b09b7e8", "sha256:62a889aeb0a79e50ecf5af272e9e3c164148f4bd9636cc6bcfa182a52c8b0533",
"sha256:367385fc797b2c31564c427430c7a8630db1a00bd040555dfc1d5c52e39fcd72", "sha256:7406f5a9b2fd966e79e6abdaf700585a4522e98d6559ce37fc52e5c955fade0a",
"sha256:3c1884ff078fb8bf5f63d7d86921838b82ed4a7d0c027add773c2f38b3168754", "sha256:8453f914f4e5a3d828281a6628cf517832abfa13ff50679a4848926dac7c0358",
"sha256:44e5240e8f4f8861d748f2a58b3f04daadab5e22bfec896bf5434745f788f33f", "sha256:87269cc6ce1e3dee11f23fa515e4249ae678dbbe2704598a51cee76c52e19cda",
"sha256:46aa988e15f3ea72dddd81afe3839437b755fffddb5e173886f11460be909dce", "sha256:875358310ed7abd5320f21dd97351d62de4929b0426cdb1eaa904b64ac36b435",
"sha256:74d90d499c9c736d52dd6d9b7221af5665b9c04f1767e35f5dd8694324bd4601", "sha256:8ac6ce7ff3892e5deaab7abaec763538ffd011f74dc1801d93d3c5fc541feee2",
"sha256:809c0a2ce9032cbcd7b5313f71af4bdc5c8c771cb86eb7559afd954cab82ebb5", "sha256:91b710e3353aea6fc758cdb7136d9bbdcb26b53cefe43e2cba953ac3ee1d3313",
"sha256:85d1ef2cdafd5507c4221d201aaf62fc9276f8b0f71bd3933363e62a33abc734", "sha256:9d2ba4ed13af381233e2d810ff3bab84ef9f18430a9b336ab69eaf3cd24299ff",
"sha256:8c3889c7681af77ecfa4431cd42a2885d093ecb811e81fbe5e203abc07e0995b", "sha256:a62ec5e13e227399be73303ff301f2865bf68657d15ea50b038d25fc41097317",
"sha256:9218d81b9fca98d2c47d35d688a0cea0c42fd473159dfd5612dcb0483c63e40b", "sha256:ab76e5580b0ed647a8d8d2d2daee170e8e9f8aad225ede314f684e297e3643c2",
"sha256:9aa4f3827992288edd37c9df345783a69ef58bd20cc02e64b36e44bcd157bbf1", "sha256:bf4003aa538af3f4205c5fac56eacaa67a6dd81e454ffd9e9f055fff9f1bc614",
"sha256:9d80f44137a70b6f84c750d11019a3419f409c944526a95219bea0ac31f4dd91", "sha256:bf598d2e37cf8edb1a2f26ed3fb255191f5232badea4003c16301cb94ac5bdd0",
"sha256:b7ebd36128a2fe93991293f997e44be9286503c7530ace6a55b938b20be288d8", "sha256:c18f70dc27cc5d236f10e7834236aff60aadc71346a5bc1f4f83a4b3abee6386",
"sha256:c4c78e2c71c257c136cdd43869fd3d5e34fc2162dc22e4a5406b0ebe86958239", "sha256:c5ed816632204a2fc9486d784d8e0d0ae754347aba99c811458d69fcdfd2a2f9",
"sha256:c6a842537f887be1fe115d8abb5daa9bc8cc124e455ff995830cc785624a97af", "sha256:dc058b7833184970d1248135b8b0ab702e6daa833be14035179f2acb78ff5636",
"sha256:cf0a2e040fdf5a6d95f4c286c6ef1df6b36c218b528c8a9158ec2452a804b9b8", "sha256:ff3797f2f16bf9d17d53257612da84dd0758db33935777149b3334c01ff68865"
"sha256:cfd28aad6fc61f7a5d4ee556a997dc6e5555d9381d1390c00ecaf984d57e4232",
"sha256:dca5660e25932771460d4688ccbb515677caaf8595f3f3240ec16c117deff89a",
"sha256:de7aedc85918c2f887886442e50f52c1b93545606317956d65f342bd81cb4fc3",
"sha256:e6c0bbf8e277b74196e3140c35f9a1ae3eafd818f7f2d3a15819c49135d6c062"
], ],
"index": "pypi", "index": "pypi",
"version": "==6.0.0" "version": "==7.0.0"
}, },
"portend": { "portend": {
"hashes": [ "hashes": [
"sha256:19dc27bfb3c72471bd30a235a4d5fbefef8a7e31cab367744b5d87a205e7bfd9", "sha256:600dd54175e17e9347e5f3d4217aa8bcf4bf4fa5ffbc4df034e5ec1ba7cdaff5",
"sha256:d2dca12e585ce29fc357b31ce424a27c16e2d485029252bbf8ddcc9696207976" "sha256:62dd00b94a6a55fbf0320365fbdeba37f0d1fe14d613841037dc4780bedfda8f"
], ],
"version": "==2.5" "version": "==2.6"
}, },
"psycopg2": { "psycopg2": {
"hashes": [ "hashes": [
@ -250,19 +270,19 @@
}, },
"pyparsing": { "pyparsing": {
"hashes": [ "hashes": [
"sha256:1873c03321fc118f4e9746baf201ff990ceb915f433f23b395f5580d1840cb2a", "sha256:4c830582a84fb022400b85429791bc551f1f4871c33f23e44f353119e92f969f",
"sha256:9b6323ef4ab914af344ba97510e966d64ba91055d6b9afa6b30799340e89cc03" "sha256:c342dccb5250c08d45fd6f8b4a559613ca603b57498511740e65cd11a2e7dcec"
], ],
"index": "pypi", "index": "pypi",
"version": "==2.4.0" "version": "==2.4.6"
}, },
"pytz": { "pytz": {
"hashes": [ "hashes": [
"sha256:303879e36b721603cc54604edcac9d20401bdbe31e1e4fdee5b9f98d5d31dfda", "sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d",
"sha256:d747dd3d23d77ef44c6a3526e274af6efeb0a6f1afd5a69ba4d5be4098c8e141" "sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be"
], ],
"index": "pypi", "index": "pypi",
"version": "==2019.1" "version": "==2019.3"
}, },
"qrcode": { "qrcode": {
"hashes": [ "hashes": [
@ -282,20 +302,30 @@
}, },
"regex": { "regex": {
"hashes": [ "hashes": [
"sha256:1c70ccb8bf4ded0cbe53092e9f56dcc9d6b0efcf6e80b6ef9b0ece8a557d6635", "sha256:08047f4b31254489316b489c24983d72c0b9d520da084b8c624f45891a9c6da2",
"sha256:2948310c01535ccb29bb600dd033b07b91f36e471953889b7f3a1e66b39d0c19", "sha256:08d042155592c24cbdb81158a99aeeded4493381a1aba5eba9def6d29961042c",
"sha256:2ab13db0411cb308aa590d33c909ea4efeced40188d8a4a7d3d5970657fe73bc", "sha256:13901ac914de7a7e58a92f99c71415e268e88ac4be8b389d8360c38e64b2f1c5",
"sha256:38e6486c7e14683cd1b17a4218760f0ea4c015633cf1b06f7c190fb882a51ba7", "sha256:15b6f7e10f764c5162242a7db89da51218a38299415ba5e70f235a6a83c53b94",
"sha256:80dde4ff10b73b823da451687363cac93dd3549e059d2dc19b72a02d048ba5aa", "sha256:46d01bb4139e7051470037f8b9a5b90c48cb77a3d307c2621bf3791bfae4d9d8",
"sha256:84daedefaa56320765e9c4d43912226d324ef3cc929f4d75fa95f8c579a08211", "sha256:52814a8423d52a7e0f070dbb79f7bdfce5221992b881f83bad69f8daf4b831c3",
"sha256:b98e5876ca1e63b41c4aa38d7d5cc04a736415d4e240e9ae7ebc4f780083c7d5", "sha256:6d999447f77b1b638ea620bde466b958144af90ac2e9b1f23b98a79ced14ce3f",
"sha256:ca4f47131af28ef168ff7c80d4b4cad019cb4cabb5fa26143f43aa3dbd60389c", "sha256:7391eeee49bb3ce895ca43479eaca810f0c2608556711fa02a82075768f81a37",
"sha256:cf7838110d3052d359da527372666429b9485ab739286aa1a11ed482f037a88c", "sha256:79530d60a8644f72f78834c01a2d70a60be110e2f4a0a612b78da23ef60c2730",
"sha256:dd4e8924915fa748e128864352875d3d0be5f4597ab1b1d475988b8e3da10dd7", "sha256:841056961d441f05b949d9003e7f2b5d51a11dd52d8bd7c0a5325943b6a0ea6b",
"sha256:f2c65530255e4010a5029eb11138f5ecd5aa70363f57a3444d83b3253b0891be" "sha256:895f95344182b4ecb84044910e62ad33ca63a7e7b447c7ba858d24e9f1aad939",
"sha256:93e797cf16e07b315413d1157b5ce7a7c2b28b2b95768e25c0ccd290443661ad",
"sha256:a4677dc8245f1127b70fa79fb7f15a61eae0fee36ae15cbbe017207485fe9a5c",
"sha256:b2faf1dce478c0ca1c92575bdc48b7afdce3a887a02afb6342fae476af41bbe2",
"sha256:bcd9bcba67ae8d1e1b21426ea7995f7ca08260bea601ba15e13e5ca8588208ef",
"sha256:d47a89e6029852c88fff859dbc9a11dcec820413b4c2510e80ced1c99c3e79ea",
"sha256:dd69d165bee099b02d122d1e0dd55a85ebf9a65493dcd17124b628db9edfc833",
"sha256:e77f64a3ae8b9a555e170a3908748b4e2ccd0c58f8385f328baf8fc70f9ea497",
"sha256:ec75e8baa576aed6065b615a8f8e91a05e42b492b24ffd16cbb075ad62fb9185",
"sha256:ed75b64c6694bbe840b3340191b2039f633fd1ec6fc567454e47d7326eda557f",
"sha256:ef85a6a15342559bed737dc16dfb1545dc043ca5bf5bce6bff4830f0e7a74395"
], ],
"index": "pypi", "index": "pypi",
"version": "==2019.6.8" "version": "==2020.1.7"
}, },
"repoze.lru": { "repoze.lru": {
"hashes": [ "hashes": [
@ -315,11 +345,11 @@
}, },
"requests-oauthlib": { "requests-oauthlib": {
"hashes": [ "hashes": [
"sha256:bd6533330e8748e94bf0b214775fed487d309b8b8fe823dc45641ebcd9a32f57", "sha256:7f71572defaecd16372f9006f33c2ec8c077c3cfa6f5911a9a90202beb513f3d",
"sha256:d3ed0c8f2e3bbc6b344fa63d6f933745ab394469da38db16bdddb461c7e25140" "sha256:b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a"
], ],
"index": "pypi", "index": "pypi",
"version": "==1.2.0" "version": "==1.3.0"
}, },
"routes": { "routes": {
"hashes": [ "hashes": [
@ -331,51 +361,55 @@
}, },
"simplejson": { "simplejson": {
"hashes": [ "hashes": [
"sha256:067a7177ddfa32e1483ba5169ebea1bc2ea27f224853211ca669325648ca5642", "sha256:0fe3994207485efb63d8f10a833ff31236ed27e3b23dadd0bf51c9900313f8f2",
"sha256:2fc546e6af49fb45b93bbe878dea4c48edc34083729c0abd09981fe55bdf7f91", "sha256:17163e643dbf125bb552de17c826b0161c68c970335d270e174363d19e7ea882",
"sha256:354fa32b02885e6dae925f1b5bbf842c333c1e11ea5453ddd67309dc31fdb40a", "sha256:1d1e929cdd15151f3c0b2efe953b3281b2fd5ad5f234f77aca725f28486466f6",
"sha256:37e685986cf6f8144607f90340cff72d36acf654f3653a6c47b84c5c38d00df7", "sha256:1ea59f570b9d4916ae5540a9181f9c978e16863383738b69a70363bc5e63c4cb",
"sha256:3af610ee72efbe644e19d5eaad575c73fb83026192114e5f6719f4901097fce2", "sha256:22a7acb81968a7c64eba7526af2cf566e7e2ded1cb5c83f0906b17ff1540f866",
"sha256:3b919fc9cf508f13b929a9b274c40786036b31ad28657819b3b9ba44ba651f50", "sha256:2b4b2b738b3b99819a17feaf118265d0753d5536049ea570b3c43b51c4701e81",
"sha256:3dd289368bbd064974d9a5961101f080e939cbe051e6689a193c99fb6e9ac89b", "sha256:4cf91aab51b02b3327c9d51897960c554f00891f9b31abd8a2f50fd4a0071ce8",
"sha256:6c3258ffff58712818a233b9737fe4be943d306c40cf63d14ddc82ba563f483a", "sha256:7cce4bac7e0d66f3a080b80212c2238e063211fe327f98d764c6acbc214497fc",
"sha256:75e3f0b12c28945c08f54350d91e624f8dd580ab74fd4f1bbea54bc6b0165610", "sha256:8027bd5f1e633eb61b8239994e6fc3aba0346e76294beac22a892eb8faa92ba1",
"sha256:b1f329139ba647a9548aa05fb95d046b4a677643070dc2afc05fa2e975d09ca5", "sha256:86afc5b5cbd42d706efd33f280fec7bd7e2772ef54e3f34cf6b30777cd19a614",
"sha256:ee9625fc8ee164902dfbb0ff932b26df112da9f871c32f0f9c1bcf20c350fe2a", "sha256:87d349517b572964350cc1adc5a31b493bbcee284505e81637d0174b2758ba17",
"sha256:fb2530b53c28f0d4d84990e945c2ebb470edb469d63e389bf02ff409012fe7c5" "sha256:926bcbef9eb60e798eabda9cd0bbcb0fca70d2779aa0aa56845749d973eb7ad5",
"sha256:9a126c3a91df5b1403e965ba63b304a50b53d8efc908a8c71545ed72535374a3",
"sha256:daaf4d11db982791be74b23ff4729af2c7da79316de0bebf880fa2d60bcc8c5a",
"sha256:fc046afda0ed8f5295212068266c92991ab1f4a50c6a7144b69364bdee4a0159",
"sha256:fc9051d249dd5512e541f20330a74592f7a65b2d62e18122ca89bf71f94db748"
], ],
"index": "pypi", "index": "pypi",
"version": "==3.16.0" "version": "==3.17.0"
}, },
"six": { "six": {
"hashes": [ "hashes": [
"sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", "sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd",
"sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73" "sha256:30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66"
], ],
"index": "pypi", "index": "pypi",
"version": "==1.12.0" "version": "==1.13.0"
}, },
"sqlalchemy": { "sqlalchemy": {
"hashes": [ "hashes": [
"sha256:c7fef198b43ef31dfd783d094fd5ee435ce8717592e6784c45ba337254998017" "sha256:bfb8f464a5000b567ac1d350b9090cf081180ec1ab4aa87e7bca12dab25320ec"
], ],
"index": "pypi", "index": "pypi",
"version": "==1.3.4" "version": "==1.3.12"
}, },
"tempora": { "tempora": {
"hashes": [ "hashes": [
"sha256:cb60b1d2b1664104e307f8e5269d7f4acdb077c82e35cd57246ae14a3427d2d6", "sha256:10f8c1299a7cf5392101eaac57f59048dfec126fa31d33761fad939762ed535d",
"sha256:d28a03d2f64ee81aec6e6bff374127ef306fe00c1b7e27c7ff1618344221a699" "sha256:f11df59b34b9a87d395cce031274f6ff3d2be2171dd1db32dff9ab1fcb5352fa"
], ],
"version": "==1.14.1" "version": "==2.0.0"
}, },
"urllib3": { "urllib3": {
"hashes": [ "hashes": [
"sha256:b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1", "sha256:a8a318824cc77d1fd4b2bec2ded92646630d7fe8619497b142c84a9e6f5a7293",
"sha256:dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232" "sha256:f3c5fd51747d450d4dcf6f923c81f78f811aab8205fda64b0aba34a4e48b0745"
], ],
"index": "pypi", "index": "pypi",
"version": "==1.25.3" "version": "==1.25.7"
}, },
"webencodings": { "webencodings": {
"hashes": [ "hashes": [
@ -386,9 +420,10 @@
}, },
"zc.lockfile": { "zc.lockfile": {
"hashes": [ "hashes": [
"sha256:95a8e3846937ab2991b61703d6e0251d5abb9604e18412e2714e1b90db173253" "sha256:307ad78227e48be260e64896ec8886edc7eae22d8ec53e4d528ab5537a83203b",
"sha256:cc33599b549f0c8a248cb72f3bf32d77712de1ff7ee8814312eb6456b42c015f"
], ],
"version": "==1.4" "version": "==2.0"
} }
}, },
"develop": {} "develop": {}

View File

@ -7,7 +7,7 @@ User=autocat
Type=simple Type=simple
RuntimeDirectory=autocat RuntimeDirectory=autocat
WorkingDirectory=/var/lib/autocat/autocat3 WorkingDirectory=/var/lib/autocat/autocat3
ExecStartPre=-/usr/bin/mkdir -p /var/run/autocat ExecStartPre=-/usr/bin/mkdir -p /var/run/autocat ; -/usr/bin/curl -o /var/lib/autocat/menu.html https://raw.githubusercontent.com/gbnewby/gutenbergsite/master/_includes/menu.html
ExecStart=/usr/local/bin/pipenv run python CherryPyApp.py ExecStart=/usr/local/bin/pipenv run python CherryPyApp.py
# #
# These next lines are for auto-restart. See: man systemd.service # These next lines are for auto-restart. See: man systemd.service

View File

@ -21,7 +21,7 @@ Gutenberg metadata much faster than by scraping.
xmlns:marcrel="http://www.loc.gov/loc.terms/relators/" xmlns:marcrel="http://www.loc.gov/loc.terms/relators/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xml:lang="${os.lang}" xml:lang="${os.lang}"
version="XHTML+RDFa 1.0"> >
<?python <?python
import re import re
@ -53,8 +53,7 @@ Gutenberg metadata much faster than by scraping.
title="${explain (topic)}"><span class="icon icon_help noprint" /></a> title="${explain (topic)}"><span class="icon icon_help noprint" /></a>
</py:def> </py:def>
<head profile="http://a9.com/-/spec/opensearch/1.1/" <head xmlns:og="http://opengraphprotocol.org/schema/">
xmlns:og="http://opengraphprotocol.org/schema/">
${site_head ()} ${site_head ()}
@ -63,16 +62,18 @@ Gutenberg metadata much faster than by scraping.
<link rel="alternate nofollow" type="${mt.rdf}" <link rel="alternate nofollow" type="${mt.rdf}"
href="${os.url ('bibrec', id = os.id, format = 'rdf')}" /> href="${os.url ('bibrec', id = os.id, format = 'rdf')}" />
<style type="text/css"> <style>
.qrcode { background: transparent url(${os.qrcode_url}) 0 0 no-repeat; } .qrcode { background: transparent url(${os.qrcode_url}) 0 0 no-repeat; }
</style> </style>
<meta name="google" content="notranslate" /> <meta name="google" content="notranslate" />
</head> </head>
<body> <body>
<div id="mw-head-dummy" class="noprint" /> <div class="container">
${site_top()}
<!-- <div id="mw-head-dummy" class="noprint" />-->
<div id="content" itemscope="itemscope" itemtype="http://schema.org/Book" i18n:comment="On the 'bibrec' page."> <div class="page_content" id="content" itemscope="itemscope" itemtype="http://schema.org/Book" i18n:comment="On the 'bibrec' page.">
<div class="breadcrumbs noprint"> <div class="breadcrumbs noprint">
<ul> <ul>
@ -85,10 +86,8 @@ Gutenberg metadata much faster than by scraping.
</py:for> </py:for>
</ul> </ul>
</div> </div>
<div class="header">
<h1 itemprop="name">${os.title}</h1> <h1 itemprop="name">${os.title}</h1>
</div>
<div class="body"> <div class="body">
<div property="dcterms:publisher" itemprop="publisher" content="Project Gutenberg" /> <div property="dcterms:publisher" itemprop="publisher" content="Project Gutenberg" />
@ -149,7 +148,7 @@ Gutenberg metadata much faster than by scraping.
<h2>Bibliographic Record <span>${help (_('Table: Bibliographic Record'))}</span></h2> <h2>Bibliographic Record <span>${help (_('Table: Bibliographic Record'))}</span></h2>
<table class="bibrec" summary="Bibliographic data of author and book."> <table class="bibrec" >
<colgroup> <colgroup>
<col class="narrow" /> <col class="narrow" />
<col /> <col />
@ -158,8 +157,8 @@ Gutenberg metadata much faster than by scraping.
<tr py:for="author in e.authors"> <tr py:for="author in e.authors">
<th>${author.role}</th> <th>${author.role}</th>
<td> <td>
<a href="${os.url ('author', id = author.id)}" <a href="/browse/authors/${author.first_lettter}#a${author.id}"
rel="marcrel:${author.marcrel}" about="/authors/${author.id}" typeof="pgterms:agent" rel="marcrel:${author.marcrel}" about="/authors/" typeof="pgterms:agent"
itemprop="creator">${author.name_and_dates}</a></td> itemprop="creator">${author.name_and_dates}</a></td>
</tr> </tr>
@ -245,7 +244,7 @@ Gutenberg metadata much faster than by scraping.
<tr itemprop="offers" itemscope="itemscope" itemtype="http://schema.org/Offer"> <tr itemprop="offers" itemscope="itemscope" itemtype="http://schema.org/Offer">
<th>Price</th> <th>Price</th>
<td><span itemprop="priceCurrency" content="USD" /><span itemprop="price">$0.00</span><span itemprop="availability" href="http://schema.org/InStock" content="In Stock" /></td> <td><span itemprop="priceCurrency" content="USD" /><span itemprop="price">$0.00</span><span itemprop="availability" content="In Stock" ><a href="http://schema.org/InStock"></a></span></td>
</tr> </tr>
</table> </table>
@ -289,14 +288,15 @@ Gutenberg metadata much faster than by scraping.
<py:for each="e in os.entries"> <py:for each="e in os.entries">
<py:if test="isinstance (e, bs.DC)"> <py:if test="isinstance (e, bs.DC)">
<div about="[ebook:$e.project_gutenberg_id]" rel="dcterms:hasFormat" rev="dcterms:isFormatOf"> <div about="[ebook:$e.project_gutenberg_id]" rel="dcterms:hasFormat" ><!--! rev="dcterms:isFormatOf" -->
<h2>Download This eBook</h2> <h2>Download This eBook</h2>
<table class="files" summary="Table of available file types and sizes."> <table class="files">
<colgroup> <colgroup>
<col class="narrow" /> <col class="narrow" />
<col /> <col />
<col />
<col /> <col />
<col class="narrow noprint" /> <col class="narrow noprint" />
<col class="narrow noprint" /> <col class="narrow noprint" />
@ -320,8 +320,7 @@ Gutenberg metadata much faster than by scraping.
<td><span class="icon icon_${e.icon}" /></td> <td><span class="icon icon_${e.icon}" /></td>
<td property="dcterms:format" content="${file_.mediatypes[-1]}" datatype="dcterms:IMT" <td property="dcterms:format" content="${file_.mediatypes[-1]}" datatype="dcterms:IMT"
class="unpadded icon_save" class="unpadded icon_save"
><a href="/${file_.filename}" type="${file_.mediatypes[-1]}" charset="${file_.encoding}" ><a href="/${file_.filename}" type="${file_.mediatypes[-1]}" class="link"
class="link"
title="Download">${file_.hr_filetype}</a></td> title="Download">${file_.hr_filetype}</a></td>
<td class="noscreen">${file_.url}</td> <td class="noscreen">${file_.url}</td>
<td class="right" <td class="right"
@ -369,7 +368,7 @@ Gutenberg metadata much faster than by scraping.
</div> <!--! tabs --> </div> <!--! tabs -->
</div> <!--! tabs-wrapper --> </div> <!--! tabs-wrapper -->
</div> <!--! body --> </div> <!--! body -->
</div>
<div id="dialog" class="hidden"> <div id="dialog" class="hidden">
</div> </div>

View File

@ -8,11 +8,11 @@
xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:fb="http://www.facebook.com/2008/fbml"
py:strip=""> py:strip="">
<head> <head>
<style type="text/css"> <style>
.icon { background: transparent url(/pics/sprite.png?${cherrypy.config['css_mtime']}) 0 0 no-repeat; } .icon { background: transparent url(/pics/sprite.png?${cherrypy.config['css_mtime']}) 0 0 no-repeat; }
</style> </style>
<link rel="stylesheet" type="text/css" <link rel="stylesheet" type="text/css"
href="/css/pg-desktop-one.css?${cherrypy.config['css_mtime']}" /> href="/gutenberg/pg-desktop-one.css?${cherrypy.config['css_mtime']}" />
<script type="text/javascript">//<![CDATA[ <script type="text/javascript">//<![CDATA[
//<![CDATA[ //<![CDATA[
var json_search = "/ebooks/suggest/"; var json_search = "/ebooks/suggest/";

View File

@ -22,8 +22,7 @@ which contains *all* Project Gutenberg metadata in one RDF/XML file.
xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:og="http://opengraphprotocol.org/schema/" xmlns:og="http://opengraphprotocol.org/schema/"
xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:fb="http://www.facebook.com/2008/fbml"
xml:lang="${os.lang}" xml:lang="${os.lang}">
version="XHTML+RDFa 1.0">
<?python <?python
old_header = os.title old_header = os.title
@ -33,7 +32,7 @@ which contains *all* Project Gutenberg metadata in one RDF/XML file.
<xi:include href="site-layout.html" /> <xi:include href="site-layout.html" />
<xi:include href="social-functions.html" /> <xi:include href="social-functions.html" />
<head profile="http://a9.com/-/spec/opensearch/1.1/"> <head >
${site_head ()} ${site_head ()}
<title>${os.title} - ${os.pg}</title> <title>${os.title} - ${os.pg}</title>
@ -65,15 +64,13 @@ which contains *all* Project Gutenberg metadata in one RDF/XML file.
</head> </head>
<body> <body>
<div id="mw-head-dummy" class="noprint" /> <!-- <div id="mw-head-dummy" class="noprint" />-->
<div class="container">
<!-- <div id="content" i18n:comment="On the page of results of a search.">-->
${site_top ()}
<div id="content" i18n:comment="On the page of results of a search."> <div class="page_content">
<div class="header"> <h1><span class="icon icon_${os.title_icon}" />${os.title}</h1>
<h1><span class="icon icon_${os.title_icon}" />${os.title}</h1>
</div>
<div class="body">
<div>
<ul class="results"> <ul class="results">
<py:for each="n, e in enumerate (os.entries)"> <py:for each="n, e in enumerate (os.entries)">
@ -128,15 +125,14 @@ which contains *all* Project Gutenberg metadata in one RDF/XML file.
</py:if> </py:if>
</ul> </ul>
</div>
</div> <!--! body --> </div>
${site_footer ()} ${site_footer ()}
</div> </div>
${site_top ()}
</body> </body>
</html> </html>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:py="http://genshi.edgewall.org/" xmlns:py="http://genshi.edgewall.org/"
xmlns:i18n="http://genshi.edgewall.org/i18n" xmlns:i18n="http://genshi.edgewall.org/i18n"
@ -11,7 +11,7 @@
from i18n_tool import ugettext as _ from i18n_tool import ugettext as _
?> ?>
<py:def function="site_head"> <py:def function="site_head">
<style type="text/css"> <style >
.icon { background: transparent url(/pics/sprite.png?${cherrypy.config['css_mtime']}) 0 0 no-repeat; } .icon { background: transparent url(/pics/sprite.png?${cherrypy.config['css_mtime']}) 0 0 no-repeat; }
</style> </style>
@ -19,7 +19,7 @@
href="/css/pg-desktop-one.css?${cherrypy.config['css_mtime']}" /> href="/css/pg-desktop-one.css?${cherrypy.config['css_mtime']}" />
<!--! IE8 does not recognize application/javascript --> <!--! IE8 does not recognize application/javascript -->
<script type="text/javascript">//<![CDATA[ <script>//<![CDATA[
var json_search = "${os.json_search}"; var json_search = "${os.json_search}";
var mobile_url = "${os.mobile_url}"; var mobile_url = "${os.mobile_url}";
var canonical_url = "${os.canonical_url}"; var canonical_url = "${os.canonical_url}";
@ -31,7 +31,7 @@
var dialog_message = "${os.user_dialog[0]}"; var dialog_message = "${os.user_dialog[0]}";
//]]></script> //]]></script>
<script type="text/javascript" <script
src="/js/pg-desktop-one.js?${cherrypy.config['js_mtime']}" /> src="/js/pg-desktop-one.js?${cherrypy.config['js_mtime']}" />
<link rel="shortcut icon" href="/pics/favicon" /> <link rel="shortcut icon" href="/pics/favicon" />
@ -52,8 +52,8 @@
<meta py:if="os.viewport" name="viewport" content="${os.viewport}" /> <meta py:if="os.viewport" name="viewport" content="${os.viewport}" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="default-style" content="text/css" />
<meta http-equiv="Content-Language" content="${os.lang}" />
<!--! plain old metadata --> <!--! plain old metadata -->
<meta name="title" content="${os.title}" /> <meta name="title" content="${os.title}" />
@ -205,9 +205,29 @@
</py:def> </py:def>
<py:def function="site_footer"> <py:def function="site_footer">
<div class="footer" i18n:comment="On the footer of every page."> <div class="footer" i18n:comment="On the footer of every page.">
</div> <ul>
<li>
<a href="/policy/privacy_policy.html" title="Gutenberg:Privacy policy">Privacy policy</a>
</li>
<li>
<a href="/about/index.html" title="Gutenberg:About">About Gutenberg</a>
</li>
<li>
<a href="/policy/terms_of_use.html">Terms of Use</a>
</li>
<li>
<a href="/about/contact_information.html">Contact Information</a>
</li>
</ul>
<a href="https://www.ibiblio.org/index.html" title="Project Gutenberg is hosted by ibiblio">
<img src="/gutenberg/ibiblio-logo.png" alt="HTML tutorial"/>
</a>
</div>
</py:def> </py:def>
<py:def function="prev_next_links"> <py:def function="prev_next_links">
@ -243,7 +263,7 @@
<!--! xml:lang avoids extraction for translation --> <!--! xml:lang avoids extraction for translation -->
<input xml:lang="en" type="hidden" name="cmd" value="_s-xclick" /> <input xml:lang="en" type="hidden" name="cmd" value="_s-xclick" />
<input xml:lang="en" type="hidden" name="hosted_button_id" value="XKAL6BZL3YPSN" /> <input xml:lang="en" type="hidden" name="hosted_button_id" value="XKAL6BZL3YPSN" />
<input type="image" name="submit" <input type="image" alt="paypal icon" name="submit"
src="/pics/paypal/${os.paypal_lang}.gif" src="/pics/paypal/${os.paypal_lang}.gif"
title="Send us money through PayPal." /> title="Send us money through PayPal." />
</div> </div>

View File

@ -10,11 +10,11 @@
?> ?>
<py:def function="site_head"> <py:def function="site_head">
<style type="text/css"> <style >
.icon { background: transparent url(/pics/sprite.png?${cherrypy.config['css_mtime']}) 0 0 no-repeat; } .icon { background: transparent url(/pics/sprite.png?${cherrypy.config['css_mtime']}) 0 0 no-repeat; }
</style> </style>
<link rel="stylesheet" type="text/css" <link rel="stylesheet" type="text/css"
href="/css/pg-mobile-one.css?${cherrypy.config['css_mtime']}" /> href="/gutenberg/pg-mobile-one.css?${cherrypy.config['css_mtime']}" />
<script type="application/javascript"><![CDATA[ <script type="application/javascript"><![CDATA[
var mobile_search = "${os.add_amp (os.mobile_search)}query="; var mobile_search = "${os.add_amp (os.mobile_search)}query=";

View File

@ -54,7 +54,7 @@
<a href="https://twitter.com/share?${p (params)}" <a href="https://twitter.com/share?${p (params)}"
title="Share on Twitter" title="Share on Twitter"
onclick="open_share_popup(this.href, this.target, 640, 320)" onclick="open_share_popup(this.href, this.target, 640, 320)"
target="_tw_share_popup"> target="_top">
<span class="icon icon_twitter" /> <span class="icon icon_twitter" />
</a> </a>
</div> </div>