Content server: Add a link at the bottom of the mobile interface to switch tot he full interface. Fixes #812525 ([Enhancement] Web app)

This commit is contained in:
Kovid Goyal 2011-07-18 17:53:26 -06:00
parent 2b45d99b02
commit ca2c41516a
4 changed files with 56 additions and 6 deletions

View File

@ -11,6 +11,7 @@
<link rel="stylesheet" type="text/css" href="{prefix}/static/browse/browse.css" /> <link rel="stylesheet" type="text/css" href="{prefix}/static/browse/browse.css" />
<link type="text/css" href="{prefix}/static/jquery_ui/css/humanity-custom/jquery-ui-1.8.5.custom.css" rel="stylesheet" /> <link type="text/css" href="{prefix}/static/jquery_ui/css/humanity-custom/jquery-ui-1.8.5.custom.css" rel="stylesheet" />
<link rel="stylesheet" type="text/css" href="{prefix}/static/jquery.multiselect.css" /> <link rel="stylesheet" type="text/css" href="{prefix}/static/jquery.multiselect.css" />
<link rel="apple-touch-icon" href="/static/calibre.png" />
<script type="text/javascript" src="{prefix}/static/jquery.js"></script> <script type="text/javascript" src="{prefix}/static/jquery.js"></script>
<script type="text/javascript" src="{prefix}/static/jquery.corner.js"></script> <script type="text/javascript" src="{prefix}/static/jquery.corner.js"></script>

View File

@ -10,7 +10,7 @@ __docformat__ = 'restructuredtext en'
import struct, datetime, sys, os import struct, datetime, sys, os
from calibre.utils.date import utc_tz from calibre.utils.date import utc_tz
from calibre.ebooks.mobi.langcodes import main_language, sub_language from calibre.ebooks.mobi.langcodes import main_language, sub_language
from calibre.ebooks.mobi.writer2.utils import decode_hex_number from calibre.ebooks.mobi.writer2.utils import decode_hex_number, decint
# PalmDB {{{ # PalmDB {{{
class PalmDOCAttributes(object): class PalmDOCAttributes(object):
@ -498,9 +498,45 @@ class IndexHeader(object): # {{{
class IndexEntry(object): # {{{ class IndexEntry(object): # {{{
TYPES = {
# Present in book type files
0x0f : 'chapter',
0x6f : 'chapter_with_subchapters',
0x1f : 'subchapter',
# Present in periodicals
0xdf : 'periodical',
0xff : 'section',
0x3f : 'article',
}
def __init__(self, ident, entry_type, raw): def __init__(self, ident, entry_type, raw):
self.id = ident self.id = ident
self.entry_type = entry_type self.fields = []
self.sub_type = None
try:
self.entry_type = self.TYPES[entry_type]
except KeyError:
raise ValueError('Unknown IndexEntry type: %s'%hex(entry_type))
if self.entry_type in (0xdf, 0xff):
self.subtype = ord(raw[0])
raw = raw[1:]
while True:
val, consumed = decint(raw)
raw = raw[consumed:]
if val == 0:
break
else:
self.fields.append(val)
def __str__(self):
ans = ['Index Entry(id=%s, entry_type=%s, sub_type=%s)'%(
self.id, self.entry_type, self.sub_type)]
ans.append('\tFields: %r'%self.fields)
return '\n'.join(ans)
# }}} # }}}
class IndexRecord(object): # {{{ class IndexRecord(object): # {{{
@ -538,7 +574,7 @@ class IndexRecord(object): # {{{
index = indxt[off:] index = indxt[off:]
ident, consumed = decode_hex_number(index) ident, consumed = decode_hex_number(index)
index = index[consumed:] index = index[consumed:]
entry_type = u(b'>B', index[0]) entry_type, = u(b'>B', index[0])
self.indices.append(IndexEntry(ident, entry_type, index[1:])) self.indices.append(IndexEntry(ident, entry_type, index[1:]))
@ -557,6 +593,9 @@ class IndexRecord(object): # {{{
u(self.unknown3) u(self.unknown3)
u(self.unknown4) u(self.unknown4)
a('Index offsets: %r'%self.index_offsets) a('Index offsets: %r'%self.index_offsets)
a('\nIndex Entries:')
for entry in self.indices:
a(str(entry)+'\n')
return '\n'.join(ans) return '\n'.join(ans)

View File

@ -153,12 +153,22 @@ def build_index(books, num, search, sort, order, start, total, url_base, CKEYS,
bookt.append(TR(thumbnail, data)) bookt.append(TR(thumbnail, data))
# }}} # }}}
body.append(HR())
body.append(DIV(
A(_('Switch to the full interface (non-mobile interface)'),
href="/browse",
style="text-decoration: none; color: blue",
title=_('The full interface gives you many more features, '
'but it may not work well on a small screen')),
style="text-align:center"))
return HTML( return HTML(
HEAD( HEAD(
TITLE(__appname__ + ' Library'), TITLE(__appname__ + ' Library'),
LINK(rel='icon', href='http://calibre-ebook.com/favicon.ico', LINK(rel='icon', href='http://calibre-ebook.com/favicon.ico',
type='image/x-icon'), type='image/x-icon'),
LINK(rel='stylesheet', type='text/css', href=prefix+'/mobile/style.css') LINK(rel='stylesheet', type='text/css',
href=prefix+'/mobile/style.css'),
LINK(rel='apple-touch-icon', href="/static/calibre.png")
), # End head ), # End head
body body
) # End html ) # End html

View File

@ -405,9 +405,9 @@ To those of you that claim that you need access to the filesystem to so that you
If you are worried that someday |app| will cease to be developed, leaving all your books marooned in its folder structure, explore the powerful "Save to Disk" feature in |app| that lets you export all your files into a folder structure of arbitrary complexity based on their metadata. If you are worried that someday |app| will cease to be developed, leaving all your books marooned in its folder structure, explore the powerful "Save to Disk" feature in |app| that lets you export all your files into a folder structure of arbitrary complexity based on their metadata.
Since I keep getting asked why there are numbers at the end of the title folder name, the reason is for *robustness*. That number is the id number of the book record in the |app| database. The presence of the number allows you to have multiple records with the same title and author names. More importantly, it is part of what allows |app| to magically regenerate the database with all metadata if the database file gets corrupted. Given that |app|'s mission is to get you to stop storing metadata in filenames and stop using the filesystem to find things, the increased robustness afforded by the id numbers is well worth the uglier folder names. Finally, the reason there are numbers at the end of every title folder, is for *robustness*. That number is the id number of the book record in the |app| database. The presence of the number allows you to have multiple records with the same title and author names. It is also part of what allows |app| to magically regenerate the database with all metadata if the database file gets corrupted. Given that |app|'s mission is to get you to stop storing metadata in filenames and stop using the filesystem to find things, the increased robustness afforded by the id numbers is well worth the uglier folder names.
Finally, if you are irrevocably wedded to using the filesystem to store your metadata, feel free to patch your local copy of |app| to use whatever storage scheme you like. But, do not bother me with requests to change the directory structure, **they will be ignored**. If you are still not convinced, then I'm afraid |app| is not for you. Look elsewhere for your book cataloguing needs. Just so we're clear, **this is not going to change**. Kindly do not contact us in an attempt to get us to change this.
Why doesn't |app| have a column for foo? Why doesn't |app| have a column for foo?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~