\n"
"Language: pl\n"
@@ -24,7 +24,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.5.1\n"
-#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1393
+#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1422
msgid "not installed"
msgstr "nie zainstalowane"
@@ -70,24 +70,24 @@ msgstr ""
"Nie można znaleźć żadnych formatów przystosowane do wysyłania pocztą "
"e-mail"
-#: cps/helper.py:332
+#: cps/helper.py:342
#, python-format
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/helper.py:341
+#: cps/helper.py:351
#, python-format
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/helper.py:364 cps/helper.py:373
+#: cps/helper.py:374 cps/helper.py:383
#, python-format
-msgid "File %s not found on gdrive"
+msgid "File %s not found on Google Drive"
msgstr ""
-#: cps/helper.py:384
+#: cps/helper.py:394
#, python-format
-msgid "Path %s not found on gdrive"
+msgid "Book path %s not found on Google Drive"
msgstr ""
#: cps/web.py:954
@@ -154,7 +154,7 @@ msgstr "Losowe książki"
msgid "Author list"
msgstr "Lista autorów"
-#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1350 cps/web.py:1869
+#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1379 cps/web.py:1909
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Błąd otwierania e-booka. Plik nie istnieje lub plik nie jest dostępny:"
@@ -185,336 +185,340 @@ msgstr "Lista kategorii"
msgid "Category: %(name)s"
msgstr "Kategoria: %(name)s"
-#: cps/web.py:1404
+#: cps/web.py:1433
msgid "Excecution permissions missing"
msgstr ""
-#: cps/web.py:1419
+#: cps/web.py:1448
msgid "Statistics"
msgstr "Statystyki"
-#: cps/web.py:1515
+#: cps/web.py:1544
msgid ""
"Callback domain is not verified, please follow steps to verify domain in "
"google developer console"
msgstr ""
-#: cps/web.py:1591
+#: cps/web.py:1620
msgid "Server restarted, please reload page"
msgstr "Serwer uruchomiony ponownie, proszę odświeżyć stronę"
-#: cps/web.py:1594
+#: cps/web.py:1623
msgid "Performing shutdown of server, please close window"
msgstr "Wykonano wyłączenie serwera, proszę zamknąć okno"
-#: cps/web.py:1612
+#: cps/web.py:1641
msgid "Update done"
msgstr "Aktualizacja zakończona"
-#: cps/web.py:1669
+#: cps/web.py:1698
#, python-format
msgid "Published after %s"
msgstr ""
-#: cps/web.py:1674
+#: cps/web.py:1703
msgid "Published before "
msgstr ""
-#: cps/web.py:1720 cps/web.py:1733
+#: cps/web.py:1749 cps/web.py:1762
msgid "search"
msgstr "szukaj"
#: cps/templates/index.xml:39 cps/templates/index.xml:42
-#: cps/templates/layout.html:143 cps/web.py:1824
+#: cps/templates/layout.html:143 cps/web.py:1864
msgid "Read Books"
msgstr "Przeczytane książki"
#: cps/templates/index.xml:46 cps/templates/index.xml:49
-#: cps/templates/layout.html:145 cps/web.py:1827
+#: cps/templates/layout.html:145 cps/web.py:1867
msgid "Unread Books"
msgstr "Nieprzeczytane książki"
-#: cps/web.py:1879 cps/web.py:1881 cps/web.py:1883 cps/web.py:1895
+#: cps/web.py:1919 cps/web.py:1921 cps/web.py:1923 cps/web.py:1935
msgid "Read a Book"
msgstr "Czytaj książkę"
-#: cps/web.py:1951 cps/web.py:2686
+#: cps/web.py:1991 cps/web.py:2744
msgid "Please fill out all fields!"
msgstr "Proszę wypełnić wszystkie pola!"
-#: cps/web.py:1952 cps/web.py:1969 cps/web.py:1974 cps/web.py:1976
+#: cps/web.py:1992 cps/web.py:2009 cps/web.py:2014 cps/web.py:2016
msgid "register"
msgstr "rejestracja"
-#: cps/web.py:1968
+#: cps/web.py:2008
msgid "An unknown error occured. Please try again later."
msgstr "Wystąpił nieznany błąd. Spróbuj ponownie później."
-#: cps/web.py:1973
+#: cps/web.py:2013
msgid "This username or email address is already in use."
msgstr "Nazwa użytkownika lub adres e-mail jest już w użyciu."
-#: cps/web.py:1990 cps/web.py:2086
+#: cps/web.py:2030 cps/web.py:2126
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Zalogowałeś się jako: '%(nickname)s'"
-#: cps/web.py:1995
+#: cps/web.py:2035
msgid "Wrong Username or Password"
msgstr "Błędna nazwa użytkownika lub hasło"
-#: cps/web.py:2001 cps/web.py:2022
+#: cps/web.py:2041 cps/web.py:2062
msgid "login"
msgstr "logowanie"
-#: cps/web.py:2034 cps/web.py:2065
+#: cps/web.py:2074 cps/web.py:2105
msgid "Token not found"
msgstr ""
-#: cps/web.py:2042 cps/web.py:2073
+#: cps/web.py:2082 cps/web.py:2113
msgid "Token has expired"
msgstr ""
-#: cps/web.py:2050
+#: cps/web.py:2090
msgid "Success! Please return to your device"
msgstr ""
-#: cps/web.py:2100
+#: cps/web.py:2140
msgid "Please configure the SMTP mail settings first..."
msgstr "Proszę najpierw skonfigurować ustawienia SMTP poczty e-mail..."
-#: cps/web.py:2104
+#: cps/web.py:2144
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "Książka została pomyślnie wysłana do %(kindlemail)s"
-#: cps/web.py:2108
+#: cps/web.py:2148
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "Wystąpił błąd podczas wysyłania tej książki: %(res)s"
-#: cps/web.py:2110 cps/web.py:2774
+#: cps/web.py:2150 cps/web.py:2832
msgid "Please configure your kindle email address first..."
msgstr "Proszę najpierw skonfigurować adres e-mail swojego kindla..."
-#: cps/web.py:2154
+#: cps/web.py:2194
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Książka została dodana do półki: %(sname)s"
-#: cps/web.py:2192
+#: cps/web.py:2232
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Książka została usunięta z półki: %(sname)s"
-#: cps/web.py:2198
+#: cps/web.py:2238
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2218 cps/web.py:2242
+#: cps/web.py:2258 cps/web.py:2282
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "Półka o nazwie '%(title)s' już istnieje."
-#: cps/web.py:2223
+#: cps/web.py:2263
#, python-format
msgid "Shelf %(title)s created"
msgstr "Półka %(title)s została utworzona"
-#: cps/web.py:2225 cps/web.py:2253
+#: cps/web.py:2265 cps/web.py:2293
msgid "There was an error"
msgstr "Wystąpił błąd"
-#: cps/web.py:2226 cps/web.py:2228
+#: cps/web.py:2266 cps/web.py:2268
msgid "create a shelf"
msgstr "utwórz półkę"
-#: cps/web.py:2251
+#: cps/web.py:2291
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Półka %(title)s została zmieniona"
-#: cps/web.py:2254 cps/web.py:2256
+#: cps/web.py:2294 cps/web.py:2296
msgid "Edit a shelf"
msgstr "Edytuj półkę"
-#: cps/web.py:2277
+#: cps/web.py:2317
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "pomyślnie usunięto półkę %(name)s"
-#: cps/web.py:2299
+#: cps/web.py:2339
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Półka: '%(name)s'"
-#: cps/web.py:2302
+#: cps/web.py:2342
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
-#: cps/web.py:2333
+#: cps/web.py:2373
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Zmieniono kolejność półki: '%(name)s'"
-#: cps/web.py:2404
+#: cps/web.py:2444
msgid "Found an existing account for this email address."
msgstr "Znaleziono istniejące konto dla tego adresu e-mail."
-#: cps/web.py:2406 cps/web.py:2410
+#: cps/web.py:2446 cps/web.py:2450
#, python-format
msgid "%(name)s's profile"
msgstr "Profil użytkownika %(name)s"
-#: cps/web.py:2407
+#: cps/web.py:2447
msgid "Profile updated"
msgstr "Zaktualizowano profil"
-#: cps/web.py:2419
+#: cps/web.py:2459
msgid "Unknown"
msgstr ""
-#: cps/web.py:2432
+#: cps/web.py:2472
msgid "Admin page"
msgstr "Portal administracyjny"
-#: cps/web.py:2454
-msgid "Import of optional GDrive requirements missing"
+#: cps/web.py:2560 cps/web.py:2692
+msgid "Calibre-web configuration updated"
+msgstr "Konfiguracja Calibre-web została zaktualizowana"
+
+#: cps/templates/admin.html:80 cps/web.py:2565
+msgid "UI Configuration"
msgstr ""
-#: cps/web.py:2457
+#: cps/web.py:2581
+msgid "Import of optional Google Drive requirements missing"
+msgstr ""
+
+#: cps/web.py:2584
msgid "client_secrets.json is missing or not readable"
msgstr ""
-#: cps/web.py:2462 cps/web.py:2490
+#: cps/web.py:2589 cps/web.py:2617
msgid "client_secrets.json is not configured for web application"
msgstr ""
-#: cps/web.py:2493 cps/web.py:2518 cps/web.py:2529 cps/web.py:2622
-#: cps/web.py:2642 cps/web.py:2649 cps/web.py:2667
+#: cps/templates/admin.html:79 cps/web.py:2620 cps/web.py:2645 cps/web.py:2656
+#: cps/web.py:2680 cps/web.py:2700 cps/web.py:2707 cps/web.py:2725
msgid "Basic Configuration"
msgstr "Podstawowa konfiguracja"
-#: cps/web.py:2515
+#: cps/web.py:2642
msgid "Keyfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2526
+#: cps/web.py:2653
msgid "Certfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2619
+#: cps/web.py:2677
msgid "Logfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2634
-msgid "Calibre-web configuration updated"
-msgstr "Konfiguracja Calibre-web została zaktualizowana"
-
-#: cps/web.py:2646
+#: cps/web.py:2704
msgid "DB location is not valid, please enter correct path"
msgstr "Lokalizacja bazy danych jest nieprawidłowa, wpisz poprawną ścieżkę"
-#: cps/templates/admin.html:34 cps/web.py:2688 cps/web.py:2744
+#: cps/templates/admin.html:34 cps/web.py:2746 cps/web.py:2802
msgid "Add new user"
msgstr "Dodaj nowego użytkownika"
-#: cps/web.py:2734
+#: cps/web.py:2792
#, python-format
msgid "User '%(user)s' created"
msgstr "Użytkownik '%(user)s' został utworzony"
-#: cps/web.py:2738
+#: cps/web.py:2796
msgid "Found an existing account for this email address or nickname."
msgstr "Znaleziono istniejące konto dla tego adresu e-mail lub nazwy użytkownika."
-#: cps/web.py:2762
+#: cps/web.py:2820
msgid "Mail settings updated"
msgstr "Zaktualizowano ustawienia poczty e-mail"
-#: cps/web.py:2769
+#: cps/web.py:2827
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "Testowy e-mail został pomyślnie wysłany do %(kindlemail)s"
-#: cps/web.py:2772
+#: cps/web.py:2830
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "Wystąpił błąd podczas wysyłania testowej wiadomości e-mail: %(res)s"
-#: cps/web.py:2776
+#: cps/web.py:2834
msgid "E-Mail settings updated"
msgstr "Zaktualizowano ustawienia e-mail"
-#: cps/web.py:2777
+#: cps/web.py:2835
msgid "Edit mail settings"
msgstr "Edytuj ustawienia poczty e-mail"
-#: cps/web.py:2807
+#: cps/web.py:2865
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Użytkownik '%(nick)s' został usunięty"
-#: cps/web.py:2916
+#: cps/web.py:2974
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Użytkownik '%(nick)s' został zaktualizowany"
-#: cps/web.py:2919
+#: cps/web.py:2977
msgid "An unknown error occured."
msgstr "Wystąpił nieznany błąd."
-#: cps/web.py:2922
+#: cps/web.py:2980
#, python-format
msgid "Edit User %(nick)s"
msgstr "Edytuj użytkownika %(nick)s"
-#: cps/web.py:2938
+#: cps/web.py:2996
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
-#: cps/web.py:2953 cps/web.py:3164 cps/web.py:3169 cps/web.py:3337
+#: cps/web.py:3011 cps/web.py:3222 cps/web.py:3227 cps/web.py:3395
msgid "edit metadata"
msgstr "edytuj metadane"
-#: cps/web.py:2963 cps/web.py:3214
+#: cps/web.py:3021 cps/web.py:3272
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr "Rozszerzenie pliku \"%s\" nie jest dozwolone do przesłania na ten serwer"
-#: cps/web.py:2974
+#: cps/web.py:3032
#, python-format
msgid "Failed to store file %s."
msgstr ""
-#: cps/web.py:2998 cps/web.py:3002
+#: cps/web.py:3056 cps/web.py:3060
msgid "unknown"
msgstr ""
-#: cps/web.py:3023
+#: cps/web.py:3081
msgid "Cover is not a jpg file, can't save"
msgstr ""
-#: cps/web.py:3173
+#: cps/web.py:3231
msgid "Error editing book, please check logfile for details"
msgstr ""
-#: cps/web.py:3220
+#: cps/web.py:3278
msgid "File to be uploaded must have an extension"
msgstr "Plik do przesłania musi mieć rozszerzenie"
-#: cps/web.py:3239
+#: cps/web.py:3297
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "Nie udało się utworzyć łącza %s (Odmowa dostępu)."
-#: cps/web.py:3244
+#: cps/web.py:3302
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "Nie można przechowywać pliku %s (Odmowa dostępu)."
-#: cps/web.py:3249
+#: cps/web.py:3307
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "Nie udało się usunąć pliku %s (Odmowa dostępu)."
@@ -592,7 +596,7 @@ msgstr "Wyślij z adresu e-mail"
msgid "Change SMTP settings"
msgstr "Zmień ustawienia SMTP"
-#: cps/templates/admin.html:57 cps/templates/admin.html:79
+#: cps/templates/admin.html:57
msgid "Configuration"
msgstr "Konfiguracja"
@@ -600,7 +604,7 @@ msgstr "Konfiguracja"
msgid "Calibre DB dir"
msgstr "Folder bazy danych Calibre"
-#: cps/templates/admin.html:61 cps/templates/config_edit.html:87
+#: cps/templates/admin.html:61 cps/templates/config_edit.html:100
msgid "Log Level"
msgstr "Poziom logów"
@@ -608,7 +612,7 @@ msgstr "Poziom logów"
msgid "Port"
msgstr "Port"
-#: cps/templates/admin.html:63 cps/templates/config_edit.html:64
+#: cps/templates/admin.html:63 cps/templates/config_view_edit.html:23
msgid "Books per page"
msgstr "Ilość książek na stronie"
@@ -628,60 +632,61 @@ msgstr "Anonimowe przeglądanie"
msgid "Remote Login"
msgstr ""
-#: cps/templates/admin.html:80
+#: cps/templates/admin.html:81
msgid "Administration"
msgstr "Zarządzanie"
-#: cps/templates/admin.html:82
+#: cps/templates/admin.html:83
msgid "Current commit timestamp"
msgstr "Znacznik czasowy zainstalowanej wersji"
-#: cps/templates/admin.html:83
+#: cps/templates/admin.html:84
msgid "Newest commit timestamp"
msgstr "Znacznik czasowy nowej wersji"
-#: cps/templates/admin.html:85
+#: cps/templates/admin.html:86
msgid "Reconnect to Calibre DB"
msgstr "Połącz ponownie z bazą danych Calibre"
-#: cps/templates/admin.html:86
+#: cps/templates/admin.html:87
msgid "Restart Calibre-web"
msgstr "Uruchom ponownie Calibre Web"
-#: cps/templates/admin.html:87
+#: cps/templates/admin.html:88
msgid "Stop Calibre-web"
msgstr "Zatrzymaj Calibre Web"
-#: cps/templates/admin.html:88
+#: cps/templates/admin.html:89
msgid "Check for update"
msgstr "Sprawdź aktualizacje"
-#: cps/templates/admin.html:89
+#: cps/templates/admin.html:90
msgid "Perform Update"
msgstr "Wykonaj aktualizację"
-#: cps/templates/admin.html:99
+#: cps/templates/admin.html:100
msgid "Do you really want to restart Calibre-web?"
msgstr "Na pewno chcesz uruchomić ponownie Calibre Web?"
-#: cps/templates/admin.html:104 cps/templates/admin.html:118
-#: cps/templates/admin.html:139 cps/templates/shelf.html:59
+#: cps/templates/admin.html:105 cps/templates/admin.html:119
+#: cps/templates/admin.html:140 cps/templates/shelf.html:59
msgid "Ok"
msgstr "OK"
-#: cps/templates/admin.html:105 cps/templates/admin.html:119
+#: cps/templates/admin.html:106 cps/templates/admin.html:120
#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157
-#: cps/templates/config_edit.html:219 cps/templates/email_edit.html:36
-#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19
-#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:147
+#: cps/templates/config_edit.html:168 cps/templates/config_view_edit.html:164
+#: cps/templates/email_edit.html:36 cps/templates/shelf.html:60
+#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12
+#: cps/templates/user_edit.html:147
msgid "Back"
msgstr "Wróć"
-#: cps/templates/admin.html:117
+#: cps/templates/admin.html:118
msgid "Do you really want to stop Calibre-web?"
msgstr "Na pewno chcesz zatrzymać Calibre Web?"
-#: cps/templates/admin.html:130
+#: cps/templates/admin.html:131
msgid "Updating, please do not reload page"
msgstr "Aktualizowanie, proszę nie odświeżać strony"
@@ -766,9 +771,10 @@ msgstr "wyświetl książkę po edycji"
msgid "Get metadata"
msgstr "Uzyskaj metadane"
-#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:217
-#: cps/templates/login.html:20 cps/templates/search_form.html:96
-#: cps/templates/shelf_edit.html:17 cps/templates/user_edit.html:145
+#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:166
+#: cps/templates/config_view_edit.html:163 cps/templates/login.html:20
+#: cps/templates/search_form.html:96 cps/templates/shelf_edit.html:17
+#: cps/templates/user_edit.html:145
msgid "Submit"
msgstr "Wyślij"
@@ -829,193 +835,217 @@ msgstr "Błąd wyszukiwania!"
msgid "No Result! Please try anonther keyword."
msgstr "Brak wyników! Spróbuj innego słowa kluczowego."
-#: cps/templates/config_edit.html:7
+#: cps/templates/config_edit.html:12
+msgid "Library Configuration"
+msgstr ""
+
+#: cps/templates/config_edit.html:19
msgid "Location of Calibre database"
msgstr "Lokalizacja bazy danych Calibre"
-#: cps/templates/config_edit.html:12
-msgid "Use google drive?"
+#: cps/templates/config_edit.html:24
+msgid "Use Google Drive?"
msgstr "Użyć dysku Google?"
-#: cps/templates/config_edit.html:18
-msgid "Google drive config problem"
+#: cps/templates/config_edit.html:30
+msgid "Google Drive config problem"
msgstr ""
-#: cps/templates/config_edit.html:24
+#: cps/templates/config_edit.html:36
msgid "Authenticate Google Drive"
msgstr ""
-#: cps/templates/config_edit.html:28
-msgid "Google drive Calibre folder"
-msgstr "Folder biblioteki Calibre na Dysku Google"
+#: cps/templates/config_edit.html:40
+msgid "Google Drive Calibre folder"
+msgstr ""
-#: cps/templates/config_edit.html:36
+#: cps/templates/config_edit.html:48
#, fuzzy
msgid "Metadata Watch Channel ID"
msgstr "Metadane Watch Channel ID"
-#: cps/templates/config_edit.html:39
+#: cps/templates/config_edit.html:51
msgid "Revoke"
msgstr ""
-#: cps/templates/config_edit.html:48
+#: cps/templates/config_edit.html:67
+msgid "Server Configuration"
+msgstr ""
+
+#: cps/templates/config_edit.html:74
msgid "Server Port"
msgstr "Port serwera"
-#: cps/templates/config_edit.html:52
+#: cps/templates/config_edit.html:78
msgid "SSL certfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:56
+#: cps/templates/config_edit.html:82
msgid "SSL Keyfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:60 cps/templates/layout.html:130
-#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7
-msgid "Title"
-msgstr "Tytuł"
-
-#: cps/templates/config_edit.html:68
-msgid "No. of random books to show"
-msgstr "Liczba losowych książek do pokazania"
-
-#: cps/templates/config_edit.html:72
-msgid "Regular expression for ignoring columns"
-msgstr "Wyrażenie regularne dla ignorowanych kolumn"
-
-#: cps/templates/config_edit.html:76
-msgid "Regular expression for title sorting"
-msgstr "Wyrażenie regularne dla tytułu sortującego"
-
-#: cps/templates/config_edit.html:80
-msgid "Tags for Mature Content"
+#: cps/templates/config_edit.html:93
+msgid "Logfile Configuration"
msgstr ""
-#: cps/templates/config_edit.html:96
+#: cps/templates/config_edit.html:109
msgid "Location and name of logfile (calibre-web.log for no entry)"
msgstr ""
-#: cps/templates/config_edit.html:102
+#: cps/templates/config_edit.html:120
+msgid "Feature Configuration"
+msgstr ""
+
+#: cps/templates/config_edit.html:128
msgid "Enable uploading"
msgstr "Włącz wysyłanie"
-#: cps/templates/config_edit.html:106
+#: cps/templates/config_edit.html:132
msgid "Enable anonymous browsing"
msgstr "Włącz anonimowe przeglądanie"
-#: cps/templates/config_edit.html:110
+#: cps/templates/config_edit.html:136
msgid "Enable public registration"
msgstr "Włącz publiczną rejestrację"
-#: cps/templates/config_edit.html:114
+#: cps/templates/config_edit.html:140
msgid "Enable remote login (\"magic link\")"
msgstr ""
-#: cps/templates/config_edit.html:119
+#: cps/templates/config_edit.html:145
msgid "Use"
msgstr ""
-#: cps/templates/config_edit.html:120
+#: cps/templates/config_edit.html:146
msgid "Obtain an API Key"
msgstr ""
-#: cps/templates/config_edit.html:124
+#: cps/templates/config_edit.html:150
msgid "Goodreads API Key"
msgstr ""
-#: cps/templates/config_edit.html:128
+#: cps/templates/config_edit.html:154
msgid "Goodreads API Secret"
msgstr ""
-#: cps/templates/config_edit.html:133
-msgid "Default Settings for new users"
+#: cps/templates/config_edit.html:171 cps/templates/layout.html:79
+#: cps/templates/login.html:4
+msgid "Login"
+msgstr "Zaloguj się"
+
+#: cps/templates/config_view_edit.html:12
+msgid "View Configuration"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:130
+#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7
+msgid "Title"
+msgstr "Tytuł"
+
+#: cps/templates/config_view_edit.html:27
+msgid "No. of random books to show"
+msgstr "Liczba losowych książek do pokazania"
+
+#: cps/templates/config_view_edit.html:31
+msgid "Regular expression for ignoring columns"
+msgstr "Wyrażenie regularne dla ignorowanych kolumn"
+
+#: cps/templates/config_view_edit.html:35
+msgid "Link read/unread status to Calibre column"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:44
+msgid "Regular expression for title sorting"
+msgstr "Wyrażenie regularne dla tytułu sortującego"
+
+#: cps/templates/config_view_edit.html:48
+msgid "Tags for Mature Content"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:62
+msgid "Default settings for new users"
msgstr "Domyślne ustawienia dla nowych użytkowników"
-#: cps/templates/config_edit.html:136 cps/templates/user_edit.html:102
+#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:102
msgid "Admin user"
msgstr "Użytkownik z uprawnieniami administratora"
-#: cps/templates/config_edit.html:140 cps/templates/user_edit.html:111
+#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:111
msgid "Allow Downloads"
msgstr "Zezwalaj na pobieranie"
-#: cps/templates/config_edit.html:144 cps/templates/user_edit.html:115
+#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:115
msgid "Allow Uploads"
msgstr "Zezwalaj na wysyłanie"
-#: cps/templates/config_edit.html:148 cps/templates/user_edit.html:119
+#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:119
msgid "Allow Edit"
msgstr "Zezwalaj na edycję"
-#: cps/templates/config_edit.html:152 cps/templates/user_edit.html:123
+#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:123
msgid "Allow Delete books"
msgstr ""
-#: cps/templates/config_edit.html:156 cps/templates/user_edit.html:128
+#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:128
msgid "Allow Changing Password"
msgstr "Zezwalaj na zmianę hasła"
-#: cps/templates/config_edit.html:160 cps/templates/user_edit.html:132
+#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:132
msgid "Allow Editing Public Shelfs"
msgstr ""
-#: cps/templates/config_edit.html:164
-msgid "Default visiblities for new users"
+#: cps/templates/config_view_edit.html:104
+msgid "Default visibilities for new users"
msgstr ""
-#: cps/templates/config_edit.html:168 cps/templates/user_edit.html:54
+#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:54
msgid "Show random books"
msgstr "Pokaż losowe książki"
-#: cps/templates/config_edit.html:172 cps/templates/user_edit.html:58
+#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:58
msgid "Show recent books"
msgstr ""
-#: cps/templates/config_edit.html:176 cps/templates/user_edit.html:62
+#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:62
msgid "Show sorted books"
msgstr ""
-#: cps/templates/config_edit.html:180 cps/templates/user_edit.html:66
+#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:66
msgid "Show hot books"
msgstr "Pokaż najpopularniejsze książki"
-#: cps/templates/config_edit.html:184 cps/templates/user_edit.html:70
+#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:70
msgid "Show best rated books"
msgstr "Pokaż najlepiej ocenione książki"
-#: cps/templates/config_edit.html:188 cps/templates/user_edit.html:74
+#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:74
msgid "Show language selection"
msgstr "Pokaż wybór języka"
-#: cps/templates/config_edit.html:192 cps/templates/user_edit.html:78
+#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:78
msgid "Show series selection"
msgstr "Pokaż wybór serii"
-#: cps/templates/config_edit.html:196 cps/templates/user_edit.html:82
+#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:82
msgid "Show category selection"
msgstr "Pokaż wybór kategorii"
-#: cps/templates/config_edit.html:200 cps/templates/user_edit.html:86
+#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:86
msgid "Show author selection"
msgstr "Pokaż wybór autora"
-#: cps/templates/config_edit.html:204 cps/templates/user_edit.html:90
+#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:90
msgid "Show read and unread"
msgstr "Pokaż przeczytane i nieprzeczytane"
-#: cps/templates/config_edit.html:208 cps/templates/user_edit.html:94
+#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:94
msgid "Show random books in detail view"
msgstr "Pokaz losowe książki w widoku szczegółowym"
-#: cps/templates/config_edit.html:212 cps/templates/user_edit.html:107
+#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:107
msgid "Show mature content"
msgstr ""
-#: cps/templates/config_edit.html:222 cps/templates/layout.html:79
-#: cps/templates/login.html:4
-msgid "Login"
-msgstr "Zaloguj się"
-
#: cps/templates/detail.html:49
msgid "Read in browser"
msgstr "Czytaj w przeglądarce"
diff --git a/cps/translations/ru/LC_MESSAGES/messages.mo b/cps/translations/ru/LC_MESSAGES/messages.mo
index e7bed0c5..1c912c34 100644
Binary files a/cps/translations/ru/LC_MESSAGES/messages.mo and b/cps/translations/ru/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/ru/LC_MESSAGES/messages.po b/cps/translations/ru/LC_MESSAGES/messages.po
index 2a2ee809..314f4e5d 100644
--- a/cps/translations/ru/LC_MESSAGES/messages.po
+++ b/cps/translations/ru/LC_MESSAGES/messages.po
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
-"POT-Creation-Date: 2018-07-14 19:01+0200\n"
+"POT-Creation-Date: 2018-07-15 15:03+0200\n"
"PO-Revision-Date: 2017-04-30 00:47+0300\n"
"Last-Translator: Pavel Korovin \n"
"Language: ru\n"
@@ -26,7 +26,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.5.1\n"
-#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1393
+#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1422
msgid "not installed"
msgstr "Отсутствует"
@@ -70,24 +70,24 @@ msgstr "Отправить на Kindle"
msgid "Could not find any formats suitable for sending by email"
msgstr "Невозоможно найти формат, подходящий для отправки по email"
-#: cps/helper.py:332
+#: cps/helper.py:342
#, python-format
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/helper.py:341
+#: cps/helper.py:351
#, python-format
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/helper.py:364 cps/helper.py:373
+#: cps/helper.py:374 cps/helper.py:383
#, python-format
-msgid "File %s not found on gdrive"
+msgid "File %s not found on Google Drive"
msgstr ""
-#: cps/helper.py:384
+#: cps/helper.py:394
#, python-format
-msgid "Path %s not found on gdrive"
+msgid "Book path %s not found on Google Drive"
msgstr ""
#: cps/web.py:954
@@ -154,7 +154,7 @@ msgstr "Случайный выбор"
msgid "Author list"
msgstr "Авторы"
-#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1350 cps/web.py:1869
+#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1379 cps/web.py:1909
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Невозможно открыть книгу. Файл не существует или недоступен."
@@ -185,336 +185,340 @@ msgstr "Категории"
msgid "Category: %(name)s"
msgstr "Категория: %(name)s"
-#: cps/web.py:1404
+#: cps/web.py:1433
msgid "Excecution permissions missing"
msgstr ""
-#: cps/web.py:1419
+#: cps/web.py:1448
msgid "Statistics"
msgstr "Статистика"
-#: cps/web.py:1515
+#: cps/web.py:1544
msgid ""
"Callback domain is not verified, please follow steps to verify domain in "
"google developer console"
msgstr ""
-#: cps/web.py:1591
+#: cps/web.py:1620
msgid "Server restarted, please reload page"
msgstr "Сервер перезагружен, пожалуйста, перезагрузите страницу"
-#: cps/web.py:1594
+#: cps/web.py:1623
msgid "Performing shutdown of server, please close window"
msgstr "Производится остановка сервера, пожалуйста, закройте окно"
-#: cps/web.py:1612
+#: cps/web.py:1641
msgid "Update done"
msgstr "Обновление закончено"
-#: cps/web.py:1669
+#: cps/web.py:1698
#, python-format
msgid "Published after %s"
msgstr ""
-#: cps/web.py:1674
+#: cps/web.py:1703
msgid "Published before "
msgstr ""
-#: cps/web.py:1720 cps/web.py:1733
+#: cps/web.py:1749 cps/web.py:1762
msgid "search"
msgstr "поиск"
#: cps/templates/index.xml:39 cps/templates/index.xml:42
-#: cps/templates/layout.html:143 cps/web.py:1824
+#: cps/templates/layout.html:143 cps/web.py:1864
msgid "Read Books"
msgstr "Прочитанные"
#: cps/templates/index.xml:46 cps/templates/index.xml:49
-#: cps/templates/layout.html:145 cps/web.py:1827
+#: cps/templates/layout.html:145 cps/web.py:1867
msgid "Unread Books"
msgstr "Непрочитанные"
-#: cps/web.py:1879 cps/web.py:1881 cps/web.py:1883 cps/web.py:1895
+#: cps/web.py:1919 cps/web.py:1921 cps/web.py:1923 cps/web.py:1935
msgid "Read a Book"
msgstr "Читать книгу"
-#: cps/web.py:1951 cps/web.py:2686
+#: cps/web.py:1991 cps/web.py:2744
msgid "Please fill out all fields!"
msgstr "Пожалуйста, заполните все поля!"
-#: cps/web.py:1952 cps/web.py:1969 cps/web.py:1974 cps/web.py:1976
+#: cps/web.py:1992 cps/web.py:2009 cps/web.py:2014 cps/web.py:2016
msgid "register"
msgstr "зарегистрироваться"
-#: cps/web.py:1968
+#: cps/web.py:2008
msgid "An unknown error occured. Please try again later."
msgstr "Неизвестная ошибка. Пожалуйста, попробуйте позже."
-#: cps/web.py:1973
+#: cps/web.py:2013
msgid "This username or email address is already in use."
msgstr "Имя пользователя или адрес эл. почты уже используется"
-#: cps/web.py:1990 cps/web.py:2086
+#: cps/web.py:2030 cps/web.py:2126
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Вы вошли как пользователь '%(nickname)s'"
-#: cps/web.py:1995
+#: cps/web.py:2035
msgid "Wrong Username or Password"
msgstr "Ошибка в имени пользователя или пароле"
-#: cps/web.py:2001 cps/web.py:2022
+#: cps/web.py:2041 cps/web.py:2062
msgid "login"
msgstr "войти"
-#: cps/web.py:2034 cps/web.py:2065
+#: cps/web.py:2074 cps/web.py:2105
msgid "Token not found"
msgstr ""
-#: cps/web.py:2042 cps/web.py:2073
+#: cps/web.py:2082 cps/web.py:2113
msgid "Token has expired"
msgstr ""
-#: cps/web.py:2050
+#: cps/web.py:2090
msgid "Success! Please return to your device"
msgstr ""
-#: cps/web.py:2100
+#: cps/web.py:2140
msgid "Please configure the SMTP mail settings first..."
msgstr "Пожалуйста, сначала сконфигурируйте параметры SMTP"
-#: cps/web.py:2104
+#: cps/web.py:2144
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "Книга успешно отправлена на %(kindlemail)s"
-#: cps/web.py:2108
+#: cps/web.py:2148
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "Ошибка при отправке книги: %(res)s"
-#: cps/web.py:2110 cps/web.py:2774
+#: cps/web.py:2150 cps/web.py:2832
msgid "Please configure your kindle email address first..."
msgstr "Пожалуйста, сначала укажите ваш kindle email..."
-#: cps/web.py:2154
+#: cps/web.py:2194
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Книга добавлена на книжную полку: %(sname)s"
-#: cps/web.py:2192
+#: cps/web.py:2232
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Книга удалена с книжной полки: %(sname)s"
-#: cps/web.py:2198
+#: cps/web.py:2238
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2218 cps/web.py:2242
+#: cps/web.py:2258 cps/web.py:2282
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "Книжкная полка с названием '%(title)s' уже существует."
-#: cps/web.py:2223
+#: cps/web.py:2263
#, python-format
msgid "Shelf %(title)s created"
msgstr "Создана книжная полка %(title)s"
-#: cps/web.py:2225 cps/web.py:2253
+#: cps/web.py:2265 cps/web.py:2293
msgid "There was an error"
msgstr "Произошла ошибка"
-#: cps/web.py:2226 cps/web.py:2228
+#: cps/web.py:2266 cps/web.py:2268
msgid "create a shelf"
msgstr "создать книжную полку"
-#: cps/web.py:2251
+#: cps/web.py:2291
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Книжная полка %(title)s изменена"
-#: cps/web.py:2254 cps/web.py:2256
+#: cps/web.py:2294 cps/web.py:2296
msgid "Edit a shelf"
msgstr "Изменить книжную полку"
-#: cps/web.py:2277
+#: cps/web.py:2317
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "Книжная полка %(name)s удалена"
-#: cps/web.py:2299
+#: cps/web.py:2339
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Книжная полка: '%(name)s'"
-#: cps/web.py:2302
+#: cps/web.py:2342
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
-#: cps/web.py:2333
+#: cps/web.py:2373
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Изменить расположение книжной полки '%(name)s'"
-#: cps/web.py:2404
+#: cps/web.py:2444
msgid "Found an existing account for this email address."
msgstr "Найдена учётная запись для для данного адреса email."
-#: cps/web.py:2406 cps/web.py:2410
+#: cps/web.py:2446 cps/web.py:2450
#, python-format
msgid "%(name)s's profile"
msgstr "Профиль %(name)s"
-#: cps/web.py:2407
+#: cps/web.py:2447
msgid "Profile updated"
msgstr "Профиль обновлён"
-#: cps/web.py:2419
+#: cps/web.py:2459
msgid "Unknown"
msgstr ""
-#: cps/web.py:2432
+#: cps/web.py:2472
msgid "Admin page"
msgstr "Администрирование"
-#: cps/web.py:2454
-msgid "Import of optional GDrive requirements missing"
+#: cps/web.py:2560 cps/web.py:2692
+msgid "Calibre-web configuration updated"
+msgstr "Конфигурация Calibre-web обновлена"
+
+#: cps/templates/admin.html:80 cps/web.py:2565
+msgid "UI Configuration"
msgstr ""
-#: cps/web.py:2457
+#: cps/web.py:2581
+msgid "Import of optional Google Drive requirements missing"
+msgstr ""
+
+#: cps/web.py:2584
msgid "client_secrets.json is missing or not readable"
msgstr ""
-#: cps/web.py:2462 cps/web.py:2490
+#: cps/web.py:2589 cps/web.py:2617
msgid "client_secrets.json is not configured for web application"
msgstr ""
-#: cps/web.py:2493 cps/web.py:2518 cps/web.py:2529 cps/web.py:2622
-#: cps/web.py:2642 cps/web.py:2649 cps/web.py:2667
+#: cps/templates/admin.html:79 cps/web.py:2620 cps/web.py:2645 cps/web.py:2656
+#: cps/web.py:2680 cps/web.py:2700 cps/web.py:2707 cps/web.py:2725
msgid "Basic Configuration"
msgstr "Настройки сервера"
-#: cps/web.py:2515
+#: cps/web.py:2642
msgid "Keyfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2526
+#: cps/web.py:2653
msgid "Certfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2619
+#: cps/web.py:2677
msgid "Logfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2634
-msgid "Calibre-web configuration updated"
-msgstr "Конфигурация Calibre-web обновлена"
-
-#: cps/web.py:2646
+#: cps/web.py:2704
msgid "DB location is not valid, please enter correct path"
msgstr "Неверный путь к фалу БД, пожалуйста, укажите правильное расположение БД"
-#: cps/templates/admin.html:34 cps/web.py:2688 cps/web.py:2744
+#: cps/templates/admin.html:34 cps/web.py:2746 cps/web.py:2802
msgid "Add new user"
msgstr "Добавить пользователя"
-#: cps/web.py:2734
+#: cps/web.py:2792
#, python-format
msgid "User '%(user)s' created"
msgstr "Пользователь '%(user)s' добавлен"
-#: cps/web.py:2738
+#: cps/web.py:2796
msgid "Found an existing account for this email address or nickname."
msgstr "Для указанного адреса или имени найдена существующая учётная запись."
-#: cps/web.py:2762
+#: cps/web.py:2820
msgid "Mail settings updated"
msgstr "Настройки почты изменены"
-#: cps/web.py:2769
+#: cps/web.py:2827
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "Тестовое сообщение успешно отправлено на адрес %(kindlemail)s"
-#: cps/web.py:2772
+#: cps/web.py:2830
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "Ошибка отправки тестового сообщения: %(res)s"
-#: cps/web.py:2776
+#: cps/web.py:2834
msgid "E-Mail settings updated"
msgstr "Обновлены настройки e-mail"
-#: cps/web.py:2777
+#: cps/web.py:2835
msgid "Edit mail settings"
msgstr "Изменить почтовые настройки"
-#: cps/web.py:2807
+#: cps/web.py:2865
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Пользователь '%(nick)s' удалён"
-#: cps/web.py:2916
+#: cps/web.py:2974
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Пользователь '%(nick)s' обновлён"
-#: cps/web.py:2919
+#: cps/web.py:2977
msgid "An unknown error occured."
msgstr "Произошла неизвестная ошибка."
-#: cps/web.py:2922
+#: cps/web.py:2980
#, python-format
msgid "Edit User %(nick)s"
msgstr "Изменить пользователя %(nick)s"
-#: cps/web.py:2938
+#: cps/web.py:2996
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
-#: cps/web.py:2953 cps/web.py:3164 cps/web.py:3169 cps/web.py:3337
+#: cps/web.py:3011 cps/web.py:3222 cps/web.py:3227 cps/web.py:3395
msgid "edit metadata"
msgstr "изменить метаданные"
-#: cps/web.py:2963 cps/web.py:3214
+#: cps/web.py:3021 cps/web.py:3272
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr "Запрещена загрузка файлов с расширением \"%s\""
-#: cps/web.py:2974
+#: cps/web.py:3032
#, python-format
msgid "Failed to store file %s."
msgstr ""
-#: cps/web.py:2998 cps/web.py:3002
+#: cps/web.py:3056 cps/web.py:3060
msgid "unknown"
msgstr "неизвестно"
-#: cps/web.py:3023
+#: cps/web.py:3081
msgid "Cover is not a jpg file, can't save"
msgstr ""
-#: cps/web.py:3173
+#: cps/web.py:3231
msgid "Error editing book, please check logfile for details"
msgstr ""
-#: cps/web.py:3220
+#: cps/web.py:3278
msgid "File to be uploaded must have an extension"
msgstr "Загружаемый файл должен иметь расширение"
-#: cps/web.py:3239
+#: cps/web.py:3297
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "Ошибка при создании пути %s (доступ запрещён)"
-#: cps/web.py:3244
+#: cps/web.py:3302
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "Ошибка записи файоа %s (доступ запрещён)"
-#: cps/web.py:3249
+#: cps/web.py:3307
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "Ошибка удаления файла %s (доступ запрещён)"
@@ -592,7 +596,7 @@ msgstr "Отправитель"
msgid "Change SMTP settings"
msgstr "Изменить настройки SMTP"
-#: cps/templates/admin.html:57 cps/templates/admin.html:79
+#: cps/templates/admin.html:57
msgid "Configuration"
msgstr "Настройки сервера"
@@ -600,7 +604,7 @@ msgstr "Настройки сервера"
msgid "Calibre DB dir"
msgstr "Папка Calibre DB"
-#: cps/templates/admin.html:61 cps/templates/config_edit.html:87
+#: cps/templates/admin.html:61 cps/templates/config_edit.html:100
msgid "Log Level"
msgstr "Уровень логирования"
@@ -608,7 +612,7 @@ msgstr "Уровень логирования"
msgid "Port"
msgstr "Порт"
-#: cps/templates/admin.html:63 cps/templates/config_edit.html:64
+#: cps/templates/admin.html:63 cps/templates/config_view_edit.html:23
msgid "Books per page"
msgstr "Количество книг на странице"
@@ -628,60 +632,61 @@ msgstr "Анонимный просмотр"
msgid "Remote Login"
msgstr ""
-#: cps/templates/admin.html:80
+#: cps/templates/admin.html:81
msgid "Administration"
msgstr "Управление"
-#: cps/templates/admin.html:82
+#: cps/templates/admin.html:83
msgid "Current commit timestamp"
msgstr ""
-#: cps/templates/admin.html:83
+#: cps/templates/admin.html:84
msgid "Newest commit timestamp"
msgstr ""
-#: cps/templates/admin.html:85
+#: cps/templates/admin.html:86
msgid "Reconnect to Calibre DB"
msgstr "Переподключиться к БД Calibre"
-#: cps/templates/admin.html:86
+#: cps/templates/admin.html:87
msgid "Restart Calibre-web"
msgstr "Перезагрузить Calibre-web"
-#: cps/templates/admin.html:87
+#: cps/templates/admin.html:88
msgid "Stop Calibre-web"
msgstr "Остановить Calibre-web"
-#: cps/templates/admin.html:88
+#: cps/templates/admin.html:89
msgid "Check for update"
msgstr "Проверка обновлений"
-#: cps/templates/admin.html:89
+#: cps/templates/admin.html:90
msgid "Perform Update"
msgstr "Установить обновления"
-#: cps/templates/admin.html:99
+#: cps/templates/admin.html:100
msgid "Do you really want to restart Calibre-web?"
msgstr "Вы действительно хотите перезагрузить Calibre-web?"
-#: cps/templates/admin.html:104 cps/templates/admin.html:118
-#: cps/templates/admin.html:139 cps/templates/shelf.html:59
+#: cps/templates/admin.html:105 cps/templates/admin.html:119
+#: cps/templates/admin.html:140 cps/templates/shelf.html:59
msgid "Ok"
msgstr "Ok"
-#: cps/templates/admin.html:105 cps/templates/admin.html:119
+#: cps/templates/admin.html:106 cps/templates/admin.html:120
#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157
-#: cps/templates/config_edit.html:219 cps/templates/email_edit.html:36
-#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19
-#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:147
+#: cps/templates/config_edit.html:168 cps/templates/config_view_edit.html:164
+#: cps/templates/email_edit.html:36 cps/templates/shelf.html:60
+#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12
+#: cps/templates/user_edit.html:147
msgid "Back"
msgstr "Назад"
-#: cps/templates/admin.html:117
+#: cps/templates/admin.html:118
msgid "Do you really want to stop Calibre-web?"
msgstr "Вы действительно хотите остановить Calibre-web?"
-#: cps/templates/admin.html:130
+#: cps/templates/admin.html:131
msgid "Updating, please do not reload page"
msgstr "Установка обновлений, пожалуйста, не обновляйте страницу."
@@ -766,9 +771,10 @@ msgstr "смотреть книгу после редактирования"
msgid "Get metadata"
msgstr "Получить метаданные"
-#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:217
-#: cps/templates/login.html:20 cps/templates/search_form.html:96
-#: cps/templates/shelf_edit.html:17 cps/templates/user_edit.html:145
+#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:166
+#: cps/templates/config_view_edit.html:163 cps/templates/login.html:20
+#: cps/templates/search_form.html:96 cps/templates/shelf_edit.html:17
+#: cps/templates/user_edit.html:145
msgid "Submit"
msgstr "Отправить"
@@ -829,192 +835,216 @@ msgstr "Ошибка поиска!"
msgid "No Result! Please try anonther keyword."
msgstr "Нет результатов. Пожалуйста, попробуйте другое ключевое слово"
-#: cps/templates/config_edit.html:7
+#: cps/templates/config_edit.html:12
+msgid "Library Configuration"
+msgstr ""
+
+#: cps/templates/config_edit.html:19
msgid "Location of Calibre database"
msgstr "Расположение БД Calibre"
-#: cps/templates/config_edit.html:12
-msgid "Use google drive?"
+#: cps/templates/config_edit.html:24
+msgid "Use Google Drive?"
msgstr "Использовать Google Drive?"
-#: cps/templates/config_edit.html:18
-msgid "Google drive config problem"
+#: cps/templates/config_edit.html:30
+msgid "Google Drive config problem"
msgstr ""
-#: cps/templates/config_edit.html:24
+#: cps/templates/config_edit.html:36
msgid "Authenticate Google Drive"
msgstr ""
-#: cps/templates/config_edit.html:28
-msgid "Google drive Calibre folder"
-msgstr "Папка Calibre на Google drive"
+#: cps/templates/config_edit.html:40
+msgid "Google Drive Calibre folder"
+msgstr ""
-#: cps/templates/config_edit.html:36
+#: cps/templates/config_edit.html:48
msgid "Metadata Watch Channel ID"
msgstr "Metadata Watch Channel ID"
-#: cps/templates/config_edit.html:39
+#: cps/templates/config_edit.html:51
msgid "Revoke"
msgstr ""
-#: cps/templates/config_edit.html:48
+#: cps/templates/config_edit.html:67
+msgid "Server Configuration"
+msgstr ""
+
+#: cps/templates/config_edit.html:74
msgid "Server Port"
msgstr "Порт сервера"
-#: cps/templates/config_edit.html:52
+#: cps/templates/config_edit.html:78
msgid "SSL certfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:56
+#: cps/templates/config_edit.html:82
msgid "SSL Keyfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:60 cps/templates/layout.html:130
-#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7
-msgid "Title"
-msgstr "Заголовок"
-
-#: cps/templates/config_edit.html:68
-msgid "No. of random books to show"
-msgstr "Количество отображаемых случайных книг"
-
-#: cps/templates/config_edit.html:72
-msgid "Regular expression for ignoring columns"
-msgstr "Regexp для игнорирования столбцов"
-
-#: cps/templates/config_edit.html:76
-msgid "Regular expression for title sorting"
-msgstr "Regexp для сортировки по названию"
-
-#: cps/templates/config_edit.html:80
-msgid "Tags for Mature Content"
+#: cps/templates/config_edit.html:93
+msgid "Logfile Configuration"
msgstr ""
-#: cps/templates/config_edit.html:96
+#: cps/templates/config_edit.html:109
msgid "Location and name of logfile (calibre-web.log for no entry)"
msgstr ""
-#: cps/templates/config_edit.html:102
+#: cps/templates/config_edit.html:120
+msgid "Feature Configuration"
+msgstr ""
+
+#: cps/templates/config_edit.html:128
msgid "Enable uploading"
msgstr "Разрешить загрузку на сервер"
-#: cps/templates/config_edit.html:106
+#: cps/templates/config_edit.html:132
msgid "Enable anonymous browsing"
msgstr "Разрешить анонимный просмотр"
-#: cps/templates/config_edit.html:110
+#: cps/templates/config_edit.html:136
msgid "Enable public registration"
msgstr "Разрешить публичную регистрацию"
-#: cps/templates/config_edit.html:114
+#: cps/templates/config_edit.html:140
msgid "Enable remote login (\"magic link\")"
msgstr ""
-#: cps/templates/config_edit.html:119
+#: cps/templates/config_edit.html:145
msgid "Use"
msgstr ""
-#: cps/templates/config_edit.html:120
+#: cps/templates/config_edit.html:146
msgid "Obtain an API Key"
msgstr ""
-#: cps/templates/config_edit.html:124
+#: cps/templates/config_edit.html:150
msgid "Goodreads API Key"
msgstr ""
-#: cps/templates/config_edit.html:128
+#: cps/templates/config_edit.html:154
msgid "Goodreads API Secret"
msgstr ""
-#: cps/templates/config_edit.html:133
-msgid "Default Settings for new users"
+#: cps/templates/config_edit.html:171 cps/templates/layout.html:79
+#: cps/templates/login.html:4
+msgid "Login"
+msgstr "Имя пользователя"
+
+#: cps/templates/config_view_edit.html:12
+msgid "View Configuration"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:130
+#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7
+msgid "Title"
+msgstr "Заголовок"
+
+#: cps/templates/config_view_edit.html:27
+msgid "No. of random books to show"
+msgstr "Количество отображаемых случайных книг"
+
+#: cps/templates/config_view_edit.html:31
+msgid "Regular expression for ignoring columns"
+msgstr "Regexp для игнорирования столбцов"
+
+#: cps/templates/config_view_edit.html:35
+msgid "Link read/unread status to Calibre column"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:44
+msgid "Regular expression for title sorting"
+msgstr "Regexp для сортировки по названию"
+
+#: cps/templates/config_view_edit.html:48
+msgid "Tags for Mature Content"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:62
+msgid "Default settings for new users"
msgstr "Настройки по умолчанию для новых пользователей"
-#: cps/templates/config_edit.html:136 cps/templates/user_edit.html:102
+#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:102
msgid "Admin user"
msgstr "Управление сервером"
-#: cps/templates/config_edit.html:140 cps/templates/user_edit.html:111
+#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:111
msgid "Allow Downloads"
msgstr "Разрешить скачивание с сервера"
-#: cps/templates/config_edit.html:144 cps/templates/user_edit.html:115
+#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:115
msgid "Allow Uploads"
msgstr "Разрешить загрузку на сервер"
-#: cps/templates/config_edit.html:148 cps/templates/user_edit.html:119
+#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:119
msgid "Allow Edit"
msgstr "Разрешить редактирование книг"
-#: cps/templates/config_edit.html:152 cps/templates/user_edit.html:123
+#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:123
msgid "Allow Delete books"
msgstr "Разрешить удаление книг"
-#: cps/templates/config_edit.html:156 cps/templates/user_edit.html:128
+#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:128
msgid "Allow Changing Password"
msgstr "Разрешить смену пароля"
-#: cps/templates/config_edit.html:160 cps/templates/user_edit.html:132
+#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:132
msgid "Allow Editing Public Shelfs"
msgstr "Разрешить редактирование публичных книжных полок"
-#: cps/templates/config_edit.html:164
-msgid "Default visiblities for new users"
+#: cps/templates/config_view_edit.html:104
+msgid "Default visibilities for new users"
msgstr ""
-#: cps/templates/config_edit.html:168 cps/templates/user_edit.html:54
+#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:54
msgid "Show random books"
msgstr "Показывать случайные книги"
-#: cps/templates/config_edit.html:172 cps/templates/user_edit.html:58
+#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:58
msgid "Show recent books"
msgstr ""
-#: cps/templates/config_edit.html:176 cps/templates/user_edit.html:62
+#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:62
msgid "Show sorted books"
msgstr ""
-#: cps/templates/config_edit.html:180 cps/templates/user_edit.html:66
+#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:66
msgid "Show hot books"
msgstr "Показывать популярные книги"
-#: cps/templates/config_edit.html:184 cps/templates/user_edit.html:70
+#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:70
msgid "Show best rated books"
msgstr "Показывать книги с наивысшим рейтингом"
-#: cps/templates/config_edit.html:188 cps/templates/user_edit.html:74
+#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:74
msgid "Show language selection"
msgstr "Показывать выбор языка"
-#: cps/templates/config_edit.html:192 cps/templates/user_edit.html:78
+#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:78
msgid "Show series selection"
msgstr "Показывать выбор серии"
-#: cps/templates/config_edit.html:196 cps/templates/user_edit.html:82
+#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:82
msgid "Show category selection"
msgstr "Показывать выбор категории"
-#: cps/templates/config_edit.html:200 cps/templates/user_edit.html:86
+#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:86
msgid "Show author selection"
msgstr "Показывать выбор автора"
-#: cps/templates/config_edit.html:204 cps/templates/user_edit.html:90
+#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:90
msgid "Show read and unread"
msgstr "Показывать прочитанные и непрочитанные"
-#: cps/templates/config_edit.html:208 cps/templates/user_edit.html:94
+#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:94
msgid "Show random books in detail view"
msgstr "Показывать случайные книги при просмотре деталей"
-#: cps/templates/config_edit.html:212 cps/templates/user_edit.html:107
+#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:107
msgid "Show mature content"
msgstr ""
-#: cps/templates/config_edit.html:222 cps/templates/layout.html:79
-#: cps/templates/login.html:4
-msgid "Login"
-msgstr "Имя пользователя"
-
#: cps/templates/detail.html:49
msgid "Read in browser"
msgstr "Открыть в браузере"
diff --git a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo
index 4da4b37d..783fbfb2 100644
Binary files a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo and b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po
index 25beb8ff..7c293c06 100644
--- a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po
+++ b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
-"POT-Creation-Date: 2018-07-14 19:01+0200\n"
+"POT-Creation-Date: 2018-07-15 15:03+0200\n"
"PO-Revision-Date: 2017-01-06 17:00+0000\n"
"Last-Translator: dalin \n"
"Language: zh_Hans_CN\n"
@@ -26,7 +26,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.5.1\n"
-#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1393
+#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1422
msgid "not installed"
msgstr "未安装"
@@ -70,24 +70,24 @@ msgstr "发送到Kindle"
msgid "Could not find any formats suitable for sending by email"
msgstr "无法找到适合邮件发送的格式"
-#: cps/helper.py:332
+#: cps/helper.py:342
#, python-format
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/helper.py:341
+#: cps/helper.py:351
#, python-format
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/helper.py:364 cps/helper.py:373
+#: cps/helper.py:374 cps/helper.py:383
#, python-format
-msgid "File %s not found on gdrive"
+msgid "File %s not found on Google Drive"
msgstr ""
-#: cps/helper.py:384
+#: cps/helper.py:394
#, python-format
-msgid "Path %s not found on gdrive"
+msgid "Book path %s not found on Google Drive"
msgstr ""
#: cps/web.py:954
@@ -154,7 +154,7 @@ msgstr "随机书籍"
msgid "Author list"
msgstr "作者列表"
-#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1350 cps/web.py:1869
+#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1379 cps/web.py:1909
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "无法打开电子书。 文件不存在或者文件不可访问:"
@@ -185,336 +185,340 @@ msgstr "分类列表"
msgid "Category: %(name)s"
msgstr "分类: %(name)s"
-#: cps/web.py:1404
+#: cps/web.py:1433
msgid "Excecution permissions missing"
msgstr "可执行权限缺失"
-#: cps/web.py:1419
+#: cps/web.py:1448
msgid "Statistics"
msgstr "统计"
-#: cps/web.py:1515
+#: cps/web.py:1544
msgid ""
"Callback domain is not verified, please follow steps to verify domain in "
"google developer console"
msgstr ""
-#: cps/web.py:1591
+#: cps/web.py:1620
msgid "Server restarted, please reload page"
msgstr "服务器已重启,请刷新页面"
-#: cps/web.py:1594
+#: cps/web.py:1623
msgid "Performing shutdown of server, please close window"
msgstr "正在关闭服务器,请关闭窗口"
-#: cps/web.py:1612
+#: cps/web.py:1641
msgid "Update done"
msgstr "更新完成"
-#: cps/web.py:1669
+#: cps/web.py:1698
#, python-format
msgid "Published after %s"
msgstr ""
-#: cps/web.py:1674
+#: cps/web.py:1703
msgid "Published before "
msgstr ""
-#: cps/web.py:1720 cps/web.py:1733
+#: cps/web.py:1749 cps/web.py:1762
msgid "search"
msgstr "搜索"
#: cps/templates/index.xml:39 cps/templates/index.xml:42
-#: cps/templates/layout.html:143 cps/web.py:1824
+#: cps/templates/layout.html:143 cps/web.py:1864
msgid "Read Books"
msgstr "已读书籍"
#: cps/templates/index.xml:46 cps/templates/index.xml:49
-#: cps/templates/layout.html:145 cps/web.py:1827
+#: cps/templates/layout.html:145 cps/web.py:1867
msgid "Unread Books"
msgstr "未读书籍"
-#: cps/web.py:1879 cps/web.py:1881 cps/web.py:1883 cps/web.py:1895
+#: cps/web.py:1919 cps/web.py:1921 cps/web.py:1923 cps/web.py:1935
msgid "Read a Book"
msgstr "阅读一本书"
-#: cps/web.py:1951 cps/web.py:2686
+#: cps/web.py:1991 cps/web.py:2744
msgid "Please fill out all fields!"
msgstr "请填写所有字段"
-#: cps/web.py:1952 cps/web.py:1969 cps/web.py:1974 cps/web.py:1976
+#: cps/web.py:1992 cps/web.py:2009 cps/web.py:2014 cps/web.py:2016
msgid "register"
msgstr "注册"
-#: cps/web.py:1968
+#: cps/web.py:2008
msgid "An unknown error occured. Please try again later."
msgstr "发生一个未知错误。请稍后再试。"
-#: cps/web.py:1973
+#: cps/web.py:2013
msgid "This username or email address is already in use."
msgstr "此用户名或邮箱已被使用。"
-#: cps/web.py:1990 cps/web.py:2086
+#: cps/web.py:2030 cps/web.py:2126
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "您现在已以'%(nickname)s'身份登录"
-#: cps/web.py:1995
+#: cps/web.py:2035
msgid "Wrong Username or Password"
msgstr "用户名或密码错误"
-#: cps/web.py:2001 cps/web.py:2022
+#: cps/web.py:2041 cps/web.py:2062
msgid "login"
msgstr "登录"
-#: cps/web.py:2034 cps/web.py:2065
+#: cps/web.py:2074 cps/web.py:2105
msgid "Token not found"
msgstr "找不到Token"
-#: cps/web.py:2042 cps/web.py:2073
+#: cps/web.py:2082 cps/web.py:2113
msgid "Token has expired"
msgstr "Token已过期"
-#: cps/web.py:2050
+#: cps/web.py:2090
msgid "Success! Please return to your device"
msgstr "成功!请返回您的设备"
-#: cps/web.py:2100
+#: cps/web.py:2140
msgid "Please configure the SMTP mail settings first..."
msgstr "请先配置SMTP邮箱..."
-#: cps/web.py:2104
+#: cps/web.py:2144
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "此书已被成功发给 %(kindlemail)s"
-#: cps/web.py:2108
+#: cps/web.py:2148
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "发送这本书的时候出现错误: %(res)s"
-#: cps/web.py:2110 cps/web.py:2774
+#: cps/web.py:2150 cps/web.py:2832
msgid "Please configure your kindle email address first..."
msgstr "请先配置您的kindle电子邮箱地址..."
-#: cps/web.py:2154
+#: cps/web.py:2194
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "此书已被添加到书架: %(sname)s"
-#: cps/web.py:2192
+#: cps/web.py:2232
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "此书已从书架 %(sname)s 中删除"
-#: cps/web.py:2198
+#: cps/web.py:2238
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2218 cps/web.py:2242
+#: cps/web.py:2258 cps/web.py:2282
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "已存在书架 '%(title)s'。"
-#: cps/web.py:2223
+#: cps/web.py:2263
#, python-format
msgid "Shelf %(title)s created"
msgstr "书架 %(title)s 已被创建"
-#: cps/web.py:2225 cps/web.py:2253
+#: cps/web.py:2265 cps/web.py:2293
msgid "There was an error"
msgstr "发生错误"
-#: cps/web.py:2226 cps/web.py:2228
+#: cps/web.py:2266 cps/web.py:2268
msgid "create a shelf"
msgstr "创建书架"
-#: cps/web.py:2251
+#: cps/web.py:2291
#, python-format
msgid "Shelf %(title)s changed"
msgstr "书架 %(title)s 已被修改"
-#: cps/web.py:2254 cps/web.py:2256
+#: cps/web.py:2294 cps/web.py:2296
msgid "Edit a shelf"
msgstr "编辑书架"
-#: cps/web.py:2277
+#: cps/web.py:2317
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "成功删除书架 %(name)s"
-#: cps/web.py:2299
+#: cps/web.py:2339
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "书架: '%(name)s'"
-#: cps/web.py:2302
+#: cps/web.py:2342
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "打开书架出错。书架不存在或不可访问"
-#: cps/web.py:2333
+#: cps/web.py:2373
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "修改书架 '%(name)s' 顺序"
-#: cps/web.py:2404
+#: cps/web.py:2444
msgid "Found an existing account for this email address."
msgstr "找到已使用此邮箱的账号。"
-#: cps/web.py:2406 cps/web.py:2410
+#: cps/web.py:2446 cps/web.py:2450
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s 的资料"
-#: cps/web.py:2407
+#: cps/web.py:2447
msgid "Profile updated"
msgstr "资料已更新"
-#: cps/web.py:2419
+#: cps/web.py:2459
msgid "Unknown"
msgstr ""
-#: cps/web.py:2432
+#: cps/web.py:2472
msgid "Admin page"
msgstr "管理页"
-#: cps/web.py:2454
-msgid "Import of optional GDrive requirements missing"
+#: cps/web.py:2560 cps/web.py:2692
+msgid "Calibre-web configuration updated"
+msgstr "Calibre-web配置已更新"
+
+#: cps/templates/admin.html:80 cps/web.py:2565
+msgid "UI Configuration"
msgstr ""
-#: cps/web.py:2457
+#: cps/web.py:2581
+msgid "Import of optional Google Drive requirements missing"
+msgstr ""
+
+#: cps/web.py:2584
msgid "client_secrets.json is missing or not readable"
msgstr ""
-#: cps/web.py:2462 cps/web.py:2490
+#: cps/web.py:2589 cps/web.py:2617
msgid "client_secrets.json is not configured for web application"
msgstr ""
-#: cps/web.py:2493 cps/web.py:2518 cps/web.py:2529 cps/web.py:2622
-#: cps/web.py:2642 cps/web.py:2649 cps/web.py:2667
+#: cps/templates/admin.html:79 cps/web.py:2620 cps/web.py:2645 cps/web.py:2656
+#: cps/web.py:2680 cps/web.py:2700 cps/web.py:2707 cps/web.py:2725
msgid "Basic Configuration"
msgstr "基本配置"
-#: cps/web.py:2515
+#: cps/web.py:2642
msgid "Keyfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2526
+#: cps/web.py:2653
msgid "Certfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2619
+#: cps/web.py:2677
msgid "Logfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2634
-msgid "Calibre-web configuration updated"
-msgstr "Calibre-web配置已更新"
-
-#: cps/web.py:2646
+#: cps/web.py:2704
msgid "DB location is not valid, please enter correct path"
msgstr "DB位置无效,请输入正确路径"
-#: cps/templates/admin.html:34 cps/web.py:2688 cps/web.py:2744
+#: cps/templates/admin.html:34 cps/web.py:2746 cps/web.py:2802
msgid "Add new user"
msgstr "添加新用户"
-#: cps/web.py:2734
+#: cps/web.py:2792
#, python-format
msgid "User '%(user)s' created"
msgstr "用户 '%(user)s' 已被创建"
-#: cps/web.py:2738
+#: cps/web.py:2796
msgid "Found an existing account for this email address or nickname."
msgstr "已存在使用此邮箱或昵称的账号。"
-#: cps/web.py:2762
+#: cps/web.py:2820
msgid "Mail settings updated"
msgstr "邮箱设置已更新"
-#: cps/web.py:2769
+#: cps/web.py:2827
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "测试邮件已成功发送到 %(kindlemail)s"
-#: cps/web.py:2772
+#: cps/web.py:2830
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "发送测试邮件时发生错误: %(res)s"
-#: cps/web.py:2776
+#: cps/web.py:2834
msgid "E-Mail settings updated"
msgstr "E-Mail 设置已更新"
-#: cps/web.py:2777
+#: cps/web.py:2835
msgid "Edit mail settings"
msgstr "编辑邮箱设置"
-#: cps/web.py:2807
+#: cps/web.py:2865
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "用户 '%(nick)s' 已被删除"
-#: cps/web.py:2916
+#: cps/web.py:2974
#, python-format
msgid "User '%(nick)s' updated"
msgstr "用户 '%(nick)s' 已被更新"
-#: cps/web.py:2919
+#: cps/web.py:2977
msgid "An unknown error occured."
msgstr "发生未知错误。"
-#: cps/web.py:2922
+#: cps/web.py:2980
#, python-format
msgid "Edit User %(nick)s"
msgstr "编辑用户 %(nick)s"
-#: cps/web.py:2938
+#: cps/web.py:2996
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "打开电子书出错。文件不存在或不可访问"
-#: cps/web.py:2953 cps/web.py:3164 cps/web.py:3169 cps/web.py:3337
+#: cps/web.py:3011 cps/web.py:3222 cps/web.py:3227 cps/web.py:3395
msgid "edit metadata"
msgstr "编辑元数据"
-#: cps/web.py:2963 cps/web.py:3214
+#: cps/web.py:3021 cps/web.py:3272
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr "不能上传后缀为 \"%s\" 的文件到此服务器"
-#: cps/web.py:2974
+#: cps/web.py:3032
#, python-format
msgid "Failed to store file %s."
msgstr ""
-#: cps/web.py:2998 cps/web.py:3002
+#: cps/web.py:3056 cps/web.py:3060
msgid "unknown"
msgstr "未知"
-#: cps/web.py:3023
+#: cps/web.py:3081
msgid "Cover is not a jpg file, can't save"
msgstr ""
-#: cps/web.py:3173
+#: cps/web.py:3231
msgid "Error editing book, please check logfile for details"
msgstr ""
-#: cps/web.py:3220
+#: cps/web.py:3278
msgid "File to be uploaded must have an extension"
msgstr "要上传的文件必须有一个后缀"
-#: cps/web.py:3239
+#: cps/web.py:3297
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "创建路径 %s 失败(权限拒绝)。"
-#: cps/web.py:3244
+#: cps/web.py:3302
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "存储文件 %s 失败(权限拒绝)。"
-#: cps/web.py:3249
+#: cps/web.py:3307
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "删除文件 %s 失败(权限拒绝)。"
@@ -592,7 +596,7 @@ msgstr "来自邮箱"
msgid "Change SMTP settings"
msgstr "修改SMTP设置"
-#: cps/templates/admin.html:57 cps/templates/admin.html:79
+#: cps/templates/admin.html:57
msgid "Configuration"
msgstr "配置"
@@ -600,7 +604,7 @@ msgstr "配置"
msgid "Calibre DB dir"
msgstr "Calibre DB目录"
-#: cps/templates/admin.html:61 cps/templates/config_edit.html:87
+#: cps/templates/admin.html:61 cps/templates/config_edit.html:100
msgid "Log Level"
msgstr "日志级别"
@@ -608,7 +612,7 @@ msgstr "日志级别"
msgid "Port"
msgstr "端口"
-#: cps/templates/admin.html:63 cps/templates/config_edit.html:64
+#: cps/templates/admin.html:63 cps/templates/config_view_edit.html:23
msgid "Books per page"
msgstr "每页书籍数"
@@ -628,60 +632,61 @@ msgstr "匿名浏览"
msgid "Remote Login"
msgstr "远程登录"
-#: cps/templates/admin.html:80
+#: cps/templates/admin.html:81
msgid "Administration"
msgstr "管理"
-#: cps/templates/admin.html:82
+#: cps/templates/admin.html:83
msgid "Current commit timestamp"
msgstr "当前提交时间戳"
-#: cps/templates/admin.html:83
+#: cps/templates/admin.html:84
msgid "Newest commit timestamp"
msgstr "最新提交时间戳"
-#: cps/templates/admin.html:85
+#: cps/templates/admin.html:86
msgid "Reconnect to Calibre DB"
msgstr "重新连接到Calibre数据库"
-#: cps/templates/admin.html:86
+#: cps/templates/admin.html:87
msgid "Restart Calibre-web"
msgstr "重启 Calibre-web"
-#: cps/templates/admin.html:87
+#: cps/templates/admin.html:88
msgid "Stop Calibre-web"
msgstr "停止 Calibre-web"
-#: cps/templates/admin.html:88
+#: cps/templates/admin.html:89
msgid "Check for update"
msgstr "检查更新"
-#: cps/templates/admin.html:89
+#: cps/templates/admin.html:90
msgid "Perform Update"
msgstr "执行更新"
-#: cps/templates/admin.html:99
+#: cps/templates/admin.html:100
msgid "Do you really want to restart Calibre-web?"
msgstr "您确定要重启 Calibre-web 吗?"
-#: cps/templates/admin.html:104 cps/templates/admin.html:118
-#: cps/templates/admin.html:139 cps/templates/shelf.html:59
+#: cps/templates/admin.html:105 cps/templates/admin.html:119
+#: cps/templates/admin.html:140 cps/templates/shelf.html:59
msgid "Ok"
msgstr "确定"
-#: cps/templates/admin.html:105 cps/templates/admin.html:119
+#: cps/templates/admin.html:106 cps/templates/admin.html:120
#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157
-#: cps/templates/config_edit.html:219 cps/templates/email_edit.html:36
-#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19
-#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:147
+#: cps/templates/config_edit.html:168 cps/templates/config_view_edit.html:164
+#: cps/templates/email_edit.html:36 cps/templates/shelf.html:60
+#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12
+#: cps/templates/user_edit.html:147
msgid "Back"
msgstr "后退"
-#: cps/templates/admin.html:117
+#: cps/templates/admin.html:118
msgid "Do you really want to stop Calibre-web?"
msgstr "您确定要关闭 Calibre-web 吗?"
-#: cps/templates/admin.html:130
+#: cps/templates/admin.html:131
msgid "Updating, please do not reload page"
msgstr "正在更新,请不要刷新页面"
@@ -766,9 +771,10 @@ msgstr "编辑后查看书籍"
msgid "Get metadata"
msgstr "获取元数据"
-#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:217
-#: cps/templates/login.html:20 cps/templates/search_form.html:96
-#: cps/templates/shelf_edit.html:17 cps/templates/user_edit.html:145
+#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:166
+#: cps/templates/config_view_edit.html:163 cps/templates/login.html:20
+#: cps/templates/search_form.html:96 cps/templates/shelf_edit.html:17
+#: cps/templates/user_edit.html:145
msgid "Submit"
msgstr "提交"
@@ -829,192 +835,216 @@ msgstr "搜索错误"
msgid "No Result! Please try anonther keyword."
msgstr "没有结果!请尝试别的关键字."
-#: cps/templates/config_edit.html:7
+#: cps/templates/config_edit.html:12
+msgid "Library Configuration"
+msgstr ""
+
+#: cps/templates/config_edit.html:19
msgid "Location of Calibre database"
msgstr "Calibre 数据库位置"
-#: cps/templates/config_edit.html:12
-msgid "Use google drive?"
-msgstr "是否使用google drive?"
+#: cps/templates/config_edit.html:24
+msgid "Use Google Drive?"
+msgstr "是否使用Google Drive?"
-#: cps/templates/config_edit.html:18
-msgid "Google drive config problem"
+#: cps/templates/config_edit.html:30
+msgid "Google Drive config problem"
msgstr ""
-#: cps/templates/config_edit.html:24
+#: cps/templates/config_edit.html:36
msgid "Authenticate Google Drive"
msgstr ""
-#: cps/templates/config_edit.html:28
-msgid "Google drive Calibre folder"
+#: cps/templates/config_edit.html:40
+msgid "Google Drive Calibre folder"
msgstr ""
-#: cps/templates/config_edit.html:36
+#: cps/templates/config_edit.html:48
msgid "Metadata Watch Channel ID"
msgstr ""
-#: cps/templates/config_edit.html:39
+#: cps/templates/config_edit.html:51
msgid "Revoke"
msgstr ""
-#: cps/templates/config_edit.html:48
+#: cps/templates/config_edit.html:67
+msgid "Server Configuration"
+msgstr ""
+
+#: cps/templates/config_edit.html:74
msgid "Server Port"
msgstr "服务器端口"
-#: cps/templates/config_edit.html:52
+#: cps/templates/config_edit.html:78
msgid "SSL certfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:56
+#: cps/templates/config_edit.html:82
msgid "SSL Keyfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:60 cps/templates/layout.html:130
-#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7
-msgid "Title"
-msgstr "标题"
-
-#: cps/templates/config_edit.html:68
-msgid "No. of random books to show"
-msgstr "随机书籍显示数量"
-
-#: cps/templates/config_edit.html:72
-msgid "Regular expression for ignoring columns"
-msgstr "忽略列的正则表达式"
-
-#: cps/templates/config_edit.html:76
-msgid "Regular expression for title sorting"
-msgstr "标题排序的正则表达式"
-
-#: cps/templates/config_edit.html:80
-msgid "Tags for Mature Content"
+#: cps/templates/config_edit.html:93
+msgid "Logfile Configuration"
msgstr ""
-#: cps/templates/config_edit.html:96
+#: cps/templates/config_edit.html:109
msgid "Location and name of logfile (calibre-web.log for no entry)"
msgstr ""
-#: cps/templates/config_edit.html:102
+#: cps/templates/config_edit.html:120
+msgid "Feature Configuration"
+msgstr ""
+
+#: cps/templates/config_edit.html:128
msgid "Enable uploading"
msgstr "启用上传"
-#: cps/templates/config_edit.html:106
+#: cps/templates/config_edit.html:132
msgid "Enable anonymous browsing"
msgstr "启用匿名浏览"
-#: cps/templates/config_edit.html:110
+#: cps/templates/config_edit.html:136
msgid "Enable public registration"
msgstr "启用注册"
-#: cps/templates/config_edit.html:114
+#: cps/templates/config_edit.html:140
msgid "Enable remote login (\"magic link\")"
msgstr "启用远程登录 (\"魔法链接\")"
-#: cps/templates/config_edit.html:119
+#: cps/templates/config_edit.html:145
msgid "Use"
msgstr ""
-#: cps/templates/config_edit.html:120
+#: cps/templates/config_edit.html:146
msgid "Obtain an API Key"
msgstr ""
-#: cps/templates/config_edit.html:124
+#: cps/templates/config_edit.html:150
msgid "Goodreads API Key"
msgstr ""
-#: cps/templates/config_edit.html:128
+#: cps/templates/config_edit.html:154
msgid "Goodreads API Secret"
msgstr ""
-#: cps/templates/config_edit.html:133
-msgid "Default Settings for new users"
+#: cps/templates/config_edit.html:171 cps/templates/layout.html:79
+#: cps/templates/login.html:4
+msgid "Login"
+msgstr "登录"
+
+#: cps/templates/config_view_edit.html:12
+msgid "View Configuration"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:130
+#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7
+msgid "Title"
+msgstr "标题"
+
+#: cps/templates/config_view_edit.html:27
+msgid "No. of random books to show"
+msgstr "随机书籍显示数量"
+
+#: cps/templates/config_view_edit.html:31
+msgid "Regular expression for ignoring columns"
+msgstr "忽略列的正则表达式"
+
+#: cps/templates/config_view_edit.html:35
+msgid "Link read/unread status to Calibre column"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:44
+msgid "Regular expression for title sorting"
+msgstr "标题排序的正则表达式"
+
+#: cps/templates/config_view_edit.html:48
+msgid "Tags for Mature Content"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:62
+msgid "Default settings for new users"
msgstr "新用户默认设置"
-#: cps/templates/config_edit.html:136 cps/templates/user_edit.html:102
+#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:102
msgid "Admin user"
msgstr "管理用户"
-#: cps/templates/config_edit.html:140 cps/templates/user_edit.html:111
+#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:111
msgid "Allow Downloads"
msgstr "允许下载"
-#: cps/templates/config_edit.html:144 cps/templates/user_edit.html:115
+#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:115
msgid "Allow Uploads"
msgstr "允许上传"
-#: cps/templates/config_edit.html:148 cps/templates/user_edit.html:119
+#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:119
msgid "Allow Edit"
msgstr "允许编辑"
-#: cps/templates/config_edit.html:152 cps/templates/user_edit.html:123
+#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:123
msgid "Allow Delete books"
msgstr "允许删除书籍"
-#: cps/templates/config_edit.html:156 cps/templates/user_edit.html:128
+#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:128
msgid "Allow Changing Password"
msgstr "允许修改密码"
-#: cps/templates/config_edit.html:160 cps/templates/user_edit.html:132
+#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:132
msgid "Allow Editing Public Shelfs"
msgstr "允许编辑公共书架"
-#: cps/templates/config_edit.html:164
-msgid "Default visiblities for new users"
+#: cps/templates/config_view_edit.html:104
+msgid "Default visibilities for new users"
msgstr ""
-#: cps/templates/config_edit.html:168 cps/templates/user_edit.html:54
+#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:54
msgid "Show random books"
msgstr "显示随机书籍"
-#: cps/templates/config_edit.html:172 cps/templates/user_edit.html:58
+#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:58
msgid "Show recent books"
msgstr ""
-#: cps/templates/config_edit.html:176 cps/templates/user_edit.html:62
+#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:62
msgid "Show sorted books"
msgstr ""
-#: cps/templates/config_edit.html:180 cps/templates/user_edit.html:66
+#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:66
msgid "Show hot books"
msgstr "显示热门书籍"
-#: cps/templates/config_edit.html:184 cps/templates/user_edit.html:70
+#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:70
msgid "Show best rated books"
msgstr "显示最高评分书籍"
-#: cps/templates/config_edit.html:188 cps/templates/user_edit.html:74
+#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:74
msgid "Show language selection"
msgstr "显示语言选择"
-#: cps/templates/config_edit.html:192 cps/templates/user_edit.html:78
+#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:78
msgid "Show series selection"
msgstr "显示丛书选择"
-#: cps/templates/config_edit.html:196 cps/templates/user_edit.html:82
+#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:82
msgid "Show category selection"
msgstr "显示分类选择"
-#: cps/templates/config_edit.html:200 cps/templates/user_edit.html:86
+#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:86
msgid "Show author selection"
msgstr "显示作者选择"
-#: cps/templates/config_edit.html:204 cps/templates/user_edit.html:90
+#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:90
msgid "Show read and unread"
msgstr "显示已读和未读"
-#: cps/templates/config_edit.html:208 cps/templates/user_edit.html:94
+#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:94
msgid "Show random books in detail view"
msgstr "在详情页显示随机书籍"
-#: cps/templates/config_edit.html:212 cps/templates/user_edit.html:107
+#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:107
msgid "Show mature content"
msgstr ""
-#: cps/templates/config_edit.html:222 cps/templates/layout.html:79
-#: cps/templates/login.html:4
-msgid "Login"
-msgstr "登录"
-
#: cps/templates/detail.html:49
msgid "Read in browser"
msgstr "在浏览器中阅读"
diff --git a/cps/ub.py b/cps/ub.py
index fdcd8ee7..1a64fed9 100644
--- a/cps/ub.py
+++ b/cps/ub.py
@@ -282,6 +282,7 @@ class Settings(Base):
config_calibre_web_title = Column(String, default=u'Calibre-web')
config_books_per_page = Column(Integer, default=60)
config_random_books = Column(Integer, default=4)
+ config_read_column = Column(Integer, default=0)
config_title_regex = Column(String, default=u'^(A|The|An|Der|Die|Das|Den|Ein|Eine|Einen|Dem|Des|Einem|Eines)\s+')
config_log_level = Column(SmallInteger, default=logging.INFO)
config_uploading = Column(SmallInteger, default=0)
@@ -344,6 +345,7 @@ class Config:
self.config_books_per_page = data.config_books_per_page
self.config_random_books = data.config_random_books
self.config_title_regex = data.config_title_regex
+ self.config_read_column = data.config_read_column
self.config_log_level = data.config_log_level
self.config_uploading = data.config_uploading
self.config_anonbrowse = data.config_anonbrowse
@@ -352,9 +354,6 @@ class Config:
self.config_default_show = data.config_default_show
self.config_columns_to_ignore = data.config_columns_to_ignore
self.config_use_google_drive = data.config_use_google_drive
- # self.config_google_drive_client_id = data.config_google_drive_client_id
- # self.config_google_drive_client_secret = data.config_google_drive_client_secret
- # self.config_google_drive_calibre_url_base = data.config_google_drive_calibre_url_base
self.config_google_drive_folder = data.config_google_drive_folder
if data.config_google_drive_watch_changes_response:
self.config_google_drive_watch_changes_response = json.loads(data.config_google_drive_watch_changes_response)
@@ -544,7 +543,6 @@ def migrate_Database():
conn.execute("ALTER TABLE Settings ADD column `config_anonbrowse` SmallInteger DEFAULT 0")
conn.execute("ALTER TABLE Settings ADD column `config_public_reg` SmallInteger DEFAULT 0")
session.commit()
-
try:
session.query(exists().where(Settings.config_use_google_drive)).scalar()
except exc.OperationalError:
@@ -649,6 +647,13 @@ def migrate_Database():
conn.execute("ALTER TABLE Settings ADD column `config_certfile` String DEFAULT ''")
conn.execute("ALTER TABLE Settings ADD column `config_keyfile` String DEFAULT ''")
session.commit()
+ try:
+ session.query(exists().where(Settings.config_read_column)).scalar()
+ session.commit()
+ except exc.OperationalError: # Database is not compatible, some rows are missing
+ conn = engine.connect()
+ conn.execute("ALTER TABLE Settings ADD column `config_read_column` INTEGER DEFAULT 0")
+ session.commit()
# Remove login capability of user Guest
conn = engine.connect()
conn.execute("UPDATE user SET password='' where nickname = 'Guest' and password !=''")
diff --git a/cps/web.py b/cps/web.py
index 63148b51..fc690058 100755
--- a/cps/web.py
+++ b/cps/web.py
@@ -1295,20 +1295,38 @@ def category(book_id, page):
@app.route("/ajax/toggleread/", methods=['POST'])
@login_required
def toggle_read(book_id):
- book = ub.session.query(ub.ReadBook).filter(ub.and_(ub.ReadBook.user_id == int(current_user.id),
+ if not config.config_read_column:
+ book = ub.session.query(ub.ReadBook).filter(ub.and_(ub.ReadBook.user_id == int(current_user.id),
ub.ReadBook.book_id == book_id)).first()
- if book:
- book.is_read = not book.is_read
+ if book:
+ book.is_read = not book.is_read
+ else:
+ readBook = ub.ReadBook()
+ readBook.user_id = int(current_user.id)
+ readBook.book_id = book_id
+ readBook.is_read = True
+ book = readBook
+ ub.session.merge(book)
+ ub.session.commit()
else:
- readBook = ub.ReadBook()
- readBook.user_id = int(current_user.id)
- readBook.book_id = book_id
- readBook.is_read = True
- book = readBook
- ub.session.merge(book)
- ub.session.commit()
- return ""
+ try:
+ db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort)
+ book = db.session.query(db.Books).filter(db.Books.id == book_id).filter(common_filters()).first()
+ read_status = getattr(book, 'custom_column_' + str(config.config_read_column))
+ if len(read_status):
+ #setattr(getattr(book,'custom_column_' + str(cc_id), 'value', (not read_status))
+ read_status[0].value = not read_status[0].value
+ db.session.commit()
+ else:
+ cc_class = db.cc_classes[cc_id]
+ new_cc = cc_class(value=1, book=book_id)
+ db.session.add(new_cc)
+ db.session.commit()
+ except KeyError:
+ app.logger.error(
+ u"Custom Column No.%d is not exisiting in calibre database" % config.config_read_column)
+ return ""
@app.route("/book/")
@login_required_if_no_ano
@@ -1338,9 +1356,20 @@ def show_book(book_id):
book_in_shelfs.append(entry.shelf)
if not current_user.is_anonymous:
- matching_have_read_book = ub.session.query(ub.ReadBook).filter(ub.and_(ub.ReadBook.user_id == int(current_user.id),
- ub.ReadBook.book_id == book_id)).all()
- have_read = len(matching_have_read_book) > 0 and matching_have_read_book[0].is_read
+ if not config.config_read_column:
+ matching_have_read_book = ub.session.query(ub.ReadBook)\
+ .filter(ub.and_(ub.ReadBook.user_id == int(current_user.id),
+ ub.ReadBook.book_id == book_id)).all()
+ have_read = len(matching_have_read_book) > 0 and matching_have_read_book[0].is_read
+ else:
+ try:
+ matching_have_read_book = getattr(entries,'custom_column_'+str(config.config_read_column))
+ have_read = len(matching_have_read_book) > 0 and matching_have_read_book[0].value
+ except KeyError:
+ app.logger.error(
+ u"Custom Column No.%d is not exisiting in calibre database" % config.config_read_column)
+ have_read = None
+
else:
have_read = None
@@ -1761,7 +1790,7 @@ def get_cover(cover_path):
if path:
return redirect(path)
else:
- app.logger.error(cover_path + '/cover.jpg not found on GDrive')
+ app.logger.error(cover_path + '/cover.jpg not found on Google Drive')
return send_from_directory(os.path.join(os.path.dirname(__file__), "static"), "generic_cover.jpg")
except Exception as e:
app.logger.error("Message "+e.message)
@@ -1804,8 +1833,19 @@ def feed_get_cover(book_id):
def render_read_books(page, are_read, as_xml=False):
- readBooks = ub.session.query(ub.ReadBook).filter(ub.ReadBook.user_id == int(current_user.id)).filter(ub.ReadBook.is_read == True).all()
- readBookIds = [x.book_id for x in readBooks]
+ if not config.config_read_column:
+ readBooks = ub.session.query(ub.ReadBook).filter(ub.ReadBook.user_id == int(current_user.id))\
+ .filter(ub.ReadBook.is_read == True).all()
+ readBookIds = [x.book_id for x in readBooks]
+ else:
+ try:
+ readBooks = db.session.query(db.cc_classes[config.config_read_column])\
+ .filter(db.cc_classes[config.config_read_column].value==True).all()
+ readBookIds = [x.book for x in readBooks]
+ except KeyError:
+ app.logger.error(u"Custom Column No.%d is not exisiting in calibre database" % config.config_read_column)
+ readBookIds=[]
+
if are_read:
db_filter = db.Books.id.in_(readBookIds)
else:
@@ -2439,6 +2479,93 @@ def configuration():
return configuration_helper(0)
+@app.route("/admin/viewconfig", methods=["GET", "POST"])
+@login_required
+@admin_required
+def view_configuration():
+ if request.method == "POST":
+ to_save = request.form.to_dict()
+ content = ub.session.query(ub.Settings).first()
+ if "config_calibre_web_title" in to_save:
+ content.config_calibre_web_title = to_save["config_calibre_web_title"]
+ if "config_columns_to_ignore" in to_save:
+ content.config_columns_to_ignore = to_save["config_columns_to_ignore"]
+ if "config_read_column" in to_save:
+ content.config_read_column = int(to_save["config_read_column"])
+ if "config_title_regex" in to_save:
+ if content.config_title_regex != to_save["config_title_regex"]:
+ content.config_title_regex = to_save["config_title_regex"]
+ reboot_required = True
+ if "config_log_level" in to_save:
+ content.config_log_level = int(to_save["config_log_level"])
+ if "config_random_books" in to_save:
+ content.config_random_books = int(to_save["config_random_books"])
+ if "config_books_per_page" in to_save:
+ content.config_books_per_page = int(to_save["config_books_per_page"])
+ content.config_uploading = 0
+ content.config_anonbrowse = 0
+ content.config_public_reg = 0
+ if "config_uploading" in to_save and to_save["config_uploading"] == "on":
+ content.config_uploading = 1
+ if "config_anonbrowse" in to_save and to_save["config_anonbrowse"] == "on":
+ content.config_anonbrowse = 1
+ if "config_public_reg" in to_save and to_save["config_public_reg"] == "on":
+ content.config_public_reg = 1
+ # Mature Content configuration
+ if "config_mature_content_tags" in to_save:
+ content.config_mature_content_tags = to_save["config_mature_content_tags"].strip()
+
+ # Default user configuration
+ content.config_default_role = 0
+ if "admin_role" in to_save:
+ content.config_default_role = content.config_default_role + ub.ROLE_ADMIN
+ if "download_role" in to_save:
+ content.config_default_role = content.config_default_role + ub.ROLE_DOWNLOAD
+ if "upload_role" in to_save:
+ content.config_default_role = content.config_default_role + ub.ROLE_UPLOAD
+ if "edit_role" in to_save:
+ content.config_default_role = content.config_default_role + ub.ROLE_EDIT
+ if "delete_role" in to_save:
+ content.config_default_role = content.config_default_role + ub.ROLE_DELETE_BOOKS
+ if "passwd_role" in to_save:
+ content.config_default_role = content.config_default_role + ub.ROLE_PASSWD
+ if "passwd_role" in to_save:
+ content.config_default_role = content.config_default_role + ub.ROLE_EDIT_SHELFS
+ content.config_default_show = 0
+ if "show_detail_random" in to_save:
+ content.config_default_show = content.config_default_show + ub.DETAIL_RANDOM
+ if "show_language" in to_save:
+ content.config_default_show = content.config_default_show + ub.SIDEBAR_LANGUAGE
+ if "show_series" in to_save:
+ content.config_default_show = content.config_default_show + ub.SIDEBAR_SERIES
+ if "show_category" in to_save:
+ content.config_default_show = content.config_default_show + ub.SIDEBAR_CATEGORY
+ if "show_hot" in to_save:
+ content.config_default_show = content.config_default_show + ub.SIDEBAR_HOT
+ if "show_random" in to_save:
+ content.config_default_show = content.config_default_show + ub.SIDEBAR_RANDOM
+ if "show_author" in to_save:
+ content.config_default_show = content.config_default_show + ub.SIDEBAR_AUTHOR
+ if "show_best_rated" in to_save:
+ content.config_default_show = content.config_default_show + ub.SIDEBAR_BEST_RATED
+ if "show_read_and_unread" in to_save:
+ content.config_default_show = content.config_default_show + ub.SIDEBAR_READ_AND_UNREAD
+ if "show_recent" in to_save:
+ content.config_default_show = content.config_default_show + ub.SIDEBAR_RECENT
+ if "show_sorted" in to_save:
+ content.config_default_show = content.config_default_show + ub.SIDEBAR_SORTED
+ if "show_mature_content" in to_save:
+ content.config_default_show = content.config_default_show + ub.MATURE_CONTENT
+ ub.session.commit()
+ flash(_(u"Calibre-web configuration updated"), category="success")
+ config.loadSettings()
+ readColumn = db.session.query(db.Custom_Columns)\
+ .filter(db.and_(db.Custom_Columns.datatype == 'bool',db.Custom_Columns.mark_for_delete == 0)).all()
+ return render_title_template("config_view_edit.html", content=config, readColumns=readColumn,
+ title=_(u"UI Configuration"))
+
+
+
@app.route("/config", methods=["GET", "POST"])
@unconfigured
def basic_configuration():
@@ -2451,7 +2578,7 @@ def configuration_helper(origin):
db_change = False
success = False
if gdrive_support == False:
- gdriveError = _('Import of optional GDrive requirements missing')
+ gdriveError = _('Import of optional Google Drive requirements missing')
else:
if not os.path.isfile(os.path.join(config.get_main_dir,'client_secrets.json')):
gdriveError = _('client_secrets.json is missing or not readable')
@@ -2527,29 +2654,6 @@ def configuration_helper(origin):
return render_title_template("config_edit.html", content=config, origin=origin,
gdrive=gdrive_support, gdriveError=gdriveError,
goodreads=goodreads_support, title=_(u"Basic Configuration"))
- if "config_calibre_web_title" in to_save:
- content.config_calibre_web_title = to_save["config_calibre_web_title"]
- if "config_columns_to_ignore" in to_save:
- content.config_columns_to_ignore = to_save["config_columns_to_ignore"]
- if "config_title_regex" in to_save:
- if content.config_title_regex != to_save["config_title_regex"]:
- content.config_title_regex = to_save["config_title_regex"]
- reboot_required = True
- if "config_log_level" in to_save:
- content.config_log_level = int(to_save["config_log_level"])
- if "config_random_books" in to_save:
- content.config_random_books = int(to_save["config_random_books"])
- if "config_books_per_page" in to_save:
- content.config_books_per_page = int(to_save["config_books_per_page"])
- content.config_uploading = 0
- content.config_anonbrowse = 0
- content.config_public_reg = 0
- if "config_uploading" in to_save and to_save["config_uploading"] == "on":
- content.config_uploading = 1
- if "config_anonbrowse" in to_save and to_save["config_anonbrowse"] == "on":
- content.config_anonbrowse = 1
- if "config_public_reg" in to_save and to_save["config_public_reg"] == "on":
- content.config_public_reg = 1
# Remote login configuration
content.config_remote_login = ("config_remote_login" in to_save and to_save["config_remote_login"] == "on")
@@ -2563,52 +2667,6 @@ def configuration_helper(origin):
if "config_goodreads_api_secret" in to_save:
content.config_goodreads_api_secret = to_save["config_goodreads_api_secret"]
- # Mature Content configuration
- if "config_mature_content_tags" in to_save:
- content.config_mature_content_tags = to_save["config_mature_content_tags"].strip()
-
- # Default user configuration
- content.config_default_role = 0
- if "admin_role" in to_save:
- content.config_default_role = content.config_default_role + ub.ROLE_ADMIN
- if "download_role" in to_save:
- content.config_default_role = content.config_default_role + ub.ROLE_DOWNLOAD
- if "upload_role" in to_save:
- content.config_default_role = content.config_default_role + ub.ROLE_UPLOAD
- if "edit_role" in to_save:
- content.config_default_role = content.config_default_role + ub.ROLE_EDIT
- if "delete_role" in to_save:
- content.config_default_role = content.config_default_role + ub.ROLE_DELETE_BOOKS
- if "passwd_role" in to_save:
- content.config_default_role = content.config_default_role + ub.ROLE_PASSWD
- if "passwd_role" in to_save:
- content.config_default_role = content.config_default_role + ub.ROLE_EDIT_SHELFS
- content.config_default_show = 0
- if "show_detail_random" in to_save:
- content.config_default_show = content.config_default_show + ub.DETAIL_RANDOM
- if "show_language" in to_save:
- content.config_default_show = content.config_default_show + ub.SIDEBAR_LANGUAGE
- if "show_series" in to_save:
- content.config_default_show = content.config_default_show + ub.SIDEBAR_SERIES
- if "show_category" in to_save:
- content.config_default_show = content.config_default_show + ub.SIDEBAR_CATEGORY
- if "show_hot" in to_save:
- content.config_default_show = content.config_default_show + ub.SIDEBAR_HOT
- if "show_random" in to_save:
- content.config_default_show = content.config_default_show + ub.SIDEBAR_RANDOM
- if "show_author" in to_save:
- content.config_default_show = content.config_default_show + ub.SIDEBAR_AUTHOR
- if "show_best_rated" in to_save:
- content.config_default_show = content.config_default_show + ub.SIDEBAR_BEST_RATED
- if "show_read_and_unread" in to_save:
- content.config_default_show = content.config_default_show + ub.SIDEBAR_READ_AND_UNREAD
- if "show_recent" in to_save:
- content.config_default_show = content.config_default_show + ub.SIDEBAR_RECENT
- if "show_sorted" in to_save:
- content.config_default_show = content.config_default_show + ub.SIDEBAR_SORTED
- if "show_mature_content" in to_save:
- content.config_default_show = content.config_default_show + ub.MATURE_CONTENT
-
if content.config_logfile != to_save["config_logfile"]:
# check valid path, only path or file
if os.path.dirname(to_save["config_logfile"]):
diff --git a/messages.pot b/messages.pot
index 9eebffab..1af23932 100644
--- a/messages.pot
+++ b/messages.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2018-07-14 19:01+0200\n"
+"POT-Creation-Date: 2018-07-15 15:03+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.5.1\n"
-#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1393
+#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1422
msgid "not installed"
msgstr ""
@@ -61,24 +61,24 @@ msgstr ""
msgid "Could not find any formats suitable for sending by email"
msgstr ""
-#: cps/helper.py:332
+#: cps/helper.py:342
#, python-format
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/helper.py:341
+#: cps/helper.py:351
#, python-format
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/helper.py:364 cps/helper.py:373
+#: cps/helper.py:374 cps/helper.py:383
#, python-format
-msgid "File %s not found on gdrive"
+msgid "File %s not found on Google Drive"
msgstr ""
-#: cps/helper.py:384
+#: cps/helper.py:394
#, python-format
-msgid "Path %s not found on gdrive"
+msgid "Book path %s not found on Google Drive"
msgstr ""
#: cps/web.py:954
@@ -145,7 +145,7 @@ msgstr ""
msgid "Author list"
msgstr ""
-#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1350 cps/web.py:1869
+#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1379 cps/web.py:1909
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr ""
@@ -176,334 +176,338 @@ msgstr ""
msgid "Category: %(name)s"
msgstr ""
-#: cps/web.py:1404
+#: cps/web.py:1433
msgid "Excecution permissions missing"
msgstr ""
-#: cps/web.py:1419
+#: cps/web.py:1448
msgid "Statistics"
msgstr ""
-#: cps/web.py:1515
+#: cps/web.py:1544
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
msgstr ""
-#: cps/web.py:1591
+#: cps/web.py:1620
msgid "Server restarted, please reload page"
msgstr ""
-#: cps/web.py:1594
+#: cps/web.py:1623
msgid "Performing shutdown of server, please close window"
msgstr ""
-#: cps/web.py:1612
+#: cps/web.py:1641
msgid "Update done"
msgstr ""
-#: cps/web.py:1669
+#: cps/web.py:1698
#, python-format
msgid "Published after %s"
msgstr ""
-#: cps/web.py:1674
+#: cps/web.py:1703
msgid "Published before "
msgstr ""
-#: cps/web.py:1720 cps/web.py:1733
+#: cps/web.py:1749 cps/web.py:1762
msgid "search"
msgstr ""
#: cps/templates/index.xml:39 cps/templates/index.xml:42
-#: cps/templates/layout.html:143 cps/web.py:1824
+#: cps/templates/layout.html:143 cps/web.py:1864
msgid "Read Books"
msgstr ""
#: cps/templates/index.xml:46 cps/templates/index.xml:49
-#: cps/templates/layout.html:145 cps/web.py:1827
+#: cps/templates/layout.html:145 cps/web.py:1867
msgid "Unread Books"
msgstr ""
-#: cps/web.py:1879 cps/web.py:1881 cps/web.py:1883 cps/web.py:1895
+#: cps/web.py:1919 cps/web.py:1921 cps/web.py:1923 cps/web.py:1935
msgid "Read a Book"
msgstr ""
-#: cps/web.py:1951 cps/web.py:2686
+#: cps/web.py:1991 cps/web.py:2744
msgid "Please fill out all fields!"
msgstr ""
-#: cps/web.py:1952 cps/web.py:1969 cps/web.py:1974 cps/web.py:1976
+#: cps/web.py:1992 cps/web.py:2009 cps/web.py:2014 cps/web.py:2016
msgid "register"
msgstr ""
-#: cps/web.py:1968
+#: cps/web.py:2008
msgid "An unknown error occured. Please try again later."
msgstr ""
-#: cps/web.py:1973
+#: cps/web.py:2013
msgid "This username or email address is already in use."
msgstr ""
-#: cps/web.py:1990 cps/web.py:2086
+#: cps/web.py:2030 cps/web.py:2126
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr ""
-#: cps/web.py:1995
+#: cps/web.py:2035
msgid "Wrong Username or Password"
msgstr ""
-#: cps/web.py:2001 cps/web.py:2022
+#: cps/web.py:2041 cps/web.py:2062
msgid "login"
msgstr ""
-#: cps/web.py:2034 cps/web.py:2065
+#: cps/web.py:2074 cps/web.py:2105
msgid "Token not found"
msgstr ""
-#: cps/web.py:2042 cps/web.py:2073
+#: cps/web.py:2082 cps/web.py:2113
msgid "Token has expired"
msgstr ""
-#: cps/web.py:2050
+#: cps/web.py:2090
msgid "Success! Please return to your device"
msgstr ""
-#: cps/web.py:2100
+#: cps/web.py:2140
msgid "Please configure the SMTP mail settings first..."
msgstr ""
-#: cps/web.py:2104
+#: cps/web.py:2144
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr ""
-#: cps/web.py:2108
+#: cps/web.py:2148
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr ""
-#: cps/web.py:2110 cps/web.py:2774
+#: cps/web.py:2150 cps/web.py:2832
msgid "Please configure your kindle email address first..."
msgstr ""
-#: cps/web.py:2154
+#: cps/web.py:2194
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2192
+#: cps/web.py:2232
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2198
+#: cps/web.py:2238
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2218 cps/web.py:2242
+#: cps/web.py:2258 cps/web.py:2282
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/web.py:2223
+#: cps/web.py:2263
#, python-format
msgid "Shelf %(title)s created"
msgstr ""
-#: cps/web.py:2225 cps/web.py:2253
+#: cps/web.py:2265 cps/web.py:2293
msgid "There was an error"
msgstr ""
-#: cps/web.py:2226 cps/web.py:2228
+#: cps/web.py:2266 cps/web.py:2268
msgid "create a shelf"
msgstr ""
-#: cps/web.py:2251
+#: cps/web.py:2291
#, python-format
msgid "Shelf %(title)s changed"
msgstr ""
-#: cps/web.py:2254 cps/web.py:2256
+#: cps/web.py:2294 cps/web.py:2296
msgid "Edit a shelf"
msgstr ""
-#: cps/web.py:2277
+#: cps/web.py:2317
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr ""
-#: cps/web.py:2299
+#: cps/web.py:2339
#, python-format
msgid "Shelf: '%(name)s'"
msgstr ""
-#: cps/web.py:2302
+#: cps/web.py:2342
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
-#: cps/web.py:2333
+#: cps/web.py:2373
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr ""
-#: cps/web.py:2404
+#: cps/web.py:2444
msgid "Found an existing account for this email address."
msgstr ""
-#: cps/web.py:2406 cps/web.py:2410
+#: cps/web.py:2446 cps/web.py:2450
#, python-format
msgid "%(name)s's profile"
msgstr ""
-#: cps/web.py:2407
+#: cps/web.py:2447
msgid "Profile updated"
msgstr ""
-#: cps/web.py:2419
+#: cps/web.py:2459
msgid "Unknown"
msgstr ""
-#: cps/web.py:2432
+#: cps/web.py:2472
msgid "Admin page"
msgstr ""
-#: cps/web.py:2454
-msgid "Import of optional GDrive requirements missing"
+#: cps/web.py:2560 cps/web.py:2692
+msgid "Calibre-web configuration updated"
+msgstr ""
+
+#: cps/templates/admin.html:80 cps/web.py:2565
+msgid "UI Configuration"
+msgstr ""
+
+#: cps/web.py:2581
+msgid "Import of optional Google Drive requirements missing"
msgstr ""
-#: cps/web.py:2457
+#: cps/web.py:2584
msgid "client_secrets.json is missing or not readable"
msgstr ""
-#: cps/web.py:2462 cps/web.py:2490
+#: cps/web.py:2589 cps/web.py:2617
msgid "client_secrets.json is not configured for web application"
msgstr ""
-#: cps/web.py:2493 cps/web.py:2518 cps/web.py:2529 cps/web.py:2622
-#: cps/web.py:2642 cps/web.py:2649 cps/web.py:2667
+#: cps/templates/admin.html:79 cps/web.py:2620 cps/web.py:2645 cps/web.py:2656
+#: cps/web.py:2680 cps/web.py:2700 cps/web.py:2707 cps/web.py:2725
msgid "Basic Configuration"
msgstr ""
-#: cps/web.py:2515
+#: cps/web.py:2642
msgid "Keyfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2526
+#: cps/web.py:2653
msgid "Certfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2619
+#: cps/web.py:2677
msgid "Logfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2634
-msgid "Calibre-web configuration updated"
-msgstr ""
-
-#: cps/web.py:2646
+#: cps/web.py:2704
msgid "DB location is not valid, please enter correct path"
msgstr ""
-#: cps/templates/admin.html:34 cps/web.py:2688 cps/web.py:2744
+#: cps/templates/admin.html:34 cps/web.py:2746 cps/web.py:2802
msgid "Add new user"
msgstr ""
-#: cps/web.py:2734
+#: cps/web.py:2792
#, python-format
msgid "User '%(user)s' created"
msgstr ""
-#: cps/web.py:2738
+#: cps/web.py:2796
msgid "Found an existing account for this email address or nickname."
msgstr ""
-#: cps/web.py:2762
+#: cps/web.py:2820
msgid "Mail settings updated"
msgstr ""
-#: cps/web.py:2769
+#: cps/web.py:2827
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr ""
-#: cps/web.py:2772
+#: cps/web.py:2830
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr ""
-#: cps/web.py:2776
+#: cps/web.py:2834
msgid "E-Mail settings updated"
msgstr ""
-#: cps/web.py:2777
+#: cps/web.py:2835
msgid "Edit mail settings"
msgstr ""
-#: cps/web.py:2807
+#: cps/web.py:2865
#, python-format
msgid "User '%(nick)s' deleted"
msgstr ""
-#: cps/web.py:2916
+#: cps/web.py:2974
#, python-format
msgid "User '%(nick)s' updated"
msgstr ""
-#: cps/web.py:2919
+#: cps/web.py:2977
msgid "An unknown error occured."
msgstr ""
-#: cps/web.py:2922
+#: cps/web.py:2980
#, python-format
msgid "Edit User %(nick)s"
msgstr ""
-#: cps/web.py:2938
+#: cps/web.py:2996
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
-#: cps/web.py:2953 cps/web.py:3164 cps/web.py:3169 cps/web.py:3337
+#: cps/web.py:3011 cps/web.py:3222 cps/web.py:3227 cps/web.py:3395
msgid "edit metadata"
msgstr ""
-#: cps/web.py:2963 cps/web.py:3214
+#: cps/web.py:3021 cps/web.py:3272
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr ""
-#: cps/web.py:2974
+#: cps/web.py:3032
#, python-format
msgid "Failed to store file %s."
msgstr ""
-#: cps/web.py:2998 cps/web.py:3002
+#: cps/web.py:3056 cps/web.py:3060
msgid "unknown"
msgstr ""
-#: cps/web.py:3023
+#: cps/web.py:3081
msgid "Cover is not a jpg file, can't save"
msgstr ""
-#: cps/web.py:3173
+#: cps/web.py:3231
msgid "Error editing book, please check logfile for details"
msgstr ""
-#: cps/web.py:3220
+#: cps/web.py:3278
msgid "File to be uploaded must have an extension"
msgstr ""
-#: cps/web.py:3239
+#: cps/web.py:3297
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr ""
-#: cps/web.py:3244
+#: cps/web.py:3302
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr ""
-#: cps/web.py:3249
+#: cps/web.py:3307
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr ""
@@ -581,7 +585,7 @@ msgstr ""
msgid "Change SMTP settings"
msgstr ""
-#: cps/templates/admin.html:57 cps/templates/admin.html:79
+#: cps/templates/admin.html:57
msgid "Configuration"
msgstr ""
@@ -589,7 +593,7 @@ msgstr ""
msgid "Calibre DB dir"
msgstr ""
-#: cps/templates/admin.html:61 cps/templates/config_edit.html:87
+#: cps/templates/admin.html:61 cps/templates/config_edit.html:100
msgid "Log Level"
msgstr ""
@@ -597,7 +601,7 @@ msgstr ""
msgid "Port"
msgstr ""
-#: cps/templates/admin.html:63 cps/templates/config_edit.html:64
+#: cps/templates/admin.html:63 cps/templates/config_view_edit.html:23
msgid "Books per page"
msgstr ""
@@ -617,60 +621,61 @@ msgstr ""
msgid "Remote Login"
msgstr ""
-#: cps/templates/admin.html:80
+#: cps/templates/admin.html:81
msgid "Administration"
msgstr ""
-#: cps/templates/admin.html:82
+#: cps/templates/admin.html:83
msgid "Current commit timestamp"
msgstr ""
-#: cps/templates/admin.html:83
+#: cps/templates/admin.html:84
msgid "Newest commit timestamp"
msgstr ""
-#: cps/templates/admin.html:85
+#: cps/templates/admin.html:86
msgid "Reconnect to Calibre DB"
msgstr ""
-#: cps/templates/admin.html:86
+#: cps/templates/admin.html:87
msgid "Restart Calibre-web"
msgstr ""
-#: cps/templates/admin.html:87
+#: cps/templates/admin.html:88
msgid "Stop Calibre-web"
msgstr ""
-#: cps/templates/admin.html:88
+#: cps/templates/admin.html:89
msgid "Check for update"
msgstr ""
-#: cps/templates/admin.html:89
+#: cps/templates/admin.html:90
msgid "Perform Update"
msgstr ""
-#: cps/templates/admin.html:99
+#: cps/templates/admin.html:100
msgid "Do you really want to restart Calibre-web?"
msgstr ""
-#: cps/templates/admin.html:104 cps/templates/admin.html:118
-#: cps/templates/admin.html:139 cps/templates/shelf.html:59
+#: cps/templates/admin.html:105 cps/templates/admin.html:119
+#: cps/templates/admin.html:140 cps/templates/shelf.html:59
msgid "Ok"
msgstr ""
-#: cps/templates/admin.html:105 cps/templates/admin.html:119
+#: cps/templates/admin.html:106 cps/templates/admin.html:120
#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157
-#: cps/templates/config_edit.html:219 cps/templates/email_edit.html:36
-#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19
-#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:147
+#: cps/templates/config_edit.html:168 cps/templates/config_view_edit.html:164
+#: cps/templates/email_edit.html:36 cps/templates/shelf.html:60
+#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12
+#: cps/templates/user_edit.html:147
msgid "Back"
msgstr ""
-#: cps/templates/admin.html:117
+#: cps/templates/admin.html:118
msgid "Do you really want to stop Calibre-web?"
msgstr ""
-#: cps/templates/admin.html:130
+#: cps/templates/admin.html:131
msgid "Updating, please do not reload page"
msgstr ""
@@ -753,9 +758,10 @@ msgstr ""
msgid "Get metadata"
msgstr ""
-#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:217
-#: cps/templates/login.html:20 cps/templates/search_form.html:96
-#: cps/templates/shelf_edit.html:17 cps/templates/user_edit.html:145
+#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:166
+#: cps/templates/config_view_edit.html:163 cps/templates/login.html:20
+#: cps/templates/search_form.html:96 cps/templates/shelf_edit.html:17
+#: cps/templates/user_edit.html:145
msgid "Submit"
msgstr ""
@@ -816,192 +822,216 @@ msgstr ""
msgid "No Result! Please try anonther keyword."
msgstr ""
-#: cps/templates/config_edit.html:7
-msgid "Location of Calibre database"
-msgstr ""
-
#: cps/templates/config_edit.html:12
-msgid "Use google drive?"
+msgid "Library Configuration"
msgstr ""
-#: cps/templates/config_edit.html:18
-msgid "Google drive config problem"
+#: cps/templates/config_edit.html:19
+msgid "Location of Calibre database"
msgstr ""
#: cps/templates/config_edit.html:24
-msgid "Authenticate Google Drive"
+msgid "Use Google Drive?"
msgstr ""
-#: cps/templates/config_edit.html:28
-msgid "Google drive Calibre folder"
+#: cps/templates/config_edit.html:30
+msgid "Google Drive config problem"
msgstr ""
#: cps/templates/config_edit.html:36
-msgid "Metadata Watch Channel ID"
+msgid "Authenticate Google Drive"
msgstr ""
-#: cps/templates/config_edit.html:39
-msgid "Revoke"
+#: cps/templates/config_edit.html:40
+msgid "Google Drive Calibre folder"
msgstr ""
#: cps/templates/config_edit.html:48
-msgid "Server Port"
+msgid "Metadata Watch Channel ID"
msgstr ""
-#: cps/templates/config_edit.html:52
-msgid "SSL certfile location (leave it empty for non-SSL Servers)"
+#: cps/templates/config_edit.html:51
+msgid "Revoke"
msgstr ""
-#: cps/templates/config_edit.html:56
-msgid "SSL Keyfile location (leave it empty for non-SSL Servers)"
+#: cps/templates/config_edit.html:67
+msgid "Server Configuration"
msgstr ""
-#: cps/templates/config_edit.html:60 cps/templates/layout.html:130
-#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7
-msgid "Title"
+#: cps/templates/config_edit.html:74
+msgid "Server Port"
msgstr ""
-#: cps/templates/config_edit.html:68
-msgid "No. of random books to show"
+#: cps/templates/config_edit.html:78
+msgid "SSL certfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:72
-msgid "Regular expression for ignoring columns"
+#: cps/templates/config_edit.html:82
+msgid "SSL Keyfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:76
-msgid "Regular expression for title sorting"
+#: cps/templates/config_edit.html:93
+msgid "Logfile Configuration"
msgstr ""
-#: cps/templates/config_edit.html:80
-msgid "Tags for Mature Content"
+#: cps/templates/config_edit.html:109
+msgid "Location and name of logfile (calibre-web.log for no entry)"
msgstr ""
-#: cps/templates/config_edit.html:96
-msgid "Location and name of logfile (calibre-web.log for no entry)"
+#: cps/templates/config_edit.html:120
+msgid "Feature Configuration"
msgstr ""
-#: cps/templates/config_edit.html:102
+#: cps/templates/config_edit.html:128
msgid "Enable uploading"
msgstr ""
-#: cps/templates/config_edit.html:106
+#: cps/templates/config_edit.html:132
msgid "Enable anonymous browsing"
msgstr ""
-#: cps/templates/config_edit.html:110
+#: cps/templates/config_edit.html:136
msgid "Enable public registration"
msgstr ""
-#: cps/templates/config_edit.html:114
+#: cps/templates/config_edit.html:140
msgid "Enable remote login (\"magic link\")"
msgstr ""
-#: cps/templates/config_edit.html:119
+#: cps/templates/config_edit.html:145
msgid "Use"
msgstr ""
-#: cps/templates/config_edit.html:120
+#: cps/templates/config_edit.html:146
msgid "Obtain an API Key"
msgstr ""
-#: cps/templates/config_edit.html:124
+#: cps/templates/config_edit.html:150
msgid "Goodreads API Key"
msgstr ""
-#: cps/templates/config_edit.html:128
+#: cps/templates/config_edit.html:154
msgid "Goodreads API Secret"
msgstr ""
-#: cps/templates/config_edit.html:133
-msgid "Default Settings for new users"
+#: cps/templates/config_edit.html:171 cps/templates/layout.html:79
+#: cps/templates/login.html:4
+msgid "Login"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:12
+msgid "View Configuration"
msgstr ""
-#: cps/templates/config_edit.html:136 cps/templates/user_edit.html:102
+#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:130
+#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7
+msgid "Title"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:27
+msgid "No. of random books to show"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:31
+msgid "Regular expression for ignoring columns"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:35
+msgid "Link read/unread status to Calibre column"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:44
+msgid "Regular expression for title sorting"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:48
+msgid "Tags for Mature Content"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:62
+msgid "Default settings for new users"
+msgstr ""
+
+#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:102
msgid "Admin user"
msgstr ""
-#: cps/templates/config_edit.html:140 cps/templates/user_edit.html:111
+#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:111
msgid "Allow Downloads"
msgstr ""
-#: cps/templates/config_edit.html:144 cps/templates/user_edit.html:115
+#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:115
msgid "Allow Uploads"
msgstr ""
-#: cps/templates/config_edit.html:148 cps/templates/user_edit.html:119
+#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:119
msgid "Allow Edit"
msgstr ""
-#: cps/templates/config_edit.html:152 cps/templates/user_edit.html:123
+#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:123
msgid "Allow Delete books"
msgstr ""
-#: cps/templates/config_edit.html:156 cps/templates/user_edit.html:128
+#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:128
msgid "Allow Changing Password"
msgstr ""
-#: cps/templates/config_edit.html:160 cps/templates/user_edit.html:132
+#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:132
msgid "Allow Editing Public Shelfs"
msgstr ""
-#: cps/templates/config_edit.html:164
-msgid "Default visiblities for new users"
+#: cps/templates/config_view_edit.html:104
+msgid "Default visibilities for new users"
msgstr ""
-#: cps/templates/config_edit.html:168 cps/templates/user_edit.html:54
+#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:54
msgid "Show random books"
msgstr ""
-#: cps/templates/config_edit.html:172 cps/templates/user_edit.html:58
+#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:58
msgid "Show recent books"
msgstr ""
-#: cps/templates/config_edit.html:176 cps/templates/user_edit.html:62
+#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:62
msgid "Show sorted books"
msgstr ""
-#: cps/templates/config_edit.html:180 cps/templates/user_edit.html:66
+#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:66
msgid "Show hot books"
msgstr ""
-#: cps/templates/config_edit.html:184 cps/templates/user_edit.html:70
+#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:70
msgid "Show best rated books"
msgstr ""
-#: cps/templates/config_edit.html:188 cps/templates/user_edit.html:74
+#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:74
msgid "Show language selection"
msgstr ""
-#: cps/templates/config_edit.html:192 cps/templates/user_edit.html:78
+#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:78
msgid "Show series selection"
msgstr ""
-#: cps/templates/config_edit.html:196 cps/templates/user_edit.html:82
+#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:82
msgid "Show category selection"
msgstr ""
-#: cps/templates/config_edit.html:200 cps/templates/user_edit.html:86
+#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:86
msgid "Show author selection"
msgstr ""
-#: cps/templates/config_edit.html:204 cps/templates/user_edit.html:90
+#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:90
msgid "Show read and unread"
msgstr ""
-#: cps/templates/config_edit.html:208 cps/templates/user_edit.html:94
+#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:94
msgid "Show random books in detail view"
msgstr ""
-#: cps/templates/config_edit.html:212 cps/templates/user_edit.html:107
+#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:107
msgid "Show mature content"
msgstr ""
-#: cps/templates/config_edit.html:222 cps/templates/layout.html:79
-#: cps/templates/login.html:4
-msgid "Login"
-msgstr ""
-
#: cps/templates/detail.html:49
msgid "Read in browser"
msgstr ""